The hydrate-island function was doing: (dom-set-text-content el "") ;; clears SSR content — visible flash (dom-append el body-dom) ;; adds reactive DOM Now uses: (host-call el "replaceChildren" body-dom) ;; atomic swap, no empty state Per DOM spec, replaceChildren is a single synchronous operation — the browser never renders the intermediate empty state. The MutationObserver test now checks for content going to zero (visible gap), not mutation count (mutations are expected during any swap). Test: "No clobber: clean" — island never goes empty during hydration. All 8 home features pass: no-flash, no-clobber, boot, islands, stepper, smoke, no-errors. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
14 KiB
14 KiB