React app deployment guide

How to deploy a React app with zero downtime

This guide will walk you through deploying a React application to your server and shows what a simple but very effective workflow looks like. Let's automate your deployment process for your React projects!

Deploying with Launchdeck

Launchdeck is an automated code deployment tool that allows you to easily deploy React to your server. You can write configuration files, define custom commands and deploy automatically whenever you push.

Our basic plan is free, includes all features, and allows you to deploy 1 project as often as you'd like!

Create a project

Let’s get started by creating a new project and linking your Git account. All repositories within your account will be retrieved and shown as a list, from which you can now select the one that you’d wish to use.

Connect your repository

Setup your build

The next step allows us to define commands which will be executed in an isolated docker container - this is the build step. Hit the button “Auto suggest build automation” and we will automatically suggest a build config based on the contents of your repository.

If you’re using the create-react-app you’ll only need to add the following build commands. Please note that there also is a input and output file specified. This will be used to cache the node_modules folder and prevent you from installing the dependencies from scratch with every deployment. This will save you a ton of time!

Different versions of create-react-app require different versions of node to compile. As the time of writing, node version 16 is appropriate for newly instantiated create-react-app projects (hence use-node-version 16).

  - use-node-version 16
  - cmd: npm install
    input: package.json
    output: node_modules
  - npm run build

To run tests (defined as the test script in package.json) add the following command:

npm test

All files generated using these build commands will be uploaded to the server. In the case of our create-react-app you'll want to deploy just the browser bundle which is generated inside the build directory. To "pull" everything inside this folder up to the working directory and delete everything else, use:

pull-up build

Build commands React app automation

You’ll find more information on how to set up and use build commands on our docs page about build automation.

Configure a server

Now let’s tell Launchdeck where to upload your React application. In this example, we’ll upload the React files to your server using SSH.

A major advantage of SSH is that it allows for commands to be executed on your server, including the creation of symlinks. This enabled Launchdeck to publish new versions of your project without any downtime at all. The way this works is by adding an entirely new directory for each new version, to which a symlink from your server’s webroot will be created or updated once you wish to publish this new version.

All the ins and outs on how to set up a server can be found below in our server setup docs;

Deploy for the first time

We’re now ready to start our first deployment. Click ‘create new project’ to confirm the settings and add the project. In the project overview, you can now start the build. The code will be cloned from your repository and prepared for you to publish it. Hit ‘Publish’ and your React app is live!

If we then commit changes to our repository, the commit will automatically appear in your project overview where you’ll be able to upload and publish your new version with the push of a button. If anything goes wrong, you can simply roll back to the latest working version.

That’s all! By using Launchdeck to deploy your React application, you’ll never have to upload a new version or run commands manually. Just hit “publish”, and Launchdeck will deploy your app with zero downtime.

Overview React app deployments