Skip to content

Redesign the unrendered-segment instant validation overlay#93879

Draft
aurorascharff wants to merge 41 commits into
canaryfrom
aurorascharff/redesign-unrendered-segment-overlay
Draft

Redesign the unrendered-segment instant validation overlay#93879
aurorascharff wants to merge 41 commits into
canaryfrom
aurorascharff/redesign-unrendered-segment-overlay

Conversation

@aurorascharff
Copy link
Copy Markdown
Contributor

@aurorascharff aurorascharff commented May 15, 2026

What?

A focused dev-overlay redesign and CLI/build message refresh for the "expected segment was not rendered" instant validation warning (PR #93770).

TODO generate again when bug with parallell route is fixed

Why?

The wrapper carries no useful source location to point at — the code-frame chrome and Call Stack the overlay rendered before were misleading. Users mostly need to know which segment didn't render and where to set instant = false to silence the warning.

Demo

How

  • Restructured framework message in dynamic-rendering.ts: leads with Route "<path>": prefix like every other validation factory, drops the verbose paragraphs in favour of a one-sentence explanation + Ways to fix this: list, and uses instant not unstable_instant in the fix bullet.
  • New unrendered-segment GuidanceKind and a dedicated case in errors.tsx that drops the code-frame and Call Stack.
  • New UnrenderedSegmentInfo component renders the route + each unrendered file with the same chrome as CodeFrame, plus open-in-editor.
  • Two fix cards: Render the missing segment (render, gray) and Allow no validation (silence, red).

aurorascharff and others added 30 commits May 14, 2026 11:08
Adds two pieces of framework correctness for `unstable_instant` validation:

1. **Navigation body factories** in `blocking-route-messages.ts`:
   - `createRuntimeBodyErrorInNavigation` (E1247)
   - `createDynamicBodyErrorInNavigation` (E1246)
   Wired into `trackDynamicHoleInNavigation` so the in-navigation case emits
   its own message ("accessed under `<Suspense>`" + nav-aware "Ways to fix")
   instead of reusing the initial-render copy ("accessed outside of
   `<Suspense>`"). Phase-neutral phrasing ("during the initial render or a
   navigation") accommodates the path firing from either prerender or
   client-nav validation.

2. **Clear-on-nav reducer** in the dev overlay:
   - `ACTION_INSTANT_ERRORS_CLEAR` reducer case in `shared.ts`.
   - `useClearInstantErrorsOnNav` hook in `dev-overlay.tsx` watches
     `usePathname()` and dispatches when the route changes.
   Only errors fired during a client navigation are eligible to clear:
   `*InNavigation` factories carry an `__nextInstantNav` marker, and wrapper
   headlines (E1082 / E1112 / E1113 / E1118) are detected via the stable
   "Could not validate `unstable_instant`" substring. Initial-render / SSR
   errors lack both signals and persist, so a page that fails to prerender
   stays in the overlay until the source is fixed.

Co-authored-by: Cursor <cursoragent@cursor.com>
Reads the `__nextInstantNav` marker from the error to pick the right
overlay copy for the blocking-route family:

- Headline: "Next.js encountered runtime/uncached data during a
  navigation." (in-nav) vs. "during the initial render." (initial).
- Explanation: "This prevents the navigation from being instant..." vs.
  the default "prevents the route from being prerendered..." string.

Adds `BLOCKING_ROUTE_NAVIGATION_EXPLANATION` next to `EXPLANATIONS` in
`instant-guidance-data.ts` so all overlay copy stays in one place.

Also renames the legacy `'navigation'` value of `GuidanceVariant` to
`'dynamic'` — the original name meant "uncached data" (from #92638) and
collides with the new in-navigation concept. The new shape is
`'runtime' | 'dynamic'` for what kind of data is accessed, plus an
orthogonal `inNavigation: boolean` for the phase.

Co-authored-by: Cursor <cursoragent@cursor.com>
Object markers on the Error don't survive RSC serialization
(`__NEXT_ERROR_CODE` already has a side-channel Map for this same
reason), so the previous `__nextInstantNav` property was getting
stripped before the dev overlay ever saw it.

Switches detection to two structural substrings already present in the
user-facing copy:

- \`accessed under \`<Suspense>\`\` — only emitted by the in-navigation
  body factories. The mirrored SSR factories say \`accessed outside of
  \`<Suspense>\`\`, so the two are unambiguous.
- \`Could not validate \`unstable_instant\`\` — already used to detect
  wrapper errors (E1082 / E1112 / E1113 / E1118), tied to the API name
  rather than phase wording.

Drops the marker helper from `blocking-route-messages.ts`.

Co-authored-by: Cursor <cursoragent@cursor.com>
The dev overlay renders in a separate React root mounted at the document
body (via `createRoot(container)` in `dev-overlay.browser.tsx`), so the
App Router's `PathnameContext` isn't in scope and `usePathname()` returns
`null` — making the previous `useClearInstantErrorsOnNav` effect a no-op.

Switches to a browser-level subscription: listen for `popstate` (back /
forward) and patch `history.pushState` / `history.replaceState` to detect
client navigations triggered by `next/link` and `router.push()`. Cleanup
restores the originals so the patch is scoped to overlay lifetime.

This matches the pattern other dev-overlay code already uses for current
path (e.g. `route-info.tsx` reads `window.location.pathname` directly).

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
The new `createRuntimeBodyErrorInNavigation` / `createDynamicBodyErrorInNavigation`
factories produce "encountered runtime data during a navigation" wording in
the dev overlay (via inNavigation substring detection in errors.tsx). Seven
inline snapshots in instant-validation-parallel-slots.test.ts locked in the
older "during the initial render" + E1221 / E1220 wording — flipped to the
new "during a navigation" + E1247 / E1246.

The eighth test in this file is left at canary state: it relies on PR #93770's
"expected segment was not rendered" message which currently bakes in a
test/tmp/next-test-… absolute path. That test is broken on canary HEAD
too (verified directly) — not a regression from this PR.

Co-authored-by: Cursor <cursoragent@cursor.com>
`instant-validation.test.ts` (28 snapshots) and
`instant-validation-parallel-slots.test.ts` (7 snapshots) had build-mode
inline snapshots that pinned the older `createRuntimeBodyError` /
`createDynamicBodyError` wording. Switched to the new in-navigation
factory output:

  - "encountered runtime data during the initial render."
  + "encountered runtime data during the initial render or a navigation."

  - "accessed outside of `<Suspense>` prevents the route from being
    prerendered, blocking navigation and leading to a slower user
    experience."
  + "accessed under `<Suspense>` prevents the route from being
    prerendered or the navigation from being instant, leading to a
    slower user experience."

Captured without NEXT_SKIP_ISOLATE so the test packed next.js as a
tarball (matching the CI build path); avoids leaking local
`../../../packages/next/dist/esm/...` stack frames into the snapshots.

Co-authored-by: Cursor <cursoragent@cursor.com>
The in-navigation body factories said "accessed under \`<Suspense>\`",
which contradicts the fix bullet that recommends wrapping in Suspense.
The actual problem is the same as the SSR factories: data accessed
*outside* a Suspense boundary, where the prerender / prefetchable
shell can't proceed without waiting. Aligned both InNavigation factories
to "accessed outside of \`<Suspense>\`" so the diagnostic matches the
SSR factories — only the consequence clause differs (still includes
"or the navigation from being instant").

Refactored the substring detection that distinguishes in-navigation
vs SSR variants into a single `isBlockingRouteInNavError` helper in
`shared.ts`, used by both `getInstantErrorRoute` (clear-on-nav) and
`getBlockingRouteErrorDetails` (overlay headline phase). Helper keys
off "or a navigation" which is still unique to the InNavigation factory
pair (the diagnostic clause is now shared).

Also narrowed `getInstantErrorRoute` to detect *only* body factory
errors — wrapper errors like "Could not validate \`unstable_instant\`"
are no longer cleared on navigation. They describe a validation
infrastructure failure rather than a fixable route-level mistake and
should stay in the redbox stack until the user addresses the cause.

Snapshot updates across `instant-validation.test.ts` (dev + build
modes) and `instant-validation-parallel-slots.test.ts` (dev + build
modes) reflect the new wording. Build-mode snapshots captured without
NEXT_SKIP_ISOLATE so the test packs Next.js as a tarball and produces
the same stack frame shape CI sees (avoids leaking local dist paths).

Co-authored-by: Cursor <cursoragent@cursor.com>
- Drop history.pushState/replaceState patching in favor of state.page
  from ACTION_DEVTOOL_UPDATE_ROUTE_STATE (cooperates with App Router's
  own history patching).
- Update errors.test.ts for new {inNavigation, variant: 'dynamic'} shape
  and add InNavigation factory cases.
- Bump E1246/E1247 -> E1249/E1250 in level-* and causes tests after the
  factory wording change.

Co-authored-by: Cursor <cursoragent@cursor.com>
- Restore the 13-space indent on `Unrendered segment(s):` paths in dev
  inline snapshots (got stripped during the earlier wording sweep).
- Use the stable `app/...` prefix instead of the non-deterministic
  `test/tmp/next-test-<timestamp>-<rand>/...` path that crept into one
  parallel-slots snapshot.

Co-authored-by: Cursor <cursoragent@cursor.com>
`state.page` is the resolved URL (e.g. `/foo/123`), but an instant error's
embedded `Route "..."` uses the route pattern (`/foo/[param]`). Firing
the clear action on the initial '' → page transition would always wipe
dynamic-route errors before the redbox could open. Treat the first
non-empty page as the baseline and only dispatch on subsequent changes.

Co-authored-by: Cursor <cursoragent@cursor.com>
The SSR `createRuntimeBodyError` lists the Suspense placeholder first
(the most general fix) followed by `generateStaticParams`. The
in-navigation variant had them flipped, so the top-of-list suggestion
was the narrower one (only applies to dynamic-param routes). Reorder
the in-nav factory to match SSR, and refresh the build-mode CLI
snapshots and the runtime-body in-nav error code (E1250 → E1251).

Co-authored-by: Cursor <cursoragent@cursor.com>
The earlier wording sweep on the level-* tests preserved the pre-existing
2-space-shy indent on the `code` and `description` lines, so Jest's diff
reported a whitespace-only mismatch even though the values agreed. Match
them to the sibling JSON keys (13 spaces).

Co-authored-by: Cursor <cursoragent@cursor.com>
The previous patch overshot to 13 spaces in tests where the snapshot
braces sit two columns shallower (so sibling keys are at 11). Auto-align
each `code`/`description` line to the indent of the next sibling key.

Co-authored-by: Cursor <cursoragent@cursor.com>
`trackDynamicHoleInNavigation` is also reached during the build-time
prerender pass, so the CLI build error now reads "during the initial
render or a navigation" with the matching consequence clause. Update
the build-mode snapshots in `instant-validation-build` and the four
`instant-validation-level-*` tests to match.

Co-authored-by: Cursor <cursoragent@cursor.com>
…ording

The earlier wording sweep also touched the 4 \`without-root-suspense\`
E1220 snapshots, which come from the SSR factory (initial-render path)
and should keep "during the initial render." Restore the SSR wording
on those four.

Co-authored-by: Cursor <cursoragent@cursor.com>
`Route "<path>":` in the error message is the route template
(e.g. `/foo/[slug]`), while `state.page` is the resolved URL
(e.g. `/foo/123`). Equality matching dropped SSR-streamed errors
on the destination page during navigation for any dynamic route.

Convert the template to a regex so the clear-on-nav reducer keeps
errors whose template matches the page the user just landed on.
…rcel/next.js into aurorascharff/redesign-unrendered-segment-overlay
@aurorascharff aurorascharff changed the title Redesign unrendered-segment instant overlay Redesign the unrendered-segment instant validation overlay May 15, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 15, 2026

Failing test suites

Commit: 774d625 | About building and testing Next.js

pnpm test-dev test/development/app-dir/hmr-deleted-page/hmr-deleted-page.test.ts (job)

  • hmr-deleted-page > should not show errors for a deleted page (DD)
Expand output

● hmr-deleted-page › should not show errors for a deleted page

Expected no visible Redbox but found one
header: ./app/page/page.tsx:1:1
Module not found: Can't resolve './style.css'
> 1 | import './style.css'
    | ^^^^^^^^^^^^^^^^^^^^
  2 |
  3 | import { Test } from './test'
  4 |



https://nextjs.org/docs/messages/module-not-found
Show More
Runtime Error
description: ./app/page/page.tsx:1:1
Module not found: Can't resolve './style.css'
> 1 | import './style.css'
    | ^^^^^^^^^^^^^^^^^^^^
  2 |
  3 | import { Test } from './test'
  4 |



https://nextjs.org/docs/messages/module-not-found
source: null

  25 |     await waitForHydration(browser)
  26 |
> 27 |     await waitForNoRedbox(browser)
     |     ^
  28 |     expect(await browser.elementByCss('h1').text()).toBe('404')
  29 |   })
  30 | })

  at Object.<anonymous> (development/app-dir/hmr-deleted-page/hmr-deleted-page.test.ts:27:5)

Comment thread test/e2e/app-dir/instant-validation/instant-validation.test.ts Outdated
Base automatically changed from aurorascharff/instant-nav-error-clear to canary May 18, 2026 15:50
yavorpunchev and others added 4 commits May 18, 2026 22:21
## Summary

Adds a Storybook example for the unrendered-segment instant validation
error, and keeps the small UI polish tweaks for the code snippet
presentation.

## What changed

- Added `InstantUnrenderedSegment` to the dev overlay error stories
- Added a matching Storybook fixture for the unrendered-segment error
- Added a blank line in the “Skip validation on the segment” fix-card
snippet
- Adjusted the code-frame gutter color to `var(--color-gray-alpha-500)`

## Why

This makes the unrendered-segment instant validation state easier to
review in isolation in Storybook, while also preserving the two small
visual refinements requested for the snippet/code-frame presentation.
…/redesign-unrendered-segment-overlay

# Conflicts:
#	packages/next/src/next-devtools/dev-overlay/container/errors.tsx
#	packages/next/src/next-devtools/dev-overlay/shared.ts
#	test/e2e/app-dir/instant-validation/instant-validation-parallel-slots.test.ts
#	test/e2e/app-dir/instant-validation/instant-validation.test.ts
@github-actions
Copy link
Copy Markdown
Contributor

Stats from current PR

✅ No significant changes detected

📊 All Metrics
📖 Metrics Glossary

Dev Server Metrics:

  • Listen = TCP port starts accepting connections
  • First Request = HTTP server returns successful response
  • Cold = Fresh build (no cache)
  • Warm = With cached build artifacts

Build Metrics:

  • Fresh = Clean build (no .next directory)
  • Cached = With existing .next directory

Change Thresholds:

  • Time: Changes < 50ms AND < 10%, OR < 2% are insignificant
  • Size: Changes < 1KB AND < 1% are insignificant
  • All other changes are flagged to catch regressions

⚡ Dev Server

Metric Canary PR Change Trend
Cold (Listen) 811ms 810ms █▅▄▅▂
Cold (Ready in log) 790ms 788ms ▅▁▄▃▄
Cold (First Request) 1.213s 1.217s ▆▁▃▃▃
Warm (Listen) 812ms 810ms ▆▆▁▃▁
Warm (Ready in log) 789ms 786ms ▄▁▅▃▄
Warm (First Request) 605ms 600ms ▄▁▅▃▅
📦 Dev Server (Webpack) (Legacy)

📦 Dev Server (Webpack)

Metric Canary PR Change Trend
Cold (Listen) 813ms 811ms ▆▃▆▆▆
Cold (Ready in log) 776ms 777ms ▃▃▅▃▃
Cold (First Request) 3.128s 3.145s ▂▁▃▁▂
Warm (Listen) 812ms 812ms █▁█▁█
Warm (Ready in log) 777ms 777ms ▃▃▆▂▃
Warm (First Request) 3.142s 3.205s ▃▁▃▂▄

⚡ Production Builds

Metric Canary PR Change Trend
Fresh Build 4.704s 4.745s ▃▆▃▂▂
Cached Build 4.785s 4.762s ▄▂▃▃▃
📦 Production Builds (Webpack) (Legacy)

📦 Production Builds (Webpack)

Metric Canary PR Change Trend
Fresh Build 23.578s 23.918s █▃▃▁▂
Cached Build 23.608s 23.608s ▂▂▄▃▄
node_modules Size 506 MB 506 MB ▁████
📦 Bundle Sizes

Bundle Sizes

⚡ Turbopack

Client

Main Bundles
Canary PR Change
02e5nsdh4mezp.js gzip 65.6 kB N/A -
04hm05ar7kldw.js gzip 5.73 kB N/A -
0cz1d0mv5g_q7.js gzip 39.4 kB 39.4 kB
0dvitrl5zg37g.js gzip 8.82 kB N/A -
0nbdg3pxro0q0.js gzip 161 B N/A -
0sf7ysou-72zd.js gzip 8.71 kB N/A -
0yrvsimft_l1i.js gzip 154 B N/A -
157abun3hwc_s.js gzip 10.3 kB N/A -
1elt1qium-r2m.css gzip 115 B 115 B
1jj68jv9537mc.js gzip 13.8 kB N/A -
1jpaub6y8xlfr.js gzip 2.3 kB N/A -
1mm72hljhgavt.js gzip 151 B N/A -
1ot0mvscrc_uf.js gzip 233 B N/A -
1rp2lwzqj8pyx.js gzip 154 B N/A -
1x-b4s872dj7x.js gzip 168 B N/A -
2_m3xv2uq3sjc.js gzip 1.46 kB N/A -
20jgkju22ogb8.js gzip 50.4 kB N/A -
24y34mwgrkqp4.js gzip 8.78 kB N/A -
2c-fd4y1zozz8.js gzip 8.79 kB N/A -
2d7416h_xd36x.js gzip 8.71 kB N/A -
2fsqrh_89dftj.js gzip 156 B N/A -
2g21ny1t2kw37.js gzip 7.61 kB N/A -
2h3crdoebvmqw.js gzip 155 B N/A -
2lyuhit6rn8fy.js gzip 9.44 kB N/A -
2q0gr8wfr3jwl.js gzip 8.77 kB N/A -
2t9e75oz6r0zp.js gzip 8.76 kB N/A -
2uku_olcn15b7.js gzip 8.79 kB N/A -
30r8mm-46bdqy.js gzip 220 B 220 B
32d78u_3xv8h-.js gzip 155 B N/A -
34408zgzxca4u.js gzip 155 B N/A -
3861-8mlbk29e.js gzip 160 B N/A -
3c1jdxkzlb8oq.js gzip 12.9 kB N/A -
3inab2jybr4k9.js gzip 450 B N/A -
3jkm5tdjvaf_q.js gzip 13.1 kB N/A -
3mt67agm5wp40.js gzip 10.6 kB N/A -
3qxbo9whz0_zq.js gzip 156 B N/A -
3saabek4kohwi.js gzip 10 kB N/A -
3x8edj7m4h48q.js gzip 155 B N/A -
4189xmby9yu1p.js gzip 13.6 kB N/A -
420cqkrongdbm.js gzip 70.9 kB N/A -
43a4huon821dy.js gzip 157 B N/A -
turbopack-0_..0npf.js gzip 4.2 kB N/A -
turbopack-1b..pie_.js gzip 4.2 kB N/A -
turbopack-1b..c3c8.js gzip 4.2 kB N/A -
turbopack-1x..3cv6.js gzip 4.2 kB N/A -
turbopack-24..z7x_.js gzip 4.19 kB N/A -
turbopack-2a..k8h8.js gzip 4.2 kB N/A -
turbopack-2n..83gl.js gzip 4.2 kB N/A -
turbopack-2q..1mee.js gzip 4.18 kB N/A -
turbopack-3-..ci53.js gzip 4.2 kB N/A -
turbopack-31..r3d-.js gzip 4.2 kB N/A -
turbopack-3f..35-d.js gzip 4.2 kB N/A -
turbopack-3j..pc9k.js gzip 4.2 kB N/A -
turbopack-3n..t_36.js gzip 4.2 kB N/A -
turbopack-3u..kax4.js gzip 4.21 kB N/A -
0_i7nqgx23st7.js gzip N/A 10 kB -
06puhytyxk31p.js gzip N/A 8.82 kB -
07j87s-m8pzj3.js gzip N/A 154 B -
0dblev-2x5u0j.js gzip N/A 157 B -
0j42f9zonj0wd.js gzip N/A 13 kB -
0m34gln_kt4fg.js gzip N/A 5.73 kB -
0t14int2pt6cf.js gzip N/A 70.9 kB -
0z4wbvbaiieoq.js gzip N/A 169 B -
1g3q1ww01thnl.js gzip N/A 2.3 kB -
1h2gqq36dakpw.js gzip N/A 156 B -
1hraqxuiymq6v.js gzip N/A 8.79 kB -
1l9un1sl77287.js gzip N/A 1.46 kB -
1od8sjni3qyu1.js gzip N/A 50.2 kB -
1t_1m0334xsea.js gzip N/A 163 B -
21-eavqb1k_36.js gzip N/A 13.9 kB -
2147zgtf14z-q.js gzip N/A 234 B -
22jy5dxns9wky.js gzip N/A 155 B -
23ajzjz3tak_s.js gzip N/A 158 B -
23bz3xsg-5-1s.js gzip N/A 8.71 kB -
27441mytv7pbm.js gzip N/A 9.43 kB -
2cjkwjgm1zcfs.js gzip N/A 8.71 kB -
2ibu0xgakbq9m.js gzip N/A 157 B -
2qzks5cplfa0e.js gzip N/A 157 B -
2scd8zaoyb8md.js gzip N/A 8.79 kB -
2st_qs6p_9us0.js gzip N/A 13.1 kB -
2zo2exm1d8qj1.js gzip N/A 13.6 kB -
33164ga-q1i-7.js gzip N/A 65.6 kB -
33ijys1njtgsq.js gzip N/A 156 B -
3f710q6kll2xn.js gzip N/A 7.61 kB -
3hn75zuxly9az.js gzip N/A 10.3 kB -
3hqh7m128tvsn.js gzip N/A 8.77 kB -
3hqti_t-zy1x4.js gzip N/A 449 B -
3mnawenie1flm.js gzip N/A 8.76 kB -
3ubsozlu6zs38.js gzip N/A 10.6 kB -
3ved-18z039fn.js gzip N/A 152 B -
40i9u0wb-12mz.js gzip N/A 157 B -
43iwfqjnx1cy_.js gzip N/A 8.78 kB -
43iyj8i94v87z.js gzip N/A 160 B -
turbopack-09..u-kn.js gzip N/A 4.2 kB -
turbopack-0m..ztwx.js gzip N/A 4.2 kB -
turbopack-0n..0-cv.js gzip N/A 4.2 kB -
turbopack-1m..0q5a.js gzip N/A 4.18 kB -
turbopack-1q..-f4i.js gzip N/A 4.2 kB -
turbopack-2_..p-gd.js gzip N/A 4.2 kB -
turbopack-25..-8y5.js gzip N/A 4.2 kB -
turbopack-2y..phe3.js gzip N/A 4.2 kB -
turbopack-3b..bj4d.js gzip N/A 4.2 kB -
turbopack-3h..47xj.js gzip N/A 4.2 kB -
turbopack-3n..9x41.js gzip N/A 4.2 kB -
turbopack-3n..3ztr.js gzip N/A 4.2 kB -
turbopack-3t..rw7p.js gzip N/A 4.2 kB -
turbopack-41..kxye.js gzip N/A 4.21 kB -
Total 469 kB 469 kB ✅ -36 B

Server

Middleware
Canary PR Change
middleware-b..fest.js gzip 720 B 718 B
Total 720 B 718 B ✅ -2 B
Build Details
Build Manifests
Canary PR Change
_buildManifest.js gzip 435 B 435 B
Total 435 B 435 B

📦 Webpack

Client

Main Bundles
Canary PR Change
2258-HASH.js gzip 61.4 kB N/A -
2266-HASH.js gzip 4.69 kB N/A -
3317.HASH.js gzip 169 B N/A -
4866-HASH.js gzip 5.64 kB N/A -
9e302639-HASH.js gzip 62.8 kB N/A -
framework-HASH.js gzip 59.5 kB 59.5 kB
main-app-HASH.js gzip 256 B 255 B
main-HASH.js gzip 39.9 kB 39.9 kB
webpack-HASH.js gzip 1.68 kB 1.68 kB
175fd0fd-HASH.js gzip N/A 62.8 kB -
2596-HASH.js gzip N/A 5.63 kB -
34-HASH.js gzip N/A 61.3 kB -
5691.HASH.js gzip N/A 169 B -
9156-HASH.js gzip N/A 4.68 kB -
Total 236 kB 236 kB ✅ -99 B
Polyfills
Canary PR Change
polyfills-HASH.js gzip 39.4 kB 39.4 kB
Total 39.4 kB 39.4 kB
Pages
Canary PR Change
_app-HASH.js gzip 193 B 193 B
_error-HASH.js gzip 181 B 182 B
css-HASH.js gzip 334 B 332 B
dynamic-HASH.js gzip 1.79 kB 1.81 kB
edge-ssr-HASH.js gzip 255 B 255 B
head-HASH.js gzip 351 B 348 B
hooks-HASH.js gzip 385 B 384 B
image-HASH.js gzip 580 B 580 B
index-HASH.js gzip 257 B 259 B
link-HASH.js gzip 2.51 kB 2.52 kB
routerDirect..HASH.js gzip 318 B 319 B
script-HASH.js gzip 387 B 386 B
withRouter-HASH.js gzip 316 B 316 B
1afbb74e6ecf..834.css gzip 106 B 106 B
Total 7.97 kB 7.99 kB ⚠️ +19 B

Server

Edge SSR
Canary PR Change
edge-ssr.js gzip 126 kB 126 kB
page.js gzip 276 kB 270 kB 🟢 5.38 kB (-2%)
Total 402 kB 396 kB ✅ -5.52 kB
Middleware
Canary PR Change
middleware-b..fest.js gzip 623 B 614 B 🟢 9 B (-1%)
middleware-r..fest.js gzip 155 B 155 B
middleware.js gzip 44.4 kB 44.5 kB
edge-runtime..pack.js gzip 842 B 842 B
Total 46 kB 46.1 kB ⚠️ +75 B
Build Details
Build Manifests
Canary PR Change
_buildManifest.js gzip 719 B 717 B
Total 719 B 717 B ✅ -2 B
Build Cache
Canary PR Change
0.pack gzip 4.49 MB 4.49 MB
index.pack gzip 115 kB 115 kB
index.pack.old gzip 117 kB 115 kB 🟢 1.59 kB (-1%)
Total 4.72 MB 4.72 MB ✅ -4.98 kB

🔄 Shared (bundler-independent)

Runtimes
Canary PR Change
app-page-exp...dev.js gzip 351 kB 350 kB
app-page-exp..prod.js gzip 195 kB 195 kB
app-page-tur...dev.js gzip 350 kB 350 kB
app-page-tur..prod.js gzip 194 kB 194 kB
app-page-tur...dev.js gzip 347 kB 347 kB
app-page-tur..prod.js gzip 192 kB 192 kB
app-page.run...dev.js gzip 347 kB 347 kB
app-page.run..prod.js gzip 193 kB 193 kB
app-route-ex...dev.js gzip 77.5 kB 77.5 kB
app-route-ex..prod.js gzip 52.9 kB 52.9 kB
app-route-tu...dev.js gzip 77.6 kB 77.6 kB
app-route-tu..prod.js gzip 52.9 kB 52.9 kB
app-route-tu...dev.js gzip 77.2 kB 77.2 kB
app-route-tu..prod.js gzip 52.7 kB 52.7 kB
app-route.ru...dev.js gzip 77.1 kB 77.1 kB
app-route.ru..prod.js gzip 52.7 kB 52.7 kB
dist_client_...dev.js gzip 324 B 324 B
dist_client_...dev.js gzip 326 B 326 B
dist_client_...dev.js gzip 318 B 318 B
dist_client_...dev.js gzip 317 B 317 B
pages-api-tu...dev.js gzip 44.3 kB 44.3 kB
pages-api-tu..prod.js gzip 33.8 kB 33.8 kB
pages-api.ru...dev.js gzip 44.3 kB 44.3 kB
pages-api.ru..prod.js gzip 33.7 kB 33.7 kB
pages-turbo....dev.js gzip 53.7 kB 53.7 kB
pages-turbo...prod.js gzip 39.4 kB 39.4 kB
pages.runtim...dev.js gzip 53.6 kB 53.6 kB
pages.runtim..prod.js gzip 39.4 kB 39.4 kB
server.runti..prod.js gzip 63.1 kB 63.1 kB
use-cache-pr...dev.js gzip 69.7 kB 69.7 kB
use-cache-pr...dev.js gzip 69.7 kB 69.7 kB
use-cache-pr...dev.js gzip 68 kB 68 kB
use-cache-pr...dev.js gzip 68 kB 68 kB
Total 3.37 MB 3.37 MB ✅ -582 B
📝 Changed Files (8 files)

Files with changes:

  • app-page-exp..ntime.dev.js
  • app-page-exp..time.prod.js
  • app-page-tur..ntime.dev.js
  • app-page-tur..time.prod.js
  • app-page-tur..ntime.dev.js
  • app-page-tur..time.prod.js
  • app-page.runtime.dev.js
  • app-page.runtime.prod.js
View diffs
app-page-exp..ntime.dev.js

Diff too large to display

app-page-exp..time.prod.js

Diff too large to display

app-page-tur..ntime.dev.js

Diff too large to display

app-page-tur..time.prod.js

Diff too large to display

app-page-tur..ntime.dev.js

Diff too large to display

app-page-tur..time.prod.js

Diff too large to display

app-page.runtime.dev.js

Diff too large to display

app-page.runtime.prod.js

Diff too large to display

📎 Tarball URL
https://vercel-packages.vercel.app/next/commits/774d62576bfa0089d4d35d8603d5735069975c1a/next

Commit: 774d625

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.

2 participants