Skip to content

Harden reconciliation coverage across keyed, unkeyed, mixed, composite and deep trees#79

Merged
RtlZeroMemory merged 2 commits into
mainfrom
reconciliation-hardening
Feb 18, 2026
Merged

Harden reconciliation coverage across keyed, unkeyed, mixed, composite and deep trees#79
RtlZeroMemory merged 2 commits into
mainfrom
reconciliation-hardening

Conversation

@RtlZeroMemory

Copy link
Copy Markdown
Owner

Summary

  • add 5 dedicated reconciliation suites with deterministic coverage for keyed, unkeyed, mixed, composite, and deep-tree reconciliation edge cases
  • add 78 new tests across those suites
  • fix reconciliation gaps discovered by regression tests:
    • enforce kind-aware reuse (same slot but different kind now remounts)
    • correctly unmount unkeyed previous children when next slots are undefined
    • treat props.key generically across vnode kinds so keyed reconciliation is consistently applied
  • document the reconciliation hardening matrix in docs/dev/testing.md

Why

These tests lock behavior for reorder/insert/remove, mixed keyed+unkeyed transitions, defineWidget instance/hook lifecycle, and deep nested tree mutations so reconciliation regressions are caught deterministically.

Validation

  • npm run lint (fails in this environment: biome not installed)
  • npm run build (fails in this environment due missing workspace type dependencies such as @types/node and @rezi-ui/testkit)
  • npm run typecheck (same dependency issue as build)
  • node scripts/run-tests.mjs (fails in this environment due missing workspace packages in dist test runtime)

@RtlZeroMemory
RtlZeroMemory merged commit 259293b into main Feb 18, 2026
15 of 17 checks passed
@RtlZeroMemory
RtlZeroMemory deleted the reconciliation-hardening branch February 19, 2026 17:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant