react-on-rails v12.0.0 Release Notes
Release Date: 2020-07-08 // almost 4 years ago-
โฌ๏ธ For upgrade instructions, see docs/guides/upgrading-react-on-rails.md.
Major Improvements
๐ 1. React Hooks Support for top level components
- Typescript bindings ๐ 3. rails/webpacker "just works" with React on Rails by default. ๐ 4. i18n support for generating a JSON file rather than a JS file.
๐ฅ BREAKING CHANGE
In order to solve the issues regarding React Hooks compatibility, the number of parameters for functions is used to determine if you have a generator function that will get invoked to return a React component, or you are registering a functional React component. Alternately, you can set JavaScript property
renderFunction
on the function for which you want to return to be invoked to return the React component. In that case, you won't need to pass any unused params. PR 1268 by justin808โฌ๏ธ See docs/guides/upgrading-react-on-rails for details.
โก๏ธ Other Updates
react_on_rails
fully supportsrails/webpacker
. The example test app inspec/dummy
was recently converted over to use rails/webpacker v4+. It's a good example of how to leverage rails/webpacker's webpack configuration for server-side rendering.- ๐ Changed the precompile task to use the rails/webpacker one by default
- โก๏ธ Updated generators to use React hooks
- ๐ Requires the use of rails/webpacker view helpers
- 0๏ธโฃ If the webpacker webpack config files exist, then React on Rails will not override the default
assets:precompile setup by rails/webpacker. If you are not using the rails/webpacker setup for webpack,
then be sure to remove the JS files inside of config/webpack, like
config/webpack/production.js.
- Removed env_javascript_include_tag and env_stylesheet_link_tag as these are replaced by view helpers from rails/webpacker
- ๐ Removal of support for old Rubies and Rails.
- Removal of config.symlink_non_digested_assets_regex as it's no longer needed with rails/webpacker. If any business needs this, we can move the code to a separate gem.
- Added configuration option
same_bundle_for_client_and_server
with defaultfalse
because
- Production applications would typically have a server bundle that differs from the client bundle
- This change only affects trying to use HMR with react_on_rails with rails/webpacker.
The previous behavior was to always go to the webpack-dev-server for the server bundle if the webpack-dev-server was running and the server bundle was found in the
manifest.json
.If you are using the same bundle for client and server rendering, then set this configuration option to
true
. By justin808.- Added support to export locales in JSON format. New option added
i18n_output_format
which allows to specify locales format eitherJSON
orJS
.JSON
format is now the default.
Use this config setting to get the old behavior: config.i18n_output_format = 'js'
PR 1271 by ashgaliyev.
- Added Typescript definitions to the Node package. By justin808 and judahmeek in PR 1287.
- Removed restriction to keep the server bundle in the same directory with the client bundles. Rails/webpacker 4 has an advanced cleanup that will remove any files in the directory of other webpack files. Removing this restriction allows the server bundle to be created in a sibling directory. By justin808.