fix(shared): break barrel self-import cycle crashing /crown-jewels - #227
Merged
Conversation
…crown-jewels) coming-soon-page.tsx is part of the @/features/shared barrel yet imported PageHeader FROM '@/features/shared' — a circular dependency through the barrel. Under Turbopack that leaves some barrel exports (e.g. RiskScoreBadge) undefined at module-init depending on load order, which crashed the crown-jewels table cell with 'Element type is invalid ... got: undefined'. Import PageHeader directly from './page-header' to break the cycle. No other shared component self-imports the barrel.
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.
/crown-jewels crash: 'Element type is invalid … got: undefined' in a table cell
Root cause:
src/features/shared/components/coming-soon-page.tsxis itself part of the@/features/sharedbarrel, yet it importedPageHeaderfrom@/features/shared— a circular dependency through the barrel. Under Turbopack this can leave some barrel exports (e.g.RiskScoreBadge, used in the crown-jewels risk-score cell)undefinedat module-init depending on evaluation order → React throwsElement type is invalid … got: undefinedfrom the cell renderer.Fix: import
PageHeaderdirectly from./page-header, breaking the cycle. Verified no other shared component self-imports the barrel;tscclean.This is a latent barrel anti-pattern (a barrel member importing its own barrel) — the fix is correct regardless of which page happened to surface it.