Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

perf(turbo-tasks): Optionally schedule ResolveNative/ResolveTrait tasks as local tasks #69126

Draft
wants to merge 4 commits into
base: bgw/return-values-should-be-non-local
Choose a base branch
from

Conversation

bgw
Copy link
Member

@bgw bgw commented Aug 21, 2024

When calling a turbo tasks function with unresolved arguments, we create a wrapper CachedTaskType::ResolveNative or ResolveTrait task.

These are quite frequently created, and their behavior is constrained and well-defined, so we should turn them into local tasks that aren't cached in the backend.

This logic is gated behind --features turbo-tasks/local_resolution, as it has some known issues.

Known Issues

A RawVc::LocalOutput can currently only be resolved within it's parent task.

The long-term plan is for everything to use ResolvedVc, so that this assumption is safe.

The short-term plan is to store local outputs more globally. Design here: https://www.notion.so/vercel/RawVc-LocalOutput-aede5f463f594ca58396eb3fdaffd865?pvs=4#02af94e3b9b64a3690f3e467abc0a47e

Test Plan

cargo nextest r --features turbo-tasks/local_resolution -p turbo-tasks -p turbo-tasks-memory

Copy link
Member Author

bgw commented Aug 21, 2024

Warning

This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

This stack of pull requests is managed by Graphite. Learn more about stacking.

@bgw bgw changed the title Add schedule_local_task method draft(turbo-tasks): Add schedule_local_task method Aug 21, 2024
@ijjk
Copy link
Member

ijjk commented Aug 21, 2024

Stats from current PR

Default Build (Increase detected ⚠️)
General
vercel/next.js canary vercel/next.js bgw/schedule-local-task Change
buildDuration 19.1s 17.4s N/A
buildDurationCached 16.6s 14.3s N/A
nodeModulesSize 417 MB 417 MB N/A
nextStartRea..uration (ms) 464ms 481ms N/A
Client Bundles (main, webpack)
vercel/next.js canary vercel/next.js bgw/schedule-local-task Change
5306-HASH.js gzip 53.4 kB 53.4 kB N/A
8276.HASH.js gzip 169 B 168 B N/A
8377-HASH.js gzip 5.44 kB 5.44 kB N/A
bccd1874-HASH.js gzip 52.9 kB 52.9 kB N/A
framework-HASH.js gzip 57.5 kB 57.5 kB N/A
main-app-HASH.js gzip 240 B 243 B N/A
main-HASH.js gzip 34.2 kB 34.2 kB N/A
webpack-HASH.js gzip 1.71 kB 1.71 kB N/A
Overall change 0 B 0 B
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js bgw/schedule-local-task Change
polyfills-HASH.js gzip 39.4 kB 39.4 kB
Overall change 39.4 kB 39.4 kB
Client Pages
vercel/next.js canary vercel/next.js bgw/schedule-local-task Change
_app-HASH.js gzip 193 B 193 B
_error-HASH.js gzip 193 B 193 B
amp-HASH.js gzip 512 B 510 B N/A
css-HASH.js gzip 343 B 342 B N/A
dynamic-HASH.js gzip 1.84 kB 1.84 kB
edge-ssr-HASH.js gzip 265 B 265 B
head-HASH.js gzip 363 B 362 B N/A
hooks-HASH.js gzip 393 B 392 B N/A
image-HASH.js gzip 4.57 kB 4.57 kB N/A
index-HASH.js gzip 268 B 268 B
link-HASH.js gzip 2.35 kB 2.34 kB N/A
routerDirect..HASH.js gzip 328 B 328 B
script-HASH.js gzip 397 B 397 B
withRouter-HASH.js gzip 323 B 326 B N/A
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 3.59 kB 3.59 kB
Client Build Manifests
vercel/next.js canary vercel/next.js bgw/schedule-local-task Change
_buildManifest.js gzip 749 B 747 B N/A
Overall change 0 B 0 B
Rendered Page Sizes
vercel/next.js canary vercel/next.js bgw/schedule-local-task Change
index.html gzip 524 B 523 B N/A
link.html gzip 539 B 538 B N/A
withRouter.html gzip 520 B 520 B
Overall change 520 B 520 B
Edge SSR bundle Size
vercel/next.js canary vercel/next.js bgw/schedule-local-task Change
edge-ssr.js gzip 129 kB 129 kB N/A
page.js gzip 207 kB 207 kB N/A
Overall change 0 B 0 B
Middleware size
vercel/next.js canary vercel/next.js bgw/schedule-local-task Change
middleware-b..fest.js gzip 670 B 669 B N/A
middleware-r..fest.js gzip 155 B 156 B N/A
middleware.js gzip 31.3 kB 31.3 kB N/A
edge-runtime..pack.js gzip 844 B 844 B
Overall change 844 B 844 B
Next Runtimes
vercel/next.js canary vercel/next.js bgw/schedule-local-task Change
274-experime...dev.js gzip 322 B 322 B
274.runtime.dev.js gzip 314 B 314 B
app-page-exp...dev.js gzip 369 kB 369 kB
app-page-exp..prod.js gzip 130 kB 130 kB
app-page-tur..prod.js gzip 142 kB 142 kB
app-page-tur..prod.js gzip 138 kB 138 kB
app-page.run...dev.js gzip 357 kB 357 kB
app-page.run..prod.js gzip 126 kB 126 kB
app-route-ex...dev.js gzip 37.6 kB 37.6 kB
app-route-ex..prod.js gzip 25.6 kB 25.6 kB
app-route-tu..prod.js gzip 25.6 kB 25.6 kB
app-route-tu..prod.js gzip 25.4 kB 25.4 kB
app-route.ru...dev.js gzip 39.2 kB 39.2 kB
app-route.ru..prod.js gzip 25.4 kB 25.4 kB
pages-api-tu..prod.js gzip 9.69 kB 9.69 kB
pages-api.ru...dev.js gzip 11.6 kB 11.6 kB
pages-api.ru..prod.js gzip 9.68 kB 9.68 kB
pages-turbo...prod.js gzip 21.7 kB 21.7 kB
pages.runtim...dev.js gzip 27.5 kB 27.5 kB
pages.runtim..prod.js gzip 21.7 kB 21.7 kB
server.runti..prod.js gzip 916 kB 916 kB
Overall change 2.46 MB 2.46 MB
build cache Overall increase ⚠️
vercel/next.js canary vercel/next.js bgw/schedule-local-task Change
0.pack gzip 2.09 MB 2.09 MB N/A
index.pack gzip 74.3 kB 75.2 kB ⚠️ +948 B
Overall change 74.3 kB 75.2 kB ⚠️ +948 B
Diff details
Diff for main-HASH.js

