I do kill ScrollTrigger on an individual level rather than all on route change. The return function gets called when component unmounts.
React.useEffect(() => {
if (ref.current == null) return;
const st = ScrollTrigger.create({
trigger: ref.current,
pin: true,
start: 'top top',
pinSpacing: false,
});
ScrollTrigger.refresh(true);
return () => st.kill();
}, [pageStyle]);