Now I actively go out of my way to avoid doing any fullstack because I spend more time trying to fight against the various fragile towers of incantation-like hooks than just implementing the business logic in a way that feels readable and maintainable. I'm not sure there is a way to remove the complexity either, but so much of modern programming with React just feels unintuitive and convoluted, which is exactly the opposite of how it used to feel when it first came out. I'm not sure how to solve it.
I use React (actually Preact), but the old way, not with "use" anything, no hooks. It's pretty simple, but does a good job at what I need, and I'm doing pretty complex web applications with it.
There's no law saying you must use the bleeding edge of everything, the old React way is still plenty good for most things.
The way they rushed out hooks and everyone jumped on board was a red flag for me. I've used it, I've built stuff with hooks, but it's always seemed like fixing problems by creating more problems, and the hype around it was ridiculous.
Hooks are a good translation layer.
Footguns, learning curve? Sure, but I'll still make that trade.
React in its current incarnation is the best framework to create unmaintainable code.
That’s an antipattern. Like the 200 lines function in imperative or the god class in OOP.
Your components should be small and composable. Before directly using the standard hooks in the components, you should think first if it would not better to write a custom one. Scenarios should be handled by custom hooks and component should just get data from them. If you cannot test scenarios apart from your views and vice-versa, you’re doing it wrong
I'm speaking more generally about the trend of chasing "new, shiny" in front-end. Some people knee-jerk and just go for the "new, shiny" thing as soon as it happens. And other people still use the existing tech, because it's good enough.
useState
useState
useState
... // 20 more
useEffect
useEffect
useEffect
... // 20 more
I think a lot of front-end devs don't realize the necessity of custom hooks for composition and modularization. My personal rule is "Never use react hooks (useState, useEffect, etc.) in component code. All react hooks MUST be wrapped by custom hooks." and it makes for MUCH better code:
useSomeData
useOtherData
useMobileView
useScrollToTop
useInteractionLogging
... // 10 more hooks
This is also what makes TanStack so good and popular. It's all just behavior wrapped in hooks.