| name | sentry-sdk-configuration |
| description | Use when initializing Sentry in applications, configuring SDK options, or setting up integrations across different frameworks and platforms. |
| allowed-tools | Read, Write, Edit, Bash, Grep, Glob |
Sentry - SDK Configuration
Initialize and configure Sentry SDKs across different platforms and frameworks.
JavaScript/TypeScript
Browser SDK
import * as Sentry from "@sentry/browser";
Sentry.init({
dsn: "https://examplePublicKey@o0.ingest.sentry.io/0",
environment: process.env.NODE_ENV,
release: process.env.RELEASE_VERSION,
tracesSampleRate: 1.0,
replaysSessionSampleRate: 0.1,
replaysOnErrorSampleRate: 1.0,
integrations: [
Sentry.browserTracingIntegration(),
Sentry.replayIntegration(),
],
});
Node.js SDK
import * as Sentry from "@sentry/node";
Sentry.init({
dsn: "https://examplePublicKey@o0.ingest.sentry.io/0",
environment: process.env.NODE_ENV,
release: process.env.RELEASE_VERSION,
tracesSampleRate: 1.0,
integrations: [
Sentry.httpIntegration(),
Sentry.expressIntegration(),
],
});
Next.js SDK
// sentry.client.config.ts
import * as Sentry from "@sentry/nextjs";
Sentry.init({
dsn: process.env.NEXT_PUBLIC_SENTRY_DSN,
tracesSampleRate: 1.0,
replaysSessionSampleRate: 0.1,
replaysOnErrorSampleRate: 1.0,
});
// sentry.server.config.ts
import * as Sentry from "@sentry/nextjs";
Sentry.init({
dsn: process.env.SENTRY_DSN,
tracesSampleRate: 1.0,
});
React SDK
import * as Sentry from "@sentry/react";
Sentry.init({
dsn: "https://examplePublicKey@o0.ingest.sentry.io/0",
integrations: [
Sentry.browserTracingIntegration(),
Sentry.reactRouterV6BrowserTracingIntegration({
useEffect,
useLocation,
useNavigationType,
createRoutesFromChildren,
matchRoutes,
}),
],
tracesSampleRate: 1.0,
});
// Wrap your app
const App = () => (
<Sentry.ErrorBoundary fallback={<ErrorFallback />}>
<YourApp />
</Sentry.ErrorBoundary>
);
Python SDK
import sentry_sdk
sentry_sdk.init(
dsn="https://examplePublicKey@o0.ingest.sentry.io/0",
environment=os.getenv("ENVIRONMENT"),
release=os.getenv("RELEASE_VERSION"),
traces_sample_rate=1.0,
profiles_sample_rate=1.0,
)
Django Integration
# settings.py
import sentry_sdk
sentry_sdk.init(
dsn="https://examplePublicKey@o0.ingest.sentry.io/0",
integrations=[
sentry_sdk.integrations.django.DjangoIntegration(),
],
traces_sample_rate=1.0,
send_default_pii=True,
)
Go SDK
import "github.com/getsentry/sentry-go"
func main() {
err := sentry.Init(sentry.ClientOptions{
Dsn: "https://examplePublicKey@o0.ingest.sentry.io/0",
Environment: os.Getenv("ENVIRONMENT"),
Release: os.Getenv("RELEASE_VERSION"),
TracesSampleRate: 1.0,
})
if err != nil {
log.Fatalf("sentry.Init: %s", err)
}
defer sentry.Flush(2 * time.Second)
}
Configuration Options
Sample Rates
Sentry.init({
// Error sampling (1.0 = 100%)
sampleRate: 1.0,
// Transaction/trace sampling
tracesSampleRate: 0.2,
// Or use a sampler function
tracesSampler: (samplingContext) => {
if (samplingContext.name.includes("/health")) {
return 0; // Don't trace health checks
}
return 0.2;
},
});
Filtering Events
Sentry.init({
beforeSend(event, hint) {
// Filter out specific errors
if (event.exception?.values?.[0]?.type === "NetworkError") {
return null;
}
return event;
},
ignoreErrors: [
"ResizeObserver loop limit exceeded",
/^Script error\.?$/,
],
denyUrls: [
/extensions\//i,
/^chrome:\/\//i,
],
});
Best Practices
- Always set
environmentandrelease - Use environment variables for DSN
- Configure appropriate sample rates for production
- Filter noisy or irrelevant errors
- Use framework-specific integrations
- Initialize Sentry as early as possible