Skip to content

Releases: facebook/create-react-app

v2.0.3

02 Oct 00:58
Compare
Choose a tag to compare

2.0.3 (October 1, 2018)

Create React App 2.0 brings a year’s worth of improvements in a single dependency update.
We summarized all of the changes in a blog post!

Check it out: Create React App 2.0: Babel 7, Sass, and More.

It provides a high-level overview of new features and improvements. Now let's see how to update your app to the latest version in detail.

Migrating from 1.x to 2.0.3

Inside any created project that has not been ejected, run:

npm install --save --save-exact [email protected]

or

yarn add --exact [email protected]

If you previously ejected but now want to upgrade, one common solution is to find the commits where you ejected (and any subsequent commits changing the configuration), revert them, upgrade, and later optionally eject again. It’s also possible that the feature you ejected for (maybe Sass or CSS Modules?) is now supported out of the box. You can find a list of notable new features in the Create React App 2.0 blog post.

Breaking Changes

Like any major release, [email protected] contains a few breaking changes. We expect that they won't affect every user, but we recommend to scan over these sections to see if something is relevant to you. If we missed something, please file a new issue.

Node 6 is no longer supported

Please upgrade to Node 8 (LTS) or later.

Polyfills for IE 9, IE 10, and IE 11 are no longer included by default (but you can opt in!)

We have dropped default support for Internet Explorer 9, 10, and 11. If you still need to support these browsers, follow the instructions below.

First, install react-app-polyfill:

npm install react-app-polyfill

or

yarn add react-app-polyfill

Next, place one of the following lines at the very top of src/index.js:

import 'react-app-polyfill/ie9'; // For IE 9-11 support
import 'react-app-polyfill/ie11'; // For IE 11 support

You can read more about these polyfills here.

Dynamic import() of a CommonJS module now has a .default property

Webpack 4 changed the behavior of import() to be closer in line with the specification.

Previously, importing a CommonJS module did not require you specify the default export. In most cases, this is now required.
If you see errors in your application about ... is not a function, you likely need to update your dynamic import, e.g.:

const throttle = await import('lodash/throttle');
// replace with
const throttle = await import('lodash/throttle').then(m => m.default);

require.ensure() is superseded by dynamic import()

We previously allowed code splitting with a webpack-specific directive, require.ensure(). It is now disabled in favor of import(). To switch to import(), follow the examples below:

Single Module

require.ensure(['module-a'], function() {
  var a = require('module-a');
  // ...
});

// Replace with:
import('module-a').then(a => {
  // ...
});

Multiple Module

require.ensure(['module-a', 'module-b'], function() {
  var a = require('module-a');
  var b = require('module-b');
  // ...
});

// Replace with:
Promise.all([import('module-a'), import('module-b')]).then(([a, b]) => {
  // ...
});

The default Jest environment was changed to jsdom

Look at the test entry in the scripts section of your package.json.
Here's a table how to change it from "before" and "after", depending on what you have there:

1.x (if you have this...) 2.x (...change it to this!)
react-scripts test --env=jsdom react-scripts test
react-scripts test react-scripts test --env=node

Object proxy configuration is superseded by src/setupProxy.js

