What are the drawbacks of create-react-app?

Viewed 3746

I have to build a frontend project from scratch.

This project is ambitious and will last for a long time. My main goal in this first weeks of development will be to start on a good basis.

Therefore, i'm wondering if create-react-app is a good option because it's easy to begin with and this toolbox is optimized for production.

However, how modular my project will be if i use this solution ?

Does anybody know if some drawback can appear on project using CRA ?

My main worry is about bundler.

If the project is getting bigger and bigger, do i have to optimize the webpack config of CRA ?

Isn't better to create my project from scratch with my own bundler configuration ?

2 Answers

CRA is a lightweight environment which generates the HTML on the client side (browser).

Which means it goes under the advantages and drawbacks of Client Side Renderding (google it).

For CRA advantages see docs.

Disadvantages:

  • Opinionated setup (like almost all tools).
  • Hard to configure.

I don't think there are more interesting drawbacks to talk about.


Very important side note: the developing cycle should be decoupled from the production environment.

There are some fundamental issues that I want to tackle because I see many questions resemble this one.

React is all about Composition and Isolation (see Design Principles, Thinking in React). Meaning that your React components should work on any environment

So, when developing an app, you should focus on developing in isolation, therefore developing with tools like Storybook is actually the only thing you need.

My opinionated developing cycle of a new project:

  1. Decide on any environment (like CRA/Gatsby/Next etc.)
  2. Develop components in isolation (like with Storybook).
  3. Push changed to production environment.
  4. Repeat 1-2 till you get to bottle neck (For example you found that CSR isn't working well for you application).
  5. Switch production environment (remember that your components should work on any environment). Goto 1.

Good Luck.

For me, the top reason why I won't use CRA is because there is no option for a development / staging build. react-scripts build will always set the environment to production and produce a minified build, not suited to host in a dev / staging environment.

Related