Skip to content

fix(node-core): Reduce bundle size by removing apm-js-collab and requiring pino >= 9.10#18631

Merged
logaretm merged 4 commits intodevelopfrom
awad/js-1160-apm-js-collab-is-included-in-the-sentrynextjs-bundle-when
Feb 17, 2026
Merged

fix(node-core): Reduce bundle size by removing apm-js-collab and requiring pino >= 9.10#18631
logaretm merged 4 commits intodevelopfrom
awad/js-1160-apm-js-collab-is-included-in-the-sentrynextjs-bundle-when

Conversation

@logaretm
Copy link
Member

We discussed this in Bikeshedding, apm-js runtime hooks gets bundled in frameworks still using CJS like Next.js, even if the user was not using Pino integration at all. Attempts to tree-shake it failed as Next.js is still using CJS.

We can drop support for older versions of Pino, given that pino@9.10 already exposes a tracing channel that we use, and that the injected channel was a backup for pino<9.10

This will reduce bundle sizes and ensure frameworks incapable of esm tree-shaking don't pick it up as a dependency.

I will remove @apm-js-collab/tracing-hooks as a dep from node-core since nothing else uses it.

closes #18199

@linear
Copy link

linear bot commented Dec 29, 2025

@logaretm logaretm changed the title ref(pino): Drop pino<9.10 support ref(node-core): Drop pino<9.10 support Dec 29, 2025
@logaretm logaretm added Meta: Breaking Package: node Issues related to the Sentry Node SDK breaking change labels Dec 29, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Dec 29, 2025

node-overhead report 🧳

Note: This is a synthetic benchmark with a minimal express app and does not necessarily reflect the real-world performance impact in an application.
⚠️ Warning: Base artifact is not the latest one, because the latest workflow run is not done yet. This may lead to incorrect results. Try to re-run all tests to get up to date results.

Scenario Requests/s % of Baseline Prev. Requests/s Change %
GET Baseline 9,239 - 11,206 -18%
GET With Sentry 1,714 19% 1,856 -8%
GET With Sentry (error only) 6,112 66% 7,570 -19%
POST Baseline 1,185 - 1,166 +2%
POST With Sentry 599 51% 572 +5%
POST With Sentry (error only) 1,050 89% 1,025 +2%
MYSQL Baseline 3,257 - 3,984 -18%
MYSQL With Sentry 500 15% 515 -3%
MYSQL With Sentry (error only) 2,658 82% 3,288 -19%

View base workflow run

@github-actions
Copy link
Contributor

github-actions bot commented Dec 29, 2025

size-limit report 📦

⚠️ Warning: Base artifact is not the latest one, because the latest workflow run is not done yet. This may lead to incorrect results. Try to re-run all tests to get up to date results.

Path Size % Change Change
@sentry/browser 25.56 kB - -
@sentry/browser - with treeshaking flags 24.08 kB - -
@sentry/browser (incl. Tracing) 42.36 kB - -
@sentry/browser (incl. Tracing, Profiling) 47.03 kB - -
@sentry/browser (incl. Tracing, Replay) 81.18 kB - -
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags 70.8 kB - -
@sentry/browser (incl. Tracing, Replay with Canvas) 85.87 kB - -
@sentry/browser (incl. Tracing, Replay, Feedback) 98.03 kB - -
@sentry/browser (incl. Feedback) 42.29 kB - -
@sentry/browser (incl. sendFeedback) 30.23 kB - -
@sentry/browser (incl. FeedbackAsync) 35.22 kB - -
@sentry/browser (incl. Metrics) 26.74 kB - -
@sentry/browser (incl. Logs) 26.88 kB - -
@sentry/browser (incl. Metrics & Logs) 27.56 kB - -
@sentry/react 27.33 kB - -
@sentry/react (incl. Tracing) 44.72 kB - -
@sentry/vue 30.01 kB - -
@sentry/vue (incl. Tracing) 44.22 kB - -
@sentry/svelte 25.58 kB - -
CDN Bundle 28.11 kB - -
CDN Bundle (incl. Tracing) 43.2 kB - -
CDN Bundle (incl. Logs, Metrics) 28.95 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) 44.03 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) 68.02 kB - -
CDN Bundle (incl. Tracing, Replay) 80.07 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) 80.94 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) 85.5 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) 86.4 kB - -
CDN Bundle - uncompressed 82.22 kB - -
CDN Bundle (incl. Tracing) - uncompressed 127.93 kB - -
CDN Bundle (incl. Logs, Metrics) - uncompressed 85.05 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed 130.76 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed 208.71 kB - -
CDN Bundle (incl. Tracing, Replay) - uncompressed 244.81 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed 247.63 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 257.61 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed 260.42 kB - -
@sentry/nextjs (client) 47.07 kB - -
@sentry/sveltekit (client) 42.81 kB - -
@sentry/node-core 52.15 kB -0.01% -5 B 🔽
@sentry/node 166.53 kB -0.01% -2 B 🔽
@sentry/node - without tracing 93.95 kB +0.01% +1 B 🔺
@sentry/aws-serverless 109.45 kB -0.01% -2 B 🔽

View base workflow run

