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 valuesMySQL 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 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
Ruby 3.1 introduces pattern matching pin operator against expressionRuby 3.1 adds support for the expression and range when using the pattern matching pin operator.
Rails 7 adds previously_persisted? method to ActiveRecordRails 7 adds previously_persisted? method to check an object previously existed in the database and presently deleted.
React 17 introduces new JSX transformReact 17 introduces jsx-runtime and jsx-dev-runtime that enables the user to write JSX without importing React.
Rails 7 adds AudioAnalyzer to ActiveStorageRails 7 adds AudioAnalyzer to ActiveStorage to extract audio duration and bit_rate.
Rails 7 generators will raise errors if an attribute type is invalidRails 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-envStarting from Babel 7.14 @babel/plugin-proposal-class-properties and @babel/plugin-proposal-private-methods plugins are enabled by default in @babel/preset-env.
Rails 7 allows passing raw SQL as `on_duplicate` value to `#upsert_all`Rails 7 allow passing raw SQL statements to `on_duplicate` and `returning` option as value to ActiveRecord `#upsert_all` method.