Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

babel-plugin-optimize-react

facebookincubator1.1kMIT0.0.4

Babel plugin for optimizing common React patterns

readme

babel-plugin-optimize-react

This Babel 7 plugin optimizes React hooks by transforming common patterns into more effecient output when using with tools such as Create React App. For example, with this plugin the following output is optimized as shown:

// Original
var _useState = Object(react__WEBPACK_IMPORTED_MODULE_1_["useState"])(Math.random()),
    _State2 = Object(_Users_gaearon_p_create_rreact_app_node_modules_babel_runtime_helpers_esm_sliceToArray_WEBPACK_IMPORTED_MODULE_0__["default"])(_useState, 1),
    value = _useState2[0];

// With this plugin
var useState = react__WEBPACK_IMPORTED_MODULE_1_.useState;
var __ref__0 = useState(Math.random());
var value = __ref__0[0];

Named imports to hooks get transformed

// Original
import React, {useState} from 'react';

// With this plugin
import React from 'react';
const {useState} = React;

Array destructuring transform for React's built-in hooks

// Original
const [counter, setCounter] = useState(0);

// With this plugin
const __ref__0 = useState(0);
const counter = __ref__0[0];
const setCounter = __ref__0[1];

React.createElement becomes a hoisted constant

// Original
import React from 'react';

function MyComponent() {
  return React.createElement('div', null, 'Hello world');
}

// With this plugin
import React from 'react';
const __reactCreateElement__ = React.createElement;

function MyComponent() {
  return __reactCreateElement__('div', null, 'Hello world');
}

changelog

5.0.1 (2022-04-12)

Create React App 5.0.1 is a maintenance release that improves compatibility with React 18. We've also updated our templates to use createRoot and relaxed our check for older versions of Create React App.

Migrating from 5.0.0 to 5.0.1

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

npm install --save --save-exact react-scripts@5.0.1

or

yarn add --exact react-scripts@5.0.1

:bug: Bug Fix

:nail_care: Enhancement

  • cra-template-typescript, cra-template, react-scripts
  • cra-template-typescript, cra-template
  • eslint-config-react-app

:memo: Documentation

:house: Internal

Committers: 11

5.0.0 (2021-12-14)

Create React App 5.0 is a major release with several new features and the latest version of all major dependencies.

Thanks to all the maintainers and contributors who worked so hard on this release! 🙌

Highlights

  • webpack 5 (#11201)
  • Jest 27 (#11338)
  • ESLint 8 (#11375)
  • PostCSS 8 (#11121)
  • Fast Refresh improvements and bug fixes (#11105)
  • Support for Tailwind (#11717)
  • Improved package manager detection (#11322)
  • Unpinned all dependencies for better compatibility with other tools (#11474)
  • Dropped support for Node 10 and 12

Migrating from 4.0.x to 5.0.0

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

npm install --save --save-exact react-scripts@5.0.0

or

yarn add --exact react-scripts@5.0.0

NOTE: You may need to delete your node_modules folder and reinstall your dependencies by running npm install (or yarn) if you encounter errors after upgrading.

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 is now supported out of the box.

Breaking Changes

Like any major release, `react-scripts@5.0.0` contains a number of breaking changes. We expect that they won't affect every user, but we recommend you look over this section to see if something is relevant to you. If we missed something, please file a new issue.

Dropped support for Node 10 and 12 Node 10 reached End-of-Life in April 2021 and Node 12 will be End-of-Life in April 2022. Going forward we will only support the latest LTS release of Node.js.

Full Changelog

:boom: Breaking Change

  • create-react-app
  • babel-preset-react-app, cra-template-typescript, cra-template, create-react-app, eslint-config-react-app, react-app-polyfill, react-dev-utils, react-error-overlay, react-scripts
  • eslint-config-react-app, react-error-overlay, react-scripts
  • react-scripts

:bug: Bug Fix

:nail_care: Enhancement

  • react-scripts
    • #11717 Add support for Tailwind (@iansu)
    • #8227 Add source-map-loader for debugging into original source of node_modules libraries that contain sourcemaps (@justingrant)
    • #10499 Remove ESLint verification when opting-out (@mrmckeb)
  • eslint-config-react-app, react-error-overlay, react-scripts
  • create-react-app
  • react-dev-utils
    • #11105 fix: fast refresh stops on needed bail outs (@pmmmwh)
    • #10205 Update ModuleNotFoundPlugin to support Webpack 5 (@raix)
  • create-react-app, react-scripts

:memo: Documentation

:house: Internal

  • Other
  • create-react-app
  • babel-plugin-named-asset-import, babel-preset-react-app, confusing-browser-globals, create-react-app, react-app-polyfill, react-dev-utils, react-error-overlay, react-scripts
  • react-scripts
  • babel-plugin-named-asset-import, confusing-browser-globals, create-react-app, eslint-config-react-app, react-dev-utils, react-error-overlay, react-scripts
  • confusing-browser-globals, cra-template-typescript, cra-template, create-react-app
  • react-error-overlay, react-scripts
  • babel-preset-react-app, cra-template-typescript, cra-template, create-react-app, eslint-config-react-app, react-app-polyfill, react-dev-utils, react-error-overlay, react-scripts

:hammer: Underlying Tools

  • react-dev-utils, react-scripts
  • react-scripts
  • babel-plugin-named-asset-import, confusing-browser-globals, create-react-app, react-dev-utils, react-error-overlay, react-scripts
    • #11338 Upgrade jest and related packages from 26.6.0 to 27.1.0 (@krreet)
  • eslint-config-react-app, react-error-overlay, react-scripts
  • babel-preset-react-app, react-dev-utils, react-error-overlay, react-scripts
  • react-dev-utils

Committers: 34

Releases Before 5.x

Please refer to CHANGELOG-4.x.md for earlier versions.