Root cause: the lake had (when (not (client?)) ...) guard — SSR rendered "the joy of sx" preview but client skipped it. replaceChildren swapped in an empty lake. The rebuild-preview effect was skipped (first-run optimization), so the preview stayed blank for ~500ms. Fix: remove the client? guard so the lake renders on both server and client. The template's steps-to-preview produces the initial preview. The effect only fires on subsequent step changes (not first run). Test: replaced MutationObserver approach with screenshot comparison. Loads page with JS blocked (pure SSR), takes screenshot. Loads with JS (hydration), takes screenshot. Compares pixels. Any visual difference fails the test. Result: "No visual flash: screenshots identical" — passes. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
15 KiB
15 KiB