Skip to content

test(e2e): Add Next.js standalone output test app - #23679

Merged
andreiborza merged 4 commits into
developfrom
ab/e2e-nextjs-16-standalone
Sep 2, 2026
Merged

andreiborza merged 4 commits into
developfrom
ab/e2e-nextjs-16-standalone

Conversation

@andreiborza

@andreiborza andreiborza commented Aug 27, 2026

Copy link
Copy Markdown
Member

What

Adds a nextjs-16-standalone e2e app, the only one in the repo that builds with output: 'standalone'. It asserts the relocated server output carries no absolute-path imports, and covers the standalone server serving requests and reporting errors.

Why

Nothing on develop exercised output: 'standalone', so the nft trace, the file copy and node .next/standalone/server.js went untested. That is the deploy shape where a build-time path baked into a chunk actually breaks, as #23266 showed.

@linear-code

linear-code Bot commented Aug 27, 2026

Copy link
Copy Markdown

JS-3451

@github-actions

github-actions Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

Path Size % Change Change
@sentry/browser 28.56 kB - -
@sentry/browser - with treeshaking flags 26.92 kB - -
@sentry/browser - with treeshaking flags tracing without tracing 26.82 kB - -
@sentry/browser (incl. Tracing) 48.86 kB - -
@sentry/browser (incl. Tracing + Span Streaming) 48.87 kB - -
@sentry/browser (incl. Tracing, Profiling) 51.79 kB - -
@sentry/browser (incl. Tracing, Replay) 88.35 kB - -
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags 77.75 kB - -
@sentry/browser (incl. Tracing, Replay with Canvas) 93.04 kB - -
@sentry/browser (incl. Tracing, Replay, Feedback) 106 kB - -
@sentry/browser (incl. Feedback) 46.05 kB - -
@sentry/browser (incl. sendFeedback) 33.62 kB - -
@sentry/browser (incl. FeedbackAsync) 38.73 kB - -
@sentry/browser (incl. Metrics) 29.51 kB - -
@sentry/browser (incl. Logs) 29.8 kB - -
@sentry/browser (incl. Metrics & Logs) 30.43 kB - -
@sentry/react 30.3 kB - -
@sentry/react (incl. Tracing) 51.06 kB - -
@sentry/vue 35.73 kB - -
@sentry/vue (incl. Tracing) 51.13 kB - -
@sentry/svelte 28.59 kB - -
CDN Bundle 30.35 kB - -
CDN Bundle (incl. Tracing) 49.5 kB - -
CDN Bundle (incl. Logs, Metrics) 32.58 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) 51.41 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) 73.17 kB - -
CDN Bundle (incl. Tracing, Replay) 87 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) 88.86 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) 92.93 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) 94.83 kB - -
CDN Bundle - uncompressed 89.95 kB - -
CDN Bundle (incl. Tracing) - uncompressed 147.56 kB - -
CDN Bundle (incl. Logs, Metrics) - uncompressed 96.24 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed 153.25 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed 225.41 kB - -
CDN Bundle (incl. Tracing, Replay) - uncompressed 267.05 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed 272.73 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 280.75 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed 286.42 kB - -
@sentry/nextjs (client) 53.68 kB - -
@sentry/sveltekit (client) 49.29 kB - -
@sentry/core/server 40.72 kB - -
@sentry/core/browser 13.42 kB - -
@sentry/node 123.83 kB +0.02% +21 B 🔺
@sentry/node/import (ESM hook with diagnostics-channel injection) 81.4 kB - -
@sentry/node - without tracing 88.13 kB +0.03% +25 B 🔺
@sentry/node - without channel injection 103.26 kB +0.02% +17 B 🔺
@sentry/aws-serverless 96.47 kB +0.03% +23 B 🔺
@sentry/cloudflare (withSentry) - minified 201.21 kB - -
@sentry/cloudflare (withSentry) 500.7 kB - -

View base workflow run

Comment on lines +49 to +53
{
"build-command": "pnpm test:build",
"label": "nextjs-16-standalone (turbopack)",
"assert-command": "pnpm test:assert"
}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

isn't that the default variant anyway

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Thanks, removed in 34c5ec7

Comment on lines +49 to +53
{
"build-command": "pnpm test:build",
"label": "nextjs-16-standalone (turbopack)",
"assert-command": "pnpm test:assert"
}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

can you add a canary version ?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Added in 34c5ec7

@andreiborza
andreiborza disabled the stack merge August 31, 2026 15:08
@andreiborza
andreiborza force-pushed the ab/e2e-nextjs-16-standalone branch from 34c5ec7 to b7c4e61 Compare September 1, 2026 11:42
@andreiborza
andreiborza merged commit 72bf05f into develop Sep 2, 2026
45 checks passed
@andreiborza
andreiborza deleted the ab/e2e-nextjs-16-standalone branch September 2, 2026 09:10
andreiborza added a commit that referenced this pull request Sep 2, 2026
…th so build tracers follow it (#23687)

Stacked on #23679.

## What

`register.ts` (now in `@sentry/server-runtime-injection`) resolves the
orchestrion ESM loader hook from its own on-disk location instead of
through the `@sentry/server-runtime-injection/hook` self-reference, and
the standalone e2e app asserts the hook reaches the traced output. It
keeps the self-reference as a fallback for a bundled copy, where the
relative path points at nothing.

Fixes [JS-3451](https://linear.app/getsentry/issue/JS-3451).

## Why

`Module.register()` resolves its specifier at runtime. `@vercel/nft`
does evaluate those calls, but not through the interop namespace helper
rollup emits in the CJS build, which is the build Next.js loads, so the
hook never reached traced output. `output: 'standalone'`, Docker and
Vercel deploys then lost channel-based instrumentation entirely, and
only said so behind `debug: true`. The new path is a literal that both
builds expose to tracers, computed at runtime so nothing absolute is
baked in.

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants