React 18 adds automatic batchingReact 18 adds out-of-the-box performance improvements by doing more batching by default.
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 nodeReact 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 transformReact 17 introduces jsx-runtime and jsx-dev-runtime that enables the user to write JSX without importing React.
React 17 runs useEffect cleanup functions asynchronouslyReact 17 executes useEffect cleanup functions asynchronously, improving the performance of large applications.
Redux 4.1.0 converts error messages from strings to error code indexesRedux 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 eventsReact'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 SyntheticEventStarting with React 17, KeyboardEvent.code property is available on React keyboard event.
React 17 removes event pooling in the modern browsersReact 17 removes event pooling in modern browsers as it does not improve the performance and causes confusion.
React 17 stops event bubbling in scroll eventIn React 17 the scroll event no longer bubbles to align with browser's behavior.