Most animation people grew up with is linear: a video or GIF that plays from start to end. Interactive animation has a second ingredient, input. What happens next depends on what the user does or what the app knows.
Examples you use every day
A like button that bursts when tapped. A pull-to-refresh spinner that stretches as you drag. A password field that shakes on a wrong entry. A chart that animates to new data. A character in a learning app that reacts to right and wrong answers.
How it is built
Interactive animation is usually described as states (idle, hover, pressed, loading, success) and transitions between them. Inputs, such as a boolean "isLoading" or a trigger "success", move it between states. This is a state machine. Physics, such as springs, makes motion feel natural when it is interrupted halfway.
Ways to make it
Developers can code it with CSS, the Web Animations API, Motion, GSAP or Reanimated. Designers can build it visually in Rive, ExodeUI or ProtoPie, or add dotLottie state machines to Lottie files. Visual tools that export a runtime file let the same animation run in the real app; prototyping tools show the idea but need rebuilding in code. We make ExodeUI.
What makes it good
Keep it fast (most feedback within about 100 to 300 ms), make it interruptible, and make it mean something: show that an action worked, where something went, or what will happen next. Respect reduced-motion settings.