Align current Drupal page with Nuxt page commits - #538
Open
StirStudios wants to merge 2 commits into
Open
Conversation
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.
Summary
getPage()only when Nuxt emitspage:finishapp:errorfetchPage()resultsRoot cause
Nuxt keeps the outgoing
<NuxtPage>committed while the destination resolves in Suspense. Drupal CE currently changesdrupal-ce-current-page-keyas soon as the destination request completes, or when its route watcher sees destination payload data. Shared layout components can consequently receive destination Drupal data while Nuxt is still displaying the outgoing page.The required invariant is:
getPage()represents the Drupal page Nuxt has committed, not the most recently completed request.Change
The browser now tracks pending and current page keys separately. A completed destination fetch remains pending until
page:finish, when Nuxt has committed it. Failed navigation and application errors discard the pending key. Server rendering still assigns immediately, hydration can expose its existing committed payload immediately, and redirect responses never become current pages.This does not alter requests, cache keys, payload contents, redirect targets, CMS output, explicit custom-key lookups, or the page returned directly by
fetchPage().Evidence
page:finishpromotes the destinationapp:errordiscards pending statepage:finishpage:finishThis is intentionally separate from the consumer theme's route-snapshot lock: that protects route-derived shared UI, while this change corrects the lifecycle contract of Drupal CE's
getPage()state.