feat(stadium): lazy-loading bundle split, CRO registration, and WCAG sweep#10
Open
DigitalBlueprint239 wants to merge 1 commit into
Open
feat(stadium): lazy-loading bundle split, CRO registration, and WCAG sweep#10DigitalBlueprint239 wants to merge 1 commit into
DigitalBlueprint239 wants to merge 1 commit into
Conversation
…sweep Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Updates to Preview Branch (feat/stadium-optimization) ↗︎
Tasks are run on every commit but only new migration files are pushed.
❌ Branch Error • Fri, 01 May 2026 03:39:44 UTC View logs for this Workflow Run ↗︎. |
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
Stadium-grade frontend optimization for field deployment over LTE — drastic bundle-size cuts, registration funnel CRO, and WCAG AA contrast sweep across all dark-mode surfaces.
1. Lazy-Loading Bundle Split
Three heavy dependencies removed from the initial payload via
React.lazy()+<Suspense>and runtimeawait import():html5-qrcode— Moved to dynamicawait import()insideQRScanner.tsx'suseEffect.StationModefurther wrapsQRScanneritself inReact.lazy(). Result:QRScannershell is now a 0.9kB stub; the lib is fetched only when an operator opens a station.SignatureCanvas— Lazy-imported inRegister.tsx(Step 3 only). 25.4kB chunk no longer loads for the 90% of registrants who abandon before the waiver.recharts— Extracted fromCoachPortal.tsxinto a new standaloneCoachRadarChart.tsxcomponent, lazy-imported. Result: 327kB chunk only loads when a coach opens compare-mode with ≥2 athletes.Eager bundle: only
index-C3ormUOk.js(467kB / 140kB gzip) loads fromindex.html. Everything above is dynamic-import-only.2. Registration CRO — 3-Step Funnel
Register.tsxStep 1 stripped to essentials only: First/Last Name, DOB, Parent Phone. Biometrics (height/weight/position), high school, film URL, and parent contact fields moved to a new optional Step 2. Waiver + signature relocated to Step 3. Progress bar relabeledEssentials → Profile → Waiver. Validation gates redistributed: DOB age (10–19) + phone digits at Step 1, parentEmail at Step 2.3. WCAG AA Accessibility Sweep
text-zinc-600→text-zinc-400across 18 dark-mode files. Audited each occurrence to avoid regressing 9 light-surface files (modals, white cards, light-pill fallbacks):Defeats stadium screen glare and meets WCAG AA contrast ratios on
bg-zinc-900/bg-zinc-950surfaces.Test plan
npx tsc --noEmit— clean (0 errors)npm run build— clean, 1m 59s, all chunks emittedindex.htmlscript-tag inspection — only the main shell loads on cold starthtml5-qrcode,SignatureCanvas, andrechartsconfirmed split into dedicated dynamic chunks viadist/assets/*.jssize audit/admin,/coach,/station/*routes — confirm 0 contrast violationsGenerated with Claude Code