@Lms24 Lms24 added this to the 11.0.0 milestone Dec 29, 2025
@logaretm logaretm force-pushed the awad/js-1160-apm-js-collab-is-included-in-the-sentrynextjs-bundle-when branch from 3d7aa48 to e0577ed Compare February 15, 2026 17:51
@logaretm logaretm marked this pull request as ready for review February 16, 2026 06:41
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR drops support for Pino versions before 9.10.0 to reduce bundle size, particularly for frameworks using CommonJS (like Next.js) that cannot effectively tree-shake unused dependencies. The change removes the @apm-js-collab/tracing-hooks dependency and associated injection loader infrastructure, relying solely on the native pino_asJson tracing channel introduced in Pino 9.10.0.

Changes:

  • Removed @apm-js-collab/tracing-hooks and @apm-js-collab/code-transformer dependencies
  • Deleted the injection loader infrastructure (injectLoader.ts and related hooks)
  • Updated Pino integration to use only the native pino_asJson tracing channel
  • Updated test dependencies to use Pino 9.10.0

Reviewed changes

Copilot reviewed 6 out of 7 changed files in this pull request and generated no comments.

Show a summary per file
File Description
yarn.lock Removed @apm-js-collab package entries and updated pino from 9.9.4 to 9.10.0
packages/node-core/src/sdk/injectLoader.ts Deleted entire file containing injection loader infrastructure
packages/node-core/src/sdk/index.ts Removed GLOBAL_OBJ import and call to inject loader hook registration
packages/node-core/src/integrations/pino.ts Removed addInstrumentationConfig import and usage, removed injectedChannel subscription for pino<9.10
packages/node-core/package.json Removed @apm-js-collab/tracing-hooks dependency and @apm-js-collab/code-transformer devDependency
packages/core/src/utils/worldwide.ts Removed _sentryInjectLoaderHookRegister and _sentryInjectLoaderHookRegistered global type definitions
dev-packages/node-integration-tests/package.json Updated pino version from 9.9.4 to 9.10.0

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Member

@Lms24 Lms24 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving this since it seems like a lot of users are affected by largely increased bundle/module sizes. Some suggestions:

  • I'd re-classify this as a fix and highlight it as an important change in the changelog
  • Let's ensure projects with older Pino versions only break sliently (as in, we don't actually break builds after updating the SDK).


addExceptionMechanism(event, {
handled: options.error.handled,
type: 'pino',
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

l: unrelated to this PR but can we align the exception mechanism to be adhere to our mechanism type specification?

I'd suggest

Suggested change
type: 'auto.log.pino',

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will create another PR 👍

@logaretm logaretm force-pushed the awad/js-1160-apm-js-collab-is-included-in-the-sentrynextjs-bundle-when branch from e0577ed to 9ec85d9 Compare February 16, 2026 13:49
@logaretm logaretm changed the title ref(node-core): Drop pino<9.10 support fix(node-core): Reduce bundle size by removing apm-js-collab and requiring pino >= 9.10 Feb 16, 2026
@logaretm logaretm force-pushed the awad/js-1160-apm-js-collab-is-included-in-the-sentrynextjs-bundle-when branch 2 times, most recently from bd1c6cd to 17cec6a Compare February 16, 2026 14:09
@logaretm logaretm force-pushed the awad/js-1160-apm-js-collab-is-included-in-the-sentrynextjs-bundle-when branch from 17cec6a to 290e69a Compare February 17, 2026 01:23
@logaretm logaretm removed this from the 11.0.0 milestone Feb 17, 2026
@github-actions
Copy link
Contributor

github-actions bot commented Feb 17, 2026

Codecov Results 📊


Generated by Codecov Action

@github-actions
Copy link
Contributor

Codecov Results 📊

25 passed | ⏭️ 5 skipped | Total: 30 | Pass Rate: 83.33% | Execution Time: 13.14s

📊 Comparison with Base Branch

Metric Change
Total Tests
Passed Tests 📈 +2
Failed Tests
Skipped Tests 📉 -2

✨ No test changes detected

All tests are passing successfully.


Generated by Codecov Action

@logaretm logaretm force-pushed the awad/js-1160-apm-js-collab-is-included-in-the-sentrynextjs-bundle-when branch from ff4f5db to 6b45fba Compare February 17, 2026 15:04
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

"openai": "5.18.1",
"pg": "8.16.0",
"pino": "9.9.4",
"pino": "9.10.0",
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fix PR lacks regression test per review rules

Low Severity

Per the review rules, a fix PR needs at least one unit, integration, or E2E test that validates the regression being fixed. This PR only bumps the pino version in tests from 9.9.4 to 9.10.0 but doesn't add a new test verifying that the bundle size reduction works or that pino integration still functions correctly with only the integratedChannel. Existing tests may pass coincidentally without actually verifying the specific change.

Fix in Cursor Fix in Web

Triggered by project rule: PR Review Guidelines for Cursor Bot

@logaretm logaretm merged commit cc0dc3b into develop Feb 17, 2026
222 checks passed
@logaretm logaretm deleted the awad/js-1160-apm-js-collab-is-included-in-the-sentrynextjs-bundle-when branch February 17, 2026 15:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Package: node Issues related to the Sentry Node SDK

Projects

None yet

Development

Successfully merging this pull request may close these issues.

@apm-js-collab is included in the @sentry/nextjs bundle when Pino integration is not enabled

4 participants