You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A clear and concise description of what the feature is
Rewrite useTransition (packages/core/src/hooks/useTransition.tsx) around a declarative enter/leave model — presence made explicit, "obvious on first read" — without the render-prop bookkeeping it has today:
// today — you index into a render prop, and it's unclear where `item` comes fromconsttransitions=useTransition(items,{keys: item=>item.id,from: {opacity: 0},enter: {opacity: 1},leave: {opacity: 0},})returntransitions((style,item)=>(<animated.divstyle={style}>{item.text}</animated.div>))
Would also subsume #2136 (per-property configs should fall out of the new model rather than be bolted on).
Why should this feature be included?
useTransition is the library's most-reported source of confusion — the same friction recurs across years:
The exact new API shape is what this issue is to settle.
It must keep react-spring's model: you own the springs and the new API orchestrates them. Presence must not become props on animated.* that create/own springs internally — that inverts the model (see the reasoning on [feat]: Create an animation abstraction for spring and gesture #1826).
A clear and concise description of what the feature is
Rewrite
useTransition(packages/core/src/hooks/useTransition.tsx) around a declarative enter/leave model — presence made explicit, "obvious on first read" — without the render-prop bookkeeping it has today:Would also subsume #2136 (per-property configs should fall out of the new model rather than be bolted on).
Why should this feature be included?
useTransitionis the library's most-reported source of confusion — the same friction recurs across years:itemdown in the view section and don't know where it comes from."useTransitionAPI to trigger a #1281 (2021) — confusion over wherestatefits once the API takesitems.leavetransition can have an effect?" — exit timing isn't discoverable.Related issues
<Presence>component; the enter/exit primitive a cleaneruseTransitionunlocks.layoutId, tracked separately).Scope / non-goals
animated.*that create/own springs internally — that inverts the model (see the reasoning on [feat]: Create an animation abstraction for spring and gesture #1826).