Files
ujsx/tasks/value-equal-bailout.md
glm-5.1 c9c32a6aa6 decompose reconciler roadmap into 20 implementation tasks across 5 phases
Tasks follow the architecture spec phases:
- Phase 0: key field on UElement (2 tasks + review)
- Phase 1: reactive-host bridge / fiber tree (4 tasks + review)
- Phase 2: key-based children reconciliation (3 tasks + review)
- Phase 3: unmount & dispose support (4 tasks)
- Phase 4: TypeBox value optimizations (4 tasks)

Validated with taskgraph CLI: no cycles, 15 parallel generations,
3 high-risk tasks identified (signal-driven-updates, commit-mutations,
fiber-disposal).
2026-05-18 16:26:52 +00:00

1.7 KiB

id, name, status, depends_on, created, modified, scope, risk, impact, level
id name status depends_on created modified scope risk impact level
value-equal-bailout Value.Equal bail-out for unchanged subtrees pending
review-reconciler
2026-05-18T16:22:57.339429429Z 2026-05-18T16:22:57.339429873Z narrow low component implementation

Description

Add Value.Equal as the first TypeBox optimization layer. When reconciling, if a fiber's cached node is deep-equal to the next node, skip the entire subtree — no prepareUpdate, no commitUpdate, no children reconciliation.

This is the highest-impact optimization according to the architecture doc because it skips entire subtrees. It's also the simplest to implement and has no constraints (unlike Value.Hash which has the global accumulator issue).

The optimization is applied during reconcileProps:

if Value.Equal(fiber.cachedNode, nextNode):
  return  // skip this fiber and all children

Acceptance Criteria

  • Value.Equal check added before property reconciliation
  • If fiber's cached node equals next node, skip prepareUpdate and children reconciliation
  • Cached node stored on fiber (new cachedNode field or reuse props snapshot)
  • Correctness: behavior is identical with and without the optimization
  • Existing tests pass
  • New test: unchanged subtree skips prepareUpdate/commitUpdate
  • New test: changed prop still triggers prepareUpdate
  • New test: deeply nested unchanged subtree is fully skipped

References

  • docs/architecture/reconciler.md — TypeBox Optimization Layer, Value.Equal row
  • docs/architecture/reconciler.md — Optimization Strategy (step 1)

Notes

To be filled by implementation agent

Summary

To be filled on completion