Diff too large to display

Commit: 380be4b

@ijjk
Copy link
Member

ijjk commented Aug 21, 2024

Failing test suites

Commit: 380be4b

pnpm test-dev-turbo test/development/basic/next-rs-api.test.ts (turbopack)

  • next.rs api > should allow to write root page to disk
  • next.rs api > should allow to write pages edge api to disk
  • next.rs api > should allow to write pages Node.js api to disk
  • next.rs api > should allow to write app edge page to disk
  • next.rs api > should allow to write app Node.js page to disk
  • next.rs api > should allow to write pages edge page to disk
  • next.rs api > should allow to write pages Node.js page to disk
  • next.rs api > should allow to write app edge route to disk
  • next.rs api > should allow to write app Node.js route to disk
Expand output

● next.rs api › should allow to write root page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write root page to disk: diagnostics 1`

- Snapshot  -   1
+ Received  + 100

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcExperimentalDecorators": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcImportSource": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  300 |       name: 'pages edge page',
  301 |       path: '/page-edge',
> 302 |       type: 'page',
      |                    ^
  303 |       runtime: 'edge',
  304 |       config: {},
  305 |     },

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:302:74)

● next.rs api › should allow to write root page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write root page to disk: data diagnostics 1`

- Snapshot  -   1
+ Received  + 100

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcExperimentalDecorators": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcImportSource": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  305 |     },
  306 |     {
> 307 |       name: 'pages Node.js page',
      |                                  ^
  308 |       path: '/page-nodejs',
  309 |       type: 'page',
  310 |       runtime: 'nodejs',

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:307:75)

● next.rs api › should allow to write pages edge api to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write pages edge api to disk: diagnostics 1`

- Snapshot  -   1
+ Received  + 100

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcExperimentalDecorators": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcImportSource": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  291 |     },
  292 |     {
> 293 |       name: 'app Node.js page',
      |                                ^
  294 |       path: '/app-nodejs',
  295 |       type: 'app-page',
  296 |       runtime: 'nodejs',

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:293:74)

● next.rs api › should allow to write pages Node.js api to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write pages Node.js api to disk: diagnostics 1`

- Snapshot  -   1
+ Received  + 100

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcExperimentalDecorators": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcImportSource": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  291 |     },
  292 |     {
> 293 |       name: 'app Node.js page',
      |                                ^
  294 |       path: '/app-nodejs',
  295 |       type: 'app-page',
  296 |       runtime: 'nodejs',

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:293:74)

● next.rs api › should allow to write app edge page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write app edge page to disk: diagnostics 1`

- Snapshot  -   1
+ Received  + 100

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcExperimentalDecorators": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcImportSource": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  314 |       name: 'app edge route',
  315 |       path: '/route-edge',
> 316 |       type: 'app-route',
      |                         ^
  317 |       runtime: 'edge',
  318 |       config: {},
  319 |     },

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:316:74)

● next.rs api › should allow to write app edge page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write app edge page to disk: rsc diagnostics 1`

- Snapshot  -   1
+ Received  + 100

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcExperimentalDecorators": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcImportSource": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  319 |     },
  320 |     {
> 321 |       name: 'app Node.js route',
      |                                 ^
  322 |       path: '/route-nodejs',
  323 |       type: 'app-route',
  324 |       runtime: 'nodejs',

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:321:75)

● next.rs api › should allow to write app Node.js page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write app Node.js page to disk: diagnostics 1`

- Snapshot  -   1
+ Received  + 100

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcExperimentalDecorators": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcImportSource": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  314 |       name: 'app edge route',
  315 |       path: '/route-edge',
> 316 |       type: 'app-route',
      |                         ^
  317 |       runtime: 'edge',
  318 |       config: {},
  319 |     },

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:316:74)

● next.rs api › should allow to write app Node.js page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write app Node.js page to disk: rsc diagnostics 1`

- Snapshot  -   1
+ Received  + 100

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcExperimentalDecorators": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcImportSource": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  319 |     },
  320 |     {
> 321 |       name: 'app Node.js route',
      |                                 ^
  322 |       path: '/route-nodejs',
  323 |       type: 'app-route',
  324 |       runtime: 'nodejs',

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:321:75)

● next.rs api › should allow to write pages edge page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write pages edge page to disk: diagnostics 1`

- Snapshot  -   1
+ Received  + 100

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcExperimentalDecorators": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcImportSource": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  300 |       name: 'pages edge page',
  301 |       path: '/page-edge',
> 302 |       type: 'page',
      |                    ^
  303 |       runtime: 'edge',
  304 |       config: {},
  305 |     },

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:302:74)

● next.rs api › should allow to write pages edge page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write pages edge page to disk: data diagnostics 1`

- Snapshot  -   1
+ Received  + 100

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcExperimentalDecorators": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcImportSource": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  305 |     },
  306 |     {
> 307 |       name: 'pages Node.js page',
      |                                  ^
  308 |       path: '/page-nodejs',
  309 |       type: 'page',
  310 |       runtime: 'nodejs',

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:307:75)

● next.rs api › should allow to write pages Node.js page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write pages Node.js page to disk: diagnostics 1`

- Snapshot  -   1
+ Received  + 100

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcExperimentalDecorators": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcImportSource": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  300 |       name: 'pages edge page',
  301 |       path: '/page-edge',
> 302 |       type: 'page',
      |                    ^
  303 |       runtime: 'edge',
  304 |       config: {},
  305 |     },

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:302:74)

● next.rs api › should allow to write pages Node.js page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write pages Node.js page to disk: data diagnostics 1`

- Snapshot  -   1
+ Received  + 100

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcExperimentalDecorators": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcImportSource": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  305 |     },
  306 |     {
> 307 |       name: 'pages Node.js page',
      |                                  ^
  308 |       path: '/page-nodejs',
  309 |       type: 'page',
  310 |       runtime: 'nodejs',

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:307:75)

● next.rs api › should allow to write app edge route to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write app edge route to disk: diagnostics 1`

- Snapshot  -   1
+ Received  + 100

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcExperimentalDecorators": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcImportSource": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  291 |     },
  292 |     {
> 293 |       name: 'app Node.js page',
      |                                ^
  294 |       path: '/app-nodejs',
  295 |       type: 'app-page',
  296 |       runtime: 'nodejs',

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:293:74)

● next.rs api › should allow to write app Node.js route to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write app Node.js route to disk: diagnostics 1`

