[docs-infra] Restore build-only invariant throws via NEXT_RUNTIME guard#48475
Open
Janpot wants to merge 1 commit into
Open
[docs-infra] Restore build-only invariant throws via NEXT_RUNTIME guard#48475Janpot wants to merge 1 commit into
NEXT_RUNTIME guard#48475Janpot wants to merge 1 commit into
Conversation
PR mui#48365 introduced the `mui/no-guarded-throw` lint rule and removed the `if (process.env.NODE_ENV !== 'production')` wrappers around several throws in docs components, making those invariants throw at client render time. Restore the original "fail at build, not in the browser" semantics by guarding on `process.env.NEXT_RUNTIME` instead. The lint rule only matches `NODE_ENV` guards, and Next.js replaces `NEXT_RUNTIME` with `undefined` in client bundles, so the entire block is dead-code-eliminated from the browser. Also drop the explicit `'mui/no-guarded-throw': 'error'` override from `eslint.config.mjs` — the rule comes from the shared infra config.
Deploy previewhttps://deploy-preview-48475--material-ui.netlify.app/ Bundle size
Check out the code infra dashboard for more information about this PR. |
NEXT_RUNTIME guard
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
PR #48365 introduced the
mui/no-guarded-throwlint rule and removed theif (process.env.NODE_ENV !== 'production')wrappers around several invariant throws in docs components. Without the guard those throws now fire at client render time in production — a single bad config (missingmanualCardheader, overly long banner, invalid demo options, missingproductIdentifier) hard-crashes the page in the browser instead of being caught at build time.This restores the original semantics by guarding on
process.env.NEXT_RUNTIMEinstead. The lint rule only matchesNODE_ENVguards, so this passes lint. Next.js replacesNEXT_RUNTIMEwithundefinedin client bundles, so the entire block is dead-code-eliminated from the browser — the check only runs duringnext buildprerender and SSR.