fix: await micromorph() to prevent race condition with nav event handlers (#2323)

micromorph() returns Promise<void> because its internal patch() function
is async and uses Promise.all for recursive child patching. Without
await, the DOM morph may still be in progress when the nav event fires
and downstream handlers attempt to rebuild dynamic content.

Fixes #2322
This commit is contained in:
Andrew G. Dunn 2026-03-02 11:31:53 -05:00 committed by GitHub
commit 9576701d85
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -102,7 +102,7 @@ async function _navigate(url: URL, isBack: boolean = false) {
html.body.appendChild(announcer)
// morph body
micromorph(document.body, html.body)
await micromorph(document.body, html.body)
// scroll into place and add history
if (!isBack) {