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 technologiesRuby 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.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.Rails now serves files via proxy
Rails 6.1 has added support to ActiveStorage that serves files via proxying.