- Snapshot  -   1
+ Received  + 100

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcExperimentalDecorators": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcImportSource": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  291 |     },
  292 |     {
> 293 |       name: 'app Node.js page',
      |                                ^
  294 |       path: '/app-nodejs',
  295 |       type: 'app-page',
  296 |       runtime: 'nodejs',

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:293:74)

Read more about building and testing Next.js in contributing.md.

__NEXT_EXPERIMENTAL_PPR=true pnpm test-dev test/e2e/opentelemetry/client-trace-metadata/client-trace-metadata.test.ts (PPR)

  • clientTraceMetadata > app router > should inject propagation data for a dynamically server-side-rendered page
  • clientTraceMetadata > app router > hard loading a dynamic page twice should yield different dynamic trace data
  • clientTraceMetadata > app router > should only insert the client trace metadata once
  • clientTraceMetadata > app router > next dev only > should inject propagation data for a statically server-side-rendered page
  • clientTraceMetadata > app router > next dev only > soft navigating to a dynamic page should not transform previous propagation data
  • clientTraceMetadata > app router > next dev only > soft navigating to a static page should not transform previous propagation data
  • clientTraceMetadata > pages router > should inject propagation data for a dynamically server-side-rendered page
  • clientTraceMetadata > pages router > hard loading a dynamic page twice should yield different dynamic trace data
  • clientTraceMetadata > pages router > next dev only > should inject propagation data for a statically server-side-rendered page
  • clientTraceMetadata > pages router > next dev only > soft navigating to a dynamic page should not transform previous propagation data
  • clientTraceMetadata > pages router > next dev only > soft navigating to a static page should not transform previous propagation data
Expand output

● clientTraceMetadata › app router › should inject propagation data for a dynamically server-side-rendered page

