Official Sentry SDK for Astro

Links
SDK Status
This SDK is in Beta and not yet fully stable. If you have feedback or encounter any bugs, feel free to
open an issue.
General
This package is a wrapper around @sentry/node
for the server and @sentry/browser
for the client side.
Installation and Setup
Install the Sentry Astro SDK with the astro
CLI:
npx astro add @sentry/astro
Add your DSN and source maps upload configuration:
import { defineConfig } from 'astro/config';
import sentry from '@sentry/astro';
export default defineConfig({
integrations: [
sentry({
dsn: '__DSN__',
sourceMapsUploadOptions: {
project: 'your-sentry-project-slug',
authToken: process.env.SENTRY_AUTH_TOKEN,
},
}),
],
});
Follow this guide to create an auth
token and add it to your environment variables:
SENTRY_AUTH_TOKEN="your-token"
Server Instrumentation
For Astro apps configured for (hybrid) Server Side Rendering (SSR), the Sentry integration will automatically add
middleware to your server to instrument incoming requests if you're using Astro 3.5.2 or newer.
If you're using Astro <3.5.2, complete the setup by adding the Sentry middleware to your src/middleware.js
file:
import { sequence } from 'astro:middleware';
import * as Sentry from '@sentry/astro';
export const onRequest = sequence(
Sentry.handleRequest(),
);
The Sentry middleware enhances the data collected by Sentry on the server side by:
- Enabeling distributed tracing between client and server
- Collecting performance spans for incoming requests
- Enhancing captured errors with additional information
Disable Automatic Server Instrumentation
You can opt out of using the automatic sentry server instrumentation in your astro.config.mjs
file:
import { defineConfig } from 'astro/config';
import sentry from '@sentry/astro';
export default defineConfig({
integrations: [
sentry({
dsn: '__DSN__',
autoInstrumentation: {
requestHandler: false,
},
}),
],
});
Configuration
Check out our docs for configuring your SDK setup:
8.0.0-alpha.7
This is the seventh alpha release of Sentry JavaScript SDK v8, which includes a variety of breaking changes.
Read the in-depth migration guide to find out how to address any breaking changes in your code.
Important Changes
- feat(nextjs): Use OpenTelemetry for performance monitoring and tracing (#11016)
We now use OpenTelemetry under the hood to power performance monitoring and tracing in the Next.js SDK.
- feat(v8/gatsby): Update SDK initialization for gatsby (#11292)
In v8, you cannot initialize the SDK anymore via Gatsby plugin options. Instead, you have to configure the SDK in a
sentry.config.js
file.
We also removed the automatic initialization of browserTracingIntegration
. You now have to add this integration
yourself.
Removal/Refactoring of deprecated functionality
- feat(v8): Remove addGlobalEventProcessor (#11255)
- feat(v8): Remove deprecated span id fields (#11180)
- feat(v8): Remove makeMain export (#11278)
- feat(v8/core): Remove deprecated span.sampled (#11274)
- feat(v8/core): Remove getActiveTransaction (#11280)
- feat(v8/core): Remove spanMetadata field (#11271)
- feat(v8/ember): Remove deprecated StartTransactionFunction (#11270)
- feat(v8/replay): Remove deprecated replay options (#11268)
- feat(v8/svelte): Remove deprecated componentTrackingPreprocessor export (#11277)
- ref: Remove more usages of getCurrentHub in the codebase (#11281)
- ref(core): Remove
scope.setSpan()
and scope.getSpan()
methods (#11051) - ref(profiling-node): Remove usage of getCurrentHub (#11275)
- ref(v8): change integration.setupOnce signature (#11238)
- ref: remove node-experimental references (#11290)
Other Changes
- feat(feedback): Make "required" text for input elements configurable (#11152) (#11153)
- feat(feedback): Update user feedback screenshot and cropping to align with designs (#11227)
- feat(nextjs): Remove
runtime
and vercel
tags (#11291) - feat(node): Add scope to ANR events (#11256)
- feat(node): Do not include
prismaIntegration
by default (#11265) - feat(node): Ensure
tracePropagationTargets
are respected (#11285) - feat(node): Simplify
SentrySpanProcessor
(#11273) - feat(profiling): Use OTEL powered node package (#11239)
- feat(utils): Allow text encoder/decoder polyfill from global SENTRY (#11283)
- fix(nextjs): Show misconfiguration warning (no
instrumentation.ts
) (#11266) - fix(node): Add logs when node-fetch cannot be instrumented (#11289)
- fix(node): Skip capturing Hapi Boom error responses. (#11151)
- fix(node): Use
suppressTracing
to avoid capturing otel spans (#11288) - fix(opentelemetry): Do not stomp span status when
startSpan
callback throws (#11170)