Scroll-linked effects have a bad reputation because most implementations animate the wrong properties from the wrong events. The fix is architectural, not aesthetic.
Compositor or nothing
Transforms and opacity run on the compositor thread; height, top, and box-shadow do not. If an effect cannot be expressed as transform and opacity, redesign the effect rather than accept the jank.
Scrub, do not trigger
Progress-linked animation stays under the user’s control: scroll back and the interface rewinds. And respect prefers-reduced-motion as a first-class state — the page must communicate exactly as much with animations disabled.
If any of this maps to a project you are planning, I am happy to talk it through — no pitch, just a second pair of eyes. Start a conversation