When morphing DOM after server fetch, the morph engine reuses elements with the same tag. If old element was island A and new is island B, syncAttrs updates data-sx-island but the JS property _sxBoundisland-hydrated persists on the reused element. sx-hydrate-islands then skips it. Fix: in morphNode, when data-sx-island attribute changes between old and new elements, dispose the old island's signals and clear the hydration flag so the new island gets properly hydrated. New Playwright tests: - counter → temperature navigation: temperature signals work - temperature → counter navigation: counter signals work - Direct load verification for both islands - No JS errors during navigation Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
33 KiB
33 KiB