{"id":"prod_tqy3SdNeG6FcWxTaGnJ4H","name":"APM","slug":"apm","orgId":"org_94nsEsddXe_Gkrt6KHg1I","url":null,"description":"Application performance monitoring and tracing SDKs","category":"observability","kind":"platform","avatarUrl":null,"createdAt":"2026-04-10T16:06:57.693Z","embeddedAt":"2026-04-15T16:19:40.805Z","deletedAt":null,"sources":[{"id":"src_ODqI1pFF_3ENsT2q0E6Wa","slug":"datadog-dd-trace-js","name":"Datadog dd-trace-js","type":"github","url":"https://github.com/DataDog/dd-trace-js","metadata":"{\"changelogDetectedAt\":\"2026-04-16T15:16:12.017Z\",\"wellKnownSweptAt\":\"2026-06-24T06:00:01.224Z\"}","kind":"sdk"},{"id":"src_q3FS9y5xs3UdTUwxl0hMR","slug":"datadog-dd-trace-py","name":"Datadog dd-trace-py","type":"github","url":"https://github.com/DataDog/dd-trace-py","metadata":"{\"changelogUrl\":\"https://github.com/DataDog/dd-trace-py/blob/HEAD/CHANGELOG.md\",\"changelogDetectedAt\":\"2026-04-16T15:16:14.849Z\",\"wellKnownSweptAt\":\"2026-06-24T06:00:01.224Z\"}","kind":"sdk"}],"tags":["apm","tracing"],"aliases":[],"notice":null,"releases":[{"id":"rel_FhPVDOQaw9pTwyRxdL2GG","version":"v4.10.5","type":"feature","title":"4.10.5","summary":"Traces buffered before os.fork() are no longer sent twice, and the OpenAI integration no longer records unset request parameters as noise in LLM span metadata. Also fixes rare post-fork profiling crashes.","titleGenerated":"Datadog APM dd-trace-py v4.10.5 fixes duplicate traces after os.fork()","titleShort":"Duplicate post-fork traces eliminated; OpenAI sentinel noise fixed","content":"### Bug Fixes\r\n\r\n- tracing: This fix resolves an issue where traces buffered before `os.fork()` could be sent twice, once by the parent and once by the child.\r\n\r\n- LLM Observability: Resolves an issue where the OpenAI integration recorded unset request parameters (OpenAI SDK's `Omit`/`NotGiven` sentinel values) as noise in LLM span metadata.\r\n\r\n- profiling: Rare crashes that could happen post-fork in fork-based applications have been fixed.","publishedAt":"2026-06-17T20:19:53.000Z","url":"https://github.com/DataDog/dd-trace-py/releases/tag/v4.10.5","media":[],"prerelease":false,"source":{"slug":"datadog-dd-trace-py","name":"Datadog dd-trace-py","type":"github"},"product":{"slug":"apm","name":"APM"},"groupSlug":"apm","groupName":"APM","coverageCount":0,"contentChars":444,"contentTokens":99,"composition":{"bugs":3,"features":0,"enhancements":0}},{"id":"rel_Idc4MeSp6TQgNOuaqmcE7","version":"v4.9.3","type":"feature","title":"4.9.3","summary":"Fixed an issue where traces buffered before os.fork() could be sent by both parent and child processes, and rare post-fork crashes in profiling have been resolved.","titleGenerated":"Datadog APM dd-trace-py 4.9.3 fixes trace duplication on fork","titleShort":"Traces buffered before fork no longer sent twice","content":"### Bug Fixes\r\n\r\n- tracing: This fix resolves an issue where traces buffered before `os.fork()` could be sent twice, once by the parent and once by the child.\r\n\r\n- profiling: Rare crashes that could happen post-fork in fork-based applications have been fixed.","publishedAt":"2026-06-17T20:19:36.000Z","url":"https://github.com/DataDog/dd-trace-py/releases/tag/v4.9.3","media":[],"prerelease":false,"source":{"slug":"datadog-dd-trace-py","name":"Datadog dd-trace-py","type":"github"},"product":{"slug":"apm","name":"APM"},"groupSlug":"apm","groupName":"APM","coverageCount":0,"contentChars":259,"contentTokens":55,"composition":{"bugs":2,"features":0,"enhancements":0}},{"id":"rel_ppkhojad_dLg56yyQKFit","version":"v4.8.10","type":"feature","title":"4.8.10","summary":"Traces buffered before os.fork() are no longer sent twice by parent and child processes, and rare post-fork crashes in fork-based applications have been fixed.","titleGenerated":"Datadog APM dd-trace-py v4.8.10 fixes duplicate traces and post-fork crashes","titleShort":"Duplicate traces after os.fork() fixed; post-fork crashes resolved","content":"### Bug Fixes\r\n\r\n- tracing: This fix resolves an issue where traces buffered before `os.fork()` could be sent twice, once by the parent and once by the child.\r\n\r\n- profiling: Rare crashes that could happen post-fork in fork-based applications have been fixed.","publishedAt":"2026-06-17T20:19:14.000Z","url":"https://github.com/DataDog/dd-trace-py/releases/tag/v4.8.10","media":[],"prerelease":false,"source":{"slug":"datadog-dd-trace-py","name":"Datadog dd-trace-py","type":"github"},"product":{"slug":"apm","name":"APM"},"groupSlug":"apm","groupName":"APM","coverageCount":0,"contentChars":259,"contentTokens":55,"composition":{"bugs":2,"features":0,"enhancements":0}},{"id":"rel_OKG9lAJe7VmaeM6XgFjEn","version":"v5.109.0","type":"feature","title":"5.109.0","summary":"Fixed a redis db.name placeholder that poisoned inferred service naming, and route agentless spans to the regional data-center intake. New SQS and Kinesis consumer spans for promise-based receives, and Next.js app-route errors are now captured via onRequestError.","titleGenerated":"Datadog APM v5.109.0 fixes redis db.name placeholder that poisons service naming","titleShort":"Redis db.name placeholder dropped; SQS/Kinesis consumer spans for promise API","content":"<b>Features</b>\n- <b>aws</b> Aws-durable-execution-sdk-js instrumentation #8012\n- <b>aws-sdk</b> Create kinesis consumer span for promise-based getRecords #8828\n- <b>aws-sdk</b> Create SQS consumer spans for promise-based receives #8827\n- <b>bull-mq</b> Adds support for filter config opt #8340\n- <b>next</b> Capture thrown app-route errors via onRequestError #8822\n\n<b>Fixes</b>\n- <b>AI Guard</b> Remove aiguard product code from instrumentation #8858\n- <b>AppSec</b> Implement limits for analyzed downstream requests #8655\n- <b>AppSec</b> Optimize iast regex #8913\n- <b>electron</b> Skip IPC patching in processes without ipcMain #8798\n- <b>Feature Flags</b> Keep the optional peer require opaque to bundlers #8693\n- <b>General</b> Make tracer.use('fs') resolve while keeping fs off by default #8818\n- <b>General</b> Route agentless spans to the regional data-center intake #8870\n- <b>General</b> Suppress self-tracing of UDP metric flushes #8824\n- <b>redis</b> Drop db.name placeholder that poisons inferred service naming #8402\n\n<b>Performance</b>\n- <b>Test Optimization</b> Reuse vitest git metadata in workers #8935\n\n<b>Internal</b> (CI, Testing, Benchmarking)\n- Add batch/resource serialization benchmark #8883\n- Add code-owner resolution benchmark #8878\n- Add evaluation-metrics writer benchmark #8874\n- Add metric formatting and aggregation benchmark #8879\n- Add per-span tag formatting benchmark #8876\n- Add priority sampling benchmark and tune spans batch size #8875\n- Add request serialization benchmark #8881\n- Add resolution benchmarks #8884\n- Add span-processor format benchmark #8873\n- Add startSpan tag-assembly benchmark #8882\n- Add test-optimization event encoder benchmark #8877\n- Add traced end-to-end and allocation-churn benchmarks #8885\n- Build release notes from conventional commits #8814\n- Bump @babel/core from 7.29.0 to 7.29.7 #8919\n- Bump @happy-dom/jest-environment from 20.10.2 to 20.10.3 in /packages/dd-trace/test/plugins/versions in the test-optimization group across 1 directory #8930\n- Bump @smithy/smithy-client #8927\n- Bump form-data from 4.0.5 to 4.0.6 #8918\n- Bump markdown-it from 14.1.1 to 14.2.0 in /docs #8932\n- Bump the ai-and-llm group across 1 directory with 2 updates #8892\n- Bump the ai-and-llm group across 1 directory with 7 updates #8904\n- Bump the ai-and-llm group across 1 directory with 9 updates #8928\n- Bump the opentelemetry group across 1 directory with 6 updates #8906\n- Bump the serverless group across 1 directory with 10 updates #8929\n- Bump the serverless group across 1 directory with 8 updates #8893\n- Bump the serverless group across 1 directory with 8 updates #8905\n- Bump ws from 8.20.1 to 8.21.0 in /benchmark/sirun/startup/everything-fixture in the npm_and_yarn group across 1 directory #8917\n- Harden existing apm-idm benches and resync their docs #8886\n- Label changelog entries by commit scope instead of \"Other\" #8941\n- Note stale probe diagnostics edge case #8897\n- Pin Redis Cluster command tracing #8900\n- Sort changelog entries and bold every section heading #8944\n- Stabilize and tune existing benchmarks (no new variants) #8880\n- Stabilize live variants by sizing requests per variant #8848\n- Update one-pipeline to 1.0.0 #8899\n- Use current product names in generated release notes #8945","publishedAt":"2026-06-16T16:50:56.000Z","url":"https://github.com/DataDog/dd-trace-js/releases/tag/v5.109.0","media":[],"prerelease":false,"source":{"slug":"datadog-dd-trace-js","name":"Datadog dd-trace-js","type":"github"},"product":{"slug":"apm","name":"APM"},"groupSlug":"apm","groupName":"APM","coverageCount":0,"contentChars":3270,"contentTokens":950,"composition":{"bugs":9,"features":5,"enhancements":1}},{"id":"rel_X5bLnpmjKTk1-NJNycSjc","version":"v5.108.0","type":"feature","title":"5.108.0","summary":"Added allocations profiling support and fixed minor mark-sweep GC events for profiling. Also improved AppSec performance on object length and added --auto-discovery flag to datadog-ci junit upload.","titleGenerated":"Datadog APM v5.108.0 adds allocations profiling support","titleShort":"Allocations profiling support added","content":"* \\[[`39f12e5144`](https://github.com/DataDog/dd-trace-js/commit/39f12e5144)] - **(SEMVER-PATCH)** **fix(profiling)**: handle minor mark-sweep GC events (Attila Szegedi) [#8898](https://github.com/DataDog/dd-trace-js/pull/8898)\n* \\[[`5db7b04d61`](https://github.com/DataDog/dd-trace-js/commit/5db7b04d61)] - **(SEMVER-MINOR)** **feat(profiling)**: add allocations profiling support (Ilyas Shabi) [#8764](https://github.com/DataDog/dd-trace-js/pull/8764)\n* \\[[`467c0d9e49`](https://github.com/DataDog/dd-trace-js/commit/467c0d9e49)] - **(SEMVER-PATCH)** **chore(benchmark)**: upgrade sirun to v0.1.12 and send ready signal (Roch Devost) [#8842](https://github.com/DataDog/dd-trace-js/pull/8842)\n* \\[[`2a196b306e`](https://github.com/DataDog/dd-trace-js/commit/2a196b306e)] - **(SEMVER-PATCH)** **chore(deps)**: bump protobufjs from 8.4.2 to 8.6.0 in /vendor in the vendor-minor-and-patch-dependencies group across 1 directory (dependabot\\[bot]) [#8851](https://github.com/DataDog/dd-trace-js/pull/8851)\n* \\[[`743306892d`](https://github.com/DataDog/dd-trace-js/commit/743306892d)] - **(SEMVER-PATCH)** **chore(deps)**: bump @anthropic-ai/sdk from 0.101.0 to 0.102.0 in /packages/dd-trace/test/plugins/versions in the ai-and-llm group across 1 directory (dependabot\\[bot]) [#8852](https://github.com/DataDog/dd-trace-js/pull/8852)\n* \\[[`18e68a2f8a`](https://github.com/DataDog/dd-trace-js/commit/18e68a2f8a)] - **(SEMVER-PATCH)** **chore(deps-dev)**: bump the dev-minor-and-patch-dependencies group across 1 directory with 4 updates (dependabot\\[bot]) [#8854](https://github.com/DataDog/dd-trace-js/pull/8854)\n* \\[[`dc0c7f13ed`](https://github.com/DataDog/dd-trace-js/commit/dc0c7f13ed)] - **(SEMVER-PATCH)** **ci**: add --auto-discovery flag to datadog-ci junit upload (Roch Devost) [#8866](https://github.com/DataDog/dd-trace-js/pull/8866)\n* \\[[`ef87455420`](https://github.com/DataDog/dd-trace-js/commit/ef87455420)] - **(SEMVER-PATCH)** **fix(appsec)**: improve appsec perf on object length (Ilyas Shabi) [#8859](https://github.com/DataDog/dd-trace-js/pull/8859)\n* \\[[`bf6fa2bdcf`](https://github.com/DataDog/dd-trace-js/commit/bf6fa2bdcf)] - **(SEMVER-PATCH)** **test(cypress)**: rebalance parallel suites with v5 support (Juan Antonio Fernández de Alba) [#8871](https://github.com/DataDog/dd-trace-js/pull/8871)","publishedAt":"2026-06-12T14:29:20.000Z","url":"https://github.com/DataDog/dd-trace-js/releases/tag/v5.108.0","media":[],"prerelease":false,"source":{"slug":"datadog-dd-trace-js","name":"Datadog dd-trace-js","type":"github"},"product":{"slug":"apm","name":"APM"},"groupSlug":"apm","groupName":"APM","coverageCount":0,"contentChars":2315,"contentTokens":807,"composition":{"bugs":3,"features":1,"enhancements":1}},{"id":"rel_mizmHXLoCFzV0suomzKn8","version":"v5.107.0","type":"feature","title":"5.107.0","summary":"Fixed an issue where the Datadog API key was exposed in cleartext for agentless intake, and preserved caller trace context for pooled MySQL2 queries. Added toolDefinitions support in LLMObs.annotate() and span tags to AI Guard spans for anomaly detection.","titleGenerated":"Datadog APM v5.107.0 fixes Datadog API key exposure and preserves MySQL2 trace context","titleShort":"API key exposure fixed; MySQL2 trace context preserved","content":"* \\[[`e56fcb6f35`](https://github.com/DataDog/dd-trace-js/commit/e56fcb6f35)] - **(SEMVER-PATCH)** _**Revert**_ \"**test(cypress)**: rebalance parallel integration specs (#8844)\" (Juan Antonio Fernández de Alba) [#8867](https://github.com/DataDog/dd-trace-js/pull/8867)\n* \\[[`eddb1065e0`](https://github.com/DataDog/dd-trace-js/commit/eddb1065e0)] - **(SEMVER-PATCH)** **fix(exporters)**: keep the Datadog API key off cleartext for agentless intake (Ruben Bridgewater) [#8847](https://github.com/DataDog/dd-trace-js/pull/8847)\n* \\[[`4e92c35a12`](https://github.com/DataDog/dd-trace-js/commit/4e92c35a12)] - **(SEMVER-PATCH)** **ci(release)**: add urgent Slack alert when commit count reaches 100 (Roch Devost) [#8865](https://github.com/DataDog/dd-trace-js/pull/8865)\n* \\[[`270059c4c8`](https://github.com/DataDog/dd-trace-js/commit/270059c4c8)] - **(SEMVER-PATCH)** **test(cypress)**: rebalance parallel integration specs (Juan Antonio Fernández de Alba) [#8844](https://github.com/DataDog/dd-trace-js/pull/8844)\n* \\[[`2691ba1b5e`](https://github.com/DataDog/dd-trace-js/commit/2691ba1b5e)] - **(SEMVER-PATCH)** **chore(deps)**: bump @happy-dom/jest-environment (dependabot\\[bot]) [#8853](https://github.com/DataDog/dd-trace-js/pull/8853)\n* \\[[`0260d1342c`](https://github.com/DataDog/dd-trace-js/commit/0260d1342c)] - **(SEMVER-MINOR)** fixed asserts in testing file (zurdooo) [#8862](https://github.com/DataDog/dd-trace-js/pull/8862)\n* \\[[`7c0fdef510`](https://github.com/DataDog/dd-trace-js/commit/7c0fdef510)] - **(SEMVER-PATCH)** **bench(sirun)**: cut runtime of the slowest child\\_process and debugger variants (Ruben Bridgewater) [#8846](https://github.com/DataDog/dd-trace-js/pull/8846)\n* \\[[`9a3e63fcbc`](https://github.com/DataDog/dd-trace-js/commit/9a3e63fcbc)] - **(SEMVER-PATCH)** **ci(benchmarks)**: bring up the in-repo image and tolerate candidate-only baseline failures (Ruben Bridgewater) [#8752](https://github.com/DataDog/dd-trace-js/pull/8752)\n* \\[[`48b0a7ae8e`](https://github.com/DataDog/dd-trace-js/commit/48b0a7ae8e)] - **(SEMVER-MINOR)** **feat(mysql2)**: preserve caller trace context for pooled queries (Ruben Bridgewater) [#8826](https://github.com/DataDog/dd-trace-js/pull/8826)\n* \\[[`ad2faea53f`](https://github.com/DataDog/dd-trace-js/commit/ad2faea53f)] - **(SEMVER-PATCH)** **perf(opentracing)**: remove per-span throwaway service.name object allo… (Pablo Erhard) [#8816](https://github.com/DataDog/dd-trace-js/pull/8816)\n* \\[[`8ecf0719b8`](https://github.com/DataDog/dd-trace-js/commit/8ecf0719b8)] - **(SEMVER-PATCH)** **chore(deps)**: bump the gh-actions-packages group across 4 directories with 2 updates (dependabot\\[bot]) [#8856](https://github.com/DataDog/dd-trace-js/pull/8856)\n* \\[[`6d1e072697`](https://github.com/DataDog/dd-trace-js/commit/6d1e072697)] - **(SEMVER-MINOR)** **feat(llmobs)**: added toolDefinitions support in LLMObs.annotate() (zurdooo) [#8845](https://github.com/DataDog/dd-trace-js/pull/8845)\n* \\[[`39643f1704`](https://github.com/DataDog/dd-trace-js/commit/39643f1704)] - **(SEMVER-PATCH)** **ci(benchmarks)**: run benchmarks from in-repo bp-runner config (Ruben Bridgewater) [#8809](https://github.com/DataDog/dd-trace-js/pull/8809)\n* \\[[`ae21e975a4`](https://github.com/DataDog/dd-trace-js/commit/ae21e975a4)] - **(SEMVER-PATCH)** **fix(openai)**: mark openai.request span as errored when AI Guard blocks (Alberto Vara) [#8740](https://github.com/DataDog/dd-trace-js/pull/8740)\n* \\[[`5470679584`](https://github.com/DataDog/dd-trace-js/commit/5470679584)] - **(SEMVER-PATCH)** **bench(debugger)**: fire the probe deterministically and measure snapshot capture (Ruben Bridgewater) [#8785](https://github.com/DataDog/dd-trace-js/pull/8785)\n* \\[[`cc2501fdb1`](https://github.com/DataDog/dd-trace-js/commit/cc2501fdb1)] - **(SEMVER-PATCH)** **fix(jest)**: flush Test Optimization data before bail (Juan Antonio Fernández de Alba) [#8840](https://github.com/DataDog/dd-trace-js/pull/8840)\n* \\[[`04c57787a3`](https://github.com/DataDog/dd-trace-js/commit/04c57787a3)] - **(SEMVER-PATCH)** **ci**: consolidate JUnit and coverage uploads into All Green (Roch Devost) [#8836](https://github.com/DataDog/dd-trace-js/pull/8836)\n* \\[[`7f25869830`](https://github.com/DataDog/dd-trace-js/commit/7f25869830)] - **(SEMVER-PATCH)** **chore(test)**: parallelize playwright integration tests with createParallelIt (Roch Devost) [#8802](https://github.com/DataDog/dd-trace-js/pull/8802)\n* \\[[`1c1946eab4`](https://github.com/DataDog/dd-trace-js/commit/1c1946eab4)] - **(SEMVER-PATCH)** **chore(deps)**: bump the serverless group across 1 directory with 8 updates (dependabot\\[bot]) [#8831](https://github.com/DataDog/dd-trace-js/pull/8831)\n* \\[[`7ad1ecf4ff`](https://github.com/DataDog/dd-trace-js/commit/7ad1ecf4ff)] - **(SEMVER-PATCH)** **chore(deps)**: bump the ai-and-llm group across 1 directory with 2 updates (dependabot\\[bot]) [#8837](https://github.com/DataDog/dd-trace-js/pull/8837)\n* \\[[`a3b8c09d4c`](https://github.com/DataDog/dd-trace-js/commit/a3b8c09d4c)] - **(SEMVER-PATCH)** **fix(telemetry)**: omit OTLP headers and Datadog keys from telemetry (Brian Marks) [#8817](https://github.com/DataDog/dd-trace-js/pull/8817)\n* \\[[`3df1dc2033`](https://github.com/DataDog/dd-trace-js/commit/3df1dc2033)] - **(SEMVER-PATCH)** **refactor(config)**: resolve the agent URL once into config.url (Ruben Bridgewater) [#8819](https://github.com/DataDog/dd-trace-js/pull/8819)\n* \\[[`0e2aba9f29`](https://github.com/DataDog/dd-trace-js/commit/0e2aba9f29)] - **(SEMVER-PATCH)** **test(next)**: enable next.js latest in the plugin suite and CI (Ruben Bridgewater) [#8820](https://github.com/DataDog/dd-trace-js/pull/8820)\n* \\[[`c72b9dae63`](https://github.com/DataDog/dd-trace-js/commit/c72b9dae63)] - **(SEMVER-PATCH)** **test**: convert agent.load setup hooks to async/await (Ruben Bridgewater) [#8821](https://github.com/DataDog/dd-trace-js/pull/8821)\n* \\[[`c8d269dce5`](https://github.com/DataDog/dd-trace-js/commit/c8d269dce5)] - **(SEMVER-MINOR)** **feat(pg)**: preserve caller trace context for pooled queries (Ruben Bridgewater) [#8825](https://github.com/DataDog/dd-trace-js/pull/8825)\n* \\[[`f28fa5c0ab`](https://github.com/DataDog/dd-trace-js/commit/f28fa5c0ab)] - **(SEMVER-PATCH)** **ci(release)**: skip release proposal on weekends (Roch Devost) [#8835](https://github.com/DataDog/dd-trace-js/pull/8835)\n* \\[[`f51485be3b`](https://github.com/DataDog/dd-trace-js/commit/f51485be3b)] - **(SEMVER-PATCH, SEMVER-MINOR)** **feat(aiguard)**: Add span tags to AI Guard spans for anomaly detection (Ilyas Shabi) [#8813](https://github.com/DataDog/dd-trace-js/pull/8813)\n* \\[[`c67150b39e`](https://github.com/DataDog/dd-trace-js/commit/c67150b39e)] - **(SEMVER-PATCH)** **fix(vitest)**: report vitest retry errors (Juan Antonio Fernández de Alba) [#8834](https://github.com/DataDog/dd-trace-js/pull/8834)\n* \\[[`12c878a5a9`](https://github.com/DataDog/dd-trace-js/commit/12c878a5a9)] - **(SEMVER-PATCH)** **chore(deps)**: bump @happy-dom/jest-environment from 20.9.0 to 20.10.1 in /packages/dd-trace/test/plugins/versions in the test-optimization group across 1 directory (dependabot\\[bot]) [#8832](https://github.com/DataDog/dd-trace-js/pull/8832)\n* \\[[`811928b882`](https://github.com/DataDog/dd-trace-js/commit/811928b882)] - **(SEMVER-PATCH)** **fix(test-optimization)**: buffer early worker test traces (Juan Antonio Fernández de Alba) [#8812](https://github.com/DataDog/dd-trace-js/pull/8812)\n* \\[[`807c7f16e5`](https://github.com/DataDog/dd-trace-js/commit/807c7f16e5)] - **(SEMVER-PATCH)** **chore(deps)**: bump the ai-and-llm group across 1 directory with 6 updates (dependabot\\[bot]) [#8830](https://github.com/DataDog/dd-trace-js/pull/8830)\n* \\[[`2fc779974c`](https://github.com/DataDog/dd-trace-js/commit/2fc779974c)] - **(SEMVER-PATCH)** **chore(deps)**: bump the test-versions group across 1 directory with 2 updates (dependabot\\[bot]) [#8829](https://github.com/DataDog/dd-trace-js/pull/8829)\n* \\[[`b227cf0376`](https://github.com/DataDog/dd-trace-js/commit/b227cf0376)] - **(SEMVER-PATCH)** **bench(sirun)**: add profiler workload and llmobs guard, shorten over-long benches (Ruben Bridgewater) [#8787](https://github.com/DataDog/dd-trace-js/pull/8787)\n* \\[[`03e78e58ac`](https://github.com/DataDog/dd-trace-js/commit/03e78e58ac)] - **(SEMVER-PATCH)** **perf(format)**: serialize span links directly instead of via a throwaway array (Ruben Bridgewater) [#8796](https://github.com/DataDog/dd-trace-js/pull/8796)\n* \\[[`bdfda447b3`](https://github.com/DataDog/dd-trace-js/commit/bdfda447b3)] - **(SEMVER-PATCH)** **fix(fastify)**: guard error publishing against re-entrant recursion (Ruben Bridgewater) [#8788](https://github.com/DataDog/dd-trace-js/pull/8788)\n* \\[[`bf5e02be74`](https://github.com/DataDog/dd-trace-js/commit/bf5e02be74)] - **(SEMVER-PATCH)** **fix(aiguard)**: Use abortController instead of promise resolve/reject (Ilyas Shabi) [#8743](https://github.com/DataDog/dd-trace-js/pull/8743)\n* \\[[`2a1c6d56a4`](https://github.com/DataDog/dd-trace-js/commit/2a1c6d56a4)] - **(SEMVER-PATCH)** **test(cypress)**: improve cypress tests (Juan Antonio Fernández de Alba) [#8811](https://github.com/DataDog/dd-trace-js/pull/8811)\n* \\[[`4fe182f776`](https://github.com/DataDog/dd-trace-js/commit/4fe182f776)] - **(SEMVER-PATCH)** **chore(deps)**: bump the serverless group across 1 directory with 10 updates (dependabot\\[bot]) [#8806](https://github.com/DataDog/dd-trace-js/pull/8806)\n* \\[[`c3092aa45c`](https://github.com/DataDog/dd-trace-js/commit/c3092aa45c)] - **(SEMVER-PATCH)** **chore(deps)**: bump the test-optimization group across 1 directory with 4 updates (dependabot\\[bot]) [#8808](https://github.com/DataDog/dd-trace-js/pull/8808)\n* \\[[`9b02ace282`](https://github.com/DataDog/dd-trace-js/commit/9b02ace282)] - **(SEMVER-PATCH)** **chore**: remove preinstall script (Roch Devost) [#8803](https://github.com/DataDog/dd-trace-js/pull/8803)\n* \\[[`d48e63551e`](https://github.com/DataDog/dd-trace-js/commit/d48e63551e)] - **(SEMVER-PATCH)** **chore(deps)**: bump the ai-and-llm group across 1 directory with 4 updates (dependabot\\[bot]) [#8805](https://github.com/DataDog/dd-trace-js/pull/8805)\n* \\[[`800f991e4c`](https://github.com/DataDog/dd-trace-js/commit/800f991e4c)] - **(SEMVER-PATCH)** **chore(deps)**: bump the test-versions group across 1 directory with 2 updates (dependabot\\[bot]) [#8804](https://github.com/DataDog/dd-trace-js/pull/8804)\n* \\[[`9fd8d377d7`](https://github.com/DataDog/dd-trace-js/commit/9fd8d377d7)] - **(SEMVER-PATCH)** **chore(sampling)**: remove duplicated sample call (Pablo Erhard) [#8800](https://github.com/DataDog/dd-trace-js/pull/8800)\n* \\[[`cf6790031e`](https://github.com/DataDog/dd-trace-js/commit/cf6790031e)] - **(SEMVER-PATCH)** Bump libdatadog-nodejs to v0.9.4 (Gyuheon Oh) [#8801](https://github.com/DataDog/dd-trace-js/pull/8801)\n* \\[[`1db5eb1002`](https://github.com/DataDog/dd-trace-js/commit/1db5eb1002)] - **(SEMVER-PATCH)** **fix(cypress)**: clear managed retry attempts after Cypress retry setup (Juan Antonio Fernández de Alba) [#8797](https://github.com/DataDog/dd-trace-js/pull/8797)\n* \\[[`b5e8059daf`](https://github.com/DataDog/dd-trace-js/commit/b5e8059daf)] - **(SEMVER-PATCH)** **fix(aws-sdk)**: extract EventBridge trace context on the SQS consumer (Ayan Khan) [#8698](https://github.com/DataDog/dd-trace-js/pull/8698)\n* \\[[`3d2bd9f27e`](https://github.com/DataDog/dd-trace-js/commit/3d2bd9f27e)] - **(SEMVER-PATCH)** **bench(dns)**: drive the callback instrumentor over a no-op lookup (Ruben Bridgewater) [#8786](https://github.com/DataDog/dd-trace-js/pull/8786)\n* \\[[`75443fc7a8`](https://github.com/DataDog/dd-trace-js/commit/75443fc7a8)] - **(SEMVER-PATCH)** **fix(test-optimization)**: disable mocha retries for managed retries (Juan Antonio Fernández de Alba) [#8792](https://github.com/DataDog/dd-trace-js/pull/8792)\n* \\[[`10e7c52df4`](https://github.com/DataDog/dd-trace-js/commit/10e7c52df4)] - **(SEMVER-PATCH)** **fix(vitest)**: disable manual retries for managed retries (Juan Antonio Fernández de Alba) [#8795](https://github.com/DataDog/dd-trace-js/pull/8795)\n* \\[[`6e07ccce3c`](https://github.com/DataDog/dd-trace-js/commit/6e07ccce3c)] - **(SEMVER-PATCH)** **fix(cucumber)**: disable manual retries for managed retries (Juan Antonio Fernández de Alba) [#8794](https://github.com/DataDog/dd-trace-js/pull/8794)\n* \\[[`4c2598b235`](https://github.com/DataDog/dd-trace-js/commit/4c2598b235)] - **(SEMVER-PATCH)** **fix(cypress)**: disable manual retries for managed retries (Juan Antonio Fernández de Alba) [#8793](https://github.com/DataDog/dd-trace-js/pull/8793)\n* \\[[`3db69c4b6a`](https://github.com/DataDog/dd-trace-js/commit/3db69c4b6a)] - **(SEMVER-PATCH)** **fix(test-optimization)**: preserve quarantine on framework retries (Juan Antonio Fernández de Alba) [#8790](https://github.com/DataDog/dd-trace-js/pull/8790)\n* \\[[`a75867c9bd`](https://github.com/DataDog/dd-trace-js/commit/a75867c9bd)] - **(SEMVER-PATCH)** **perf(format,encode)**: reduce per-span format and encode overhead (Ruben Bridgewater) [#8754](https://github.com/DataDog/dd-trace-js/pull/8754)\n* \\[[`a79ffaed21`](https://github.com/DataDog/dd-trace-js/commit/a79ffaed21)] - **(SEMVER-PATCH)** **ci**: skip implicit-else branches in istanbul line-coverage patch (Ruben Bridgewater) [#8720](https://github.com/DataDog/dd-trace-js/pull/8720)\n* \\[[`a9c0194667`](https://github.com/DataDog/dd-trace-js/commit/a9c0194667)] - **(SEMVER-PATCH)** **chore(deps)**: bump the serverless group across 1 directory with 8 updates (dependabot\\[bot]) [#8782](https://github.com/DataDog/dd-trace-js/pull/8782)\n* \\[[`4e5d1c7514`](https://github.com/DataDog/dd-trace-js/commit/4e5d1c7514)] - **(SEMVER-PATCH)** **chore(deps)**: bump @datadog/openfeature-node-server from 1.2.1 to 2.0.0 (dependabot\\[bot]) [#8780](https://github.com/DataDog/dd-trace-js/pull/8780)\n* \\[[`95d13e0073`](https://github.com/DataDog/dd-trace-js/commit/95d13e0073)] - **(SEMVER-PATCH)** **chore(deps)**: bump the vendor-minor-and-patch-dependencies group across 1 directory with 2 updates (dependabot\\[bot]) [#8776](https://github.com/DataDog/dd-trace-js/pull/8776)\n* \\[[`2cc0caee19`](https://github.com/DataDog/dd-trace-js/commit/2cc0caee19)] - **(SEMVER-PATCH)** **chore(deps-dev)**: bump @babel/helpers from 7.29.2 to 7.29.7 in the dev-minor-and-patch-dependencies group across 1 directory (dependabot\\[bot]) [#8779](https://github.com/DataDog/dd-trace-js/pull/8779)\n* \\[[`d3b7394057`](https://github.com/DataDog/dd-trace-js/commit/d3b7394057)] - **(SEMVER-PATCH)** **chore(deps)**: bump the ai-and-llm group across 1 directory with 6 updates (dependabot\\[bot]) [#8778](https://github.com/DataDog/dd-trace-js/pull/8778)\n* \\[[`46e96ff2f0`](https://github.com/DataDog/dd-trace-js/commit/46e96ff2f0)] - **(SEMVER-PATCH)** **chore(deps)**: bump @koa/router from 15.5.0 to 15.6.0 in /integration-tests/esbuild in the test-versions group across 1 directory (dependabot\\[bot]) [#8777](https://github.com/DataDog/dd-trace-js/pull/8777)\n* \\[[`cd1c1f01e9`](https://github.com/DataDog/dd-trace-js/commit/cd1c1f01e9)] - **(SEMVER-PATCH)** **ci(dependabot)**: track Docker base image updates (Ruben Bridgewater) [#8772](https://github.com/DataDog/dd-trace-js/pull/8772)\n* \\[[`ecc40b75ca`](https://github.com/DataDog/dd-trace-js/commit/ecc40b75ca)] - **(SEMVER-PATCH)** **fix(nightly)**: re-allow nightly node testing (Pablo Erhard) [#8753](https://github.com/DataDog/dd-trace-js/pull/8753)\n* \\[[`3823ad352d`](https://github.com/DataDog/dd-trace-js/commit/3823ad352d)] - **(SEMVER-PATCH)** **perf(instrumentation)**: tune http/http2/net forwarding wrappers for V8 and shimmer (Ruben Bridgewater) [#8757](https://github.com/DataDog/dd-trace-js/pull/8757)\n* \\[[`72167012d9`](https://github.com/DataDog/dd-trace-js/commit/72167012d9)] - **(SEMVER-PATCH)** **docs(agents)**: tighten AGENTS.md and skills (Ruben Bridgewater) [#8684](https://github.com/DataDog/dd-trace-js/pull/8684)\n* \\[[`f3d75aac29`](https://github.com/DataDog/dd-trace-js/commit/f3d75aac29)] - **(SEMVER-PATCH)** **perf(instrumentation)**: match middleware next-callback identity to skip shimmer rewrites (Ruben Bridgewater) [#8758](https://github.com/DataDog/dd-trace-js/pull/8758)\n* \\[[`fc0f4df671`](https://github.com/DataDog/dd-trace-js/commit/fc0f4df671)] - **(SEMVER-PATCH)** **bench(sirun)**: update Node.js versions and pin the benchmark image (Ruben Bridgewater) [#8775](https://github.com/DataDog/dd-trace-js/pull/8775)\n* \\[[`9c7e13a82f`](https://github.com/DataDog/dd-trace-js/commit/9c7e13a82f)] - **(SEMVER-PATCH)** **perf(core)**: hold the legacy store directly under AsyncContextFrame (Ruben Bridgewater) [#8761](https://github.com/DataDog/dd-trace-js/pull/8761)\n* \\[[`c8f9a93742`](https://github.com/DataDog/dd-trace-js/commit/c8f9a93742)] - **(SEMVER-PATCH)** **bench(integrations)**: tune dns/graphql/http/net/aws-sdk/propagation; drop bluebird and q (Ruben Bridgewater) [#8734](https://github.com/DataDog/dd-trace-js/pull/8734)\n* \\[[`6d992dc2b2`](https://github.com/DataDog/dd-trace-js/commit/6d992dc2b2)] - **(SEMVER-PATCH)** **docs(types)**: note that startSpan does not activate the returned span (Ruben Bridgewater) [#8771](https://github.com/DataDog/dd-trace-js/pull/8771)\n* \\[[`f2b7c57f38`](https://github.com/DataDog/dd-trace-js/commit/f2b7c57f38)] - **(SEMVER-PATCH)** **bench(ws)**: websocket message instrumentation bench (Ruben Bridgewater) [#8725](https://github.com/DataDog/dd-trace-js/pull/8725)\n* \\[[`57b5ea5795`](https://github.com/DataDog/dd-trace-js/commit/57b5ea5795)] - **(SEMVER-PATCH)** **bench(core)**: tune the startup, log, and runtime-metrics benches (Ruben Bridgewater) [#8770](https://github.com/DataDog/dd-trace-js/pull/8770)\n* \\[[`cf7edad37a`](https://github.com/DataDog/dd-trace-js/commit/cf7edad37a)] - **(SEMVER-MINOR)** **feat(otel)**: add support for OTLP Runtime Metrics (Maximo Bautista) [#8357](https://github.com/DataDog/dd-trace-js/pull/8357)\n* \\[[`f67f0b6bd6`](https://github.com/DataDog/dd-trace-js/commit/f67f0b6bd6)] - **(SEMVER-PATCH)** **fix(llmobs)**: fan array-valued user tags out into one wire entry per element (Ruben Bridgewater) [#8689](https://github.com/DataDog/dd-trace-js/pull/8689)\n* \\[[`92e814b01e`](https://github.com/DataDog/dd-trace-js/commit/92e814b01e)] - **(SEMVER-PATCH)** **bench(pg)**: real-world pg query instrumentation bench (Ruben Bridgewater) [#8724](https://github.com/DataDog/dd-trace-js/pull/8724)\n* \\[[`b3fcf3302e`](https://github.com/DataDog/dd-trace-js/commit/b3fcf3302e)] - **(SEMVER-PATCH)** **bench(encoders)**: tune the encoding and exporting-pipeline benches (Ruben Bridgewater) [#8731](https://github.com/DataDog/dd-trace-js/pull/8731)\n* \\[[`09c46f5a4d`](https://github.com/DataDog/dd-trace-js/commit/09c46f5a4d)] - **(SEMVER-PATCH)** **bench(kafkajs)**: kafkajs and data-streams checkpoint benches (Ruben Bridgewater) [#8727](https://github.com/DataDog/dd-trace-js/pull/8727)\n* \\[[`ad3a3034b9`](https://github.com/DataDog/dd-trace-js/commit/ad3a3034b9)] - **(SEMVER-PATCH)** **bench(redis)**: real-world redis command instrumentation bench (Ruben Bridgewater) [#8722](https://github.com/DataDog/dd-trace-js/pull/8722)\n* \\[[`157ca323e4`](https://github.com/DataDog/dd-trace-js/commit/157ca323e4)] - **(SEMVER-PATCH)** **fix(stats)**: bucket spans by start instead of the missing startTime field (Ruben Bridgewater) [#8759](https://github.com/DataDog/dd-trace-js/pull/8759)\n* \\[[`02f66b9af5`](https://github.com/DataDog/dd-trace-js/commit/02f66b9af5)] - **(SEMVER-PATCH)** **perf(http)**: skip the redundant context enter on fresh server requests (Ruben Bridgewater) [#8760](https://github.com/DataDog/dd-trace-js/pull/8760)\n* \\[[`3f16b48dda`](https://github.com/DataDog/dd-trace-js/commit/3f16b48dda)] - **(SEMVER-PATCH)** **bench(sirun)**: trim runtime of already-merged loop benches (Ruben Bridgewater) [#8766](https://github.com/DataDog/dd-trace-js/pull/8766)\n* \\[[`57b2c55e11`](https://github.com/DataDog/dd-trace-js/commit/57b2c55e11)] - **(SEMVER-PATCH)** **bench(core)**: tune the shimmer-runtime and shimmer-startup benches (Ruben Bridgewater) [#8769](https://github.com/DataDog/dd-trace-js/pull/8769)\n* \\[[`bc45c72f26`](https://github.com/DataDog/dd-trace-js/commit/bc45c72f26)] - **(SEMVER-PATCH)** **bench(core)**: tune the async\\_hooks and scope benches (Ruben Bridgewater) [#8768](https://github.com/DataDog/dd-trace-js/pull/8768)\n* \\[[`fe4245d2fd`](https://github.com/DataDog/dd-trace-js/commit/fe4245d2fd)] - **(SEMVER-PATCH)** **perf(format)**: clear hot-path tags with undefined instead of delete (Ruben Bridgewater) [#8756](https://github.com/DataDog/dd-trace-js/pull/8756)\n* \\[[`9bfd627777`](https://github.com/DataDog/dd-trace-js/commit/9bfd627777)] - **(SEMVER-PATCH)** **chore(ci)**: remove useless call to get-credentials in system-tests workflow (Charles de Beauchesne) [#8767](https://github.com/DataDog/dd-trace-js/pull/8767)\n* \\[[`ddc183c527`](https://github.com/DataDog/dd-trace-js/commit/ddc183c527)] - **(SEMVER-PATCH)** **chore(ci)**: update dd-sts-action to v1.0.04 (Charles de Beauchesne) [#8765](https://github.com/DataDog/dd-trace-js/pull/8765)\n* \\[[`812a79be28`](https://github.com/DataDog/dd-trace-js/commit/812a79be28)] - **(SEMVER-PATCH)** **bench(sirun)**: add the local overview collection script (Ruben Bridgewater) [#8733](https://github.com/DataDog/dd-trace-js/pull/8733)\n* \\[[`4ce00de9d1`](https://github.com/DataDog/dd-trace-js/commit/4ce00de9d1)] - **(SEMVER-PATCH)** **bench(mongodb)**: mongodb-core command instrumentation bench (Ruben Bridgewater) [#8726](https://github.com/DataDog/dd-trace-js/pull/8726)\n* \\[[`91ddaa58ff`](https://github.com/DataDog/dd-trace-js/commit/91ddaa58ff)] - **(SEMVER-PATCH)** **bench(spans)**: tune the span lifecycle bench (Ruben Bridgewater) [#8732](https://github.com/DataDog/dd-trace-js/pull/8732)\n* \\[[`cf3276f5d0`](https://github.com/DataDog/dd-trace-js/commit/cf3276f5d0)] - **(SEMVER-PATCH)** **bench(appsec)**: iast taint-tracking bench and appsec live-bench tuning (Ruben Bridgewater) [#8730](https://github.com/DataDog/dd-trace-js/pull/8730)\n* \\[[`6ed31f4845`](https://github.com/DataDog/dd-trace-js/commit/6ed31f4845)] - **(SEMVER-PATCH)** **bench(core)**: id, url, and tracing-channel dispatch benches (Ruben Bridgewater) [#8729](https://github.com/DataDog/dd-trace-js/pull/8729)\n* \\[[`f9b0449a63`](https://github.com/DataDog/dd-trace-js/commit/f9b0449a63)] - **(SEMVER-PATCH)** **bench(idm)**: fs and child\\_process instrumentation benches (Ruben Bridgewater) [#8728](https://github.com/DataDog/dd-trace-js/pull/8728)\n* \\[[`d54b4cc5a8`](https://github.com/DataDog/dd-trace-js/commit/d54b4cc5a8)] - **(SEMVER-PATCH)** **bench(pino)**: log-injection overhead bench (Ruben Bridgewater) [#8723](https://github.com/DataDog/dd-trace-js/pull/8723)\n* \\[[`0813bf0d0a`](https://github.com/DataDog/dd-trace-js/commit/0813bf0d0a)] - **(SEMVER-PATCH)** **ci(release)**: cap proposal at 100 commits and notify guild at 50 (Roch Devost) [#8711](https://github.com/DataDog/dd-trace-js/pull/8711)\n* \\[[`e9c271f784`](https://github.com/DataDog/dd-trace-js/commit/e9c271f784)] - **(SEMVER-PATCH)** Fixes APMS-19181: sets the service discovery logs to respect the log level so that the logs can be suppressed when modifying the log level (Sean Dever) [#8677](https://github.com/DataDog/dd-trace-js/pull/8677)\n* \\[[`740648aae4`](https://github.com/DataDog/dd-trace-js/commit/740648aae4)] - **(SEMVER-PATCH)** **fix(esbuild)**: drop ...arguments spread from CJS module wrap (Ruben Bridgewater) [#8691](https://github.com/DataDog/dd-trace-js/pull/8691)\n* \\[[`0cc2b46076`](https://github.com/DataDog/dd-trace-js/commit/0cc2b46076)] - **(SEMVER-PATCH)** **fix**: stop using url.parse in http (Ruben Bridgewater) [#8750](https://github.com/DataDog/dd-trace-js/pull/8750)\n* \\[[`ba82e92e7a`](https://github.com/DataDog/dd-trace-js/commit/ba82e92e7a)] - **(SEMVER-PATCH)** **bench(sirun)**: auto-shard the suite from variant count and cores (Ruben Bridgewater) [#8751](https://github.com/DataDog/dd-trace-js/pull/8751)\n* \\[[`36a2f15f07`](https://github.com/DataDog/dd-trace-js/commit/36a2f15f07)] - **(SEMVER-PATCH)** **bench(sirun)**: add startup-share guard for loop benchmarks (Ruben Bridgewater) [#8721](https://github.com/DataDog/dd-trace-js/pull/8721)","publishedAt":"2026-06-11T12:34:02.000Z","url":"https://github.com/DataDog/dd-trace-js/releases/tag/v5.107.0","media":[],"prerelease":false,"source":{"slug":"datadog-dd-trace-js","name":"Datadog dd-trace-js","type":"github"},"product":{"slug":"apm","name":"APM"},"groupSlug":"apm","groupName":"APM","coverageCount":0,"contentChars":24255,"contentTokens":8098,"composition":{"bugs":17,"features":4,"enhancements":6}},{"id":"rel_4gVA-dVq_uL_SbzLZplkm","version":"v4.9.2","type":"feature","title":"4.9.2","summary":"Runtime metrics now include container and orchestrator tags on hosts using cgroup v2, fixing an issue where they were previously missing. Also fixed a crash that could occur at interpreter teardown for IAST and a rare crash after fork in fork-based applications during profiling.","titleGenerated":"Datadog APM v4.9.2 fixes missing container tags and IAST/profiling crashes","titleShort":"Runtime metrics get container tags; IAST/profiling crashes fixed","content":"### Bug Fixes\r\n- runtime metrics: Fixes an issue where runtime metrics were missing container and orchestrator tags (such as `pod_name`) on hosts using cgroup v2.\r\n\r\n- IAST: A crash that could happen at interpreter teardown has been fixed.\r\n\r\n- profiling: A rare crash that could happen after fork in fork-based applications has been fixed.","publishedAt":"2026-06-11T06:57:40.000Z","url":"https://github.com/DataDog/dd-trace-py/releases/tag/v4.9.2","media":[],"prerelease":false,"source":{"slug":"datadog-dd-trace-py","name":"Datadog dd-trace-py","type":"github"},"product":{"slug":"apm","name":"APM"},"groupSlug":"apm","groupName":"APM","coverageCount":0,"contentChars":340,"contentTokens":71,"composition":{"bugs":3,"features":0,"enhancements":0}},{"id":"rel_BkKLuRoFy3t29wmjeU0Q9","version":"v4.10.4","type":"feature","title":"4.10.4","summary":"Fixed agentless LLM observability export dropping data on the us3, us5, ap1, and ap2 Datadog sites when no Agent was running or agentless export was explicitly enabled. Also fixed runtime metrics missing container and orchestrator tags on cgroup v2 hosts, IAST interpreter teardown crash, profiling post-fork crash, and ddtrace-run keyboard interrupt traceback.","titleGenerated":"Datadog APM v4.10.4 fixes LLM data loss on us3, us5, ap1, ap2 sites","titleShort":"LLM agentless export no longer drops data on us3/us5/ap1/ap2","content":"### Bug Fixes\r\n- LLM Observability: Fixes agentless export dropping data on the `us3`, `us5`, `ap1`, and `ap2` Datadog sites. This affected customers on these sites when no Datadog Agent was running or agentless export was explicitly enabled (`DD_LLMOBS_AGENTLESS_ENABLED=1`).\r\n\r\n- runtime metrics: Fixes an issue where runtime metrics were missing container and orchestrator tags (such as `pod_name`) on hosts using cgroup v2.\r\n\r\n- IAST: A crash that could happen at interpreter teardown has been fixed.\r\n\r\n- profiling: A rare crash that could happen after fork in fork-based applications has been fixed.\r\n\r\n- tracing: Fixes a bug where running `ddtrace-run` caused a traceback on keyboard interrupt.","publishedAt":"2026-06-10T13:37:57.000Z","url":"https://github.com/DataDog/dd-trace-py/releases/tag/v4.10.4","media":[],"prerelease":false,"source":{"slug":"datadog-dd-trace-py","name":"Datadog dd-trace-py","type":"github"},"product":{"slug":"apm","name":"APM"},"groupSlug":"apm","groupName":"APM","coverageCount":0,"contentChars":701,"contentTokens":160,"composition":{"bugs":5,"features":0,"enhancements":0}},{"id":"rel_RvKysiHXRBFuyEnohttJE","version":"v4.8.9","type":"feature","title":"4.8.9","summary":"Runtime metrics now include container and orchestrator tags (such as pod_name) on hosts using cgroup v2. Also fixed a pytest crash when Code Origin inspects call stacks from view exceptions, an interpreter teardown crash in IAST, and a rare post-fork crash in profiling.","titleGenerated":"Datadog APM v4.8.9 fixes runtime metrics tags on cgroup v2","titleShort":"Runtime metrics now include container tags on cgroup v2","content":"### Bug Fixes\r\n\r\n- runtime metrics: Fixes an issue where runtime metrics were missing container and orchestrator tags (such as `pod_name`) on hosts using cgroup v2.\r\n\r\n<!-- -->\r\n\r\n- code origin: fixed an issue that could have caused pytest to crash internally when inspecting the call stack from an exception thrown by a view function when Code Origin is enabled.\r\n\r\n<!-- -->\r\n\r\n- IAST: A crash that could happen at interpreter teardown has been fixed.\r\n\r\n<!-- -->\r\n\r\n- profiling: A rare crash that could happen after fork in fork-based applications has been fixed.\r\n\r\n","publishedAt":"2026-06-10T08:28:14.000Z","url":"https://github.com/DataDog/dd-trace-py/releases/tag/v4.8.9","media":[],"prerelease":false,"source":{"slug":"datadog-dd-trace-py","name":"Datadog dd-trace-py","type":"github"},"product":{"slug":"apm","name":"APM"},"groupSlug":"apm","groupName":"APM","coverageCount":0,"contentChars":569,"contentTokens":112,"composition":{"bugs":4,"features":0,"enhancements":0}},{"id":"rel_VAD5IxJelyeFhNHzJydCY","version":"v4.9.1","type":"feature","title":"4.9.1","summary":"Fixed an AppSec body-parsing hook that consumed the `websocket.connect` ASGI message, causing ASGI/FastAPI WebSocket connections to fail with HTTP 500. Also fixed memory leaks in native frame tracking from unbounded call-site metadata growth and in reference cycles through `PeriodicThread` callbacks, plus a race condition where extra service names could be silently dropped from Remote Configuration payloads in multi-threaded applications.","titleGenerated":"Datadog APM v4.9.1 fixes WebSocket failures and memory leaks in tracing","titleShort":"WebSocket connections no longer fail; memory leaks fixed","content":"### Bug Fixes\r\n\r\n- AAP: This fix resolves an issue where the AppSec body-parsing hook consumed the `websocket.connect` ASGI message, causing ASGI/FastAPI WebSocket connections to fail with HTTP 500 w\r\nhen AppSec was enabled.\r\n\r\n<!-- -->\r\n\r\n- CI Visibility: fix the default HTTP timeout for backend requests from 15 seconds to 30 seconds, and add the `DD_CIVISIBILITY_BACKEND_API_TIMEOUT_MILLIS` environment variable (previ\r\nously missing) to override it. The value is expressed in milliseconds (e.g. `60000` for 60 seconds), consistent with the Java tracer. The same timeout now applies uniformly to all ba\r\nckend requests, including skippable test fetches.\r\n\r\n<!-- -->\r\n\r\n- tracing: Fixes a race condition where extra service names could be silently dropped from Remote Configuration `/v0.7/config` payloads in multi-threaded applications (e.g. uWSGI).\r\n\r\n<!-- -->\r\n\r\n- LLM Observability: Fixes an issue where `reasoning_content` was missing from streamed chat completions in the OpenAI and LiteLLM integrations when an OpenAI-compatible reasoning pr\r\novider (e.g. DeepSeek, Qwen) emitted `delta.reasoning_content` chunks. The aggregated message now captures reasoning text in the output message, matching non-streaming behavior.\r\n\r\n<!-- -->\r\n\r\n- Fixed an issue that could have caused some timers, like the one responsible for Symbol Database uploads, to fire repeatedly after the first execution.\r\n\r\n<!-- -->\r\n\r\n- internal: This fix resolves a memory leak where reference cycles through `PeriodicThread` callbacks were invisible to Python's cyclic garbage collector and could accumulate when th\r\nreads used bound methods as targets.\r\n\r\n<!-- -->\r\n\r\n- profiling: Fixes a memory leak in native frame tracking caused by unbounded native call-site metadata growth.\r\n\r\n<!-- -->\r\n\r\n- SCA: This fix resolves an issue where unresolved runtime reachability targets could accumulate across Software Composition Analysis updates, causing resident memory usage to grow o\r\nver time.\r\n\r\n<!-- -->\r\n\r\n- sqlalchemy: Fixes duplicate SQLAlchemy event listeners when `trace_engine()` is called repeatedly for the same engine.\r\n\r\n<!-- -->\r\n\r\n- dynamic instrumentation: fixes an issue where the Symbol Database uploader sends empty payloads on a recurring timer.\r\n\r\n<!-- -->\r\n\r\n- code origin: fixed an issue that could have caused pytest to crash internally when inspecting the call stack from an exception thrown by a view function when Code Origin is enabled","publishedAt":"2026-06-08T08:01:01.000Z","url":"https://github.com/DataDog/dd-trace-py/releases/tag/v4.9.1","media":[],"prerelease":false,"source":{"slug":"datadog-dd-trace-py","name":"Datadog dd-trace-py","type":"github"},"product":{"slug":"apm","name":"APM"},"groupSlug":"apm","groupName":"APM","coverageCount":0,"contentChars":2439,"contentTokens":486,"composition":{"bugs":11,"features":0,"enhancements":1}},{"id":"rel_tT6ScAWlseZ_Ot1AMwf_E","version":"v4.10.3","type":"feature","title":"4.10.3","summary":"Fixed pydantic_ai span naming so operation names use generic categories (pydantic_ai.tool, pydantic_ai.agent) and resource names are specific tool or agent names, restoring per-tool and per-agent grouping on APM service and resource pages. CI Visibility backend request timeout is now configurable via DD_CIVISIBILITY_BACKEND_API_TIMEOUT_MILLIS (in milliseconds) and defaults to 30 seconds instead of 15. Also fixed duplicate SQLAlchemy event listeners and LLM Observability spans being dropped due to JSON depth limits.","titleGenerated":"Datadog APM v4.10.3 fixes pydantic_ai span naming and CI Visibility timeout","titleShort":"Pydantic_ai span naming restored; CI Visibility timeout configurable","content":"### Bug Fixes\r\n\r\n- CI Visibility: fix the default HTTP timeout for backend requests from 15 seconds to 30 seconds, and add the `DD_CIVISIBILITY_BACKEND_API_TIMEOUT_MILLIS` environment variable (previously missing) to override it. The value is expressed in milliseconds (e.g. `60000` for 60 seconds), consistent with the Java tracer. The same timeout now applies uniformly to all backend requests, including skippable test fetches.\r\n\r\n<!-- -->\r\n\r\n- pydantic_ai: Fixes APM span naming so the operation name is the generic category (`pydantic_ai.tool` / `pydantic_ai.agent`) and the resource name is the specific tool or agent name, matching Datadog APM convention. This restores per-tool and per-agent grouping on APM service and resource pages. LLM Observability views are unaffected.\r\n\r\n<!-- -->\r\n\r\n- sqlalchemy: Fixes duplicate SQLAlchemy event listeners when `trace_engine()` is called repeatedly for the same engine.\r\n\r\n<!-- -->\r\n\r\n- LLM Observability: Fixes an issue where spans with very large JSON depth nested fields were being submitted but dropped by Datadog. The LLM Observability integration now detects nested fields that exceed the allowed depth and stringifies them, ensuring spans will not be dropped due to JSON depth limits in Datadog.","publishedAt":"2026-06-05T20:01:30.000Z","url":"https://github.com/DataDog/dd-trace-py/releases/tag/v4.10.3","media":[],"prerelease":false,"source":{"slug":"datadog-dd-trace-py","name":"Datadog dd-trace-py","type":"github"},"product":{"slug":"apm","name":"APM"},"groupSlug":"apm","groupName":"APM","coverageCount":0,"contentChars":1252,"contentTokens":265,"composition":{"bugs":4,"features":0,"enhancements":0}},{"id":"rel_p-QaRr3htzCEwCNE3F3Ru","version":"v4.8.8","type":"feature","title":"4.8.8","summary":"Fixed a memory leak in native frame tracking caused by unbounded native call-site metadata growth, and an issue where unresolved runtime reachability targets could accumulate across SCA updates causing resident memory to grow. Also resolved a PeriodicThread reference cycle memory leak, fixed duplicate SQLAlchemy event listeners on repeated trace_engine() calls, and addressed timer firing issues in Symbol Database uploads and dynamic instrumentation.","titleGenerated":"Datadog APM v4.8.8 fixes memory leaks in profiling and SCA","titleShort":"Native frame tracking and SCA memory leaks fixed","content":"### Bug Fixes\r\n\r\n- Fixed an issue that could have caused some timers, like the one responsible for Symbol Database uploads, to fire repeatedly after the first execution.\r\n\r\n<!-- -->\r\n\r\n- internal: This fix resolves a memory leak where reference cycles through `PeriodicThread` callbacks were invisible to Python's cyclic garbage collector and could accumulate when threads used bound methods as targets.\r\n\r\n<!-- -->\r\n\r\n- profiling: Fixes a memory leak in native frame tracking caused by unbounded native call-site metadata growth.\r\n\r\n<!-- -->\r\n\r\n- SCA: This fix resolves an issue where unresolved runtime reachability targets could accumulate across Software Composition Analysis updates, causing resident memory usage to grow over time.\r\n\r\n<!-- -->\r\n\r\n- sqlalchemy: Fixes duplicate SQLAlchemy event listeners when `trace_engine()` is called repeatedly for the same engine.\r\n\r\n<!-- -->\r\n\r\n- dynamic instrumentation: fixes an issue where the Symbol Database uploader sends empty payloads on a recurring timer.","publishedAt":"2026-06-05T10:05:18.000Z","url":"https://github.com/DataDog/dd-trace-py/releases/tag/v4.8.8","media":[],"prerelease":false,"source":{"slug":"datadog-dd-trace-py","name":"Datadog dd-trace-py","type":"github"},"product":{"slug":"apm","name":"APM"},"groupSlug":"apm","groupName":"APM","coverageCount":0,"contentChars":1008,"contentTokens":174,"composition":{"bugs":6,"features":0,"enhancements":0}},{"id":"rel_9ZrLPj7gMJENVlI5pdDw6","version":"v4.10.2","type":"feature","title":"4.10.2","summary":"Fixed an issue in the Claude Agent SDK integration where span error messages showed an uncategorized `unknown` error category instead of the detailed API error from the assistant message content. Also fixed a race condition where extra service names could be silently dropped from Remote Configuration payloads in multi-threaded applications like uWSGI. Additionally resolved issues with non-string tag values causing span drops during LLM Observability ingestion, provider mis-attribution on OpenAI spans when multiple client types are instantiated simultaneously, and a potential pytest crash when Code Origin inspection accessed the call stack from view function exceptions.","titleGenerated":"Datadog APM v4.10.2 fixes Claude Agent error attribution and service name race condition","titleShort":"Claude Agent errors now show descriptive messages; service name race fixed","content":"### Bug Fixes\r\n\r\n- LLM Observability: This fix resolves an issue in the Claude Agent SDK integration where a span's error message showed an uncategorized `unknown` error category from the upstream Claude Agent SDK instead of a descriptive API error. The integration now surfaces the detailed error message from the assistant message content.\r\n\r\n<!-- -->\r\n\r\n- tracing: Fixes a race condition where extra service names could be silently dropped from Remote Configuration `/v0.7/config` payloads in multi-threaded applications (e.g. uWSGI).\r\n\r\n<!-- -->\r\n\r\n- code origin: fixed an issue that could have caused pytest to crash internally when inspecting the call stack from an exception thrown by a view function when Code Origin is enabled.\r\n\r\n<!-- -->\r\n\r\n- LLM Observability: Resolves an issue where non-string tag values passed to `LLMObs.annotate(tags=...)` could cause spans to be dropped during ingestion.\r\n\r\n<!-- -->\r\n\r\n- LLM Observability: Fixes provider mis-attribution on `openai` spans when an `OpenAI` (or `AsyncOpenAI`) client and an `AzureOpenAI` (or `AsyncAzureOpenAI`) client are instantiated at the same time. Provider is now determined per-call rather than from the most recently constructed client.","publishedAt":"2026-06-04T14:19:22.000Z","url":"https://github.com/DataDog/dd-trace-py/releases/tag/v4.10.2","media":[],"prerelease":false,"source":{"slug":"datadog-dd-trace-py","name":"Datadog dd-trace-py","type":"github"},"product":{"slug":"apm","name":"APM"},"groupSlug":"apm","groupName":"APM","coverageCount":0,"contentChars":1212,"contentTokens":250,"composition":{"bugs":5,"features":0,"enhancements":0}},{"id":"rel__4g1cjb4-SljarY9qZolZ","version":"v5.106.0","type":"feature","title":"5.106.0","summary":"Added support for AWS Bedrock Converse and ConverseStream APIs in LLM Observability. Fixed OTLP spans to include full 128-bit trace IDs instead of truncated IDs. Also surfaced prompt cache tokens for Vercel AI SDK across all supported providers, fixed Cucumber v13 parallel mode support, and pinned Vitest 3 to Node 18.","titleGenerated":"Datadog APM v5.106.0 adds Bedrock Converse support and fixes OTLP trace IDs","titleShort":"Bedrock Converse/ConverseStream support; OTLP trace IDs now 128-bit","content":"* \\[[`bd9c62865a`](https://github.com/DataDog/dd-trace-js/commit/bd9c62865a)] - **(SEMVER-PATCH)** **fix(cucumber)**: support v13 parallel mode (Juan Antonio Fernández de Alba) [#8748](https://github.com/DataDog/dd-trace-js/pull/8748)\n* \\[[`5beadb493f`](https://github.com/DataDog/dd-trace-js/commit/5beadb493f)] - **(SEMVER-PATCH)** **test(ci)**: harden sandbox cleanup (Juan Antonio Fernández de Alba) [#8741](https://github.com/DataDog/dd-trace-js/pull/8741)\n* \\[[`80fbfd2b7e`](https://github.com/DataDog/dd-trace-js/commit/80fbfd2b7e)] - **(SEMVER-PATCH)** **fix(vitest)**: pin node 18 vitest 3 version (Juan Antonio Fernández de Alba) [#8747](https://github.com/DataDog/dd-trace-js/pull/8747)\n* \\[[`5ef172cd28`](https://github.com/DataDog/dd-trace-js/commit/5ef172cd28)] - **(SEMVER-MINOR)** feat(aws-sdk, llmobs): support Bedrock Converse and ConverseStream (Alexandre Choura) [#8079](https://github.com/DataDog/dd-trace-js/pull/8079)\n* \\[[`c8eb110fc1`](https://github.com/DataDog/dd-trace-js/commit/c8eb110fc1)] - **(SEMVER-PATCH)** fix(llmobs/ai): surface prompt cache tokens for Vercel AI SDK integration across all supported providers (Jessica Gamio) [#8530](https://github.com/DataDog/dd-trace-js/pull/8530)\n* \\[[`6588ac18da`](https://github.com/DataDog/dd-trace-js/commit/6588ac18da)] - **fix(otlp)**: Ensure all OTLP spans get the full 128-bit trace IDs (Zach Montoya) [#8618](https://github.com/DataDog/dd-trace-js/pull/8618)\n* \\[[`376bad086b`](https://github.com/DataDog/dd-trace-js/commit/376bad086b)] - **(SEMVER-PATCH)** **test(profiling)**: add retries to OOM heap profile tests for Node 26 compatibility (Attila Szegedi) [#8742](https://github.com/DataDog/dd-trace-js/pull/8742)\n* \\[[`e46c478d65`](https://github.com/DataDog/dd-trace-js/commit/e46c478d65)] - **(SEMVER-PATCH)** **chore(deps)**: bump the serverless group across 1 directory with 11 updates (dependabot\\[bot]) [#8738](https://github.com/DataDog/dd-trace-js/pull/8738)\n* \\[[`fe0be207ed`](https://github.com/DataDog/dd-trace-js/commit/fe0be207ed)] - **(SEMVER-PATCH)** **chore(deps)**: bump the ai-and-llm group across 1 directory with 5 updates (dependabot\\[bot]) [#8736](https://github.com/DataDog/dd-trace-js/pull/8736)\n* \\[[`e83cf13cdf`](https://github.com/DataDog/dd-trace-js/commit/e83cf13cdf)] - **(SEMVER-PATCH)** **fix(profiling)**: route logger calls through central log module (Ayan Khan) [#8697](https://github.com/DataDog/dd-trace-js/pull/8697)\n* \\[[`908c8119d2`](https://github.com/DataDog/dd-trace-js/commit/908c8119d2)] - **(SEMVER-PATCH)** **chore(deps)**: bump openai (dependabot\\[bot]) [#8735](https://github.com/DataDog/dd-trace-js/pull/8735)\n* \\[[`03116dfb95`](https://github.com/DataDog/dd-trace-js/commit/03116dfb95)] - **(SEMVER-PATCH)** **ci(release)**: fix validation workflow never triggering on proposal branches (Roch Devost) [#8714](https://github.com/DataDog/dd-trace-js/pull/8714)\n* \\[[`3b6d66c138`](https://github.com/DataDog/dd-trace-js/commit/3b6d66c138)] - **(SEMVER-PATCH)** **test(aws-sdk)**: fix flaky stepfunctions startExecution span assertion (Roch Devost) [#8717](https://github.com/DataDog/dd-trace-js/pull/8717)\n* \\[[`0687e2f44f`](https://github.com/DataDog/dd-trace-js/commit/0687e2f44f)] - **(SEMVER-PATCH)** **fix(ci)**: handle stale failure conclusion in all-green retry (Roch Devost) [#8599](https://github.com/DataDog/dd-trace-js/pull/8599)","publishedAt":"2026-06-02T13:01:36.000Z","url":"https://github.com/DataDog/dd-trace-js/releases/tag/v5.106.0","media":[],"prerelease":false,"source":{"slug":"datadog-dd-trace-js","name":"Datadog dd-trace-js","type":"github"},"product":{"slug":"apm","name":"APM"},"groupSlug":"apm","groupName":"APM","coverageCount":0,"contentChars":3374,"contentTokens":1129,"composition":{"bugs":5,"features":1,"enhancements":0}},{"id":"rel_pG-3B0laQrOvZNjEE4ykp","version":"v4.10.1","type":"feature","title":"4.10.1","summary":"Fixed a memory leak in native frame tracking caused by unbounded native call-site metadata growth, and a memory leak where reference cycles through PeriodicThread callbacks were invisible to Python's cyclic garbage collector. Also resolved timer execution issues and unresolved runtime reachability target accumulation in Software Composition Analysis.","titleGenerated":"Datadog APM v4.10.1 fixes memory leaks in profiling and garbage collection","titleShort":"Memory leaks fixed in profiling, SCA, and periodic timers","content":"### Bug Fixes\r\n\r\n- internal: Fixed an issue that could have caused some timers, like the one responsible for Symbol Database uploads, to fire repeatedly after the first execution.\r\n\r\n<!-- -->\r\n\r\n- internal: This fix resolves a memory leak where reference cycles through `PeriodicThread` callbacks were invisible to Python's cyclic garbage collector and could accumulate when threads used bound methods as targets.\r\n\r\n<!-- -->\r\n\r\n- profiling: Fixes a memory leak in native frame tracking caused by unbounded native call-site metadata growth.\r\n\r\n<!-- -->\r\n\r\n- SCA: This fix resolves an issue where unresolved runtime reachability targets could accumulate across Software Composition Analysis updates, causing resident memory usage to grow over time.","publishedAt":"2026-06-01T15:52:00.000Z","url":"https://github.com/DataDog/dd-trace-py/releases/tag/v4.10.1","media":[],"prerelease":false,"source":{"slug":"datadog-dd-trace-py","name":"Datadog dd-trace-py","type":"github"},"product":{"slug":"apm","name":"APM"},"groupSlug":"apm","groupName":"APM","coverageCount":0,"contentChars":747,"contentTokens":131,"composition":{"bugs":4,"features":0,"enhancements":0}},{"id":"rel_qSAcdzLnHvqdGmc-vPD8q","version":"v5.105.0","type":"feature","title":"5.105.0","summary":"Reverted the application of http.endpoint and queryStringObfuscation to client spans. Added OpenFeature flag evaluation enrichment for APM traces, experimental NATS support, Cypress TIA line coverage reporting, and Hono single-handler route resource naming. Performance improvements to msgpack encoding and tag formatting; MongoDB query obfuscation and tagging speedups; fixes to Jest coverage metric reporting, debugger reference desugaring, and OracleDB tracing suppression.","titleGenerated":"Datadog APM v5.105.0 reverts HTTP endpoint obfuscation and adds OpenFeature span enrichment","titleShort":"HTTP endpoint obfuscation reverted; OpenFeature span enrichment added","content":"* \\[[`1382cfd4de`](https://github.com/DataDog/dd-trace-js/commit/1382cfd4de)] - **(SEMVER-PATCH)** **ci(project)**: remove supported integrations push jobs (Juan Antonio Fernández de Alba) [#8707](https://github.com/DataDog/dd-trace-js/pull/8707)\n* \\[[`947a5360d2`](https://github.com/DataDog/dd-trace-js/commit/947a5360d2)] - **(SEMVER-PATCH)** **chore(deps)**: bump axios from 1.15.2 to 1.16.0 in /integration-tests/webpack in the npm\\_and\\_yarn group across 1 directory (dependabot\\[bot]) [#8705](https://github.com/DataDog/dd-trace-js/pull/8705)\n* \\[[`f1543762c4`](https://github.com/DataDog/dd-trace-js/commit/f1543762c4)] - **(SEMVER-MINOR)** **revert**: feat(http,http2): apply http.endpoint and queryStringObfuscation to client spans (#8407) (Ruben Bridgewater) [#8706](https://github.com/DataDog/dd-trace-js/pull/8706)\n* \\[[`68619de614`](https://github.com/DataDog/dd-trace-js/commit/68619de614)] - **(SEMVER-PATCH)** **perf(encode)**: consolidate the msgpack hot path (Ruben Bridgewater) [#8504](https://github.com/DataDog/dd-trace-js/pull/8504)\n* \\[[`130446e69c`](https://github.com/DataDog/dd-trace-js/commit/130446e69c)] - **(SEMVER-PATCH)** **perf(format)**: split addTag into typed helpers to kill throwaway {} al… (Ruben Bridgewater) [#8513](https://github.com/DataDog/dd-trace-js/pull/8513)\n* \\[[`4c88a9753d`](https://github.com/DataDog/dd-trace-js/commit/4c88a9753d)] - **(SEMVER-PATCH)** **fix(mongodb)**: unify obfuscateQuery sanitizer and speed up query tagging (Ruben Bridgewater) [#8703](https://github.com/DataDog/dd-trace-js/pull/8703)\n* \\[[`cfb2f0113e`](https://github.com/DataDog/dd-trace-js/commit/cfb2f0113e)] - **(SEMVER-PATCH)** **chore(cypress)**: bump latest test version (Juan Antonio Fernández de Alba) [#8701](https://github.com/DataDog/dd-trace-js/pull/8701)\n* \\[[`a8496bd01e`](https://github.com/DataDog/dd-trace-js/commit/a8496bd01e)] - **(SEMVER-PATCH)** **fix(jest)**: report coverage metric without skipped suites (Juan Antonio Fernández de Alba) [#8702](https://github.com/DataDog/dd-trace-js/pull/8702)\n* \\[[`c6be3b9c47`](https://github.com/DataDog/dd-trace-js/commit/c6be3b9c47)] - **(SEMVER-PATCH)** **fix(jest)**: gate coverage backfill by jest version (Juan Antonio Fernández de Alba) [#8700](https://github.com/DataDog/dd-trace-js/pull/8700)\n* \\[[`c2810de6f3`](https://github.com/DataDog/dd-trace-js/commit/c2810de6f3)] - **(SEMVER-MINOR)** **feat(cypress)**: report TIA line coverage totals in cypress (Juan Antonio Fernández de Alba) [#8453](https://github.com/DataDog/dd-trace-js/pull/8453)\n* \\[[`42a4f4f24b`](https://github.com/DataDog/dd-trace-js/commit/42a4f4f24b)] - **(SEMVER-PATCH)** **ci**: add retry with 60s delay to coverage, dd-sts-api-key, and node actions (Roch Devost) [#8694](https://github.com/DataDog/dd-trace-js/pull/8694)\n* \\[[`7d1aa519a6`](https://github.com/DataDog/dd-trace-js/commit/7d1aa519a6)] - **(SEMVER-PATCH)** **docs(types)**: add missing properties into v5 ts file (Pablo Erhard) [#8692](https://github.com/DataDog/dd-trace-js/pull/8692)\n* \\[[`4b2f5d2908`](https://github.com/DataDog/dd-trace-js/commit/4b2f5d2908)] - **(SEMVER-PATCH)** **fix(hono)**: set resource name for single-handler routes (William Conti) [#8100](https://github.com/DataDog/dd-trace-js/pull/8100)\n* \\[[`42151577da`](https://github.com/DataDog/dd-trace-js/commit/42151577da)] - **(SEMVER-PATCH)** **chore(deps)**: update @apm-js-collab/code-transformer to 0.13.0 (Roch Devost) [#8631](https://github.com/DataDog/dd-trace-js/pull/8631)\n* \\[[`328a44dd02`](https://github.com/DataDog/dd-trace-js/commit/328a44dd02)] - **(SEMVER-PATCH)** **ci(test-optimization)**: fix flaky cypress\\@latest before-hook timeout (Roch Devost) [#8666](https://github.com/DataDog/dd-trace-js/pull/8666)\n* \\[[`8f1897b169`](https://github.com/DataDog/dd-trace-js/commit/8f1897b169)] - **(SEMVER-PATCH)** **fix(ci)**: rerun only failed jobs for cancelled workflows in all-green (Roch Devost) [#8673](https://github.com/DataDog/dd-trace-js/pull/8673)\n* \\[[`3ed178ced1`](https://github.com/DataDog/dd-trace-js/commit/3ed178ced1)] - **(SEMVER-PATCH)** **test(appsec)**: drain preload span before RASP SSRF axios tests (Roch Devost) [#8652](https://github.com/DataDog/dd-trace-js/pull/8652)\n* \\[[`845d19d793`](https://github.com/DataDog/dd-trace-js/commit/845d19d793)] - **(SEMVER-PATCH)** **ci**: simplify pr-title workflow triggers and condition (Roch Devost) [#8695](https://github.com/DataDog/dd-trace-js/pull/8695)\n* \\[[`9f9bcccd44`](https://github.com/DataDog/dd-trace-js/commit/9f9bcccd44)] - **(SEMVER-PATCH)** **fix(ci)**: cancel running workflows on all-green timeout, reduce retries and initial delay (Roch Devost) [#8674](https://github.com/DataDog/dd-trace-js/pull/8674)\n* \\[[`5f75d2afae`](https://github.com/DataDog/dd-trace-js/commit/5f75d2afae)] - **(SEMVER-PATCH)** **test(debugger)**: fix zombie processes causing flaky redact tests on Node.js 20 (Roch Devost) [#8663](https://github.com/DataDog/dd-trace-js/pull/8663)\n* \\[[`90ac905be3`](https://github.com/DataDog/dd-trace-js/commit/90ac905be3)] - **(SEMVER-MINOR)** **feat(openfeature)**: add FFE span enrichment for APM traces (Sameeran Kunche) [#8343](https://github.com/DataDog/dd-trace-js/pull/8343)\n* \\[[`0a7f3e0589`](https://github.com/DataDog/dd-trace-js/commit/0a7f3e0589)] - **(SEMVER-PATCH)** **chore(ci)**: fold codeowners-audit and verify-exercised-tests into npm run lint (Ruben Bridgewater) [#8686](https://github.com/DataDog/dd-trace-js/pull/8686)\n* \\[[`0bae706bec`](https://github.com/DataDog/dd-trace-js/commit/0bae706bec)] - **(SEMVER-PATCH)** **fix(ts)**: add interface DatabaseInstrumentation into v5 ts file (Pablo Erhard) [#8690](https://github.com/DataDog/dd-trace-js/pull/8690)\n* \\[[`e2b0fdcccf`](https://github.com/DataDog/dd-trace-js/commit/e2b0fdcccf)] - **(SEMVER-PATCH)** **docs(llmobs)**: drop restated category rules from the LLMObs skills (Ruben Bridgewater) [#8687](https://github.com/DataDog/dd-trace-js/pull/8687)\n* \\[[`11cb345d76`](https://github.com/DataDog/dd-trace-js/commit/11cb345d76)] - **(SEMVER-MINOR)** **feat(nats)**: experimental support for @nats-io/nats-core / @nats-io/transport-node (Thomas Hunter II) [#8608](https://github.com/DataDog/dd-trace-js/pull/8608)\n* \\[[`68443e431c`](https://github.com/DataDog/dd-trace-js/commit/68443e431c)] - **(SEMVER-PATCH)** **ci(profiling)**: capture Windows crash dumps via WER LocalDumps (Attila Szegedi) [#8593](https://github.com/DataDog/dd-trace-js/pull/8593)\n* \\[[`c7e114cb1d`](https://github.com/DataDog/dd-trace-js/commit/c7e114cb1d)] - **(SEMVER-PATCH)** **fix(debugger)**: generalize @-prefix ref desugaring (Thomas Watson) [#8628](https://github.com/DataDog/dd-trace-js/pull/8628)\n* \\[[`1c71ca14b7`](https://github.com/DataDog/dd-trace-js/commit/1c71ca14b7)] - **(SEMVER-PATCH)** **ci**: install gpg before Codecov upload to fix intermittent failures (Roch Devost) [#8487](https://github.com/DataDog/dd-trace-js/pull/8487)\n* \\[[`1d0301cd92`](https://github.com/DataDog/dd-trace-js/commit/1d0301cd92)] - **(SEMVER-PATCH)** **fix(oracledb)**: keep caller SQL when tracing is suppressed (Ruben Bridgewater) [#8685](https://github.com/DataDog/dd-trace-js/pull/8685)\n* \\[[`e50934bc8c`](https://github.com/DataDog/dd-trace-js/commit/e50934bc8c)] - **(SEMVER-PATCH)** **ci(test-optimization)**: install Chrome in Docker image for Selenium tests (Roch Devost) [#8669](https://github.com/DataDog/dd-trace-js/pull/8669)\n* \\[[`8cb2b7711f`](https://github.com/DataDog/dd-trace-js/commit/8cb2b7711f)] - **(SEMVER-PATCH)** **bench(encode)**: make the encoding bench reflect a real Node.js HTTP request (Ruben Bridgewater) [#8668](https://github.com/DataDog/dd-trace-js/pull/8668)\n* \\[[`d3bea48de9`](https://github.com/DataDog/dd-trace-js/commit/d3bea48de9)] - **(SEMVER-PATCH)** **ci(pr-title)**: allow `bench` as a Conventional Commits type (Ruben Bridgewater) [#8683](https://github.com/DataDog/dd-trace-js/pull/8683)\n* \\[[`d885382d88`](https://github.com/DataDog/dd-trace-js/commit/d885382d88)] - **(SEMVER-MINOR)** **feat(aiguard)**: evaluate openai SDK calls automatically (Alberto Vara) [#8053](https://github.com/DataDog/dd-trace-js/pull/8053)\n* \\[[`5a08c20f35`](https://github.com/DataDog/dd-trace-js/commit/5a08c20f35)] - **(SEMVER-MINOR)** \\[test optimization] report ITR line coverage totals in cucumber (Juan Antonio Fernández de Alba) [#8452](https://github.com/DataDog/dd-trace-js/pull/8452)\n* \\[[`19252d91e5`](https://github.com/DataDog/dd-trace-js/commit/19252d91e5)] - **(SEMVER-PATCH)** **chore(ci)**: Download authanywhere binary over https (Rithika Narayan) [#8688](https://github.com/DataDog/dd-trace-js/pull/8688)\n* \\[[`707b21a534`](https://github.com/DataDog/dd-trace-js/commit/707b21a534)] - **(SEMVER-MINOR)** \\[test optimization] prevent payload loss (Sebastián Kay) [#8658](https://github.com/DataDog/dd-trace-js/pull/8658)\n* \\[[`a611dc5a06`](https://github.com/DataDog/dd-trace-js/commit/a611dc5a06)] - **(SEMVER-MINOR)** \\[test optimization] report ITR line coverage totals in mocha (Juan Antonio Fernández de Alba) [#8450](https://github.com/DataDog/dd-trace-js/pull/8450)\n* \\[[`485a6474a3`](https://github.com/DataDog/dd-trace-js/commit/485a6474a3)] - **(SEMVER-MINOR)** \\[test optimization] report TIA line coverage totals in jest (Juan Antonio Fernández de Alba) [#8541](https://github.com/DataDog/dd-trace-js/pull/8541)\n* \\[[`aba729a656`](https://github.com/DataDog/dd-trace-js/commit/aba729a656)] - **(SEMVER-PATCH)** **fix(ci)**: install Playwright browser dependencies (Juan Antonio Fernández de Alba) [#8671](https://github.com/DataDog/dd-trace-js/pull/8671)\n* \\[[`664d873abb`](https://github.com/DataDog/dd-trace-js/commit/664d873abb)] - **(SEMVER-PATCH)** **ci**: pin all Windows runners to windows-2022 (Roch Devost) [#8675](https://github.com/DataDog/dd-trace-js/pull/8675)\n* \\[[`e6dc6753de`](https://github.com/DataDog/dd-trace-js/commit/e6dc6753de)] - **(SEMVER-PATCH)** **perf(pino)**: inject dd into the JSON line, skip the Proxy view (Ruben Bridgewater) [#8501](https://github.com/DataDog/dd-trace-js/pull/8501)\n* \\[[`f99bb7a8f7`](https://github.com/DataDog/dd-trace-js/commit/f99bb7a8f7)] - **(SEMVER-PATCH)** **fix(llmobs)**: cover every LLMObs span registration with OTel bridge tags (MLOS-591) (Zachary Groves)\n* \\[[`78ecd98e06`](https://github.com/DataDog/dd-trace-js/commit/78ecd98e06)] - **(SEMVER-PATCH)** perf(plugins/util/web): trim request-lifecycle helper work (Ruben Bridgewater) [#8492](https://github.com/DataDog/dd-trace-js/pull/8492)\n* \\[[`f0e4773115`](https://github.com/DataDog/dd-trace-js/commit/f0e4773115)] - **(SEMVER-MINOR)** **feat(tracing)**: stamp manual spans through span.finish() resolution (Pablo Erhard) [#8621](https://github.com/DataDog/dd-trace-js/pull/8621)\n* \\[[`55ed50f87e`](https://github.com/DataDog/dd-trace-js/commit/55ed50f87e)] - **(SEMVER-MINOR)** **feat(http,http2)**: apply http.endpoint and queryStringObfuscation to client spans (Ruben Bridgewater) [#8407](https://github.com/DataDog/dd-trace-js/pull/8407)\n* \\[[`696841f8cc`](https://github.com/DataDog/dd-trace-js/commit/696841f8cc)] - **(SEMVER-PATCH)** **perf(graphql)**: tighten resolver execute hot path (Ruben Bridgewater) [#8498](https://github.com/DataDog/dd-trace-js/pull/8498)\n* \\[[`5c43988b36`](https://github.com/DataDog/dd-trace-js/commit/5c43988b36)] - **(SEMVER-PATCH)** **chore**: update protobufjs, ttlcache, and code-transformer (Ruben Bridgewater) [#8656](https://github.com/DataDog/dd-trace-js/pull/8656)\n* \\[[`75b7743aa2`](https://github.com/DataDog/dd-trace-js/commit/75b7743aa2)] - **(SEMVER-PATCH)** **perf(span)**: write tags directly on \\_tags in setTag and addTags (Ruben Bridgewater) [#8507](https://github.com/DataDog/dd-trace-js/pull/8507)\n* \\[[`f9016be6a8`](https://github.com/DataDog/dd-trace-js/commit/f9016be6a8)] - **(SEMVER-PATCH)** **perf(fastify)**: fast-path addHook wrapper when no parser channels have… (Ruben Bridgewater) [#8516](https://github.com/DataDog/dd-trace-js/pull/8516)\n* \\[[`33a821da2b`](https://github.com/DataDog/dd-trace-js/commit/33a821da2b)] - **(SEMVER-PATCH)** **chore(release)**: replace semver-major exclusion with only-land-on-next label (Roch Devost) [#8660](https://github.com/DataDog/dd-trace-js/pull/8660)\n* \\[[`a8a566d308`](https://github.com/DataDog/dd-trace-js/commit/a8a566d308)] - **(SEMVER-PATCH)** **test(profiling)**: stabilize Poisson sampling filter spec (Attila Szegedi) [#8659](https://github.com/DataDog/dd-trace-js/pull/8659)\n* \\[[`5344d3f2cd`](https://github.com/DataDog/dd-trace-js/commit/5344d3f2cd)] - **(SEMVER-MINOR)** **feat**: add Node.js 26 support (Ruben Bridgewater) [#8429](https://github.com/DataDog/dd-trace-js/pull/8429)\n* \\[[`2516fe8981`](https://github.com/DataDog/dd-trace-js/commit/2516fe8981)] - **(SEMVER-PATCH)** **ci(playwright)**: install libatomic for Node 26 (Juan Antonio Fernández de Alba) [#8657](https://github.com/DataDog/dd-trace-js/pull/8657)\n* \\[[`d87533afc0`](https://github.com/DataDog/dd-trace-js/commit/d87533afc0)] - **(SEMVER-PATCH)** **fix(ci)**: add unzip to Playwright Docker image (Roch Devost) [#8615](https://github.com/DataDog/dd-trace-js/pull/8615)\n* \\[[`a1fa4434ec`](https://github.com/DataDog/dd-trace-js/commit/a1fa4434ec)] - **(SEMVER-PATCH)** **fix(dbm)**: rename \\_dd.dbm.propagation\\_hash to \\_dd.propagated\\_hash (Thomas Hunter II) [#8643](https://github.com/DataDog/dd-trace-js/pull/8643)\n* \\[[`2c1d5ae3cc`](https://github.com/DataDog/dd-trace-js/commit/2c1d5ae3cc)] - **(SEMVER-PATCH)** **fix(plugins)**: scope extractIp per-plugin instead of module-level (Ruben Bridgewater) [#8508](https://github.com/DataDog/dd-trace-js/pull/8508)\n* \\[[`fe7d7a35f2`](https://github.com/DataDog/dd-trace-js/commit/fe7d7a35f2)] - **(SEMVER-PATCH)** **chore(deps-dev)**: bump eslint-plugin-jsdoc from 62.9.0 to 63.0.0 (dependabot\\[bot]) [#8648](https://github.com/DataDog/dd-trace-js/pull/8648)\n* \\[[`94c23b4bee`](https://github.com/DataDog/dd-trace-js/commit/94c23b4bee)] - **(SEMVER-PATCH)** **chore(deps)**: bump the gh-actions-packages group across 3 directories with 3 updates (dependabot\\[bot]) [#8649](https://github.com/DataDog/dd-trace-js/pull/8649)\n* \\[[`b210ba395b`](https://github.com/DataDog/dd-trace-js/commit/b210ba395b)] - **(SEMVER-PATCH)** **chore(deps)**: bump oxc-parser from 0.130.0 to 0.132.0 in the runtime-minor-and-patch-dependencies group across 1 directory (dependabot\\[bot]) [#8647](https://github.com/DataDog/dd-trace-js/pull/8647)\n* \\[[`3e7de49119`](https://github.com/DataDog/dd-trace-js/commit/3e7de49119)] - **(SEMVER-PATCH)** **chore(deps-dev)**: bump the dev-minor-and-patch-dependencies group across 1 directory with 3 updates (dependabot\\[bot]) [#8646](https://github.com/DataDog/dd-trace-js/pull/8646)\n* \\[[`db4a61149f`](https://github.com/DataDog/dd-trace-js/commit/db4a61149f)] - **(SEMVER-PATCH)** **chore(deps)**: bump the serverless group across 1 directory with 13 updates (dependabot\\[bot]) [#8645](https://github.com/DataDog/dd-trace-js/pull/8645)\n* \\[[`e6e0689155`](https://github.com/DataDog/dd-trace-js/commit/e6e0689155)] - **(SEMVER-MINOR)** **feat(dbm)**: add dynamic\\_service propagation mode (Andrea Marziali) [#8592](https://github.com/DataDog/dd-trace-js/pull/8592)\n* \\[[`b7bbc4b6b3`](https://github.com/DataDog/dd-trace-js/commit/b7bbc4b6b3)] - **(SEMVER-PATCH)** add workflow to validate pull request title and sync labels (Roch Devost) [#8196](https://github.com/DataDog/dd-trace-js/pull/8196)\n* \\[[`c2470f1f26`](https://github.com/DataDog/dd-trace-js/commit/c2470f1f26)] - **(SEMVER-PATCH)** **ci(node)**: replace version cache with pinned versions from test/plugins/versions (Roch Devost) [#8617](https://github.com/DataDog/dd-trace-js/pull/8617)\n* \\[[`49f16f10fc`](https://github.com/DataDog/dd-trace-js/commit/49f16f10fc)] - **(SEMVER-PATCH)** **test(http2)**: fix flaky cancelled-request span assertion (Roch Devost) [#8642](https://github.com/DataDog/dd-trace-js/pull/8642)\n* \\[[`fb120f1b97`](https://github.com/DataDog/dd-trace-js/commit/fb120f1b97)] - **(SEMVER-PATCH)** **test(http2)**: avoid port reuse in server tests (Roch Devost) [#8641](https://github.com/DataDog/dd-trace-js/pull/8641)\n* \\[[`3e0eceb16c`](https://github.com/DataDog/dd-trace-js/commit/3e0eceb16c)] - **(SEMVER-PATCH)** **perf(profiler)**: skip redundant setContext under AsyncContextFrame (Attila Szegedi) [#8638](https://github.com/DataDog/dd-trace-js/pull/8638)\n* \\[[`5a0644eb21`](https://github.com/DataDog/dd-trace-js/commit/5a0644eb21)] - **(SEMVER-PATCH)** **perf(span)**: fast-path setTag for the common non-sampling case (Pablo Erhard) [#8640](https://github.com/DataDog/dd-trace-js/pull/8640)\n* \\[[`cd7fee8ce2`](https://github.com/DataDog/dd-trace-js/commit/cd7fee8ce2)] - **(SEMVER-MINOR)** **feat(dns)**: instrument dns.promises API (Ruben Bridgewater) [#8404](https://github.com/DataDog/dd-trace-js/pull/8404)\n* \\[[`dd068f1764`](https://github.com/DataDog/dd-trace-js/commit/dd068f1764)] - **(SEMVER-MINOR)** **feat(kafkajs)**: instrument producer.sendBatch (Ruben Bridgewater) [#8403](https://github.com/DataDog/dd-trace-js/pull/8403)\n* \\[[`8a377d11eb`](https://github.com/DataDog/dd-trace-js/commit/8a377d11eb)] - **(SEMVER-PATCH)** **perf(mongodb)**: fast path sanitiseAndStringify for flat-primitive filters (Ruben Bridgewater) [#8514](https://github.com/DataDog/dd-trace-js/pull/8514)\n* \\[[`6e3846019c`](https://github.com/DataDog/dd-trace-js/commit/6e3846019c)] - **(SEMVER-PATCH)** **perf(router)**: consolidate per-request state, drop redundant ALS read (Ruben Bridgewater) [#8509](https://github.com/DataDog/dd-trace-js/pull/8509)\n* \\[[`59951d598c`](https://github.com/DataDog/dd-trace-js/commit/59951d598c)] - **(SEMVER-PATCH)** **perf(propagation)**: cheap extract on carriers without propagation context (Ruben Bridgewater) [#8511](https://github.com/DataDog/dd-trace-js/pull/8511)\n* \\[[`c943187407`](https://github.com/DataDog/dd-trace-js/commit/c943187407)] - **(SEMVER-PATCH)** **perf(shimmer)**: reuse name and length descriptor literals (Ruben Bridgewater) [#8515](https://github.com/DataDog/dd-trace-js/pull/8515)\n* \\[[`3e9c9fb635`](https://github.com/DataDog/dd-trace-js/commit/3e9c9fb635)] - **(SEMVER-MINOR)** **feat(opentracing)**: tag accessor API on span context + lint rule (Bryan English) [#8491](https://github.com/DataDog/dd-trace-js/pull/8491)\n* \\[[`cd376c2cf3`](https://github.com/DataDog/dd-trace-js/commit/cd376c2cf3)] - **(SEMVER-MINOR)** **feat(oracledb)**: inject DBM SQL comment (Bowen Brooks) [#8481](https://github.com/DataDog/dd-trace-js/pull/8481)\n* \\[[`a7318b6201`](https://github.com/DataDog/dd-trace-js/commit/a7318b6201)] - **(SEMVER-PATCH)** **chore(deps)**: bump @datadog/datadog-ci from 5.16.0 to 5.17.0 in /.github/actions/datadog-ci in the runtime-minor-and-patch-dependencies group across 1 directory (dependabot\\[bot]) [#8570](https://github.com/DataDog/dd-trace-js/pull/8570)\n* \\[[`9641153901`](https://github.com/DataDog/dd-trace-js/commit/9641153901)] - **(SEMVER-MINOR)** **test-optimization(feat)**: Add cypress command spans (analog to playwright steps) (Sebastián Kay) [#8580](https://github.com/DataDog/dd-trace-js/pull/8580)\n* \\[[`491710ef63`](https://github.com/DataDog/dd-trace-js/commit/491710ef63)] - **(SEMVER-PATCH)** **chore(deps)**: bump the test-optimization group across 1 directory with 8 updates (dependabot\\[bot]) [#8623](https://github.com/DataDog/dd-trace-js/pull/8623)\n* \\[[`2d3ff214fc`](https://github.com/DataDog/dd-trace-js/commit/2d3ff214fc)] - **(SEMVER-PATCH)** chore(ci) update one-pipeline (gh-worker-campaigns-3e9aa4\\[bot]) [#8636](https://github.com/DataDog/dd-trace-js/pull/8636)\n* \\[[`9130e0e0c6`](https://github.com/DataDog/dd-trace-js/commit/9130e0e0c6)] - **(SEMVER-PATCH)** **fix(aws-sdk)**: hook @smithy/core/client.Client.send for >=3.1046 clients (Ruben Bridgewater) [#8532](https://github.com/DataDog/dd-trace-js/pull/8532)\n* \\[[`a6e6d25603`](https://github.com/DataDog/dd-trace-js/commit/a6e6d25603)] - **(SEMVER-PATCH)** **fix(graphql)**: fix field-type tag, release contexts WeakMap, and more (Ruben Bridgewater) [#8502](https://github.com/DataDog/dd-trace-js/pull/8502)\n* \\[[`9c7cde1371`](https://github.com/DataDog/dd-trace-js/commit/9c7cde1371)] - **(SEMVER-PATCH)** **chore(test)**: bump mongodb to 7.2.0 and mongoose to 9.6.2 (Ruben Bridgewater) [#8533](https://github.com/DataDog/dd-trace-js/pull/8533)\n* \\[[`0518beee67`](https://github.com/DataDog/dd-trace-js/commit/0518beee67)] - **(SEMVER-PATCH)** **perf(plugin)**: drop per-publish storage lookup and handler rest-spread (Ruben Bridgewater) [#8512](https://github.com/DataDog/dd-trace-js/pull/8512)\n* \\[[`b032ef455d`](https://github.com/DataDog/dd-trace-js/commit/b032ef455d)] - **(SEMVER-PATCH)** **chore(deps)**: bump the ai-and-llm group across 1 directory with 4 updates (dependabot\\[bot]) [#8632](https://github.com/DataDog/dd-trace-js/pull/8632)\n* \\[[`659ad0005a`](https://github.com/DataDog/dd-trace-js/commit/659ad0005a)] - **(SEMVER-PATCH)** \\[test optimization] support playwright 1.60 with rewriter hooks (Juan Antonio Fernández de Alba) [#8590](https://github.com/DataDog/dd-trace-js/pull/8590)\n* \\[[`e0b94eca0c`](https://github.com/DataDog/dd-trace-js/commit/e0b94eca0c)] - **(SEMVER-PATCH)** **fix(eslint)**: skip autofix on ${} in string literal (Thomas Watson) [#8627](https://github.com/DataDog/dd-trace-js/pull/8627)\n* \\[[`eb74c995a9`](https://github.com/DataDog/dd-trace-js/commit/eb74c995a9)] - **(SEMVER-PATCH)** **chore(deps)**: bump the ai-and-llm group across 1 directory with 10 updates (dependabot\\[bot]) [#8624](https://github.com/DataDog/dd-trace-js/pull/8624)\n* \\[[`8b9481fca9`](https://github.com/DataDog/dd-trace-js/commit/8b9481fca9)] - **(SEMVER-PATCH)** **chore**: deactivate eslint-require-boolean-assert-message (Ruben Bridgewater) [#8620](https://github.com/DataDog/dd-trace-js/pull/8620)\n* \\[[`5763151c0e`](https://github.com/DataDog/dd-trace-js/commit/5763151c0e)] - **(SEMVER-PATCH)** **test(test-optimization)**: replace nock with direct stub in git\\_metadata tests (Roch Devost) [#8613](https://github.com/DataDog/dd-trace-js/pull/8613)\n* \\[[`b50f1cad1d`](https://github.com/DataDog/dd-trace-js/commit/b50f1cad1d)] - **(SEMVER-PATCH)** **chore(deps)**: bump the test-versions group across 1 directory with 2 updates (dependabot\\[bot]) [#8622](https://github.com/DataDog/dd-trace-js/pull/8622)\n* \\[[`4b3a0f05c4`](https://github.com/DataDog/dd-trace-js/commit/4b3a0f05c4)] - **(SEMVER-PATCH)** **chore(log)**: drop the orphaned StructuredLogPlugin subclass (Ruben Bridgewater) [#8579](https://github.com/DataDog/dd-trace-js/pull/8579)\n* \\[[`59ea620f0d`](https://github.com/DataDog/dd-trace-js/commit/59ea620f0d)] - **(SEMVER-PATCH)** **fix(ci)**: always write flakiness report and fire Slack notification (Roch Devost) [#8609](https://github.com/DataDog/dd-trace-js/pull/8609)\n* \\[[`2be6d4286e`](https://github.com/DataDog/dd-trace-js/commit/2be6d4286e)] - **(SEMVER-PATCH)** **chore(deps)**: bump qs from 6.15.0 to 6.15.2 (dependabot\\[bot]) [#8612](https://github.com/DataDog/dd-trace-js/pull/8612)\n* \\[[`b92c5df537`](https://github.com/DataDog/dd-trace-js/commit/b92c5df537)] - **(SEMVER-PATCH)** **ci(coverage)**: patch istanbul-lib-coverage's getLineCoverage in postinstall (Ruben Bridgewater) [#8576](https://github.com/DataDog/dd-trace-js/pull/8576)\n* \\[[`f031818d89`](https://github.com/DataDog/dd-trace-js/commit/f031818d89)] - **(SEMVER-PATCH)** **chore(ci)**: update dd-sts-action to v1.0.3 (Roch Devost) [#8603](https://github.com/DataDog/dd-trace-js/pull/8603)\n* \\[[`761d5a70ba`](https://github.com/DataDog/dd-trace-js/commit/761d5a70ba)] - **(SEMVER-PATCH)** **chore(deps)**: bump qs from 6.15.1 to 6.15.2 in /benchmark/sirun/startup/everything-fixture in the npm\\_and\\_yarn group across 1 directory (dependabot\\[bot]) [#8611](https://github.com/DataDog/dd-trace-js/pull/8611)\n* \\[[`8e57bd7d41`](https://github.com/DataDog/dd-trace-js/commit/8e57bd7d41)] - **(SEMVER-PATCH)** **fix(ci)**: replace setup-bun with npm install to avoid GitHub rate limits (Roch Devost) [#8616](https://github.com/DataDog/dd-trace-js/pull/8616)\n* \\[[`de48a2db85`](https://github.com/DataDog/dd-trace-js/commit/de48a2db85)] - **(SEMVER-PATCH)** **fix(ci)**: fix azure-functions cosmosdb test regressions (Roch Devost) [#8610](https://github.com/DataDog/dd-trace-js/pull/8610)\n* \\[[`2a1b0e4e2a`](https://github.com/DataDog/dd-trace-js/commit/2a1b0e4e2a)] - **(SEMVER-PATCH)** add openai error type (Sam Brenner) [#8605](https://github.com/DataDog/dd-trace-js/pull/8605)\n* \\[[`e7f8e7a928`](https://github.com/DataDog/dd-trace-js/commit/e7f8e7a928)] - **(SEMVER-PATCH)** **fix(ci)**: restore azure-cosmos lint and fix electron packaging on Node 24.16+ (Roch Devost) [#8604](https://github.com/DataDog/dd-trace-js/pull/8604)\n* \\[[`126cb67d0d`](https://github.com/DataDog/dd-trace-js/commit/126cb67d0d)] - **(SEMVER-MINOR)** feat(azure/cosmos): add Azure CosmosDB integration (Rithika Narayan) [#7943](https://github.com/DataDog/dd-trace-js/pull/7943)\n* \\[[`ae4481fabb`](https://github.com/DataDog/dd-trace-js/commit/ae4481fabb)] - **(SEMVER-PATCH)** **test(profiling)**: bump OOM extension size to 20MB for Node 22+ headroom (Attila Szegedi) [#8564](https://github.com/DataDog/dd-trace-js/pull/8564)\n* \\[[`9767d0f752`](https://github.com/DataDog/dd-trace-js/commit/9767d0f752)] - **(SEMVER-PATCH)** **ci(test-optimization)**: build versioned Playwright Docker image in GHCR (Roch Devost) [#8594](https://github.com/DataDog/dd-trace-js/pull/8594)\n* \\[[`45462e3600`](https://github.com/DataDog/dd-trace-js/commit/45462e3600)] - **(SEMVER-PATCH)** **chore(deps-dev)**: bump the dev-minor-and-patch-dependencies group across 1 directory with 4 updates (dependabot\\[bot]) [#8561](https://github.com/DataDog/dd-trace-js/pull/8561)\n* \\[[`eed98dab7b`](https://github.com/DataDog/dd-trace-js/commit/eed98dab7b)] - **(SEMVER-PATCH)** **chore(deps)**: bump uuid from 9.0.1 to 14.0.0 in /benchmark/sirun/startup/everything-fixture in the npm\\_and\\_yarn group across 1 directory (dependabot\\[bot]) [#8596](https://github.com/DataDog/dd-trace-js/pull/8596)\n* \\[[`53292acb4c`](https://github.com/DataDog/dd-trace-js/commit/53292acb4c)] - **(SEMVER-PATCH)** **chore(deps)**: bump the ai-and-llm group across 1 directory with 8 updates (dependabot\\[bot]) [#8601](https://github.com/DataDog/dd-trace-js/pull/8601)\n* \\[[`9013e58945`](https://github.com/DataDog/dd-trace-js/commit/9013e58945)] - **(SEMVER-PATCH)** **ci**: work around actions/cache windows flakiness (Roch Devost) [#8584](https://github.com/DataDog/dd-trace-js/pull/8584)\n* \\[[`526a2183c1`](https://github.com/DataDog/dd-trace-js/commit/526a2183c1)] - **(SEMVER-PATCH)** **fix(electron)**: increase assertSomeTraces timeout for IPC window tests (Roch Devost) [#8597](https://github.com/DataDog/dd-trace-js/pull/8597)\n* \\[[`c94e32e027`](https://github.com/DataDog/dd-trace-js/commit/c94e32e027)] - **(SEMVER-PATCH)** **ci**: only run SSI tests on master, release proposals, and labeled PRs (Roch Devost) [#8485](https://github.com/DataDog/dd-trace-js/pull/8485)\n* \\[[`c0a31e9bcc`](https://github.com/DataDog/dd-trace-js/commit/c0a31e9bcc)] - **(SEMVER-PATCH)** **ci**: structured retry and longer network-timeout for CI installs (Ruben Bridgewater) [#8566](https://github.com/DataDog/dd-trace-js/pull/8566)\n* \\[[`e385b8a047`](https://github.com/DataDog/dd-trace-js/commit/e385b8a047)] - **(SEMVER-PATCH)** **ci(verify-tests)**: flag specs no CI invocation reaches (Ruben Bridgewater) [#8543](https://github.com/DataDog/dd-trace-js/pull/8543)\n* \\[[`625f561c5d`](https://github.com/DataDog/dd-trace-js/commit/625f561c5d)] - **(SEMVER-PATCH)** **perf(http-server)**: reuse request ctx and cache config in plugin start (Ruben Bridgewater) [#8506](https://github.com/DataDog/dd-trace-js/pull/8506)\n* \\[[`105fdbaef1`](https://github.com/DataDog/dd-trace-js/commit/105fdbaef1)] - **(SEMVER-PATCH)** bump datadog/pprof (Ilyas Shabi) [#8565](https://github.com/DataDog/dd-trace-js/pull/8565)\n* \\[[`098e20fbf8`](https://github.com/DataDog/dd-trace-js/commit/098e20fbf8)] - **(SEMVER-PATCH)** bump native-iast-taint-tracking (Ilyas Shabi) [#8591](https://github.com/DataDog/dd-trace-js/pull/8591)\n* \\[[`bcf2f1dc74`](https://github.com/DataDog/dd-trace-js/commit/bcf2f1dc74)] - **(SEMVER-PATCH)** \\[test optimization] normalize seed suffix in test names in `jest` (Juan Antonio Fernández de Alba) [#8587](https://github.com/DataDog/dd-trace-js/pull/8587)\n* \\[[`600610bcaa`](https://github.com/DataDog/dd-trace-js/commit/600610bcaa)] - **(SEMVER-PATCH)** **chore(eslint)**: require messages on boolean test assertions (Thomas Watson) [#8537](https://github.com/DataDog/dd-trace-js/pull/8537)\n* \\[[`3929ed654d`](https://github.com/DataDog/dd-trace-js/commit/3929ed654d)] - **(SEMVER-PATCH)** **fix(electron)**: guard find() result and increase startApp timeout (Roch Devost) [#8559](https://github.com/DataDog/dd-trace-js/pull/8559)\n* \\[[`ce294bf9c0`](https://github.com/DataDog/dd-trace-js/commit/ce294bf9c0)] - **(SEMVER-PATCH)** **ci**: fix node version cache path on Windows (Roch Devost) [#8578](https://github.com/DataDog/dd-trace-js/pull/8578)\n* \\[[`7caa2c988a`](https://github.com/DataDog/dd-trace-js/commit/7caa2c988a)] - **(SEMVER-PATCH)** **fix(test)**: retry topic creation on UNKNOWN\\_TOPIC\\_OR\\_PARTITION in kafkajs tests (William Conti) [#8469](https://github.com/DataDog/dd-trace-js/pull/8469)\n* \\[[`ad4b5e7cc7`](https://github.com/DataDog/dd-trace-js/commit/ad4b5e7cc7)] - **(SEMVER-PATCH)** **ci**: avoid Yarn quarantine for Datadog packages (Ilyas Shabi) [#8577](https://github.com/DataDog/dd-trace-js/pull/8577)\n* \\[[`f8a60480e3`](https://github.com/DataDog/dd-trace-js/commit/f8a60480e3)] - **(SEMVER-PATCH)** **chore**: update dependabot and support ranges (Ruben Bridgewater) [#8337](https://github.com/DataDog/dd-trace-js/pull/8337)\n* \\[[`d72f7da8c0`](https://github.com/DataDog/dd-trace-js/commit/d72f7da8c0)] - **(SEMVER-PATCH)** **chore(deps)**: bump the runtime-minor-and-patch-dependencies group across 1 directory with 2 updates (dependabot\\[bot]) [#8562](https://github.com/DataDog/dd-trace-js/pull/8562)","publishedAt":"2026-05-29T17:08:49.000Z","url":"https://github.com/DataDog/dd-trace-js/releases/tag/v5.105.0","media":[],"prerelease":false,"source":{"slug":"datadog-dd-trace-js","name":"Datadog dd-trace-js","type":"github"},"product":{"slug":"apm","name":"APM"},"groupSlug":"apm","groupName":"APM","coverageCount":0,"contentChars":30051,"contentTokens":10173,"composition":{"bugs":6,"features":4,"enhancements":2}},{"id":"rel_VxreZFVoTyQt89hLu382Z","version":"v4.10.0","type":"feature","title":"4.10.0","summary":"Fixed an AppSec body-parsing hook that consumed the websocket.connect ASGI message, causing ASGI/FastAPI WebSocket connections to fail with HTTP 500 when AppSec was enabled. Also fixed missing reasoning_content from streamed chat completions in OpenAI and LiteLLM integrations when using OpenAI-compatible reasoning providers. APM traces are now exported agentlessly when LLMObs is enabled in agentless mode, with both APM and LLMObs spans remaining visible in the UI.","titleGenerated":"Datadog APM v4.10.0 fixes WebSocket connections and missing reasoning content","titleShort":"WebSocket connections no longer fail; reasoning_content now captured in streams","content":"### Bug Fixes\r\n\r\n- AAP: This fix resolves an issue where the AppSec body-parsing hook consumed the `websocket.connect` ASGI message, causing ASGI/FastAPI WebSocket connections to fail with HTTP 500 when AppSec was enabled.\r\n\r\n<!-- -->\r\n\r\n- LLM Observability: Fixes an issue where `reasoning_content` was missing from streamed chat completions in the OpenAI and LiteLLM integrations when an OpenAI-compatible reasoning provider (e.g. DeepSeek, Qwen) emitted `delta.reasoning_content` chunks. The aggregated message now captures reasoning text in the output message, matching non-streaming behavior.\r\n\r\n<!-- -->\r\n\r\n- dynamic instrumentation: fixes an issue where the Symbol Database uploader sends empty payloads on a recurring timer.\r\n\r\n### Other Changes\r\n\r\n- LLM Observability: when LLMObs is enabled in agentless mode (Datadog Agent not reachable or with `DD_LLMOBS_AGENTLESS_ENABLED=1`), APM traces are now exported agentlessly to Datadog's intake. This should not change user-facing behavior: both APM and LLMObs spans remain visible in the UI; LLMObs spans are simply no longer shipped separately for agentless users. Note that setting `DD_APM_TRACING_ENABLED=false` takes higher precedence and will result in LLMObs span events shipping separately as existing behavior.","publishedAt":"2026-05-29T15:14:03.000Z","url":"https://github.com/DataDog/dd-trace-py/releases/tag/v4.10.0","media":[],"prerelease":false,"source":{"slug":"datadog-dd-trace-py","name":"Datadog dd-trace-py","type":"github"},"product":{"slug":"apm","name":"APM"},"groupSlug":"apm","groupName":"APM","coverageCount":0,"contentChars":1274,"contentTokens":273,"composition":{"bugs":3,"features":0,"enhancements":1}},{"id":"rel_dewtcBK13k5ejF9suUmTE","version":"v4.9.0","type":"feature","title":"4.9.0","summary":"AIGuardAbortError now derives from DDBlockException (a BaseException subclass) instead of Exception, preventing user code's generic except Exception: from silently swallowing AI Guard blocks. Added tracing support for the aws-durable-execution-sdk-python library, instrumented Claude Agent SDK with step spans, and added AI Guard evaluation to OpenAI SDK chat completions. Also fixed a Strands integration conflict, code coverage instrumentation on Python 3.13–3.15, and various CI Visibility and ASM issues.","titleGenerated":"Datadog APM v4.9.0 hardens AI Guard blocking and adds AWS Durable Execution tracing","titleShort":"AI Guard blocks now bypass generic exception handlers; AWS Durable Execution traced","content":"### Upgrade Notes\r\n\r\n- AI Guard: `ddtrace.appsec.ai_guard.AIGuardAbortError` now derives from `ddtrace.internal._exceptions.DDBlockException` (a `BaseException` subclass) instead of `Exception`. This brings AI Guard block decisions in line with how ASM blocks are surfaced and prevents a generic `except Exception:` in user code from silently swallowing a block.\r\n\r\n<!-- -->\r\n\r\n- settings: Legacy environment variable names registered as aliases in the configuration registry now also work when set via local or fleet stable config files, not just shell environment variables. \\#17958\r\n\r\n<!-- -->\r\n\r\n- ray: Adds `DD_TRACE_RAY_IGNORED_ACTORS` configuration to exclude specific Ray actor methods from instrumentation. Set `DD_TRACE_RAY_IGNORED_ACTORS='{\"ActorA\": [\"method1\"], \"ActorB\": \"*\"}'` to leave matching methods or actors uninstrumented while continuing to trace other Ray actor methods. Matching is based on actor class name only.\r\n\r\n### Deprecation Notes\r\n\r\n- Tracing: `DD_TRACE_INFERRED_SPANS_ENABLED` is deprecated and will be removed in 5.0.0. Use `DD_TRACE_INFERRED_PROXY_SERVICES_ENABLED` instead. The old environment variable continues to work but emits a `DDTraceDeprecationWarning` when set.\r\n\r\n### New Features\r\n\r\n- aws_durable_execution_sdk_python: Add tracing support for the `aws-durable-execution-sdk-python` library. Instruments `@durable_execution` workflows and `DurableContext` operations (`step`, `invoke`, `wait`, `wait_for_condition`, `wait_for_callback`, `create_callback`, `map`, `parallel`, `run_in_child_context`) to generate spans.\r\n\r\n<!-- -->\r\n\r\n- LLM Observability: Adds `step` spans to the Claude Agent SDK integration. Each inference cycle is now represented by a `step` container span with an `llm` child span for the model call and `tool` child spans for any tool invocations.\r\n\r\n<!-- -->\r\n\r\n- tracing: Adds a centralized `supported-configurations.json` registry of all supported `DD_*` and `OTEL_*` environment variables, following the same schema used by other Datadog tracing libraries. Accesses to unregistered environment variables now produce a debug log to help identify typos or unsupported configuration options.\r\n\r\n<!-- -->\r\n\r\n- AI Guard: Copies anomaly-detection attributes from the local root (service-entry) span onto every `ai_guard` span: `ai_guard.http.useragent`, `ai_guard.http.client_ip`, `ai_guard.network.client.ip`, `ai_guard.usr.id` and `ai_guard.usr.session_id`.\r\n\r\n<!-- -->\r\n\r\n- AI Guard: When `DD_AI_GUARD_ENABLED=true` is set and an `ai_guard` span is created during a request, the tracer now populates `http.client_ip` and `network.client.ip` on the service-entry (local root) span, mirroring the behavior used for Application Security. If AI Guard does not run during the request, no client IP tags are added. `DD_TRACE_CLIENT_IP_ENABLED` is ignored once AI Guard reports, and `DD_TRACE_CLIENT_IP_HEADER` continues to override header resolution.\r\n\r\n<!-- -->\r\n\r\n- ai_guard: add AI Guard evaluation support to the OpenAI SDK chat completions instrumentation. Both non-streaming and streaming requests and non-streaming responses are evaluated through the configured AI Guard client, and evaluation is automatically skipped when a framework integration (LangChain, Strands Agents) is already evaluating the same call.\r\n\r\n<!-- -->\r\n\r\n- code origin for spans: The code origin for spans feature has been enabled by default.\r\n\r\n<!-- -->\r\n\r\n- code origin: attach code origin information to the first span generated by a function wrapped with <span class=\"title-ref\">tracer.wrap</span>.\r\n\r\n<!-- -->\r\n\r\n- openfeature: This introduces a configurable initialization timeout for `DataDogProvider`. The timeout controls how long `initialize()` waits for configuration before returning, and defaults to 10 seconds. Set it via the `DD_EXPERIMENTAL_FLAGGING_PROVIDER_INITIALIZATION_TIMEOUT_MS` environment variable or the `init_timeout` constructor parameter.\r\n\r\n<!-- -->\r\n\r\n- CI Visibility: This introduces Jenkins custom parent ID propagation, which enables Datadog to correlate tests run from Jenkins with their Jenkins jobs and pipelines.\r\n\r\n<!-- -->\r\n\r\n- LLM Observability: Adds an optional `cost_tags` argument to `LLMObs.annotate()` and `LLMObs.annotation_context()`. Pass a list of tag keys (already set via `tags` or annotated previously on the same span) to have them attached to the cost and token metrics generated from LLM and embedding spans, which can help breaking down spend by team, project, org, or any custom dimension.\r\n\r\n<!-- -->\r\n\r\n- LLM Observability: Adds support for an optional `version` (string) field on each tool definition dictionary passed to `LLMObs.annotate()` via the `tool_definitions` parameter.\r\n\r\n<!-- -->\r\n\r\n- profiling: Add `DD_PROFILING_LOCK_EXCLUDE_MODULES` config to skip lock profiling for framework-internal locks. Excluded locks remain native with zero profiling overhead. Set it to a comma-separated list of module prefixes (e.g., `django.db,sqlalchemy.pool,urllib3`).\r\n\r\n<!-- -->\r\n\r\n- LLM Observability: Bedrock Agent orchestration step events (model invocations, tool/action group calls, knowledge base lookups, guardrails, rationales) are now emitted as APM child spans of the `Bedrock Agent <agent_id>` span when LLM Observability is enabled, with the same LLMObs payload shape as before.\r\n\r\n### Bug Fixes\r\n\r\n- tracing: Exclude `wrapt==2.2.0` from the supported dependency range to avoid a regression that breaks wrapped C descriptors.\r\n\r\n- ai_guard: This fix resolves a conflict between `ddtrace.auto` and `strands` when imported in the same file, which left Strands hooks silently disabled. The Strands integration now loads lazily on first attribute access so its event class identities match those the agent dispatches.\r\n\r\n<!-- -->\r\n\r\n- appsec: Adds telemetry metrics `instrum.user_auth.missing_user_login` and `instrum.user_auth.missing_user_id` when Django auth events cannot resolve the expected identity fields, enabling detection of misconfigured user model field mappings.\r\n\r\n<!-- -->\r\n\r\n- AAP: This fix resolves an issue where the `usr.session_id` tag was missing from the entry span of authenticated follow-up Django requests when automatic user instrumentation was enabled. They now also carry `usr.session_id`, matching other authenticated user-tagging paths.\r\n\r\n<!-- -->\r\n\r\n- azure_cosmos: This change removes the http.status_code tags from Azure CosmosDB spans and replaces them with the use of the db.response.status_code metric. For customers using ddtrace v4.8.0 and relying on the http.status_code tag of cosmosdb.query spans, this is a breaking change.\r\n\r\n<!-- -->\r\n\r\n- CI Visibility: Fixes an issue in the pytest plugin where a malformed log call emitted a `--- Logging error ---` traceback to stderr during Attempt to Fix retries, polluting pytest output and contributing to spurious test failures.\r\n\r\n<!-- -->\r\n\r\n- CI Visibility: Fixes an `IndexError` in retry bookkeeping that occurred when a test's teardown phase failed. The error produced `--- Logging error ---` tracebacks in stderr, which could pollute test output and cause spurious test failures during retries. \\#17863\r\n\r\n<!-- -->\r\n\r\n- CI Visibility: Fixes a regression where setting `DD_TEST_MANAGEMENT_ENABLED=0` was not honored by the new pytest plugin, causing Test Management features such as quarantining, disabling tests, and Attempt to Fix to remain enabled.\r\n\r\n<!-- -->\r\n\r\n- CI Visibility: Fixes code coverage instrumentation on Python 3.13, 3.14, and 3.15. Resolves lost per-test line data caused by: `sys.monitoring` callbacks running in a snapshot context where `ContextVar` changes are not visible (Python 3.14+); empty modules emitting no `LINE` events (Python 3.13+); and `ProcessPoolExecutor` child coverage not being propagated to the parent context. Also fixes a stale-data bug where child process executable lines could inflate coverage denominators after `stop_coverage()` was called before `join()`.\r\n\r\n<!-- -->\r\n\r\n- datastreams: Demotes the `retry limit exceeded submitting pathway stats` log from `ERROR` to `WARNING` and removes the multi-line traceback from the record. This message fires when the processor cannot reach the agent within its 1-second timeout; the dropped 10 seconds of DSM data is auto-recovered on the next flush.\r\n\r\n<!-- -->\r\n\r\n- LLM Observability: Fixes a concurrency bug in the Bedrock Agent integration where concurrent `invoke_agent` calls could orphan or cross-attribute spans due to shared class-level state. Per-invocation state is now used.\r\n\r\n<!-- -->\r\n\r\n- LLM Observability: This fix resolves an issue where text wrapped in Bedrock Converse `guardContent` content blocks was rendered as `[Unsupported content type: guardContent]` in traces, dropping the user's input.\r\n\r\n<!-- -->\r\n\r\n- Fixed an issue that could have caused some instrumented code to fail to execute correctly when the original function had keyword arguments passed in as a cell variable.\r\n\r\n<!-- -->\r\n\r\n- CI Visibility: Fixes an issue where tests marked as attempt-to-fix could have failures hidden when they were also quarantined or disabled.\r\n\r\n<!-- -->\r\n\r\n- django: Stop tagging async view and middleware spans as errored on routine ASGI cancellations (e.g. client disconnects on streaming responses), a regression introduced in 4.8.0rc4. Cancellation still propagates; the span just finishes without `error.type='asyncio.exceptions.CancelledError'`.\r\n\r\n<!-- -->\r\n\r\n- django: Fixes `DD_DJANGO_DATABASE_SERVICE` and `DD_DJANGO_DATABASE_SERVICE_NAME`, which were previously generated as `DD_DJANGO-DATABASE_SERVICE` and `DD_DJANGO-DATABASE_SERVICE_NAME`. The hyphenated names were invalid POSIX identifiers and unusable from most shells. Hyphens in integration names are now normalized to underscores when building env var names. The old hyphenated names are preserved as aliases for backward compatibility. \\#17952\r\n\r\n<!-- -->\r\n\r\n- django: API endpoint discovery now supports Django sub-applications mounted with `django.urls.include(...)`. Endpoints are reported with their full URL path including the parent prefix — for example, a view served at `/api/users/` is now reported as `/api/users/` instead of losing the `/api/` prefix.\r\n\r\n<!-- -->\r\n\r\n- django: API endpoint discovery now reports the correct HTTP methods for views decorated with `@require_http_methods` combined with another decorator such as `@csrf_exempt`; the declared methods are reported instead of a generic wildcard entry.\r\n\r\n<!-- -->\r\n\r\n- telemetry: tolerate malformed installed distribution metadata so a single bad dist-info entry no longer floods stderr with repeated tracebacks.\r\n\r\n<!-- -->\r\n\r\n- langchain, botocore: This fix resolves an issue where auto-instrumented `langchain_aws.ChatBedrockConverse` spans reported an opaque inference-profile ARN identifier as the model name when an inference profile was used. `base_model_id` which represents the underlying foundation model is now checked first when extracting model names, and the botocore Bedrock integration reads the resolved base model from a shared in-process cache populated by langchain so the same resolution applies to the underlying `bedrock-runtime` span.\r\n\r\n<!-- -->\r\n\r\n- LLM Observability: This fix resolves an issue where running an experiment with a dataset whose records had `null` metadata caused the summary evaluator to crash with a `TypeError` while preparing evaluator inputs.\r\n\r\n<!-- -->\r\n\r\n- LLM Observability: Changes the default `model_name` and `model_provider` of LLM and embedding spans from `custom` to `unknown` if not provided or empty. This applies to both auto-instrumented spans and manual instrumentation via `LLMObs.llm()` / `LLMObs.embedding()` and the `@llm` / `@embedding` decorators.\r\n\r\n<!-- -->\r\n\r\n- profiling: Fixes an issue where the lock profiler silently stopped capturing lock events when running under `ddtrace-run` with <span class=\"title-ref\">gevent</span> installed.\r\n\r\n<!-- -->\r\n\r\n- LLM Observability: The OpenAI integration now preserves assistant message content when `tool_calls` are present on the same message. \\#17760\r\n\r\n<!-- -->\r\n\r\n- openfeature: This fix resolves an issue where `DataDogProvider.initialize()` returned before configuration was received, causing the OpenFeature SDK to mark the provider as ready to serve evaluations too early and flag evaluations to silently return default values. The provider now waits for configuration before returning.\r\n\r\n<!-- -->\r\n\r\n- openfeature: Fixes targeting key handling in the OpenFeature provider. `None` targeting key is now correctly passed to the native evaluator instead of being coerced to empty string. Flags that don't require a targeting key (static, rule-based) now evaluate successfully without one, matching the Datadog provider spec. Additionally, the Rust binding now correctly maps `TargetingKeyMissing` errors from libdatadog instead of returning a generic error code.\r\n\r\n<!-- -->\r\n\r\n- tracing: Fixes an issue where the `svc.auto` process tag produced garbled values such as `python_-m_unittest` when a process was launched with the full command as a single `sys.argv[0]` string (e.g. from a Docker `ENTRYPOINT`, a process manager, or a subprocess call with an unsplit command). The correct module or script name is now extracted in these cases. \\#17764\r\n\r\n<!-- -->\r\n\r\n- profiling: A crash that could happen in child processes after fork has been fixed.\r\n\r\n<!-- -->\r\n\r\n- profiling: A rare crash caused by the memory allocation profiler has been fixed.\r\n\r\n<!-- -->\r\n\r\n- RemoteConfig: Fixed an issue where deleted remote configurations were not applied, causing stale settings to persist.\r\n\r\n<!-- -->\r\n\r\n- tracing: This fix resolves a memory leak where reference cycles through a span's properties were invisible to Python's cyclic garbage collector and accumulated proportionally to traced call volume.\r\n\r\n<!-- -->\r\n\r\n- starlette: This fix resolves an issue where passing `middleware=None` caused application startup to fail when Starlette tracing was enabled.\r\n\r\n<!-- -->\r\n\r\n- wsgi: This fix resolves an issue where the `http.url` tag on inbound request spans contained the WSGI mount prefix twice (for example `/admin/admin/users` instead of `/admin/users`) when the application was served behind `werkzeug.middleware.dispatcher.DispatcherMiddleware` or any other in-process mount that preserves the original request URI in `RAW_URI` / `REQUEST_URI` while also setting `SCRIPT_NAME`.\r\n\r\n<!-- -->\r\n\r\n- tracing: A crash that occurred when exiting a gevent application with `DD_TRACE_DEBUG=1` has been fixed.\r\n\r\n<!-- -->\r\n\r\n- langchain: Strips interface identifiers (e.g. `chat`, `llm`) and path prefixes (e.g. `models/`) when extracting the `model_provider` and `model_name`, so reported values identify the actual provider and model name rather than the LangChain interface or API resource path.\r\n\r\n<!-- -->\r\n\r\n- llmobs: fixes child spans created within an experiment task not inheriting the `dataset_id` tag. Previously only `dataset_name` was propagated via baggage to child spans; `dataset_id` is now propagated as well, making dataset, project, and experiment context (name and ID) consistent across all spans in an experiment trace.\r\n\r\n<!-- -->\r\n\r\n- Profiling: This fixes a bug where uploaded profiles would not have a linked span post fork\r\n\r\n<!-- -->\r\n\r\n- profiling: A rare crash happening on systems with small stack sizes when profiling asyncio code has been fixed.\r\n\r\n<!-- -->\r\n\r\n- propagation: Limits parsing of the W3C `tracestate` header during `tracecontext` extraction to 32 list-members and 512 UTF-8 bytes, consistent with the W3C Trace Context specification (<https://www.w3.org/TR/trace-context/>). Extra list-members and trailing whole entries that would exceed the byte budget are ignored, so unusually large headers no longer expand unbounded work during extraction. The Datadog `dd=` list-member is preferred: it is kept when present (including when it appears late in the header or alone exceeds the byte cap), and other vendors are dropped first. List-members longer than `DD_TRACE_TRACESTATE_ITEM_MAX_CHARS` (128) characters are removed first when trimming by list-member count or byte budget, so shorter vendor entries are kept when possible.\r\n\r\n<!-- -->\r\n\r\n- Fixed a startup deadlock when using `snowflake-connector-python >= 4.4.0` with `DD_TRACE_SNOWFLAKE_ENABLED=true`.\r\n\r\n<!-- -->\r\n\r\n- tracing: This change fixes an issue in which <span class=\"title-ref\">svc_src</span> is set to <span class=\"title-ref\">m</span> in cases where <span class=\"title-ref\">service</span> matches the <span class=\"title-ref\">\\_default_service</span> of an active integration config. In such cases, the intended behavior is that it <span class=\"title-ref\">svc_src</span> is equal to <span class=\"title-ref\">service</span>. \\#17712\r\n\r\n<!-- -->\r\n\r\n- tracing: Parsing incoming `baggage` HTTP headers now respects `DD_TRACE_BAGGAGE_MAX_ITEMS` \\[default 64\\] and `DD_TRACE_BAGGAGE_MAX_BYTES` \\[default 8192\\], consistent with baggage injection. Previously, extraction could retain every comma-separated entry regardless of those limits. The tracer drops excess pairs and records truncation telemetry when limits apply.\r\n\r\n### Other Changes\r\n\r\n- profiling: The `ECHION_ALT_VM_READ_FORCE` configuration flag has been removed and support for the associated feature has been dropped.","publishedAt":"2026-05-26T13:41:29.000Z","url":"https://github.com/DataDog/dd-trace-py/releases/tag/v4.9.0","media":[],"prerelease":false,"source":{"slug":"datadog-dd-trace-py","name":"Datadog dd-trace-py","type":"github"},"product":{"slug":"apm","name":"APM"},"groupSlug":"apm","groupName":"APM","coverageCount":0,"contentChars":17247,"contentTokens":3622,"composition":{"bugs":12,"features":13,"enhancements":3}},{"id":"rel_YV3kbNB0HoxntocYwZOwf","version":"v4.8.7","type":"feature","title":"4.8.7","summary":"Excluded wrapt==2.2.0 from the supported dependency range to avoid a regression that breaks wrapped C descriptors. LLM Observability agent connection error logs are no longer logged when using agentless mode without a Datadog agent running.","titleGenerated":"Datadog APM v4.8.7 excludes wrapt 2.2.0 and fixes agent connection logs","titleShort":"Wrapt 2.2.0 excluded; agent connection logs fixed","content":"### Bug Fixes\r\n\r\n- tracing: Exclude `wrapt==2.2.0` from the supported dependency range to avoid a regression that breaks wrapped C descriptors.\r\n- LLM Observability: Agent connection error logs are no longer logged when using agentless and not running a Datadog agent.","publishedAt":"2026-05-22T20:01:47.000Z","url":"https://github.com/DataDog/dd-trace-py/releases/tag/v4.8.7","media":[],"prerelease":false,"source":{"slug":"datadog-dd-trace-py","name":"Datadog dd-trace-py","type":"github"},"product":{"slug":"apm","name":"APM"},"groupSlug":"apm","groupName":"APM","coverageCount":0,"contentChars":268,"contentTokens":60,"composition":{"bugs":2,"features":0,"enhancements":0}},{"id":"rel_EDS43itzo7mZaNjhMydBI","version":"v5.104.0","type":"feature","title":"5.104.0","summary":"Fixed an unfinished CONNECT span in undici instrumentation and delta temporality not being applied to OTLP counter exports. Also reduced Redis and ioredis instrumentation overhead, skipped stacktrace symbolication on GraphQL validation errors, and fixed opentracing type imports.","titleGenerated":"APM v5.104.0 fixes undici CONNECT span and metrics delta temporality","titleShort":"Undici CONNECT span no longer unfinished; metrics delta temporality fixed","content":"* \\[[`f7f2c7c2f1`](https://github.com/DataDog/dd-trace-js/commit/f7f2c7c2f1)] - **(SEMVER-PATCH)** **chore(deps)**: bump the gh-actions-packages group across 2 directories with 2 updates (dependabot\\[bot]) [#8563](https://github.com/DataDog/dd-trace-js/pull/8563)\n* \\[[`4afcb7eed4`](https://github.com/DataDog/dd-trace-js/commit/4afcb7eed4)] - **(SEMVER-PATCH)** fix(undici) unfinished CONNECT span (Pablo Erhard) [#8558](https://github.com/DataDog/dd-trace-js/pull/8558)\n* \\[[`a34acbb466`](https://github.com/DataDog/dd-trace-js/commit/a34acbb466)] - **(SEMVER-PATCH)** **test(aerospike,couchbase)**: fix hook timeouts and couchbase service readiness (Roch Devost) [#8550](https://github.com/DataDog/dd-trace-js/pull/8550)\n* \\[[`908e4d7558`](https://github.com/DataDog/dd-trace-js/commit/908e4d7558)] - **(SEMVER-PATCH)** **perf**: reduce redis and ioredis bindStart overhead (Ruben Bridgewater) [#8494](https://github.com/DataDog/dd-trace-js/pull/8494)\n* \\[[`85211ec3ec`](https://github.com/DataDog/dd-trace-js/commit/85211ec3ec)] - **(SEMVER-PATCH)** **fix(metrics)**: fix delta temporality not being applied to OTLP counter exports (Sameeran Kunche) [#8556](https://github.com/DataDog/dd-trace-js/pull/8556)\n* \\[[`32b49b2a0d`](https://github.com/DataDog/dd-trace-js/commit/32b49b2a0d)] - **(SEMVER-PATCH)** **chore(deps)**: bump openai (dependabot\\[bot]) [#8539](https://github.com/DataDog/dd-trace-js/pull/8539)\n* \\[[`0bc47a6727`](https://github.com/DataDog/dd-trace-js/commit/0bc47a6727)] - **(SEMVER-PATCH)** **perf(graphql)**: skip stacktrace symbolication on validation-only errors (Ruben Bridgewater) [#8499](https://github.com/DataDog/dd-trace-js/pull/8499)\n* \\[[`8feb9ce389`](https://github.com/DataDog/dd-trace-js/commit/8feb9ce389)] - **(SEMVER-PATCH)** **fix(types)**: import opentracing from the consumer's installed package (Ruben Bridgewater) [#8525](https://github.com/DataDog/dd-trace-js/pull/8525)\n* \\[[`31353c773c`](https://github.com/DataDog/dd-trace-js/commit/31353c773c)] - **(SEMVER-PATCH)** **ci**: remove systematic Mocha --retries 1 on master (Roch Devost) [#8552](https://github.com/DataDog/dd-trace-js/pull/8552)\n* \\[[`e769f32bb0`](https://github.com/DataDog/dd-trace-js/commit/e769f32bb0)] - **(SEMVER-PATCH)** **fix(google-cloud-pubsub)**: poll for GC collection instead of fixed retry count (Roch Devost) [#8553](https://github.com/DataDog/dd-trace-js/pull/8553)\n* \\[[`180549f994`](https://github.com/DataDog/dd-trace-js/commit/180549f994)] - **(SEMVER-PATCH)** **fix(mongoose)**: make PeerCat model registration idempotent (Roch Devost) [#8551](https://github.com/DataDog/dd-trace-js/pull/8551)\n* \\[[`d7e1a534e9`](https://github.com/DataDog/dd-trace-js/commit/d7e1a534e9)] - **(SEMVER-PATCH)** **fix(aws-sdk)**: fix flaky SFN, SNS DSM, S3, and Bedrockruntime tests (Roch Devost) [#8548](https://github.com/DataDog/dd-trace-js/pull/8548)\n* \\[[`1c8044f42a`](https://github.com/DataDog/dd-trace-js/commit/1c8044f42a)] - **(SEMVER-PATCH)** **fix(appsec)**: increase beforeEach timeout in rasp-metrics integration test (Roch Devost) [#8547](https://github.com/DataDog/dd-trace-js/pull/8547)\n* \\[[`e6eac5a6f0`](https://github.com/DataDog/dd-trace-js/commit/e6eac5a6f0)] - **(SEMVER-PATCH)** **fix(electron)**: fix flaky IPC tests and Xvfb startup race (Roch Devost) [#8546](https://github.com/DataDog/dd-trace-js/pull/8546)\n* \\[[`43f95f074d`](https://github.com/DataDog/dd-trace-js/commit/43f95f074d)] - **(SEMVER-PATCH)** **chore(ci)**: update dd-sts-action to v1.0.1 (Charles de Beauchesne) [#8545](https://github.com/DataDog/dd-trace-js/pull/8545)\n* \\[[`d5421208ad`](https://github.com/DataDog/dd-trace-js/commit/d5421208ad)] - **(SEMVER-PATCH)** **ci(electron)**: push results to test optimization (Roch Devost) [#8544](https://github.com/DataDog/dd-trace-js/pull/8544)\n* \\[[`65a9329653`](https://github.com/DataDog/dd-trace-js/commit/65a9329653)] - **(SEMVER-PATCH)** **chore(deps)**: bump ws from 8.20.0 to 8.20.1 in /benchmark/sirun/startup/everything-fixture in the npm\\_and\\_yarn group across 1 directory (dependabot\\[bot]) [#8542](https://github.com/DataDog/dd-trace-js/pull/8542)\n* \\[[`178fc6bd2a`](https://github.com/DataDog/dd-trace-js/commit/178fc6bd2a)] - **(SEMVER-PATCH)** **chore(ci)**: set ffe as owner of .github/workflows/openfeature.yml (Charles de Beauchesne) [#8535](https://github.com/DataDog/dd-trace-js/pull/8535)\n* \\[[`25d47abf77`](https://github.com/DataDog/dd-trace-js/commit/25d47abf77)] - **(SEMVER-PATCH)** test only Node LTS (Pablo Erhard) [#8529](https://github.com/DataDog/dd-trace-js/pull/8529)\n* \\[[`a01a6b8efd`](https://github.com/DataDog/dd-trace-js/commit/a01a6b8efd)] - **(SEMVER-PATCH)** **test**: prefer assert.match for string matching (Thomas Watson) [#8540](https://github.com/DataDog/dd-trace-js/pull/8540)\n* \\[[`49f1bb171a`](https://github.com/DataDog/dd-trace-js/commit/49f1bb171a)] - **(SEMVER-PATCH)** **test(electron)**: raise plugin-spec startApp beforeEach timeout to 10s (Ruben Bridgewater) [#8536](https://github.com/DataDog/dd-trace-js/pull/8536)\n* \\[[`dcfdb77b29`](https://github.com/DataDog/dd-trace-js/commit/dcfdb77b29)] - **(SEMVER-PATCH)** **test(debugger)**: widen sampling spec tolerance to absorb wall-clock skew (Thomas Watson) [#8534](https://github.com/DataDog/dd-trace-js/pull/8534)\n* \\[[`7302ef8258`](https://github.com/DataDog/dd-trace-js/commit/7302ef8258)] - **(SEMVER-PATCH)** **test**: use assert.strictEqual / notStrictEqual for === and !== checks (Thomas Watson) [#8538](https://github.com/DataDog/dd-trace-js/pull/8538)\n* \\[[`f74834adaa`](https://github.com/DataDog/dd-trace-js/commit/f74834adaa)] - **(SEMVER-PATCH)** \\[test optimization] Fix early metadata encoding bug (Juan Antonio Fernández de Alba) [#8528](https://github.com/DataDog/dd-trace-js/pull/8528)\n* \\[[`18d97575dc`](https://github.com/DataDog/dd-trace-js/commit/18d97575dc)] - **(SEMVER-PATCH)** **perf(id)**: memoise Identifier.toBigInt instead of re-decoding the buffer per call (Ruben Bridgewater) [#8495](https://github.com/DataDog/dd-trace-js/pull/8495)\n* \\[[`54f0666bbb`](https://github.com/DataDog/dd-trace-js/commit/54f0666bbb)] - **(SEMVER-PATCH)** **fix(rewriter)**: emit valid ESM imports for instrumented modules (Ruben Bridgewater) [#8526](https://github.com/DataDog/dd-trace-js/pull/8526)\n* \\[[`7b5b32caca`](https://github.com/DataDog/dd-trace-js/commit/7b5b32caca)] - **(SEMVER-PATCH)** **fix(kafkajs)**: skip header injection on brokers below Produce v3 (Ruben Bridgewater) [#8390](https://github.com/DataDog/dd-trace-js/pull/8390)\n* \\[[`ab11acdbb6`](https://github.com/DataDog/dd-trace-js/commit/ab11acdbb6)] - **(SEMVER-PATCH)** **test**: reduce agent.load overhead by reducing proxyquire calls (Ruben Bridgewater) [#8099](https://github.com/DataDog/dd-trace-js/pull/8099)\n* \\[[`85baecf3cd`](https://github.com/DataDog/dd-trace-js/commit/85baecf3cd)] - **(SEMVER-PATCH)** **perf(elasticsearch)**: cache per-instance tag keys and skip empty params stringify (Ruben Bridgewater) [#8376](https://github.com/DataDog/dd-trace-js/pull/8376)\n* \\[[`5d72f2d380`](https://github.com/DataDog/dd-trace-js/commit/5d72f2d380)] - **(SEMVER-PATCH)** **refactor(graphql)**: drop unused @graphql-tools/executor deep hook (Ruben Bridgewater) [#8510](https://github.com/DataDog/dd-trace-js/pull/8510)\n* \\[[`c1eddead4b`](https://github.com/DataDog/dd-trace-js/commit/c1eddead4b)] - **(SEMVER-PATCH)** **ci(codecov)**: restrict codecov/patch to PRs targeting master (Ruben Bridgewater) [#8464](https://github.com/DataDog/dd-trace-js/pull/8464)\n* \\[[`9952e24b41`](https://github.com/DataDog/dd-trace-js/commit/9952e24b41)] - **(SEMVER-PATCH)** **chore(llmobs)**: fix flaky openai test (Sam Brenner) [#8490](https://github.com/DataDog/dd-trace-js/pull/8490)\n* \\[[`f8614b357f`](https://github.com/DataDog/dd-trace-js/commit/f8614b357f)] - **(SEMVER-PATCH)** **feat(shimmer)**: add wrapCallback for tracer-controlled closures (Ruben Bridgewater) [#8503](https://github.com/DataDog/dd-trace-js/pull/8503)\n* \\[[`3631da6a36`](https://github.com/DataDog/dd-trace-js/commit/3631da6a36)] - **(SEMVER-MINOR)** **feat(appsec)**: Always report content-length and content-type response headers when appsec is enabled (Carles Capell) [#8482](https://github.com/DataDog/dd-trace-js/pull/8482)\n* \\[[`858e1cb0a2`](https://github.com/DataDog/dd-trace-js/commit/858e1cb0a2)] - **(SEMVER-PATCH)** **perf(storage)**: cache storage() at module load (Ruben Bridgewater) [#8500](https://github.com/DataDog/dd-trace-js/pull/8500)\n* \\[[`bcab75cd29`](https://github.com/DataDog/dd-trace-js/commit/bcab75cd29)] - **(SEMVER-MINOR)** **feat(crashtracking)**: capture and report uncaught exceptions (Gyuheon Oh) [#8176](https://github.com/DataDog/dd-trace-js/pull/8176)\n* \\[[`28c1ff37b8`](https://github.com/DataDog/dd-trace-js/commit/28c1ff37b8)] - **(SEMVER-PATCH)** **perf(service-naming)**: short-circuit repeat registerExtraService calls (Ruben Bridgewater) [#8496](https://github.com/DataDog/dd-trace-js/pull/8496)\n* \\[[`bdc736b843`](https://github.com/DataDog/dd-trace-js/commit/bdc736b843)] - **(SEMVER-PATCH)** \\[test optimization] parallelize test optimization requests (Juan Antonio Fernández de Alba) [#8520](https://github.com/DataDog/dd-trace-js/pull/8520)\n* \\[[`29cd9f5967`](https://github.com/DataDog/dd-trace-js/commit/29cd9f5967)] - **(SEMVER-PATCH)** \\[test optimization] use worker efd retry count in parallel cucumber (Juan Antonio Fernández de Alba) [#8478](https://github.com/DataDog/dd-trace-js/pull/8478)\n* \\[[`9f243d934c`](https://github.com/DataDog/dd-trace-js/commit/9f243d934c)] - **(SEMVER-PATCH)** \\[test optimization] merge static mocked files with recorded mocks in jest (Juan Antonio Fernández de Alba) [#8477](https://github.com/DataDog/dd-trace-js/pull/8477)\n* \\[[`19dfbe4dbe`](https://github.com/DataDog/dd-trace-js/commit/19dfbe4dbe)] - **(SEMVER-PATCH)** **test**: targeted aerospike and electron suite timeouts (Ruben Bridgewater) [#8527](https://github.com/DataDog/dd-trace-js/pull/8527)\n* \\[[`30cbcacac3`](https://github.com/DataDog/dd-trace-js/commit/30cbcacac3)] - **(SEMVER-MINOR)** **feat(appsec)**: collect Datadog security-testing headers on entry spans (Christophe Papazian) [#8463](https://github.com/DataDog/dd-trace-js/pull/8463)\n* \\[[`16ab502164`](https://github.com/DataDog/dd-trace-js/commit/16ab502164)] - **(SEMVER-PATCH)** \\[test optimization] stabilize vitest async setup instrumentation (Juan Antonio Fernández de Alba) [#8519](https://github.com/DataDog/dd-trace-js/pull/8519)\n* \\[[`c497d0a4ca`](https://github.com/DataDog/dd-trace-js/commit/c497d0a4ca)] - **(SEMVER-PATCH)** **fix(mocha)**: correct timing for top-level it() tests (Sebastián Kay) [#8480](https://github.com/DataDog/dd-trace-js/pull/8480)\n* \\[[`806f177fbf`](https://github.com/DataDog/dd-trace-js/commit/806f177fbf)] - **(SEMVER-MINOR)** **feat(mongodb)**: add opt-in query value obfuscation (Ruben Bridgewater) [#8401](https://github.com/DataDog/dd-trace-js/pull/8401)\n* \\[[`f9a39f203d`](https://github.com/DataDog/dd-trace-js/commit/f9a39f203d)] - **(SEMVER-PATCH)** \\[test optimization] Stabilize Cypress intake payload waits (Juan Antonio Fernández de Alba) [#8522](https://github.com/DataDog/dd-trace-js/pull/8522)\n* \\[[`f221629d3b`](https://github.com/DataDog/dd-trace-js/commit/f221629d3b)] - **(SEMVER-PATCH)** **chore(deps)**: bump axios (dependabot\\[bot]) [#8518](https://github.com/DataDog/dd-trace-js/pull/8518)\n* \\[[`539aa4a662`](https://github.com/DataDog/dd-trace-js/commit/539aa4a662)] - **(SEMVER-PATCH)** **fix(grpc)**: handle client\\_streaming and bidi 3-arg overload (Crystal Luc-Magloire) [#8276](https://github.com/DataDog/dd-trace-js/pull/8276)\n* \\[[`1eda439d60`](https://github.com/DataDog/dd-trace-js/commit/1eda439d60)] - **(SEMVER-PATCH)** **fix(openfeature)**: cap pending exposure events (Ruben Bridgewater) [#8162](https://github.com/DataDog/dd-trace-js/pull/8162)\n* \\[[`9e41a6aae3`](https://github.com/DataDog/dd-trace-js/commit/9e41a6aae3)] - **(SEMVER-PATCH)** **deprecation(llmobs)**: deprecate `llmobs.enable` and `llmobs.disable` for dd-trace v7 (Sam Brenner) [#8427](https://github.com/DataDog/dd-trace-js/pull/8427)\n* \\[[`934f932039`](https://github.com/DataDog/dd-trace-js/commit/934f932039)] - **(SEMVER-PATCH)** **ci(appsec)**: split next jobs by individual version instead of range (Roch Devost) [#8472](https://github.com/DataDog/dd-trace-js/pull/8472)\n* \\[[`c4b0554b7d`](https://github.com/DataDog/dd-trace-js/commit/c4b0554b7d)] - **(SEMVER-PATCH)** **chore(deps)**: bump express (dependabot\\[bot]) [#8488](https://github.com/DataDog/dd-trace-js/pull/8488)\n* \\[[`7a01a98566`](https://github.com/DataDog/dd-trace-js/commit/7a01a98566)] - **(SEMVER-PATCH)** **ci(apm-integrations)**: split next jobs by individual version instead of range (Roch Devost) [#8484](https://github.com/DataDog/dd-trace-js/pull/8484)\n* \\[[`199e240fb1`](https://github.com/DataDog/dd-trace-js/commit/199e240fb1)] - **(SEMVER-PATCH)** **ci(all-green)**: rerun failed workflows on startup when all-green is rerun (Roch Devost) [#8475](https://github.com/DataDog/dd-trace-js/pull/8475)\n* \\[[`4566023687`](https://github.com/DataDog/dd-trace-js/commit/4566023687)] - **(SEMVER-PATCH)** **ci**: split integration-bundler into integration-esbuild and integration-webpack (Roch Devost) [#8470](https://github.com/DataDog/dd-trace-js/pull/8470)\n* \\[[`ee54394360`](https://github.com/DataDog/dd-trace-js/commit/ee54394360)] - **(SEMVER-PATCH)** **ci**: retry yarn install on failure in datadog-ci action (Roch Devost) [#8459](https://github.com/DataDog/dd-trace-js/pull/8459)\n* \\[[`d482f4b7e9`](https://github.com/DataDog/dd-trace-js/commit/d482f4b7e9)] - **(SEMVER-PATCH)** **ci**: remove node\\_modules cache from install action (Roch Devost) [#8393](https://github.com/DataDog/dd-trace-js/pull/8393)\n* \\[[`c833bf860a`](https://github.com/DataDog/dd-trace-js/commit/c833bf860a)] - **(SEMVER-PATCH)** **chore(benchmark)**: reduce sirun log iterations from 40 to 10 (Roch Devost) [#8474](https://github.com/DataDog/dd-trace-js/pull/8474)\n* \\[[`94c1d4e91c`](https://github.com/DataDog/dd-trace-js/commit/94c1d4e91c)] - **(SEMVER-MINOR)** **feat(kafkajs)**: add kafka.messages.offsets to producer span (Piotr WOLSKI) [#8468](https://github.com/DataDog/dd-trace-js/pull/8468)","publishedAt":"2026-05-20T21:33:08.000Z","url":"https://github.com/DataDog/dd-trace-js/releases/tag/v5.104.0","media":[],"prerelease":false,"source":{"slug":"datadog-dd-trace-js","name":"Datadog dd-trace-js","type":"github"},"product":{"slug":"apm","name":"APM"},"groupSlug":"apm","groupName":"APM","coverageCount":0,"contentChars":14248,"contentTokens":4742,"composition":{"bugs":5,"features":1,"enhancements":5}}],"pagination":{"nextCursor":"2026-05-20T21:33:08.000Z|2026-05-20T23:03:58.611Z|rel_EDS43itzo7mZaNjhMydBI","limit":20}}