Failed to start server after 10000ms, waiting for this log pattern: / ✓ Ready in /

  370 |     return setTimeout(() => {
  371 |       reject(
> 372 |         new Error(
      |         ^
  373 |           `Failed to start server after ${ms}ms, waiting for this log pattern: ${this.serverReadyPattern}`
  374 |         )
  375 |       )

  at Timeout._onTimeout (lib/next-modes/base.ts:372:9)

● clientTraceMetadata › app router › hard loading a dynamic page twice should yield different dynamic trace data

Failed to start server after 10000ms, waiting for this log pattern: / ✓ Ready in /

  370 |     return setTimeout(() => {
  371 |       reject(
> 372 |         new Error(
      |         ^
  373 |           `Failed to start server after ${ms}ms, waiting for this log pattern: ${this.serverReadyPattern}`
  374 |         )
  375 |       )

  at Timeout._onTimeout (lib/next-modes/base.ts:372:9)

● clientTraceMetadata › app router › should only insert the client trace metadata once

Failed to start server after 10000ms, waiting for this log pattern: / ✓ Ready in /

  370 |     return setTimeout(() => {
  371 |       reject(
> 372 |         new Error(
      |         ^
  373 |           `Failed to start server after ${ms}ms, waiting for this log pattern: ${this.serverReadyPattern}`
  374 |         )
  375 |       )

  at Timeout._onTimeout (lib/next-modes/base.ts:372:9)

● clientTraceMetadata › app router › next dev only › should inject propagation data for a statically server-side-rendered page

Failed to start server after 10000ms, waiting for this log pattern: / ✓ Ready in /

  370 |     return setTimeout(() => {
  371 |       reject(
> 372 |         new Error(
      |         ^
  373 |           `Failed to start server after ${ms}ms, waiting for this log pattern: ${this.serverReadyPattern}`
  374 |         )
  375 |       )

  at Timeout._onTimeout (lib/next-modes/base.ts:372:9)

● clientTraceMetadata › app router › next dev only › soft navigating to a dynamic page should not transform previous propagation data

Failed to start server after 10000ms, waiting for this log pattern: / ✓ Ready in /

  370 |     return setTimeout(() => {
  371 |       reject(
> 372 |         new Error(
      |         ^
  373 |           `Failed to start server after ${ms}ms, waiting for this log pattern: ${this.serverReadyPattern}`
  374 |         )
  375 |       )

  at Timeout._onTimeout (lib/next-modes/base.ts:372:9)

● clientTraceMetadata › app router › next dev only › soft navigating to a static page should not transform previous propagation data

Failed to start server after 10000ms, waiting for this log pattern: / ✓ Ready in /

  370 |     return setTimeout(() => {
  371 |       reject(
> 372 |         new Error(
      |         ^
  373 |           `Failed to start server after ${ms}ms, waiting for this log pattern: ${this.serverReadyPattern}`
  374 |         )
  375 |       )

  at Timeout._onTimeout (lib/next-modes/base.ts:372:9)

● clientTraceMetadata › pages router › should inject propagation data for a dynamically server-side-rendered page

Failed to start server after 10000ms, waiting for this log pattern: / ✓ Ready in /

  370 |     return setTimeout(() => {
  371 |       reject(
> 372 |         new Error(
      |         ^
  373 |           `Failed to start server after ${ms}ms, waiting for this log pattern: ${this.serverReadyPattern}`
  374 |         )
  375 |       )

  at Timeout._onTimeout (lib/next-modes/base.ts:372:9)

● clientTraceMetadata › pages router › hard loading a dynamic page twice should yield different dynamic trace data

Failed to start server after 10000ms, waiting for this log pattern: / ✓ Ready in /

  370 |     return setTimeout(() => {
  371 |       reject(
> 372 |         new Error(
      |         ^
  373 |           `Failed to start server after ${ms}ms, waiting for this log pattern: ${this.serverReadyPattern}`
  374 |         )
  375 |       )

  at Timeout._onTimeout (lib/next-modes/base.ts:372:9)

● clientTraceMetadata › pages router › next dev only › should inject propagation data for a statically server-side-rendered page

Failed to start server after 10000ms, waiting for this log pattern: / ✓ Ready in /

  370 |     return setTimeout(() => {
  371 |       reject(
> 372 |         new Error(
      |         ^
  373 |           `Failed to start server after ${ms}ms, waiting for this log pattern: ${this.serverReadyPattern}`
  374 |         )
  375 |       )

  at Timeout._onTimeout (lib/next-modes/base.ts:372:9)

● clientTraceMetadata › pages router › next dev only › soft navigating to a dynamic page should not transform previous propagation data

Failed to start server after 10000ms, waiting for this log pattern: / ✓ Ready in /

  370 |     return setTimeout(() => {
  371 |       reject(
> 372 |         new Error(
      |         ^
  373 |           `Failed to start server after ${ms}ms, waiting for this log pattern: ${this.serverReadyPattern}`
  374 |         )
  375 |       )

  at Timeout._onTimeout (lib/next-modes/base.ts:372:9)

● clientTraceMetadata › pages router › next dev only › soft navigating to a static page should not transform previous propagation data

Failed to start server after 10000ms, waiting for this log pattern: / ✓ Ready in /

  370 |     return setTimeout(() => {
  371 |       reject(
> 372 |         new Error(
      |         ^
  373 |           `Failed to start server after ${ms}ms, waiting for this log pattern: ${this.serverReadyPattern}`
  374 |         )
  375 |       )

  at Timeout._onTimeout (lib/next-modes/base.ts:372:9)

Read more about building and testing Next.js in contributing.md.

@bgw bgw force-pushed the bgw/stub-task-output branch from 21b123a to 06c1a4f Compare August 22, 2024 00:35
@bgw bgw force-pushed the bgw/schedule-local-task branch from bf4e236 to 5f7cee9 Compare August 22, 2024 00:35
@bgw bgw changed the title draft(turbo-tasks): Add schedule_local_task method feat(turbo-tasks): Optionally schedule ResolveNative Aug 22, 2024
@bgw bgw changed the title feat(turbo-tasks): Optionally schedule ResolveNative feat(turbo-tasks): Optionally schedule ResolveNative/ResolveTrait tasks as local tasks Aug 22, 2024
@bgw bgw force-pushed the bgw/stub-task-output branch from 06c1a4f to a718d9e Compare August 29, 2024 19:50
@bgw bgw force-pushed the bgw/schedule-local-task branch from 5f7cee9 to 8237476 Compare August 29, 2024 19:50
@bgw bgw force-pushed the bgw/stub-task-output branch from a718d9e to bcd07cf Compare August 29, 2024 22:32
@bgw bgw force-pushed the bgw/schedule-local-task branch from 8237476 to 694aa77 Compare August 29, 2024 22:32
@bgw bgw changed the base branch from bgw/stub-task-output to bgw/move-output-content August 29, 2024 22:32
@bgw bgw force-pushed the bgw/move-output-content branch from a00965d to 7ce8ac4 Compare August 30, 2024 18:00
@bgw bgw force-pushed the bgw/schedule-local-task branch from 694aa77 to 07ce967 Compare August 30, 2024 18:00
@bgw bgw changed the base branch from bgw/move-output-content to bgw/memory-task-cleanup August 30, 2024 18:00
@bgw bgw force-pushed the bgw/memory-task-cleanup branch from 9e272d6 to 52ea711 Compare September 4, 2024 00:25
@bgw bgw force-pushed the bgw/schedule-local-task branch from 07ce967 to f292e7b Compare September 4, 2024 00:26
@bgw bgw force-pushed the bgw/return-values-should-be-non-local branch from 1a10536 to 59ff3b4 Compare January 10, 2025 23:11
@bgw bgw force-pushed the bgw/schedule-local-task branch from 0980b44 to 376fb22 Compare January 10, 2025 23:11
@bgw bgw force-pushed the bgw/return-values-should-be-non-local branch from 59ff3b4 to 1713534 Compare January 10, 2025 23:46
@bgw bgw force-pushed the bgw/schedule-local-task branch from 376fb22 to 2c9c7b1 Compare January 10, 2025 23:46
@bgw bgw force-pushed the bgw/return-values-should-be-non-local branch from 1713534 to 90c2d5c Compare January 11, 2025 00:34
@bgw bgw force-pushed the bgw/schedule-local-task branch from 2c9c7b1 to 6a3eecc Compare January 11, 2025 00:34
@bgw bgw force-pushed the bgw/return-values-should-be-non-local branch from 90c2d5c to fe63d1b Compare January 11, 2025 01:41
@bgw bgw force-pushed the bgw/schedule-local-task branch from 6a3eecc to d454a92 Compare January 11, 2025 01:41
@bgw bgw force-pushed the bgw/return-values-should-be-non-local branch from fe63d1b to 0e91d34 Compare January 11, 2025 02:12
@bgw bgw force-pushed the bgw/schedule-local-task branch from d454a92 to 48ca24f Compare January 11, 2025 02:12
@bgw bgw force-pushed the bgw/return-values-should-be-non-local branch from 0e91d34 to fb08b7c Compare January 13, 2025 16:49
@bgw bgw force-pushed the bgw/schedule-local-task branch from 48ca24f to a17ac39 Compare January 13, 2025 16:53
@bgw bgw force-pushed the bgw/return-values-should-be-non-local branch from fb08b7c to c7279e4 Compare January 13, 2025 18:08
@bgw bgw force-pushed the bgw/schedule-local-task branch from a17ac39 to 2d07a58 Compare January 13, 2025 18:08
@bgw bgw force-pushed the bgw/return-values-should-be-non-local branch from c7279e4 to b2e9360 Compare January 13, 2025 19:13
@bgw bgw force-pushed the bgw/schedule-local-task branch from 2d07a58 to 2f75838 Compare January 13, 2025 19:14
@bgw bgw force-pushed the bgw/return-values-should-be-non-local branch from b2e9360 to 9c6d5d4 Compare January 13, 2025 20:32
@bgw bgw force-pushed the bgw/schedule-local-task branch from 2f75838 to ec4d192 Compare January 13, 2025 20:32
@bgw bgw force-pushed the bgw/return-values-should-be-non-local branch from 9c6d5d4 to 78f1579 Compare January 13, 2025 22:10
@bgw bgw force-pushed the bgw/schedule-local-task branch from ec4d192 to 65d8235 Compare January 13, 2025 22:10
@bgw bgw force-pushed the bgw/return-values-should-be-non-local branch from 78f1579 to 073dfc1 Compare January 13, 2025 22:51
@bgw bgw force-pushed the bgw/schedule-local-task branch from 65d8235 to 55de0bb Compare January 13, 2025 22:51
@bgw bgw force-pushed the bgw/return-values-should-be-non-local branch from 073dfc1 to 6ed1846 Compare January 14, 2025 02:08
@bgw bgw force-pushed the bgw/schedule-local-task branch from 55de0bb to 237f438 Compare January 14, 2025 02:08
@bgw bgw force-pushed the bgw/return-values-should-be-non-local branch from 6ed1846 to 40117d9 Compare January 14, 2025 03:02
@bgw bgw force-pushed the bgw/schedule-local-task branch from 237f438 to 380be4b Compare January 14, 2025 03:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
created-by: Turbopack team PRs by the Turbopack team. Turbopack Related to Turbopack with Next.js.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants