The React Toolbox — 2018 Edition
Adrian Hall
281

Thanks for sharing your thoughts! I’m going use this as a spring board to ‘go off on one’ because I have Hot Takes™.

My opinion on create-react-app is that it was a great starting point to get over the complexity of setting everything up in a new project, but I actually think it’s harmful to use in new projects.

The CRA team are great, and I know they work to resolve issues related to the need for ejecting, but IME there are still too many things you need to eject for, but doing so leaves you with a lot more code and dependancies to have to manage yourself and of course there is no way back once you do.

This state of affairs can cause projects to get stuck in limbo and end up with unnecessary complexity in project as ‘workarounds’ (or just outstanding bugs) because people get reluctant about taking the leap and ejecting to solve the issue, because adding a bunch of code and complexity to the repository always seems like a terrible idea.

As a constructive alternative, I find Next.js automatically gives you Universal Javascript (Server Side Rendering) out of the box, amazing default routing, is very easy to extend (e.g. to add a SASS pipeline, or other frameworks like Express on top) and avoids tying you in to doing things in a proprietary way and is my go-to for all React projects.

As far as Redux goes, I continue to find the amount of boiler plate in Redux — and the amout of cheerleading for it — painful and depressing.

There are so many well understood and better ways to manage state in an application. I find it frustrating as not only are there decades of software development examples in dozens of languages to follow, there are better ways of doing it in JavaScript (e.g. MobX, which is simpler and follows decades of convention).

That said, I’d be really interested and would find it helpful to see how you set up your Redux code —I can absolutely see the value of grouping the reducer/action code but haven’t come across anyone doing it.

I’m completely with you on CSS styling. It feels like there isn’t one stand out method for this yet. I feel like there are a few of decent approaches emerging, but the toolchain keeps evolving rapidly (e.g. changes to SAAS spec and in Webpack 3.x) which seems to keep complicating things.

Like what you read? Give Iain Collins a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.