Tracepanel

Integrations

What the JavaScript SDK records in each framework and library, with OpenTelemetry's instrumentations it brings along.

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

FrameworkWhat a trace gets
ExpressEach request with its route, such as /api/books/:id, and the handler that served it.
NestJSThe 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.jsEach page and route handler, named by its route, such as /api/books/[id].
NuxtEach request named by its route, and the errors h3 answers with a 500.
BunEach route of Bun.serve under its pattern, or any fetch handler wrapped in withTracepanel().

See Installation to add each one.

Libraries

LibraryWhat Tracepanel records
pg, mysql2Each 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.
PrismaIts operations, as steps over their SQL.
ioredis, redisEach Redis command, with its own N+1 and duplicates.
MongoDBEach command, with its own N+1 and duplicates.
fetch(), node:httpEach outgoing HTTP call, from fetch() and from clients on node:http, such as axios.
BullMQEach job a worker runs, as a task, and each job the app adds, as a step.
consoleEach 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

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.

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.

On this page