|
3 | 3 | ## Unreleased |
4 | 4 |
|
5 | 5 | - "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott |
6 | | -- feat(core): Support embedding APIs in google-genai ([#19797](https://github.com/getsentry/sentry-javascript/pull/19797)) |
| 6 | + |
| 7 | +- **ref(core): Remove provider-specific AI span attributes in favor of `gen_ai` attributes in sentry conventions ([#20011](https://github.com/getsentry/sentry-javascript/pull/20011))** |
| 8 | + |
| 9 | + The following provider-specific span attributes have been removed from the OpenAI and Anthropic AI integrations. Use the standardized `gen_ai.*` equivalents instead: |
| 10 | + |
| 11 | + | Removed attribute | Replacement | |
| 12 | + | -------------------------------- | ---------------------------- | |
| 13 | + | `openai.response.id` | `gen_ai.response.id` | |
| 14 | + | `openai.response.model` | `gen_ai.response.model` | |
| 15 | + | `openai.usage.prompt_tokens` | `gen_ai.usage.input_tokens` | |
| 16 | + | `openai.usage.completion_tokens` | `gen_ai.usage.output_tokens` | |
| 17 | + | `openai.response.timestamp` | _(removed, no replacement)_ | |
| 18 | + | `anthropic.response.timestamp` | _(removed, no replacement)_ | |
| 19 | + |
| 20 | + If you reference these attributes in hooks (e.g. `beforeSendTransaction`), update them to the `gen_ai.*` equivalents. |
| 21 | + |
| 22 | +## 10.47.0 |
| 23 | + |
| 24 | +### Important Changes |
| 25 | + |
| 26 | +- **feat(node-core): Add OTLP integration for node-core/light ([#19729](https://github.com/getsentry/sentry-javascript/pull/19729))** |
| 27 | + |
| 28 | + Added `otlpIntegration` at `@sentry/node-core/light/otlp` for users who manage |
| 29 | + their own OpenTelemetry setup and want to send trace data to Sentry without |
| 30 | + adopting the full `@sentry/node` SDK. |
| 31 | + |
| 32 | + ```js |
| 33 | + import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; |
| 34 | + import * as Sentry from '@sentry/node-core/light'; |
| 35 | + import { otlpIntegration } from '@sentry/node-core/light/otlp'; |
| 36 | + |
| 37 | + const provider = new NodeTracerProvider(); |
| 38 | + provider.register(); |
| 39 | + |
| 40 | + Sentry.init({ |
| 41 | + dsn: '__DSN__', |
| 42 | + integrations: [ |
| 43 | + otlpIntegration({ |
| 44 | + // Export OTel spans to Sentry via OTLP (default: true) |
| 45 | + setupOtlpTracesExporter: true, |
| 46 | + }), |
| 47 | + ], |
| 48 | + }); |
| 49 | + ``` |
| 50 | + |
| 51 | + The integration links Sentry errors to OTel traces and exports spans to Sentry via OTLP. |
| 52 | + |
| 53 | +- **feat(node, bun): Add runtime metrics integrations for Node.js and Bun ([#19923](https://github.com/getsentry/sentry-javascript/pull/19923), [#19979](https://github.com/getsentry/sentry-javascript/pull/19979))** |
| 54 | + |
| 55 | + New `nodeRuntimeMetricsIntegration` and `bunRuntimeMetricsIntegration` automatically collect runtime health metrics and send them to Sentry on a configurable interval (default: 30s). Collected metrics include memory (RSS, heap used/total), CPU utilization, event loop utilization, and process uptime. Node additionally collects event loop delay percentiles (p50, p99). Extra metrics like CPU time and external memory are available as opt-in. |
| 56 | + |
| 57 | + ```ts |
| 58 | + // Node.js |
| 59 | + import * as Sentry from '@sentry/node'; |
| 60 | + |
| 61 | + Sentry.init({ |
| 62 | + dsn: '...', |
| 63 | + integrations: [Sentry.nodeRuntimeMetricsIntegration()], |
| 64 | + }); |
| 65 | + |
| 66 | + // Bun |
| 67 | + import * as Sentry from '@sentry/bun'; |
| 68 | + |
| 69 | + Sentry.init({ |
| 70 | + dsn: '...', |
| 71 | + integrations: [Sentry.bunRuntimeMetricsIntegration()], |
| 72 | + }); |
| 73 | + ``` |
| 74 | + |
| 75 | +- **feat(core): Support embedding APIs in google-genai ([#19797](https://github.com/getsentry/sentry-javascript/pull/19797))** |
7 | 76 |
|
8 | 77 | Adds instrumentation for the Google GenAI [`embedContent`](https://ai.google.dev/gemini-api/docs/embeddings) API, creating `gen_ai.embeddings` spans. |
9 | 78 |
|
| 79 | +- **feat(browser): Add `elementTimingIntegration` for tracking element render and load times ([#19869](https://github.com/getsentry/sentry-javascript/pull/19869))** |
| 80 | + |
| 81 | + The new `elementTimingIntegration` captures Element Timing API data as Sentry metrics. It emits `element_timing.render_time` and `element_timing.load_time` distribution metrics for elements annotated with the `elementtiming` HTML attribute. |
| 82 | + |
| 83 | + ```ts |
| 84 | + import * as Sentry from '@sentry/browser'; |
| 85 | + |
| 86 | + Sentry.init({ |
| 87 | + dsn: '__DSN__', |
| 88 | + integrations: [Sentry.browserTracingIntegration(), Sentry.elementTimingIntegration()], |
| 89 | + }); |
| 90 | + ``` |
| 91 | + |
| 92 | + ```html |
| 93 | + <img src="hero.jpg" elementtiming="hero-image" /> |
| 94 | + ``` |
| 95 | + |
| 96 | +### Other Changes |
| 97 | + |
| 98 | +- feat(nuxt): Add middleware instrumentation compatibility for Nuxt 5 ([#19968](https://github.com/getsentry/sentry-javascript/pull/19968)) |
| 99 | +- feat(nuxt): Support parametrized SSR routes in Nuxt 5 ([#19977](https://github.com/getsentry/sentry-javascript/pull/19977)) |
| 100 | +- feat(solid): Add route parametrization for Solid Router ([#20031](https://github.com/getsentry/sentry-javascript/pull/20031)) |
| 101 | +- fix(core): Guard nullish response in supabase PostgREST handler ([#20033](https://github.com/getsentry/sentry-javascript/pull/20033)) |
| 102 | +- fix(node): Deduplicate `sentry-trace` and `baggage` headers on outgoing requests ([#19960](https://github.com/getsentry/sentry-javascript/pull/19960)) |
| 103 | +- fix(node): Ensure startNewTrace propagates traceId in OTel environments ([#19963](https://github.com/getsentry/sentry-javascript/pull/19963)) |
| 104 | +- fix(nuxt): Use virtual module for Nuxt pages data (SSR route parametrization) ([#20020](https://github.com/getsentry/sentry-javascript/pull/20020)) |
| 105 | +- fix(opentelemetry): Convert seconds timestamps in span.end() to milliseconds ([#19958](https://github.com/getsentry/sentry-javascript/pull/19958)) |
| 106 | +- fix(profiling): Disable profiling in worker threads ([#20040](https://github.com/getsentry/sentry-javascript/pull/20040)) |
| 107 | +- fix(react-router): Disable debug ID injection in Vite plugin to prevent double injection ([#19890](https://github.com/getsentry/sentry-javascript/pull/19890)) |
| 108 | +- refactor(browser): Reduce browser package bundle size ([#19856](https://github.com/getsentry/sentry-javascript/pull/19856)) |
| 109 | +- feat(deps): Bump OpenTelemetry dependencies ([#20046](https://github.com/getsentry/sentry-javascript/pull/20046)) |
| 110 | + |
| 111 | +<details> |
| 112 | + <summary> <strong>Internal Changes</strong> </summary> |
| 113 | + |
| 114 | +- chore: Add shared validate-pr composite action ([#20025](https://github.com/getsentry/sentry-javascript/pull/20025)) |
| 115 | +- chore: Update validate-pr action to latest version ([#20027](https://github.com/getsentry/sentry-javascript/pull/20027)) |
| 116 | +- chore(deps): Bump @apollo/server from 5.4.0 to 5.5.0 ([#20007](https://github.com/getsentry/sentry-javascript/pull/20007)) |
| 117 | +- chore(deps): Bump amqplib from 0.10.7 to 0.10.9 ([#20000](https://github.com/getsentry/sentry-javascript/pull/20000)) |
| 118 | +- chore(deps): Bump srvx from 0.11.12 to 0.11.13 ([#20001](https://github.com/getsentry/sentry-javascript/pull/20001)) |
| 119 | +- chore(deps-dev): Bump node-forge from 1.3.2 to 1.4.0 ([#20012](https://github.com/getsentry/sentry-javascript/pull/20012)) |
| 120 | +- chore(deps-dev): Bump yaml from 2.8.2 to 2.8.3 ([#19985](https://github.com/getsentry/sentry-javascript/pull/19985)) |
| 121 | +- ci(deps): Bump actions/upload-artifact from 6 to 7 ([#19569](https://github.com/getsentry/sentry-javascript/pull/19569)) |
| 122 | +- docs(release): Update publishing-a-release.md ([#19982](https://github.com/getsentry/sentry-javascript/pull/19982)) |
| 123 | +- feat(deps): Bump babel-loader from 10.0.0 to 10.1.1 ([#19997](https://github.com/getsentry/sentry-javascript/pull/19997)) |
| 124 | +- feat(deps): Bump handlebars from 4.7.7 to 4.7.9 ([#20008](https://github.com/getsentry/sentry-javascript/pull/20008)) |
| 125 | +- fix(browser-tests): Pin axios to 1.13.5 to avoid compromised 1.14.1 ([#20047](https://github.com/getsentry/sentry-javascript/pull/20047)) |
| 126 | +- fix(ci): Update validate-pr action to remove draft enforcement ([#20035](https://github.com/getsentry/sentry-javascript/pull/20035)) |
| 127 | +- fix(ci): Update validate-pr action to remove draft enforcement ([#20037](https://github.com/getsentry/sentry-javascript/pull/20037)) |
| 128 | +- fix(e2e): Pin @opentelemetry/api to 1.9.0 in ts3.8 test app ([#19992](https://github.com/getsentry/sentry-javascript/pull/19992)) |
| 129 | +- ref(browser-tests): Add waitForMetricRequest helper ([#20002](https://github.com/getsentry/sentry-javascript/pull/20002)) |
| 130 | +- ref(core): Consolidate getOperationName into one shared utility ([#19971](https://github.com/getsentry/sentry-javascript/pull/19971)) |
| 131 | +- ref(core): Introduce instrumented method registry for AI integrations ([#19981](https://github.com/getsentry/sentry-javascript/pull/19981)) |
| 132 | +- test(deno): Expand Deno E2E test coverage ([#19957](https://github.com/getsentry/sentry-javascript/pull/19957)) |
| 133 | +- test(e2e): Add e2e tests for `nodeRuntimeMetricsIntegration` ([#19989](https://github.com/getsentry/sentry-javascript/pull/19989)) |
| 134 | + |
| 135 | +</details> |
| 136 | + |
10 | 137 | ## 10.46.0 |
11 | 138 |
|
12 | 139 | ### Important Changes |
|
0 commit comments