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.

Rails 7 adds support for `if_exists/if_not_exists` on `remove_foreign_key/add_foreign_key`

Rails 7 adds support for `if_exists/if_not_exists` on `remove_foreign_key/add_foreign_key` in migrations to silently ignore raised exceptions.

Rails 7 MySQL adapter improves the security of untyped bound values

MySQL adapter in Rails 7 casts numbers and booleans to string to avoid security vulnerabilities.

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

Ruby 3.1 introduces pattern matching pin operator against expression

Ruby 3.1 adds support for the expression and range when using the pattern matching pin operator.

Rails 7 adds previously_persisted? method to ActiveRecord

Rails 7 adds previously_persisted? method to check an object previously existed in the database and presently deleted.

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.

Rails 7 adds AudioAnalyzer to ActiveStorage

Rails 7 adds AudioAnalyzer to ActiveStorage to extract audio duration and bit_rate.

Rails 7 generators will raise errors if an attribute type is invalid

Rails 7 generators will validate the type by checking if it is of a default migration type and will raise an error if it is invalid.

Babel 7.14 enables class fields & private methods by default in @babel/preset-env

Starting from Babel 7.14 @babel/plugin-proposal-class-properties and @babel/plugin-proposal-private-methods plugins are enabled by default in @babel/preset-env.