Conversation
@vinext/cloudflare
create-vinext-app
@vinext/types
vinext
@cloudflare/workers-response-store
commit: |
Performance benchmarksCompared 0 improved · 0 regressed · 6 within ±1.5%
View detailed results and traces 🟢 improvement · 🔴 regression · ⚫ change below 1.5% · paired base/head |
|
/bigbonk review for issues Time limit: 8 minutes. Complete the review and post all findings within that limit. |
|
@james-elicx Bonk workflow was cancelled. View workflow run · To retry, trigger Bonk again. |
|
/bigbonk review for issues Time limit: 8 minutes. Complete the review and post all findings within that limit. |
|
Posted 1 actionable inline finding. Targeted instrumentation tests pass. |
|
/bigbonk review for issues Time limit: 8 minutes. Complete the review and post all findings within that limit. |
|
LGTM! |
Fixes #3361.
Node App Router dev loads instrumentation through the Pages SSR runner, rejecting dynamic
server-onlyimports and initializing different module instances from App requests. Reuse the existing RSC runner so registration uses React server conditions and shares initialized module state with request handling. Pages-only startup keeps its direct runner; external runtimes initialize through their own entries.Alternative to #3362 for the Node dev regression, without widening the
server-onlyallowlist. Matches Next.js's server-layer instrumentation test and initialization ordering.Regression tests cover static/dynamic imports, React conditions, module state, async ordering, concurrent registration, Pages-first hybrid requests, failed registration, and rejection of a Client Component importing the same server-only dependency. A Playwright E2E in the existing non-Cloudflare
app-with-srcfixture opens the affected page and verifies that instrumentation initialized the same server-only module instance used by the App request.Validation:
mainfails with the reported'server-only' cannot be imported in client build ('ssr' environment)chain and the PR head passes.PLAYWRIGHT_PROJECT=app-with-src vp exec playwright test --project=app-with-src(4 passed)vp test run tests/instrumentation-dev.test.ts tests/instrumentation.test.ts(50 passed)vp checkvp run vinext#buildnode scripts/ci-integration-shard.mjs --check --shard-total=10