feat: Remove support for initialising via --require#22513
Merged
Conversation
Contributor
size-limit report 📦
|
timfish
marked this pull request as ready for review
July 22, 2026 17:38
There was a problem hiding this comment.
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.
Reviewed by Cursor Bugbot for commit 143a4cc. Configure here.
| const joinedArgs = execArgv.join(' '); | ||
| const importPaths = Array.from(joinedArgs.matchAll(/--import[ =](\S+)/g)).map(e => resolve(cwd, e[1] || '')); | ||
| const requirePaths = Array.from(joinedArgs.matchAll(/--require[ =](\S+)/g)).map(e => resolve(cwd, e[1] || '')); | ||
| const requirePaths = Array.from(joinedArgs.matchAll(/(?:--require|-r)[ =](\S+)/g)).map(e => resolve(cwd, e[1] || '')); |
There was a problem hiding this comment.
Require warning misses package preloads
Medium Severity
The new --require migration warning relies on getEntryPointType(), but parseProcessPaths resolves preload targets with path.resolve(cwd, ...). Package specifiers like @sentry/node/init never match real stack filenames under node_modules, so the documented no-code --require entry points silently skip the warning.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 143a4cc. Configure here.
7 tasks
isaacs
approved these changes
Jul 22, 2026
isaacs
pushed a commit
that referenced
this pull request
Jul 23, 2026
This PR simplifies the `register.ts` hook registration to remove all the lazy loading. Once the lazy loading was removed there were a number of other things required to get this actually passing all the e2e tests: - [x] Bundle the whole orchestrion runtime chain (`@apm-js-collab/*`, meriyah, esquery, …) into `@sentry/server-utils`' build (all now devDependencies). The dist only has relative requires, which removes two classes of breakage: - `require(esm)`: the CJS build is now genuine CJS — fixes AWS Lambda (`--no-experimental-require-module`) and the `Module.register` loader-thread crash on Node 22.15–24.12 - Build-time tracer vs runtime exports-map divergence on meriyah's `module-sync` condition (vercel/nft#603, nitrojs/nitro#4456) — no runtime package resolution left to get wrong - This also reduces the bundler impact of all these dependencies from +70kB to +20kB - [x] The `Module.register` async hook is now a self-referenced entrypoint of our own ESM build (`@sentry/server-utils/orchestrion/hook`), sharing the vendored chunks - [x] The webpack/Turbopack loader ships as a bundled entrypoint (`./orchestrion/webpack-loader`), resolved by self-reference since the `@apm-js-collab` packages are no longer installed - [x] Fix build-time Rollup ESM interop issues (Node builtins need `default` interop; default-only ESM deps need `requireReturnsDefault: 'auto'`) - [x] NextJS: force `@sentry/server-utils` external via absolute-path externals so `register.ts` stays in `node_modules` and its `Module.register` self-reference resolves under pnpm — also removes the `tracingHooksPath` workaround - [x] Bumps the `@sentry/node` size limit by ~40kb — the lazy loading previously hid this code from the size report - [x] #22513
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Initialising via
--requireresults in the SDK being loaded and initialised in Node's ESM loader thread 🤯This causes numerous issues:
require(esm)does not work correctly - feat: Convert code to CJS apm-js-collab/tracing-hooks#51The last straw way failing to
require(esm). This stops us from using any import/require chain that results in CJS requiring ESM. It's part of the reason/server-utils/src/orchestrion/runtime/register.tsneeded to do lazy loading.Since it's so problematic and
--importsupports loading ESM or CJS everywhere, we should remove support and warn users!