Skip to content
Set up a modern React browser extension by running one command.
JavaScript Shell Other
Branch: master
Clone or download
#11 Compare This branch is 26 commits ahead, 14 commits behind facebook:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Create-React-Extension PRs Welcome

Create React browser extensions with no build configuration.

This is a fork of create-react-app to make creating Browser Extensions in React more accessible and following Create-React-App's(CRA) philosophy, especially convention over configuration.


see Create a browser extension for a more in depth start guide see CRA user guide for more information on different configurations and functionality available.

If something doesn’t work, please file an issue.

Quick Overview

npx create-react-app my-browser-extension --scripts-version react-browser-extension-scripts
cd my-browser-extension
npm start

(npx comes with npm 5.2+ and higher, see instructions for older npm versions)

Then open Chrome, and unpack the newly created /dev folder to see your extension added locally to your browser.
When you’re ready to ship your extension, create an optimized build with npm run build.

npm start

What's do I need to know to start building my extension ?

It's follows mostly the same conventions as CRA.

Only 1 new convention

There are different types of chrome extensions which can be any combination of:

These are all controlled by the all important /public/manifest.json which is configurable by you to control what kind of extension you want build.

Do not delete any of the entry files, this is a convention to remind you what your extensions could be. The build will notify you and fail if you remove any of these important files.

Creating a Browser Extension

You’ll need to have Node 8.16.0 or Node 10.16.0 or later version on your local development machine (but it’s not required on the server). You can use nvm (macOS/Linux) or nvm-windows to easily switch Node versions between different projects.

To create a new Browser Extension, you may choose one of the following methods:


npx create-react-app my-browser-extension --scripts-version react-browser-extension-scripts

(npx comes with npm 5.2+ and higher, see instructions for older npm versions)


npm init react-app my-browser-extension --scripts-version react-browser-extension-scripts

npm init <initializer> is available in npm 6+


yarn create react-app my-browser-extension --scripts-version react-browser-extension-scripts

yarn create is available in Yarn 0.25+

It will create a directory called my-browser-extension inside the current folder.
Inside that directory, it will generate the initial project structure and install the transitive dependencies:

├── node_modules
├── package.json
├── .gitignore
├── public
│   ├── img
│   │   ├── icon-16.png
│   │   ├── icon-48.png
│   │   ├── icon-128.png
│   ├── popup.html
│   └── manifest.json
└── src
    ├── background
    │   ├── index.js
    ├── contentScripts
    │   ├── index.js
    ├── App.css
    ├── App.js
    ├── App.test.js
    ├── index.css
    ├── index.js
    ├── logo.svg

No configuration or complicated folder structures, just the files you need to build your extension.
Once the installation is done, you can open your project folder:

cd my-browser-extension

Inside the newly created project, you can run some built-in commands:

npm start or yarn start

Runs the browser extension in development mode. You will see a /dev folder has been created in your project with the extension.

To view the extension in your browser, open up chrome and unpack extension.

The extension will automatically reload if you make changes to the code.
You will see the build errors and lint warnings in the console.

Build errors

npm test or yarn test

npm run build or yarn build

Builds the app for production to the build folder.
It correctly bundles React in production mode and optimizes the build for the best performance.

Your extension is ready to be shipped.

npm run eject or yarn eject

Check out this awesome browser extensions list for more great packages to help you create a great web extension


We'd love to have your helping hand on create-react-extension! See for more information on what we're looking for and how to get started.


We are grateful to everyone who has been a part of the following existing related projects for their ideas and collaboration:


Create React App is open source software licensed as MIT.

You can’t perform that action at this time.