On the other hand, Impeller generates and compiles all necessary shaders when
we build the Flutter Engine. Therefore apps running on Impeller already have
all the shaders they need, and the shaders can be used without introducing jank
into animations.

Definitive evidence for the presence of shader compilation jank is to see
GrGLProgramBuilder::finalize in the tracing with --trace-skia enabled. See
the following screenshot for an example timeline tracing.

What do we mean by “first run”?

On iOS, “first run” means that the user might see
jank when an animation first occurs every time
the user opens the app from scratch.

How to use SkSL warmup