(1/1) Cover stale offline manifest refreshes#93696
Closed
feedthejim wants to merge 1 commit into
Closed
Conversation
Contributor
Stats from current PR🔴 1 regression
📊 All Metrics📖 Metrics GlossaryDev Server Metrics:
Build Metrics:
Change Thresholds:
⚡ Dev Server
📦 Dev Server (Webpack) (Legacy)📦 Dev Server (Webpack)
⚡ Production Builds
📦 Production Builds (Webpack) (Legacy)📦 Production Builds (Webpack)
📦 Bundle SizesBundle Sizes⚡ TurbopackClient Main Bundles
Server Middleware
Build DetailsBuild Manifests
📦 WebpackClient Main Bundles
Polyfills
Pages
Server Edge SSR
Middleware
Build DetailsBuild Manifests
Build Cache
🔄 Shared (bundler-independent)Runtimes
📝 Changed Files (9 files)Files with changes:
View diffsapp-page-exp..ntime.dev.jsfailed to diffapp-page-exp..time.prod.jsfailed to diffapp-page-tur..ntime.dev.jsfailed to diffapp-page-tur..time.prod.jsfailed to diffapp-page-tur..ntime.dev.jsfailed to diffapp-page-tur..time.prod.jsfailed to diffapp-page.runtime.dev.jsfailed to diffapp-page.runtime.prod.jsfailed to diffserver.runtime.prod.jsDiff too large to display 📎 Tarball URLCommit: 7f9e342 |
Contributor
Author
|
Closing this draft as part of the offline navigations first-usable restack. The current review stack is the 25-PR sequence rooted at #93622, ending at #93656, with #93648 folded into PR 22 and the stress-only rows deferred into named P1/P2 owners. The branch is intentionally left intact so the coverage can be recovered or rebundled later. Review guide: https://gist.github.com/feedthejim/b3d9fe26a7c05655fd57adcce371b93d |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stack position
This PR sits directly on top of #93695,
(1/1) Clean up stale offline navigation workers. The previous PR adds the cleanup primitive in the generated worker: after successful online document responses, the worker refreshes its required offline resources and fails closed if they are unavailable or invalid.This PR is a test-only stress slice for that primitive. It covers the old-controller case where the worker was already active, then the generated manifest becomes corrupted before a later online navigation.
Why
Install-time manifest failure is covered by #93694. Flag-disabled cleanup is covered by #93695. This slice proves the same cleanup behavior protects a stale active worker during a later manifest refresh, so it cannot keep serving old fallback HTML after its required manifest is no longer valid.
The review question is narrow: if an already-active generated worker sees a corrupted manifest during a later online refresh, does it lose the ability to serve stale offline fallback?
What changed
next-offline-navigation-fallback-servedmessage.What this intentionally does not cover
Those remain separate production-hardening slices.
Verification
pnpm prettier --with-node-modules --ignore-path .prettierignore --write test/production/app-dir/offline-navigations/offline-navigations.test.tsnpx eslint --config eslint.config.mjs --fix test/production/app-dir/offline-navigations/offline-navigations.test.tsgit diff --check -- test/production/app-dir/offline-navigations/offline-navigations.test.tsNEXT_SKIP_ISOLATE=1 pnpm test-start-turbo test/production/app-dir/offline-navigations/offline-navigations.test.ts -t "does not serve stale fallback HTML when a later manifest refresh is corrupted"pnpm test-start-webpack test/production/app-dir/offline-navigations/offline-navigations.test.ts -t "does not serve stale fallback HTML when a later manifest refresh is corrupted"