Simply put, layout animations differ in React Native and React Native Web.
This gist is a simple approach to let you use one component to power layout animations across both platforms.
<LayoutView>
<Text>Lay me out</Text>
</LayoutView>
You can use the layout
prop to pass true
, false
, or a framer motion value. You can also pass reanimated Layout
here (which will be the default, unless you pass layout={false}
.
<LayoutView layout="size" layoutId="indicator">
<View />
</LayoutView>
You can also use layoutId
, although this will only work on Web. On Native, you'd need to use the component's key
and ensure that the component stays in the same place in the tree.