Homepage: Server Component + client splash island (cut hydration render-delay)

The data-URI logo still had LCP ~5s with zero network request, proving the
bottleneck is render delay (JS), not the image. So:
- page.tsx is now a Server Component. The hero, tagline, buttons, ServicesPreview,
  PortfolioGrid, and FounderSignature render as static server HTML (they had no
  client features, so they now hydrate to nothing).
- Splash state machine + header/nav/background gating + nebula position + scroll
  restoration moved into a small client island (home-shell.tsx) that takes the
  static content as children. Nebula reads the title via getElementById.
- Dedupe @types/react to 19 across the workspace (pnpm override) so the
  server->client children boundary type-checks.
This commit is contained in:
jwinterm
2026-06-06 19:52:11 -04:00
parent 065cabc38c
commit b43c9d851b
4 changed files with 192 additions and 180 deletions
+2
View File
@@ -24,6 +24,8 @@
},
"pnpm": {
"overrides": {
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"yaml": "^2.8.3",
"flatted": "^3.4.2",
"minimatch": "^9.0.7",