Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What are the drawbacks of create-react-app?

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 ?

like image 826
Sinane Avatar asked Aug 26 '20 10:08

Sinane


1 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.

like image 128
Dennis Vash Avatar answered Oct 13 '22 00:10

Dennis Vash