To check if action is required, look for the proxy key in package.json and follow this table:

  1. I couldn't find a proxy key in package.json
    • No action is required!
  2. The value of proxy is a string (e.g. http://localhost:5000)
    • No action is required!
  3. The value of proxy is an object
    • Follow the migration instructions below.

It's worth highlighting: if your proxy field is a string, e.g. http://localhost:5000, or you don't have it, skip this section. This feature is still supported and has the same behavior.

If your proxy is an object, that means you are using the advanced proxy configuration. It has become fully customizable so we removed the limited support for the object-style configuration. Here's how to recreate it.

First, install http-proxy-middleware using npm or Yarn:

npm install http-proxy-middleware

or

yarn add http-proxy-middleware

Next, create src/setupProxy.js and place the following contents in it:

const proxy = require('http-proxy-middleware');

module.exports = function(app) {
  // ...
};

Now, migrate each entry in your proxy object one by one, e.g.:

"proxy": {
  "/api": {
    "target": "http://localhost:5000/"
    },
  "/*.svg": {
    "target": "http://localhost:5000/"
  }
}

Place entries into src/setupProxy.js like so:

const proxy = require('http-proxy-middleware');

module.exports = function(app) {
  app.use(proxy('/api', { target: 'http://localhost:5000/' }));
  app.use(proxy('/*.svg', { target: 'http://localhost:5000/' }));
};

You can also use completely custom logic there now! This wasn't possible before.

.mjs file extension support is removed

Change the extension of any files in your project using .mjs to just .js.

It was removed because of inconsistent support from underlying tools. We will add it back after it stops being experimental, and Jest gets built-in support for it.

PropTypes definitions are now removed in production

Normally, this shouldn't affect your logic and should make the resulting bundle smaller. However, you may be relying on PropTypes definition for production logic. This is not recommended, and will break now. If a library does it, one possible solution is to file an issue in it with a proposal to use a different field (not propTypes) to signal that the declaration needs to be retained.

Anything missing?

This was a large release, and we might have missed something.

Please file an issue and we will try to help.

Migrating from 2.0.0-next.xyz

If you used 2.x alphas, please follow these instructions.

Detailed Changelog

For a readable summary of the changes, check out our blog post.

For the detailed changelog, please see CHANGELOG.md.

v1.1.5

24 Aug 14:41
dc74990
Compare
Choose a tag to compare

1.1.5 (August 24, 2018)

Committers: 1

Migrating from 1.1.4 to 1.1.5

Inside any created project that has not been ejected, run:

npm install --save --save-exact [email protected]

or

yarn add --exact [email protected]

v1.1.4

04 Apr 00:33
Compare
Choose a tag to compare

1.1.4 (April 3, 2018)

🐛 Bug Fix

Committers: 1

Migrating from 1.1.3 to 1.1.4

Inside any created project that has not been ejected, run:

npm install --save --save-exact [email protected]

or

yarn add --exact [email protected]

v1.1.3

03 Apr 17:31
Compare
Choose a tag to compare

1.1.3 (April 3, 2018)

🐛 Bug Fix

  • react-scripts

    • #4247 Fix environment.dispose is not a function error caused by a Jest bug. (@gaearon)

Committers: 1

Migrating from 1.1.2 to 1.1.3

Inside any created project that has not been ejected, run:

npm install --save --save-exact [email protected]

or

yarn add --exact [email protected]

v1.1.2

02 Apr 23:49
Compare
Choose a tag to compare

1.1.2 (April 3, 2018)

🐛 Bug Fix

  • react-scripts

    • #4085 Resolve .js before .mjs files to unbreak dependencies with native ESM support. (@leebyron)

📝 Documentation

  • react-scripts

    • #4197 Add troubleshooting for Github Pages. (@xnt)

Committers: 2

Migrating from 1.1.1 to 1.1.2

Inside any created project that has not been ejected, run:

npm install --save --save-exact [email protected]

or

yarn add --exact [email protected]

v1.1.1

09 Feb 13:21
Compare
Choose a tag to compare

1.1.1 (February 2, 2018)

🐛 Bug Fix

  • react-scripts
    • #4000 Fix escaping $ in environment variables. (@iansu)

💅 Enhancement

  • react-scripts

📝 Documentation

  • react-scripts
    • #3971 Update instructions for continuous delivery with Netlify. (@hubgit)
    • #3894 Include {json,css} files in prettier command. (@reyronald)

🏠 Internal

  • create-react-app

Committers: 6

Migrating from 1.1.0 to 1.1.1

Inside any created project that has not been ejected, run:

npm install --save --save-exact [email protected]

or

yarn add --exact [email protected]

v1.1.0

15 Jan 00:57
d979964
Compare
Choose a tag to compare

1.1.0 (January 15, 2018)

🚀 New Feature

  • react-scripts

    • #3387 Add support for variable expansion in .env files. (@moos)
  • react-error-overlay

    • #3474 Allow the error overlay to be unregistered. (@Timer)
  • create-react-app

🐛 Bug Fix

  • babel-preset-react-app, react-scripts

    • #3788 Fix object destructuring inside an array on Node 6. (@gaearon)
  • react-dev-utils

  • create-react-app

  • react-scripts

    • #3537 Add mjs and jsx filename extensions to file-loader exclude pattern. (@iansu)
    • #3511 Unmount the component in the default generated test. (@gaearon)

💅 Enhancement

  • react-scripts

  • create-react-app

  • react-dev-utils

  • react-dev-utils, react-error-overlay

  • react-dev-utils, react-scripts

    • #3721 Support setting none in REACT_EDITOR environment variable. (@raerpo)
  • eslint-config-react-app

📝 Documentation

🏠 Internal

Read more

v1.0.17

03 Nov 18:28
Compare
Choose a tag to compare

1.0.17 (November 3, 2017)

💅 Enhancement

📝 Documentation

Committers: 3

Migrating from 1.0.16 to 1.0.17

Inside any created project that has not been ejected, run:

npm install --save --save-exact [email protected]

or

yarn add --exact [email protected]

v1.0.16

31 Oct 10:42
Compare
Choose a tag to compare

1.0.16 (October 31, 2017) 🎃

🐛 Bug Fix

  • react-scripts

    • #3374 Set correct image type and sizes in manifest.json. (@piotr-cz)
  • react-dev-utils

    • #3368 Fix a crash in development mode in older browsers. (@felthy)

Committers: 2

Migrating from 1.0.15 to 1.0.16

Inside any created project that has not been ejected, run:

npm install --save --save-exact [email protected]

or

yarn add --exact [email protected]

v1.0.15

31 Oct 09:03
Compare
Choose a tag to compare

1.0.15 (October 30, 2017)

🐛 Bug Fix

  • react-scripts

  • react-dev-utils, react-scripts

    • #3230 Fix watching for changes in src/node_modules. (@xjlim)

💅 Enhancement

  • react-scripts

  • babel-preset-react-app, react-dev-utils, react-error-overlay, react-scripts

  • react-dev-utils, react-error-overlay

  • create-react-app

    • #3355 Add preflight CWD check for npm to detect bad Windows setups. (@gaearon)

📝 Documentation

🏠 Internal

  • Other

  • react-error-overlay

    • #3122 Fix for add .gitattributes file #3080. (@ijajmulani)
    • #3267 Use production React version for bundled overlay. (@Timer)
    • #3264 Add warning when using react-error-overlay in production. (@Timer)
    • #3263 react-error-overlay has no dependencies now (it's bundled). (@Timer)
    • #3142 Make error overlay run in the context of the iframe. (@tharakawj)
  • react-scripts

    • #3150 Remove an useless negation in registerServiceWorker.js. (@dunglas)
    • #3158 Remove output.path from dev webpack config. (@nikolas)
    • #3281 Add a workaround for Uglify incompatiblity with Safari 10.0 in the future. (@satyavh)
    • #3146 Fix reason-react support. (@lpalmes)
    • #3236 Update style-loader and disable inclusion of its HMR code in builds. (@insin)
    • #3246 Update url-loader to 0.6.2 for mime ReDoS vulnerability. (@d3viant0ne)
    • #2914 <!doctype html> -> <!DOCTYPE html>. (@Hurtak)

Committers: 24

Migrating from 1.0.14 to 1.0.15

Inside any created project that has not been ejected, run:

npm install --save --save-exact [email protected]

or

yarn add --exact [email protected]