React 18 improves the existing behavior of SuspenseReact 18 delays committing everything inside the Suspense boundary (the suspended component and all its siblings) until the suspended data resolves.
Rails 7 allows setting cache expiry, as an absolute timestampWith the introduction of expires_at to Rails Cache it is now possible to set absolute timestamps for cache expiry.
Rails 7 adds change tracking methods for belongs_to associationsRails 7 adds the ability to track if an association has been pointed to a new target record in the previous save and whether it will point to a new target record in the next save.
React 18 adds automatic batchingReact 18 adds out-of-the-box performance improvements by doing more batching by default.
Rails 7 allows loading nested locales in the engineRails 7 allows loading nested locales inside the `/locales` directory by default for better organization in larger apps.
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 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.