Something strange and unusual is happening with my side-projects: they're moving forward.
None of this is due to the amount of time I have available to put into them lately (not much). As I resurrected a very old project this past weekend and moved it significantly forward in just a few hours I think I've figured out the key ingredient: server-side rendering.
With Next's app router, I'm able to get data onto the page in a split second. I don't need useEffects or React Query — I can just query my file system or database and I'm off to the races. It's hard to overstate how motivating it feels to have data just there to play with.
It's not that adding a useEffect to run a fetch function and assign received data to a state object is overly taxing. It's not. So I don't think the shift is technical exactly, but rather it's perceptual. It feels like I'm moving fast, so I feel more motivated so I keep going, so I actually have something produced at the end of a small available window.
The thing is, it's just so easy to give up on a side-project and surrender this time back. When the kids need breakfast or the dog needs to go out or laundry needs to be folded or dishes need to be washed, it's easy to let a couple of useEffects or a React Query config add up and make you throw in the towel for the day. The tipping point is surprisingly sensitive.
Crazy at it sounds, server components do a surprisingly good job of keeping the scales tipped away from making pancakes, folding laundry and washing dishes for much longer.