Accessing DOM Elements, and the practical examples still hold up.
“break free from your JSX cage” is such a kirupa line lol. the cage is real, and refs always feel like you’re quietly admitting defeat.
fwiw the one place I still reach for them is measuring + focus stuff, but measuring in useEffect has bitten me with that 1-frame “pop” when the number shows up after paint. useLayoutEffect is usually the calmer spot for getBoundingClientRect() reads, as long as you don’t start doing heavy work in there and block rendering.