A big performance bottleneck with animations is that we need to send over the animated value on each frame from the JavaScript thread, and so when we are doing things like pushing new scenes with the Navigator, we need to defer rendering the scene using InteractionManager until the transition is completed.
Another example is loading spinners - if we make them a pure JS component powered by Animated, then they will freeze whenever we block for some frames on the JS thread to do a bunch of work -- spinners exist to prevent these kinds of janky experiences! So the only good solution currently is to use a native one or an image.