Important Changes
- feat(core): Apply scope attributes to logs (#18184)
You can now set attributes on the SDK's scopes which will be applied to all logs as long as the respective scopes are active. For the time being, only string, number and boolean attribute values are supported.
```ts Sentry.geGlobalScope().setAttributes({ is_admin: true, auth_provider: 'google' });
Sentry.withScope(scope => { scope.setAttribute('step', 'authentication');
// scope attributes `is_admin`, `auth_provider` and `step` are added
Sentry.logger.info(`user ${user.id} logged in`, { activeSince: 100 });
Sentry.logger.info(`updated ${user.id} last activity`);
});
// scope attributes is_admin and auth_provider are added
Sentry.logger.warn('stale website version, reloading page');
```
- feat(replay): Add Request body with
attachRawBodyFromRequestoption (#18501)
To attach the raw request body (from Request objects passed as the first fetch argument) to replay events, you can now use the attachRawBodyFromRequest option in the Replay integration:
js
Sentry.init({
integrations: [
Sentry.replayIntegration({
attachRawBodyFromRequest: true,
}),
],
});
- feat(tanstackstart-react): Trace server functions (#18500)
To enable tracing for server-side requests, you can now explicitly define a server entry point in your application and wrap your request handler with wrapFetchWithSentry.
```typescript // src/server.ts import { wrapFetchWithSentry } from '@sentry/tanstackstart-react'; import handler, { createServerEntry } from '@tanstack/react-start/server-entry';
export default createServerEntry( wrapFetchWithSentry({ fetch(request: Request) { return handler.fetch(request); }, }), ); ```
- feat(vue): Add TanStack Router integration (#18547)
The @sentry/vue package now includes support for TanStack Router. Use tanstackRouterBrowserTracingIntegration to automatically instrument pageload and navigation transactions with parameterized routes:
```javascript import { createApp } from 'vue'; import { createRouter } from '@tanstack/vue-router'; import * as Sentry from '@sentry/vue'; import { tanstackRouterBrowserTracingIntegration } from '@sentry/vue/tanstackrouter';
const router = createRouter({ // your router config });
Sentry.init({ app, dsn: 'PUBLIC_DSN', integrations: [tanstackRouterBrowserTracingIntegration(router)], tracesSampleRate: 1.0, }); ```
Other Changes
- feat(core): Capture initialize attributes on MCP servers (#18531)
- feat(nextjs): Extract tracing logic from server component wrapper templates (#18408)
- feat(nextjs): added webpack treeshaking flags as config (#18359)
- fix(solid/tanstackrouter): Ensure web vitals are sent on pageload (#18542)
Internal Changes
- chore(changelog): Add entry for scope attributes ([#18555](https://github.com/getsentry/sentry-javascript/pull/18555)) - chore(changelog): Add entry for tanstack start wrapFetchWithSentry ([#18558](https://github.com/getsentry/sentry-javascript/pull/18558)) - chore(deps): bump @trpc/server from 10.45.2 to 10.45.3 in /dev-packages/e2e-tests/test-applications/node-express-incorrect-instrumentation ([#18530](https://github.com/getsentry/sentry-javascript/pull/18530)) - chore(deps): bump @trpc/server from 10.45.2 to 10.45.3 in /dev-packages/e2e-tests/test-applications/node-express-v5 ([#18550](https://github.com/getsentry/sentry-javascript/pull/18550)) - chore(e2e): Pin to react-router 7.10.1 in spa e2e test ([#18548](https://github.com/getsentry/sentry-javascript/pull/18548)) - chore(e2e): Remove check on `http.response_content_length_uncompressed` ([#18536](https://github.com/getsentry/sentry-javascript/pull/18536)) - chore(github): Add "Closes" to PR template ([#18538](https://github.com/getsentry/sentry-javascript/pull/18538)) - test(cloudflare-mcp): Unpin mcp sdk ([#18528](https://github.com/getsentry/sentry-javascript/pull/18528)) - test(nextjs): Add e2e tests for server component spans in next 16 ([#18544](https://github.com/getsentry/sentry-javascript/pull/18544))Bundle size 📦
| Path | Size |
|---|---|
| @sentry/browser | 24.24 KB |
| @sentry/browser - with treeshaking flags | 22.77 KB |
| @sentry/browser (incl. Tracing) | 40.62 KB |
| @sentry/browser (incl. Tracing, Profiling) | 45.12 KB |
| @sentry/browser (incl. Tracing, Replay) | 78.3 KB |
| @sentry/browser (incl. Tracing, Replay) - with treeshaking flags | 68.28 KB |
| @sentry/browser (incl. Tracing, Replay with Canvas) | 82.88 KB |
| @sentry/browser (incl. Tracing, Replay, Feedback) | 94.82 KB |
| @sentry/browser (incl. Feedback) | 40.56 KB |
| @sentry/browser (incl. sendFeedback) | 28.82 KB |
| @sentry/browser (incl. FeedbackAsync) | 33.7 KB |
| @sentry/react | 25.92 KB |
| @sentry/react (incl. Tracing) | 42.77 KB |
| @sentry/vue | 28.6 KB |
| @sentry/vue (incl. Tracing) | 42.39 KB |
| @sentry/svelte | 24.25 KB |
| CDN Bundle | 26.62 KB |
| CDN Bundle (incl. Tracing) | 41.25 KB |
| CDN Bundle (incl. Tracing, Replay) | 77.1 KB |
| CDN Bundle (incl. Tracing, Replay, Feedback) | 82.44 KB |
| CDN Bundle - uncompressed | 78.18 KB |
| CDN Bundle (incl. Tracing) - uncompressed | 122.47 KB |
| CDN Bundle (incl. Tracing, Replay) - uncompressed | 236.27 KB |
| CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed | 248.74 KB |
| @sentry/nextjs (client) | 44.93 KB |
| @sentry/sveltekit (client) | 40.98 KB |
| @sentry/node-core | 50.4 KB |
| @sentry/node | 157.71 KB |
| @sentry/node - without tracing | 90.87 KB |
| @sentry/aws-serverless | 106.02 KB |