Accepted answer

When you run npm run build your console should actually say something like the following

The build folder is ready to be deployed.
You may serve it with a static server:

npm install -g serve
serve -s build

The build script is building your entire app into the build folder, ready to be statically served. However actually serving it require some kind of static file server, like the one they propose.

After running the command serve -s build you can access your production build at localhost (on the specified port).

You can of course run whatever static file server you like, I usually use express for this, however serve seems like the easiest option to just serve your statics files with a single command.


If you want to run you React application on default :8000 port it's more convenient to create an nginx proxy server which will run on port :8000 and proxy your request into your express application which is serving your bundled application running on port for example :8081 or whatever port you are using.


There are various ways of achieving this.

You can use http-server or serve packages for running local servers. If on MacOS, you can also use python SimpleHttpServer to host the production build folder.



make a production build of the react app locally, (run npm run build if you are using create react app) and then you can use serve to run it locally by running serve -s build. build is the folder name of your production build.


As of date by default for CRA

serve -s build

will deploy your app on localhost port 5000

If you want to open on custom port use flag -l

serve -s build -l customportnumber

CRA Deployment Official Docs

Related Query

More Query from same tag