Skip to content

v4.20.0

Choose a tag to compare

@rodrigoslayertech rodrigoslayertech released this 18 Jul 00:17
· 47 commits to main since this release
v4.20.0
0593d18

Focus: Static SSR — every route ships as hydration-ready HTML, rendered at build time.

Changes

  • 🖥️ Added opt-in static SSR (ssr: { enabled: true } in docsector.config.js): docsector build runs Quasar's SSR mode as a build-time renderer — every route is rendered with renderToString (real hydration anchors, per-route meta via useMeta, manifest-driven preloads) and deployed as plain static files in dist/spa; no Node server ever runs in production
  • 💧 Added lazy hydration: server-rendered pages hydrate their above-the-fold blocks synchronously, below-the-fold chunks on scroll (hydrateOnVisible) and the sidebar menu on first interaction (hydrateOnInteraction) — the server-rendered links work natively before hydration
  • 🚰 Added a hydration boot that detects server-rendered markup before mount, so first-paint gates (layout settling, progressive reveal) start in the exact serialized state and hydration stays mismatch-free
  • 🔗 Internal-link pages now emit static redirect documents (meta refresh + canonical) instead of empty app shells
  • ⚡ Early Hints Link rules are derived from the real rendered head in SSR builds
  • 🛠️ Fixed three latent SSR blockers: book-tab colors now resolve isomorphically (getPaletteColor requires a live DOM), raw HTML blocks are balanced at tokenize time (unclosed author tags corrupted the serialized stream and every sibling after them), and the header declares a height-hint so the page-container padding no longer shifts +61px on mount
  • ✅ Validated with local Lighthouse (mobile): LCP −800 ms and FCP −700 ms across pages, +6 on manual pages and +9 on the homepage with zero hydration mismatches across sampled routes and viewports (335 passing tests)