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

    1. 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 supports rails/webpacker. The example test app in spec/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 default false because
    1. Production applications would typically have a server bundle that differs from the client bundle
    2. 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 either JSON or JS. 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.