React 18 introduces new root API ( ReactDOM.createRoot )

React 18 adds the new root API that comes up with the new out-of-the-box improvements.

React 17 attaches events to the root DOM container instead of the document node

React 17 delegates events to the root node instead of the document node, making it easier to embed React into apps built with other technologies

React 17 introduces new JSX transform

React 17 introduces jsx-runtime and jsx-dev-runtime that enables the user to write JSX without importing React.

React 17 runs useEffect cleanup functions asynchronously

React 17 executes useEffect cleanup functions asynchronously, improving the performance of large applications.

Redux 4.1.0 converts error messages from strings to error code indexes

Redux 4.1.0 extracts error messages from production build, converts them into error code indexes, thereby shrinking the bundle size.

React 17 internally uses the browser's focusin and focusout events for onFocus and onBlur events

React's onFocus and onBlur events have switched to using the native focusin and focusout events under the hood.

React 17 adds support for KeyboardEvent.code property to SyntheticEvent

Starting with React 17, KeyboardEvent.code property is available on React keyboard event.

React 17 removes event pooling in the modern browsers

React 17 removes event pooling in modern browsers as it does not improve the performance and causes confusion.

React 17 stops event bubbling in scroll event

In React 17 the scroll event no longer bubbles to align with browser's behavior.