What changed.
Why it matters.
Ship accordingly.
Every feature shipped, every bug squashed, every performance gain measured in milliseconds. Refresh on release day like a scoreboard.
What changed. Why it matters. Ship accordingly
Every change. Documented.
// problem
Variant swaps broke nested overrides on every re-render.
// fix
Override inheritance now traverses the full component tree before committing state.
The resolver previously short-circuited at the first matching variant scope. It now walks all nested override chains before writing, eliminating the ghost-state flicker that's been in the tracker since v2025.44.
// problem
Canvas re-rendered the entire frame tree on any property change.
// fix
Surgical dirty-flag diffing now re-renders only changed subtrees.
// problem
CMS field bindings silently dropped on component duplication.
// fix
Binding references are now deep-cloned with stable IDs on duplicate.
// problem
Smart Animate interpolated color stops incorrectly between HSL and hex targets.
// fix
All color interpolation normalized to Oklch before tweening.
// problem
First meaningful paint on large CMS pages exceeded 2.4 seconds.
// fix
Streamed hydration with progressive CMS slot loading.
// problem
Auto Layout gap ignored `fr` unit in mixed fixed/flexible rows.
// fix
Gap now participates in the flex fraction calculation pass.
// problem
Token API `resolve()` returned stale values after theme switch.
// fix
Token resolution is now reactive — subscribed components re-render on theme change.
The `cms.token()` API is replaced by `cms.useToken()` (reactive hook). The old synchronous `resolve()` is deprecated and removed in this build.
// problem
Scroll-triggered animations fired twice on iOS Safari due to bounce scroll.
// fix
Intersection Observer threshold clamped; bounce scroll excluded from trigger zone.
Speed, measured.
Real numbers from the v2026.08.0 regression suite. Same machine, same project, same network.
47 changes shipped in Feb 2026 — the most in a single release cycle.
The override inheritance fix designers have been waiting for.
Full technical spec// Nested override — BROKEN<Frame variants={states}> <Card overrides={userOverrides}> {/* Override lost on variant swap */} <Icon color={overrides.iconColor} /> </Card></Frame>// Result: iconColor resets to default// on every variant change. Ghost state.
// impact
// how_it_works
Full-tree traversal
Override resolver now walks all nested component scopes before committing — no more short-circuit exits on first match.
Stable identity keys
Each override is keyed by component path + slot ID. Variant swaps no longer invalidate the key space.
Zero extra renders
The fix adds no render cycles. Dirty-flag diffing absorbs the traversal cost at the diff phase, not the commit phase.
"The override fix alone is worth the upgrade. We had a component library with 200 variants all broken. Now they all work."

Priya Venkataraman
Lead Product Designer · Intercom
"CMS TTFB under 8ms. I thought it was a benchmark error. Ran it 20 times. It's real."

Marcus Okonkwo
Front-End Engineer · Linear
"Upgraded 18 seats the same day. The token API migration took 20 minutes with the codemod. Worth every minute."

Sofia Andersen
Agency Founder · Fieldwork Studio


