Simplify your stack and build anything. Or everything.
Build tomorrow’s web with a modern solution you truly own.
Code-based nature means you can build on top of it to power anything.
It’s time to take back your content infrastructure.

Error Management Magic: Introducing the Sentry Plugin for Payload

Published On
Sentry Plugin: Error Management within Payload
Sentry Plugin: Error Management within Payload
This integration brings Sentry's real-time error tracking, alerting, and performance monitoring features directly into your Payload project. We want to empower your developers to diagnose and resolve issues with unmatched efficiency. 
1
yarn add @payloadcms/plugin-sentry
2
// OR
3
npm i @payloadcms/plugin-sentry

What is error tracking and why does it matter?

Error tracking is the process of meticulously collecting and analyzing errors that occur within your application. With a strong error tracking solution, you open the door to a plethora of benefits that will elevate the overall quality of your project.

A good error tracking solution will allow you to...

  • Prioritize and address errors ensuring that the most important errors are fixed first
  • Identify recurring errors and patterns earlier and prevent them from snowballing
  • Save valuable time when it comes to debugging and troubleshooting errors
  • Increase application reliability and reduce downtime
  • Improve the overall developer and user experience

Ultimately, error tracking serves as a key component in driving the overall quality of your software. By addressing issues promptly, improving reliability, and optimizing the development process, you can deliver a product that takes software development to new heights.

Sentry: The Error Monitoring Powerhouse

Sentry is a leading, feature-rich, open-source platform for error and performance monitoring. With minimal setup, you can start capturing valuable data from your application and access it through Sentry's comprehensive and easy to use dashboard.

Here is a glance at their awesome features:

  • Error tracking: Get detailed reports with stack traces, environment data, and user info
  • Performance monitoring: Including user interactions, network requests, and other performance metrics
  • Release tracking and health monitoring: Keep tabs on releases and monitor application health with ease
  • Cross-project visibility: Sentry lets you manage and monitor errors across all multiple apps from one central platform
  • Custom dashboards: Access the metrics that matter most to you and personalize the dashboard to your needs
  • Notifications and email alerts: Add and customize alerts so you'll be the first to know when something is happening

And that's just the tip of the iceberg. Sentry's features empowers you to manage errors with extreme efficiency, saving time and resources while delivering a top user experience.

Step-by-Step Plugin Integration Guide

Let’s walkthrough the setup process for the Sentry-Payload plugin:

1. Installing the Plugin

Navigate to your Payload app then install the plugin using Yarn or NPM:

1
yarn add @payloadcms/plugin-sentry
2
// OR
3
npm i @payloadcms/plugin-sentry
2. Creating a Sentry Account:

If you don't have a Sentry account already, it's time to create one. Head over to Sentry and create an account. The registration process is straightforward and will only take a few minutes.

3. Locating Your DSN:

The DSN (Data Source Name) is a unique identifier that connects your application to Sentry. After creating your Sentry account, you can find your project's DSN in the project settings or configuration section.

In the sentry dashboard navigate to settings > DSN to find your DSN
4. Add DSN to your Payload Config file

By this step, you should have the plugin installed and your DSN identifier ready. Navigate to your payload.config() file and add the plugin along with your DSN:

1
const config = buildConfig({
2
plugins: [
3
sentry({
4
dsn: 'your-dsn-string-here',
5
}),
6
]
7
});
8
5. Configure additional options (not required)

These options allow you to fine-tune the Sentry integration to your specific needs:

  • init : ClientOptions | optional

Sentry allows a variety of options to be passed into the Sentry.init() function, see the full list of options here.

  • requestHandler : RequestHandlerOptions | optional

Accepts options that let you decide what data should be included in the event sent to Sentry, checkout the options here.

  • captureErrors: number[] | optional

By default, Sentry.errorHandler will capture only errors with a status code of 500 or higher. To capture additional error codes, pass the values as numbers in an array.

Pass any of these options to the plugin like so:

1
const config = buildConfig({
2
plugins: [
3
sentry({
4
dsn: 'your-dsn-string-here',
5
options: {
6
init: {
7
debug: true,
8
environment: 'development',
9
tracesSampleRate: 1.0,
10
},
11
requestHandler: {
12
serverName: false,
13
user: ["email"],
14
},
15
captureErrors: [400, 403, 404],
16
}
17
}),
18
]
19
});
20

Take it for a spin

Once you have the plugin installed and configured, Sentry will be ready to start capturing errors for you. So let’s take this plugin for a test drive by intentionally triggering an error:

  1. Start your Payload app with yarn dev
  2. Navigate to the login page in your browser
  3. Instead of using your valid credentials, enter an incorrect password
  4. This should throw the following error: AuthenticationError: The email or password provided is incorrect
  5. Go to sentry.io and select the project associated with the DSN in your payload.config()
  6. See the new error in your dashboard, click into it for more detail
Example error in the Sentry dashboard

Wrap Up

A robust error tracking solution is crucial to delivering a reliable and performant application. Sentry provides developers with the ultimate toolbox, comprehensive error and performance monitoring, custom dashboards, real-time notifications and much more. 

This plugin aims to make integrating Sentry into your Payload project a breeze. With 3 lines of code, you can instantly improve your error handling workflow. Give it a go and as always, reach out to us if you have any questions or feedback! Happy tracking 👋