Important Changes
- feat(core): Instrument LangGraph Agent (#18114)
Adds support for instrumenting LangGraph StateGraph operations in Node. The LangGraph integration can be configured as follows:
Sentry.init({
dsn: '__DSN__',
sendDefaultPii: false, // Even with PII disabled globally
integrations: [
Sentry.langGraphIntegration({
recordInputs: true, // Force recording input messages
recordOutputs: true, // Force recording response text
}),
],
});- feat(cloudflare/vercel-edge): Add manual instrumentation for LangGraph (#18112)
Instrumentation for LangGraph in Cloudflare Workers and Vercel Edge environments is supported by manually calling instrumentLangGraph:
import * as Sentry from '@sentry/cloudflare'; // or '@sentry/vercel-edge'
import { StateGraph, START, END, MessagesAnnotation } from '@langchain/langgraph';
// Create and instrument the graph
const graph = new StateGraph(MessagesAnnotation)
.addNode('agent', agentFn)
.addEdge(START, 'agent')
.addEdge('agent', END);
Sentry.instrumentLangGraph(graph, {
recordInputs: true,
recordOutputs: true,
});
const compiled = graph.compile({ name: 'weather_assistant' });
await compiled.invoke({
messages: [{ role: 'user', content: 'What is the weather in SF?' }],
});- feat(node): Add OpenAI SDK v6 support (#18244)
Other Changes
- feat(core): Support OpenAI embeddings API (#18224)
- feat(browser-utils): bump web-vitals to 5.1.0 (#18091)
- feat(core): Support truncation for LangChain integration request messages (#18157)
- feat(metrics): Add default
server.addressattribute on server runtimes (#18242) - feat(nextjs): Add URL to server-side transaction events (#18230)
- feat(node-core): Add mechanism to prevent wrapping ai providers multiple times(#17972)
- feat(replay): Bump limit for minReplayDuration (#18190)
- fix(browser): Add
okstatus to successfulidleSpans (#18139) - fix(core): Check
fetchsupport with data URL (#18225) - fix(core): Decrease number of Sentry stack frames for messages from
captureConsoleIntegration(#18096) - fix(core): Emit processed metric (#18222)
- fix(core): Ensure logs past
MAX_LOG_BUFFER_SIZEare not swallowed (#18207) - fix(core): Ensure metrics past
MAX_METRIC_BUFFER_SIZEare not swallowed (#18212) - fix(core): Fix logs and metrics flush timeout starvation with continuous logging (#18211)
- fix(core): Flatten gen_ai.request.available_tools in google-genai (#18194)
- fix(core): Stringify available tools sent from vercelai (#18197)
- fix(core/vue): Detect and skip normalizing Vue
VNodeobjects with highnormalizeDepth(#18206) - fix(nextjs): Avoid wrapping middleware files when in standalone mode (#18172)
- fix(nextjs): Drop meta trace tags if rendered page is ISR (#18192)
- fix(nextjs): Respect PORT variable for dev error symbolication (#18227)
- fix(nextjs): use LRU map instead of map for ISR route cache (#18234)
- fix(node):
tracingChannelexport missing in older node versions (#18191) - fix(node): Fix Spotlight configuration precedence to match specification (#18195)
- fix(react): Prevent navigation span leaks for consecutive navigations (#18098)
- ref(react-router): Deprecate ErrorBoundary exports (#18208)
Internal Changes
- chore: Fix missing changelog quote we use for attribution placement (#18237)
- chore: move tip about prioritizing issues (#18071)
- chore(e2e): Pin
@embroider/addon-shimto 1.10.0 for the e2e ember-embroider (#18173) - chore(react-router): Fix casing on deprecation notices (#18221)
- chore(test): Use correct
testTimeoutfield in bundler-tests vitest config - chore(e2e): Bump zod in e2e tests (#18251)
- test(browser-integration): Fix incorrect tag value assertions (#18162)
- test(profiling): Add test utils to validate Profile Chunk envelope (#18170)
- ref(e2e-ember): Remove
@embroider/addon-shimoverride (#18180) - ref(browser): Move trace lifecycle listeners to class function (#18231)
- ref(browserprofiling): Move and rename profiler class to UIProfiler (#18187)
- ref(core): Move ai integrations from utils to tracing (#18185)
- ref(core): Optimize
Scope.setTagbundle size and adjust test (#18182)
Bundle size 📦
| Path | Size |
|---|---|
| @sentry/browser | 24.04 KB |
| @sentry/browser - with treeshaking flags | 22.59 KB |
| @sentry/browser (incl. Tracing) | 40.4 KB |
| @sentry/browser (incl. Tracing, Profiling) | 44.62 KB |
| @sentry/browser (incl. Tracing, Replay) | 77.95 KB |
| @sentry/browser (incl. Tracing, Replay) - with treeshaking flags | 67.89 KB |
| @sentry/browser (incl. Tracing, Replay with Canvas) | 82.52 KB |
| @sentry/browser (incl. Tracing, Replay, Feedback) | 94.46 KB |
| @sentry/browser (incl. Feedback) | 40.32 KB |
| @sentry/browser (incl. sendFeedback) | 28.61 KB |
| @sentry/browser (incl. FeedbackAsync) | 33.41 KB |
| @sentry/react | 25.7 KB |
| @sentry/react (incl. Tracing) | 42.3 KB |
| @sentry/vue | 28.43 KB |
| @sentry/vue (incl. Tracing) | 42.16 KB |
| @sentry/svelte | 24.07 KB |
| CDN Bundle | 26.32 KB |
| CDN Bundle (incl. Tracing) | 40.96 KB |
| CDN Bundle (incl. Tracing, Replay) | 76.66 KB |
| CDN Bundle (incl. Tracing, Replay, Feedback) | 81.99 KB |
| CDN Bundle - uncompressed | 77.1 KB |
| CDN Bundle (incl. Tracing) - uncompressed | 121.42 KB |
| CDN Bundle (incl. Tracing, Replay) - uncompressed | 234.73 KB |
| CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed | 247.19 KB |
| @sentry/nextjs (client) | 44.66 KB |
| @sentry/sveltekit (client) | 40.78 KB |
| @sentry/node-core | 49.76 KB |
| @sentry/node | 155.53 KB |
| @sentry/node - without tracing | 90.65 KB |
| @sentry/aws-serverless | 104.08 KB |