# Express Error Tracking and Performance Monitoring

> Resolve performance bottlenecks & common errors with Express error & performance monitoring. Get started prioritizing live issues here.

**URL:** https://sentry.io/for/express/

---

**Documentation:** [https://docs.sentry.io/platforms/javascript/guides/express/](https://docs.sentry.io/platforms/javascript/guides/express/)

## Install

Add `@sentry/node` as a dependency:

```bash
npm install --save @sentry/node
```

Sentry should be initialized as early in your app as possible:

```javascript
import express from "express";
import * as Sentry from "@sentry/node";

// or using CommonJS
// const express = require('express');
// const Sentry = require('@sentry/node');

const app = express();

Sentry.init({ dsn: "https://<key>@sentry.io/<project>" });

// The request handler must be the first middleware on the app
app.use(Sentry.Handlers.requestHandler());

// All controllers should live here
app.get("/", function rootHandler(req, res) {
  res.end("Hello world!");
});

// The error handler must be before any other error middleware and after all controllers
app.use(Sentry.Handlers.errorHandler());

// Optional fallthrough error handler
app.use(function onError(err, req, res, next) {
  // The error id is attached to `res.sentry` to be returned
  // and optionally displayed to the user for support.
  res.statusCode = 500;
  res.end(res.sentry + "\n");
});

app.listen(3000);
```

See the [Express docs](https://docs.sentry.io/platforms/javascript/guides/express/) for full setup options.

## Features

### Powered by OpenTelemetry

Sentry works with OpenTelemetry to provide a simple configuration process, and rich distributed tracing context across all the libraries and frameworks used in your application. Regardless of your chosen tech stack.

### Express Performance Monitoring

Quickly identify Express [performance](https://sentry.io/for/performance/) issues and view full end-to-end distributed trace to see the exact, poor-performing API call and surface any related errors.

### Express Error Monitoring with Complete Stack Traces

See the Express source code at each frame instead of settings for just line and column numbers. Get proper asynchronous context tracking — like thread-local store — in a way that fits Node's concurrency model.

### Fill In The Blanks About Express Errors

See what the app was doing when the Express error occurred: HTTP requests, database queries, console loft statements, etc.

### Express Application Profiling

Profiling lets you see what parts of your code are consuming the most resources, like CPU or memory, in your application— so you can optimize them before end user experience is impacted. Test your application performance in any environment, including in production, without writing manual tests or extensive troubleshooting.

---

*Source: [sentry.io/for/express/](https://sentry.io/for/express/)*
