You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have some routes under the src/routes folder, and I noticed that there are duplicated <meta /> tags within the generated <head /> from the SSR-ed HTML.
It turns out that although there are many routes, they all share only one singleton head manager class instance (there is only one new HeadContext()). So any heads added in the route A will also be there for route B.
The proper way to do this would be to have one head manager instance for each route, not sharing one head manager across all routes.
The PR changes a few things:
Renames class HeadProvider to class HeadManager
This avoids name collision and better reflects what this class is actually for
In entry-server, wraps <Page /> with a <HeadContext.Provider />
Now each page will have its own head manager instance during SSR
Then we can use that head manager instance to get each route's own <head />
Breaking Changes
Currently, all routes share one head manager instance, so every HTML generated will contain all routes' heads altogether.
Though this behavior might be buggy, some existing apps might be relying on this behavior.
After the PR, every route will have its own head manager instance, its HTML will only contain its own head, which will break above mentioned apps (if any).
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
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.
@ascorbic Here is another bugfix~
I have some routes under the
src/routesfolder, and I noticed that there are duplicated<meta />tags within the generated<head />from the SSR-ed HTML.It turns out that although there are many routes, they all share only one singleton head manager class instance (there is only one
new HeadContext()). So any heads added in the route A will also be there for route B.The proper way to do this would be to have one head manager instance for each route, not sharing one head manager across all routes.
The PR changes a few things:
class HeadProvidertoclass HeadManagerentry-server, wraps<Page />with a<HeadContext.Provider /><head />Breaking Changes
Currently, all routes share one head manager instance, so every HTML generated will contain all routes' heads altogether.
Though this behavior might be buggy, some existing apps might be relying on this behavior.
After the PR, every route will have its own head manager instance, its HTML will only contain its own head, which will break above mentioned apps (if any).