About using-sentry
A practical guide for developers using Sentry to capture errors, add context, trace performance, and write structured logs. It includes SDK examples for Next.js, along with guidance on breadcrumbs and user context.
Key features
- 01Manually capture exceptions
- 02Attach user and custom context
- 03Create performance spans
- 04Write structured logs
- 05Add error breadcrumbs
- 06Clear user context on sign-out
Use cases
- 01Track handled errors that still need reporting
- 02Add user details to error events
- 03Measure asynchronous operations
- 04Log business events such as payments
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ andrelandgraf/ fullstackrecipes --skill using-sentryAfter installing, type/using-sentryin Claude Code to confirm it loaded.
Details
From the project READMEWorking with Sentry
Capture exceptions, add context, create performance spans, and use structured logging with Sentry.
Implement Working with Sentry
Capture exceptions, add context, create performance spans, and use structured logging with Sentry.
See:
- Resource:
using-sentryin Fullstack Recipes - URL: https://fullstackrecipes.com/recipes/using-sentry
Capturing Exceptions
Manually capture errors that are handled but should be tracked:
import * as Sentry from "@sentry/nextjs";
try {
await riskyOperation();
} catch (err) {
Sentry.captureException(err);
// Handle the error gracefully...
}
Adding Context
Attach user and custom context to errors:
import * as Sentry from "@sentry/nextjs";
// Set user context (persists for session)
Sentry.setUser({
id: session.user.id,
email: session.user.email,
});
// Add custom context to exceptions
Sentry.captureException(err, {
tags: {
feature: "checkout",
plan: "pro",
},
extra: {
orderId: "order_123",
items: cart.items,
},
});
Performance Tracing
Create spans for meaningful operations:
import * as Sentry from "@sentry/nextjs";
// Wrap async operations
const result = await Sentry.startSpan(
{
op: "http.client",
name: "GET /api/users",
},
async () => {
const response = await fetch("/api/users");
return response.json();
},
);
// Wrap sync operations
Sentry.startSpan(
{
op: "ui.click",
name: "Submit Button Click",
},
(span) => {
span.setAttribute("form", "checkout");
processSubmit();
},
);
Using the Sentry Logger
Sentry provides structured logging that appears in the Logs tab:
import * as Sentry from "@sentry/nextjs";
const { logger } = Sentry;
logger.info("Payment processed", { orderId: "123", amount: 99.99 });
logger.warn("Rate limit approaching", { current: 90, max: 100 });
logger.error("Payment failed", { orderId: "123", reason: "declined" });
Breadcrumbs
Add breadcrumbs to provide context for errors:
import * as Sentry from "@sentry/nextjs";
// Automatically captured: console logs, fetch requests, UI clicks
// Manual breadcrumbs for custom events:
Sentry.addBreadcrumb({
category: "auth",
message: "User signed in",
level: "info",
});
Clearing User Context
Clear user data on sign out:
import * as Sentry from "@sentry/nextjs";
async function signOut() {
Sentry.setUser(null);
await authClient.signOut();
}