This isn't a question. I'm posting this here because it took me about half a day to realize what's going on.
If you use a from tween the animation get's stuck in the from position OR it animates a very small portion of the start of this tween.
Go to your index.js file and remove the <React.StrictMode> wrapper around your rendered Root component.
Explanation (My best guess):
The tween actually is fully animating. You can check with onStart/onComplete callbacks.
Strict mode causes your components to mount twice. Since GSAP has its own state management system you've created two instances of the from tween. These are competing with each other.
Apologies if this is written in the documentation somewhere. I didn't see it.