Promptless AI is here soon - Production-ready contextual code. Don't just take our word for it. Know more
Know More

My Journey With CRACO React: A Comprehensible Configuration Layer

No items found.

Kesar Bhimani

August 14, 2023

Kesar Bhimani

August 14, 2023

CRACO React, or simply CRACO, is a powerful tool that provides an easy and maintainable way to customize Create React App Configurations Override. It offers all the benefits of Create React App but with the added advantage of being able to modify the configurations without the need to eject.

Understanding CRACO

CRACO, which stands for Create React App Configuration Override, is a tool that provides a comprehensible configuration layer for Create React App. It allows you to customize the configurations of your React app without having to eject, which is a one-way operation that removes the single-build dependency provided by Create React App.


Before I started using CRACO, I was using react-scripts for tasks like starting the development server, creating production builds, and running tests. However, react-scripts has a significant limitation - it doesn't allow you to override the configurations. This is where Craco comes in.

CRACO provides a comprehensible configuration layer on top of react-scripts, allowing you to customize the Create React App configuration without ejecting. This means you can keep all the benefits of Create React App, while also having the flexibility to customize the configurations to suit your needs.

The Power of CRACO

With CRACO, you can override the configurations for tasks like react-scripts start, react-scripts build, and react-scripts test. You can do this by creating a CRACO configuration file in your project's root directory. This file is where you'll define your custom configurations.

Here's an example of how you can use CRACO to start your React app:

As you can see, all the existing calls to react-scripts in the scripts section of your package.json file are replaced with calls to the CRACO CLI. This allows CRACO to take control of the configurations for starting, building, and testing your React app.

Getting Started with CRACO

Now that we have our development environment set up, let's dive into CRACO and see how we can use it to customize our React app's configuration.

Installing CRACO

The first step is to install CRACO in our project. We can do this by navigating to our project's root directory and running the following command:

This command installs CRACO as a dev dependency, which means it will only be installed for development purposes and not for production.

Creating a New CRACO Project

Once we've installed CRACO, we can use it to create a new CRACO project. Here's how we can do this:

This command creates a new CRACO project named "my-craco-app" in a directory of the same name. You can replace "my-craco-app" with the name of your choice.

Exploring the Project Structure

After creating our CRACO project, we can explore its structure. In the project's root directory, we'll find a file named craco.config.js. This is the Craco configuration file, where we'll define our custom configurations.

In the scripts section of our package.json file, we'll find that the existing calls to react-scripts have been replaced with calls to the CRACO CLI. This allows CRACO to take control of the configurations for starting, building, and testing our React app.

Understanding CRACO Configuration

Now that we have our CRACO project set up, let's dive into the CRACO configuration file and see how we can use it to customize our React app's configuration.

The craco.config.js File

The craco.config.js file is where we'll define our custom configurations. This file is located in our project's root directory. Here's an example of what a basic craco.config.js file might look like:

In this example, we're using Tailwind CSS and Autoprefixer as PostCSS plugins. We can add as many plugins as we need, and CRACO will automatically include them in the Create React App configuration.

Basic Configuration Options

The craco.config.js file supports several basic configuration options. For example, we can specify the version of react-scripts we want to use, configure Babel, modify the Webpack configuration, and more.

Advanced Configuration Options

In addition to the basic configuration options, the craco.config.js file also supports several advanced configuration options. These include configuring Jest, modifying the ESLint configuration, and more.

Comparing CRACO with Other Configuration Tools

There are several other tools available for customizing Create React App configurations, such as react-app-rewired and customize-cra. However, CRACO stands out for several reasons.

Ease of Use

CRACO provides a simple and intuitive API for customizing configurations. Its configuration file is easy to understand and use, making it accessible even to developers who are new to React.


CRACO offers a high degree of flexibility in customizing configurations. It allows you to override almost any part of the Create React App configuration, including Webpack, Babel, ESLint, PostCSS, and more.


CRACO is designed to be compatible with Create React App. This means that it works seamlessly with the latest features and updates of Create React App.

Community and Support

CRACO has an active community and is well-supported. You can find a wealth of resources, including config docs, API docs, plugins, and example configs, in the Craco repository on GitHub.

While other tools also offer customization capabilities, CRACO’s ease of use, flexibility, compatibility, and strong community support make it a compelling choice for customizing Create React App configurations.

The Impact of CRACO React and WiseGPT on React Development

In conclusion, CRACO React emerges as a powerful tool that significantly simplifies the process of customizing configurations in Create React App. It provides an intuitive, flexible, and easy-to-understand configuration layer, eliminating the need to eject and thereby retaining all the benefits of Create React App. Its compatibility with the latest features of Create React App, coupled with strong community support, makes Craco a compelling choice for developers seeking to enhance their productivity and streamline their development workflow.

As we've explored the potential of CRACO React, it's also worth mentioning another tool that can revolutionize your React development process - WiseGPT. Developed by DhiWise, WiseGPT is a plugin designed to generate code for APIs seamlessly into your React project. It does not impose any limit on the output size and mirrors your unique coding style.

Just as CRACO React enhances your experience with Create React App, WiseGPT promises to take your React development to the next level. So, why not give it a try? Explore the potential of these tools and experience a new dimension of efficiency and productivity in your React projects.

Frequently asked questions

Frequently asked questions

No items found.