SSR: actionable error when a component touches a browser global during render#15
Merged
Merged
Conversation
… SSR A component evaluating window/document/etc. at render scope failed with a bare 'window is not defined' and a framework-internal traceback — no pointer to the user's file, no remedy. ReferenceErrors on browser- only globals (module constant BROWSER_ONLY_GLOBALS) are now raised as BrowserGlobalRenderError: a plain-language explanation that browser globals don't exist during server rendering, the page's .pyxl source file, and the remedy (useEffect / event handler / client-only gating, pointing at the Client components guide). Dev gets the rich message on the error page, overlay breadcrumb, and nav-error JSON; production bodies stay generic — the enriched message goes to the server log only. Covers buffered and streaming shell errors; unrelated render errors flow through as the identical exception object. Suite: 2208 passed, coverage 96.50%. Ruff clean.
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.
Evaluating
window,document, or another browser-only global at render scope used to fail SSR with a bare "window is not defined" and a framework-internal traceback — no pointer to the offending page, no hint at the fix.Such ReferenceErrors are now raised as
BrowserGlobalRenderErrorwith a plain-language explanation (browser globals don't exist during server rendering), the page's.pyxlsource file, and the remedy: move browser-only code intouseEffector an event handler, or gate it behind a client-only pattern (linked to the Client components guide).__cause__.Tests: 2336 passed, coverage 96.54%.