Skip to main content

Animation Presets

Control how items animate when shifting during sortable reorder.

Preset Names

<DraxList animationConfig="default" />  {/* 200ms timing (default) */}
<DraxList animationConfig="spring" /> {/* Spring physics */}
<DraxList animationConfig="gentle" /> {/* Soft spring */}
<DraxList animationConfig="snappy" /> {/* Fast spring */}
<DraxList animationConfig="none" /> {/* Instant — no animation */}
PresetTypeDuration / Config
'default'Timing200ms
'spring'Springdamping: 15, stiffness: 150, mass: 1
'gentle'Springdamping: 20, stiffness: 100, mass: 1
'snappy'Springdamping: 15, stiffness: 250, mass: 0.8
'none'InstantNo animation

Custom Configuration

Pass an object for fine-grained control:

<DraxList
animationConfig={{
useSpring: true,
springDamping: 12,
springStiffness: 180,
springMass: 1,
}}
/>

Or a timing-based custom config:

<DraxList
animationConfig={{
shiftDuration: 300,
}}
/>
PropertyTypeDefaultDescription
shiftDurationnumber200Duration in ms (timing-based)
useSpringbooleanfalseUse spring physics instead of timing
springDampingnumber15Spring damping
springStiffnessnumber150Spring stiffness
springMassnumber1Spring mass

With Composable API

const sortable = useSortableList({
data: items,
keyExtractor: (item) => item.id,
onReorder: ({ data }) => setItems(data),
animationConfig: 'spring',
});

Reduced Motion

Drax automatically respects the device's reduced motion setting via Reanimated's useReducedMotion(). When reduced motion is enabled:

  • All shift animations are skipped (items snap instantly)
  • No extra code needed — it's built in

Next Steps