perf+a11y(landing): Lighthouse Tranche 2 — inlineCss + browserslist + a11y 84→100 + video captions#302
Merged
Merged
Conversation
Enables Next.js experimental.inlineCss so the 3 stylesheet requests that blocked the first render (global Tailwind 21.5KB + 2 component chunks 2.1/2.4KB) are merged into a single <style> tag in <head>. PSI target: #2 render-blocking-resources, ~600ms LCP+FCP savings. CSP already allows unsafe-inline for style-src — no CSP change needed. Build evidence: index.html head now contains <style data-precedence="next" data-href="531c... b063... 67c5..."> with full Tailwind + component CSS inlined. Zero <link rel="stylesheet"> blocking tags remain.
Targets chrome 111, safari 16.4, firefox 128, edge 111 — all ES2022-class, matching the Telegram/Meta/X WebViews from spec 073 IAB gate. Without an explicit browserslist Next.js ships SWC polyfills (Object.assign, Object.fromEntries, globalThis shims etc.). These four targets already support all ES2022 features natively so SWC emits no polyfill helpers. PSI target: #3 legacy JS, ~12KB gzip / ~150ms savings off chunk 5028. Verified: `npx browserslist` resolves to exactly {chrome 111, edge 111, firefox 128, safari 16.4}.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
ignromanov
added a commit
that referenced
this pull request
Jun 6, 2026
Remove the `default` attribute from the captions <track> in VideoSection. The track stays present (accessible via native controls on mobile / reduced-motion) and the server-rendered transcript <details> remains for a11y/SEO, but captions no longer auto-render over the muted autoplay demo video on first paint. Follow-up to #302 which added the VTT track. Test-safe: VideoSection.test asserts the track exists with kind/srclang/src but not `default` (26 pass).
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
Lighthouse Tranche 2 on the landing (mobile). Two tracks: performance (render-blocking + bundle) and accessibility (4 audits → 0), plus video captions for indexability/a11y.
Measured (official PSI, 3× median, mobile preview):
LCP stays ~3.75s (noisy, flat to prod) — the score lift comes from eliminating render-blocking CSS, not LCP. Remaining LCP gap → Tranche 3 (chunk 8029/web3icons splitChunks).
Changes
experimental.inlineCss: true(3 render-blocking CSS files → inline<style>, hits all pages)browserslist(chrome 111/safari 16.4/firefox 128/edge 111) → drops SWC polyfills from chunk 5028aria-labelon nav /history + /create + WalletButton placeholder (link-name + button-name);<a><button>nesting fixed viaButton asChildrole="img"on NetworkIcon spans (aria-prohibited-attr)<details>DOM transcriptGate
Iris pass — lint/type clean, 2841/2843 tests (2 skipped), v3 mobile a11y review confirmed all 7 fixes. Coverage flake on BelowFoldSections is pre-existing (commit 244c7a4 on develop), not this branch.
Follow-ups (Tranche 3 / not blockers)
splitChunks.cacheGroupsto push perf to 90+<track>hardcoded to 9x16 VTT (both aspect ratios share it)Refs: AI#297