# Integrations (/docs/javascript/integrations)

Tracepanel for JavaScript records through OpenTelemetry's instrumentations,
which come with the package. You don't install or configure them. A library
your app doesn't use is never loaded.

## Frameworks [#frameworks]

| Framework | What a trace gets |
| --- | --- |
| Express | Each request with its route, such as `/api/books/:id`, and the handler that served it. |
| NestJS | The controller method as the handler, such as `BooksController.list`, and the records of Nest's `Logger`. An `HttpException` below 500 is the response, not an error. |
| Next.js | Each page and route handler, named by its route, such as `/api/books/[id]`. |
| Nuxt | Each request named by its route, and the errors h3 answers with a 500. |
| Bun | Each route of `Bun.serve` under its pattern, or any fetch handler wrapped in `withTracepanel()`. |

See [Installation](/docs/javascript/installation#add-it-to-your-app) to add
each one.

## Libraries [#libraries]

| Library | What Tracepanel records |
| --- | --- |
| `pg`, `mysql2` | Each SQL statement, with the line of your code that ran it, and `EXPLAIN` in the console. Drizzle, Knex, Sequelize, TypeORM and Prisma's driver adapters run on these drivers, so their SQL shows too. |
| Prisma | Its operations, as steps over their SQL. |
| `ioredis`, `redis` | Each Redis command, with its own N+1 and duplicates. |
| MongoDB | Each command, with its own N+1 and duplicates. |
| `fetch()`, `node:http` | Each outgoing HTTP call, from `fetch()` and from clients on `node:http`, such as axios. |
| BullMQ | Each job a worker runs, as a task, and each job the app adds, as a step. |
| `console` | Each call made during a request, as a log record of the request. |

An error thrown in a handler comes with its stack, and your frames with their
source.

## Calls between apps [#calls-between-apps]

A request that carries a W3C `traceparent` continues the caller's trace, and
the agent links the two. Calls your app makes carry it too, so the app they
reach links back. See
[Traces across apps](/docs/how-it-works#traces-across-apps).

## Pages in the browser [#pages-in-the-browser]

The pages of a single-page app record in the browser, with the Vite plugin or
`record()`. See [Pages in the browser](/docs/javascript/browser).
