Derive RSC recovery version from client compatibility graph#1
Closed
agcty wants to merge 1 commit into
Closed
Conversation
8ce7eee to
8daded1
Compare
Owner
Author
|
Closing this in favor of the lower-level plugin-rsc primitive here: This PR was useful as the exploration path, but after working through the edge cases it became clear that React Router should not reconstruct RSC compatibility from framework-side state. @vitejs/plugin-rsc owns the authoritative build/RSC data: client references, rendered exports, server references, final assets manifest, output bundles, and server-action encryption identity. The better shape is:
So the next React Router PR should be an integration with virtual:vite-rsc/compatibility-manifest, not this framework-side derivation. |
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.
Stacked on remix-run#15032's conservative versioned RSC recovery baseline.
This follow-up replaces the production random RSC recovery token with a deterministic compatibility hash derived from @vitejs/plugin-rsc's compiler-owned reference metadata instead of route/source scanning. The hash includes:
The goal is Jacob-style compatibility recovery: server-only RSC changes and client implementation-only changes can keep the same recovery version, while client/server reference ABI changes still force document recovery. Encrypted server-action builds remain conservative until plugin-rsc exposes stable encryption-key identity or downstream apps provide one through a first-class API.
Validation: