Yeah that's a great point. Nothing makes me start really looking closely at a merge request than when a useEffect shows up.
People are just way too much thinking imperatively, like decades of OOP thought them (and many of their educators). Most naive useEffects are just masked derived state.