diff --git a/.github/workflows/rubocop.yml b/.github/workflows/rubocop.yml
index 480e75ebb..a6ae7a864 100644
--- a/.github/workflows/rubocop.yml
+++ b/.github/workflows/rubocop.yml
@@ -14,6 +14,9 @@ jobs:
matrix:
os: [ubuntu-latest]
ruby: ['2.7', '3.0']
+ env:
+ # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps
+ BUNDLE_GEMFILE: ${{ github.workspace }}/LintingGemfile
steps:
- uses: actions/checkout@v4
@@ -23,7 +26,5 @@ jobs:
with:
ruby-version: ${{ matrix.ruby }}
bundler-cache: true
- - name: Install linting gems
- run: gem install rubocop rubocop-performance rubocop-minitest
- name: Run rubocop
- run: rubocop
+ run: bundle exec rubocop
diff --git a/.github/workflows/ruby.yml b/.github/workflows/ruby.yml
index f81b04b4d..e25ee7819 100644
--- a/.github/workflows/ruby.yml
+++ b/.github/workflows/ruby.yml
@@ -89,7 +89,7 @@ jobs:
with:
persist-credentials: false
- uses: actions/setup-node@v3
- - run: npm -g install yalc ${{ matrix.js_package_manager.installer }}
+ - run: sudo npm -g install yalc ${{ matrix.js_package_manager.installer }}
- run: yalc publish
- name: Save root node_modules to cache
uses: actions/cache@v3
@@ -105,12 +105,13 @@ jobs:
with:
bundler: 2.4.9
ruby-version: ${{ matrix.ruby }}
+ - run: bundle config set --local path 'test/dummy/vendor/bundle'
- run: ./test/bin/create-fake-js-package-managers ${{ matrix.js_package_manager.installer }}
- name: Save dummy app ruby gems to cache
uses: actions/cache@v3
with:
path: test/dummy/vendor/bundle
- key: dummy-app-gem-cache-${{ hashFiles('${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile.lock') }}
+ key: dummy-app-gem-cache-${{ hashFiles(format('{0}/gemfiles/{1}.gemfile.lock', github.workspace, matrix.gemfile)) }}
- name: Install Ruby Gems for dummy app
run: bundle lock --add-platform 'x86_64-linux' && bundle check --path=test/dummy/vendor/bundle || bundle _2.4.9_ install --frozen --path=test/dummy/vendor/bundle --jobs=4 --retry=3
- run: cd test/dummy && yalc add react_ujs && ${{ matrix.js_package_manager.installer }} install
diff --git a/Appraisals b/Appraisals
index 967ed8ecb..cce17d3b3 100644
--- a/Appraisals
+++ b/Appraisals
@@ -1,5 +1,4 @@
appraise 'sprockets_4' do
- gem 'rails', '~> 7.0.x'
gem 'sprockets', '~> 4.0.x'
gem 'sprockets-rails'
gem 'turbolinks', '~> 5'
@@ -7,7 +6,6 @@ appraise 'sprockets_4' do
end
appraise 'sprockets_3' do
- gem 'rails', '~> 7.0.x'
gem 'sprockets', '~> 3.5'
gem 'sprockets-rails'
gem 'turbolinks', '~> 5'
@@ -15,14 +13,5 @@ appraise 'sprockets_3' do
end
appraise 'shakapacker' do
- gem 'rails', '~> 7.0.x'
gem 'shakapacker', '7.2.0'
end
-
-appraise 'base' do
- # Appraisal adds `turbolinks` to this gemfile because it is
- # present in `./Gemfile`.
- # But it causes this gemfile to break, so it must be removed
- # from `./gemfiles/rails_5_no_sprockets.gemfile` manually.
- gem 'rails', '~> 7.0.x'
-end
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f31cc7306..3401de745 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,13 +1,26 @@
-# react-rails
+# Changelog for React-Rails
-If you need help upgrading `react-rails`, `webpacker` to `shakapacker`, or JS packages, contact justin@shakacode.com. The ShakaCode.com team is helping to maintain this Ruby gem. You also might want to consider the [react_on_rails](https://github.com/shakacode/react_on_rails) gem.
+If you need help upgrading `react-rails`, `webpacker` to `shakapacker`, or JS packages, contact justin@shakacode.com. We can upgrade your project and improve your development and customer experiences, allowing you to focus on building new features or fixing bugs instead.
-[#1209 2.7 Release Discussion](https://github.com/reactjs/react-rails/issues/1209)
+For an overview of working with us, see our [Client Engagement Model](https://www.shakacode.com/blog/client-engagement-model/) article and [how we bill for time](https://www.shakacode.com/blog/shortcut-jira-trello-github-toggl-time-and-task-tracking/).
+
+We also specialize in helping development teams lower infrastructure and CI costs. Check out our project [Control Plane Flow](https://github.com/shakacode/control-plane-flow/), which can allow you to get the ease of Heroku with the power of Kubernetes and big cost savings.
+
+If you think ShakaCode can help your project, [click here](https://meetings.hubspot.com/justingordon/30-minute-consultation) to book a call with [Justin Gordon](mailto:justin@shakacode.com), the creator of React on Rails and Shakapacker.
+
+You also might want to consider the [react_on_rails](https://github.com/shakacode/react_on_rails) gem.
## Unreleased
Changes since the last non-beta release.
-_Please add entries here for your pull requests that are not yet released. Include LINKS for PRs and committers._
+_Please add entries here for your pull requests that have not yet been released. Include LINKS for PRs and committers._
+
+## [3.2.1] - 2024-05-16
+
+#### Fixed
+- Replaced call to ReactRailsUJS.unmountComponents that was erroneously removed by [PR 1290](https://github.com/reactjs/react-rails/pull/1305) in 3.0.0 [PR 1339](https://github.com/reactjs/react-rails/pull/1339).
+
+- Prevent roots from being re-created when using React 18 [PR 1305](https://github.com/reactjs/react-rails/pull/1305) by [diogobeda](https://github.com/diogobeda)
## [3.2.0] - 2024-01-10
@@ -43,6 +56,8 @@ _Please add entries here for your pull requests that are not yet released. Inclu
## [2.7.0] - 2023-05-06
+[#1209 2.7 Release Discussion](https://github.com/reactjs/react-rails/issues/1209)
+
#### New Features
- Camelizes keys with primitive values, in addition to hashes #946
- Expose alternative implementations for `ReactUJS.getConstructor` #1050
@@ -573,7 +588,8 @@ _Please add entries here for your pull requests that are not yet released. Inclu
- Server rendering with `prerender: true`
- Transform `.jsx` in the asset pipeline
-[Unreleased]: https://github.com/reactjs/react-rails/compare/v3.2.0...main
+[Unreleased]: https://github.com/reactjs/react-rails/compare/v3.2.1...main
+[3.2.1]: https://github.com/reactjs/react-rails/compare/v3.2.1...v3.2.1
[3.2.0]: https://github.com/reactjs/react-rails/compare/v3.1.1...v3.2.0
[3.1.1]: https://github.com/reactjs/react-rails/compare/v3.1.0...v3.1.1
[3.1.0]: https://github.com/reactjs/react-rails/compare/v3.0.0...v3.1.0
diff --git a/Gemfile b/Gemfile
index 8926579c4..c56c88f84 100644
--- a/Gemfile
+++ b/Gemfile
@@ -3,4 +3,3 @@
source "http://rubygems.org/"
gemspec
-# This is an optional dev-dependency, required whenever sprockets is required
diff --git a/Gemfile.lock b/Gemfile.lock
index 4583cca96..086186705 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,7 +1,7 @@
PATH
remote: .
specs:
- react-rails (3.2.0)
+ react-rails (3.2.1)
babel-transpiler (>= 0.7.0)
connection_pool
execjs
@@ -11,25 +11,71 @@ PATH
GEM
remote: http://rubygems.org/
specs:
- actionpack (6.0.2.1)
- actionview (= 6.0.2.1)
- activesupport (= 6.0.2.1)
- rack (~> 2.0, >= 2.0.8)
+ actioncable (7.0.8.1)
+ actionpack (= 7.0.8.1)
+ activesupport (= 7.0.8.1)
+ nio4r (~> 2.0)
+ websocket-driver (>= 0.6.1)
+ actionmailbox (7.0.8.1)
+ actionpack (= 7.0.8.1)
+ activejob (= 7.0.8.1)
+ activerecord (= 7.0.8.1)
+ activestorage (= 7.0.8.1)
+ activesupport (= 7.0.8.1)
+ mail (>= 2.7.1)
+ net-imap
+ net-pop
+ net-smtp
+ actionmailer (7.0.8.1)
+ actionpack (= 7.0.8.1)
+ actionview (= 7.0.8.1)
+ activejob (= 7.0.8.1)
+ activesupport (= 7.0.8.1)
+ mail (~> 2.5, >= 2.5.4)
+ net-imap
+ net-pop
+ net-smtp
+ rails-dom-testing (~> 2.0)
+ actionpack (7.0.8.1)
+ actionview (= 7.0.8.1)
+ activesupport (= 7.0.8.1)
+ rack (~> 2.0, >= 2.2.4)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.2.0)
- actionview (6.0.2.1)
- activesupport (= 6.0.2.1)
+ actiontext (7.0.8.1)
+ actionpack (= 7.0.8.1)
+ activerecord (= 7.0.8.1)
+ activestorage (= 7.0.8.1)
+ activesupport (= 7.0.8.1)
+ globalid (>= 0.6.0)
+ nokogiri (>= 1.8.5)
+ actionview (7.0.8.1)
+ activesupport (= 7.0.8.1)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.1, >= 1.2.0)
- activesupport (6.0.2.1)
+ activejob (7.0.8.1)
+ activesupport (= 7.0.8.1)
+ globalid (>= 0.3.6)
+ activemodel (7.0.8.1)
+ activesupport (= 7.0.8.1)
+ activerecord (7.0.8.1)
+ activemodel (= 7.0.8.1)
+ activesupport (= 7.0.8.1)
+ activestorage (7.0.8.1)
+ actionpack (= 7.0.8.1)
+ activejob (= 7.0.8.1)
+ activerecord (= 7.0.8.1)
+ activesupport (= 7.0.8.1)
+ marcel (~> 1.0)
+ mini_mime (>= 1.1.0)
+ activesupport (7.0.8.1)
concurrent-ruby (~> 1.0, >= 1.0.2)
- i18n (>= 0.7, < 2)
- minitest (~> 5.1)
- tzinfo (~> 1.1)
- zeitwerk (~> 2.2)
+ i18n (>= 1.6, < 2)
+ minitest (>= 5.1)
+ tzinfo (~> 2.0)
addressable (2.8.0)
public_suffix (>= 2.0.2, < 5.0)
appraisal (2.4.1)
@@ -64,6 +110,7 @@ GEM
concurrent-ruby (1.1.10)
connection_pool (2.3.0)
crass (1.0.6)
+ date (3.3.4)
docile (1.1.5)
erubi (1.9.0)
es5-shim-rails (4.0.1)
@@ -73,6 +120,8 @@ GEM
ffi (1.15.5)
formatador (1.1.0)
gem-release (2.2.2)
+ globalid (1.2.1)
+ activesupport (>= 6.1)
guard (2.18.0)
formatador (>= 0.2.4)
listen (>= 2.7, < 4.0)
@@ -99,12 +148,30 @@ GEM
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
lumberjack (1.2.8)
+ mail (2.8.1)
+ mini_mime (>= 0.1.1)
+ net-imap
+ net-pop
+ net-smtp
+ marcel (1.0.4)
matrix (0.4.2)
method_source (1.0.0)
- mini_mime (1.0.2)
- mini_portile2 (2.8.5)
+ mini_mime (1.1.2)
+ mini_portile2 (2.8.6)
minitest (5.17.0)
+ minitest-retry (0.2.2)
+ minitest (>= 5.0)
nenv (0.3.0)
+ net-imap (0.4.11)
+ date
+ net-protocol
+ net-pop (0.1.2)
+ net-protocol
+ net-protocol (0.2.2)
+ timeout
+ net-smtp (0.5.0)
+ net-protocol
+ nio4r (2.7.3)
nokogiri (1.14.3)
mini_portile2 (~> 2.8.0)
racc (~> 1.4)
@@ -127,17 +194,32 @@ GEM
rack (2.2.6.4)
rack-test (2.0.2)
rack (>= 1.3)
+ rails (7.0.8.1)
+ actioncable (= 7.0.8.1)
+ actionmailbox (= 7.0.8.1)
+ actionmailer (= 7.0.8.1)
+ actionpack (= 7.0.8.1)
+ actiontext (= 7.0.8.1)
+ actionview (= 7.0.8.1)
+ activejob (= 7.0.8.1)
+ activemodel (= 7.0.8.1)
+ activerecord (= 7.0.8.1)
+ activestorage (= 7.0.8.1)
+ activesupport (= 7.0.8.1)
+ bundler (>= 1.15.0)
+ railties (= 7.0.8.1)
rails-dom-testing (2.0.3)
activesupport (>= 4.2.0)
nokogiri (>= 1.6)
rails-html-sanitizer (1.4.4)
loofah (~> 2.19, >= 2.19.1)
- railties (6.0.2.1)
- actionpack (= 6.0.2.1)
- activesupport (= 6.0.2.1)
+ railties (7.0.8.1)
+ actionpack (= 7.0.8.1)
+ activesupport (= 7.0.8.1)
method_source
- rake (>= 0.8.7)
- thor (>= 0.20.3, < 2.0)
+ rake (>= 12.2)
+ thor (~> 1.0)
+ zeitwerk (~> 2.5)
rake (13.0.1)
rb-fsevent (0.11.2)
rb-inotify (0.10.1)
@@ -157,11 +239,18 @@ GEM
simplecov-html (0.10.2)
test-unit (2.5.5)
thor (1.2.1)
- thread_safe (0.3.6)
tilt (2.1.0)
- tzinfo (1.2.10)
- thread_safe (~> 0.1)
+ timeout (0.4.1)
+ turbo-rails (2.0.5)
+ actionpack (>= 6.0.0)
+ activejob (>= 6.0.0)
+ railties (>= 6.0.0)
+ tzinfo (2.0.6)
+ concurrent-ruby (~> 1.0)
websocket (1.2.9)
+ websocket-driver (0.7.6)
+ websocket-extensions (>= 0.1.0)
+ websocket-extensions (0.1.5)
xpath (3.2.0)
nokogiri (~> 1.8)
zeitwerk (2.6.6)
@@ -183,11 +272,14 @@ DEPENDENCIES
guard-minitest
jbuilder
listen (~> 3.0.0)
+ minitest-retry
package_json
pry-byebug
+ rails (~> 7.0.7, >= 7.0.7.2)
react-rails!
selenium-webdriver
test-unit (~> 2.5)
+ turbo-rails
BUNDLED WITH
2.4.9
diff --git a/LintingGemfile b/LintingGemfile
new file mode 100644
index 000000000..7edffc5aa
--- /dev/null
+++ b/LintingGemfile
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+source "http://rubygems.org/"
+# To install gems from this Gemfile locally, use BUNDLE_GEMFILE=./LintingGemfile bundle exec rubocop
+gem "rubocop"
+gem "rubocop-minitest"
+gem "rubocop-performance"
diff --git a/LintingGemfile.lock b/LintingGemfile.lock
new file mode 100644
index 000000000..85af7abf3
--- /dev/null
+++ b/LintingGemfile.lock
@@ -0,0 +1,47 @@
+GEM
+ remote: http://rubygems.org/
+ specs:
+ ast (2.4.2)
+ json (2.7.2)
+ language_server-protocol (3.17.0.3)
+ parallel (1.24.0)
+ parser (3.3.1.0)
+ ast (~> 2.4.1)
+ racc
+ racc (1.7.3)
+ rainbow (3.1.1)
+ regexp_parser (2.9.0)
+ rexml (3.2.6)
+ rubocop (1.63.5)
+ json (~> 2.3)
+ language_server-protocol (>= 3.17.0)
+ parallel (~> 1.10)
+ parser (>= 3.3.0.2)
+ rainbow (>= 2.2.2, < 4.0)
+ regexp_parser (>= 1.8, < 3.0)
+ rexml (>= 3.2.5, < 4.0)
+ rubocop-ast (>= 1.31.1, < 2.0)
+ ruby-progressbar (~> 1.7)
+ unicode-display_width (>= 2.4.0, < 3.0)
+ rubocop-ast (1.31.3)
+ parser (>= 3.3.1.0)
+ rubocop-minitest (0.35.0)
+ rubocop (>= 1.61, < 2.0)
+ rubocop-ast (>= 1.31.1, < 2.0)
+ rubocop-performance (1.21.0)
+ rubocop (>= 1.48.1, < 2.0)
+ rubocop-ast (>= 1.31.1, < 2.0)
+ ruby-progressbar (1.13.0)
+ unicode-display_width (2.5.0)
+
+PLATFORMS
+ x86_64-darwin-20
+ x86_64-linux
+
+DEPENDENCIES
+ rubocop
+ rubocop-minitest
+ rubocop-performance
+
+BUNDLED WITH
+ 2.4.9
diff --git a/README.md b/README.md
index 354803e5e..235af5008 100644
--- a/README.md
+++ b/README.md
@@ -4,10 +4,7 @@
[](https://www.npmjs.com/package/react_ujs)
[](https://github.com/reactjs/react-rails/actions/workflows/ruby.yml)
-## News
-V3.0.0 is released with Shakapacker v7 support, including SSR. Please try it out and report any issues. We'll try to address any critical issues ASAP.
-
-For version 2.7 documentation checkout [2.7-stable](https://github.com/reactjs/react-rails/tree/2.7-stable) branch.
+For version 2.7 documentation, visit the [2.7-stable](https://github.com/reactjs/react-rails/tree/2.7-stable) branch.
## Summary
React-Rails is a flexible tool to use [React](http://facebook.github.io/react/) with Rails. The benefits:
@@ -16,12 +13,26 @@ React-Rails is a flexible tool to use [React](http://facebook.github.io/react/)
* Supports Sprockets 4.x, 3.x
* Lets you use [JSX](http://facebook.github.io/react/docs/jsx-in-depth.html), [ES6](http://es6-features.org/), [TypeScript](https://www.typescriptlang.org/), [CoffeeScript](http://coffeescript.org/)
+---
+
+While ShakaCode will continue to support this gem, you might consider migrating to [React on Rails](https://github.com/shakacode/react_on_rails) or [React on Rails Pro with proper Node rendering](https://www.shakacode.com/react-on-rails-pro/).
+
+Why? React on Rails code receives much more active development and testing. For example, consider the [ReactRailsUJS](https://github.com/reactjs/react-rails/blob/master/react_ujs/index.js) implementation compared to the [ReactOnRails Node package](https://github.com/shakacode/react_on_rails/tree/master/node_package) which is written in TypeScript. For another example, React on Rails has work underway to support the latest React features, such as [React Server Components](https://react.dev/reference/rsc/server-components).
+
+You can find [migration to React on Rails steps here](https://github.com/reactjs/react-rails/blob/master/docs/migrating-from-react-rails-to-react_on_rails.md).
+
---
## ShakaCode Support
-[ShakaCode](https://www.shakacode.com) offers support for upgrading this gem, and related gems such as Webpacker and using Shakapacker. If interested, contact Justin Gordon, [justin@shakacode.com](mailto:justin@shakacode.com). We're also [hiring](https://jobs.lever.co/shakacode/3bdbfdb3-4495-4611-a279-01dddb351abe)!
+[ShakaCode](https://www.shakacode.com) focuses on helping Ruby on Rails teams use React and Webpack better. We can upgrade your project and improve your development and customer experiences, allowing you to focus on building new features or fixing bugs instead.
+
+For an overview of working with us, see our [Client Engagement Model](https://www.shakacode.com/blog/client-engagement-model/) article and [how we bill for time](https://www.shakacode.com/blog/shortcut-jira-trello-github-toggl-time-and-task-tracking/).
+
+We also specialize in helping development teams lower infrastructure and CI costs. Check out our project [Control Plane Flow](https://github.com/shakacode/control-plane-flow/), which can allow you to get the ease of Heroku with the power of Kubernetes and big cost savings.
+
+If you think ShakaCode can help your project, [click here](https://meetings.hubspot.com/justingordon/30-minute-consultation) to book a call with [Justin Gordon](mailto:justin@shakacode.com), the creator of React on Rails and Shakapacker.
-Here's a testimonial of how ShakaCode can help, from [Florian Gรถรler](https://github.com/FGoessler) of [Blinkist](https://www.blinkist.com/), January 2, 2023:
+Here's a testimonial of how ShakaCode can help from [Florian Gรถรler](https://github.com/FGoessler) of [Blinkist](https://www.blinkist.com/), January 2, 2023:
> Hey Justin ๐
>
> I just wanted to let you know that we today shipped the webpacker to shakapacker upgrades and it all seems to be running smoothly! Thanks again for all your support and your teams work! ๐
@@ -30,11 +41,11 @@ Here's a testimonial of how ShakaCode can help, from [Florian Gรถรler](https://
>
> Have a great 2023 and maybe we get to work together again later in the year! ๐
-Read the [full review here](https://clutch.co/profile/shakacode#reviews?sort_by=date_DESC#review-2118154). Here's [another review of a Shakapacker migration that led to more work](https://clutch.co/profile/shakacode#reviews?sort_by=date_DESC#review-2096078).
+Read the [full review here](https://clutch.co/profile/shakacode#reviews?sort_by=date_DESC#review-2118154).
## Resources
* [Click to join **React + Rails Slack**](https://reactrails.slack.com/join/shared_invite/enQtNjY3NTczMjczNzYxLTlmYjdiZmY3MTVlMzU2YWE0OWM0MzNiZDI0MzdkZGFiZTFkYTFkOGVjODBmOWEyYWQ3MzA2NGE1YWJjNmVlMGE). Then join the channel `#react-rails`.
-* If you are upgrading, you might consider migrating to the [react_on_rails](https://github.com/shakacode/react_on_rails) gem.
+* If upgrading, consider migrating to the [react_on_rails](https://github.com/shakacode/react_on_rails) gem.
* Source code example utilizing React-Rails: https://github.com/BookOfGreg/react-rails-example-app
## Documentation
@@ -77,32 +88,24 @@ Read the [full review here](https://clutch.co/profile/shakacode#reviews?sort_by=
- [HMR](docs/common-errors.md#hmr)
- [Tests in component directory](docs/common-errors.md#tests-in-component-directory)
-After reading this README file, additional information about React-Rails can be found in the Wiki page:
+After reading this README file, additional information about React-Rails can be found on the Wiki page:
https://github.com/reactjs/React-Rails/wiki
-The Wiki page features a significant amount of additional information about React-Rails which includes instructional articles and answers to the most frequently asked questions.
+The Wiki page features a significant amount of additional information about React-Rails, including instructional articles and answers to the most frequently asked questions.
## Related Projects
-- [webpacker-react](https://github.com/renchap/webpacker-react): Integration of React with Rails utilizing Webpack with Hot Module Replacement (HMR).
-- [The React on Rails Course](https://learnetto.com/users/hrishio/courses/the-free-react-on-rails-5-course) A video course which teaches the basics of React and how to get started using it in Rails with `react-rails`.
- [react\_on\_rails](https://github.com/shakacode/react_on_rails): Integration of React with Rails utilizing Webpack, Redux, React-Router.
-- [react-rails-hot-loader](https://github.com/rmosolgo/react-rails-hot-loader) Simple live-reloader for `react-rails`.
+- [React on Rails Pro](https://www.shakacode.com/react-on-rails-pro/):React on Rails with Node rendering and many other performance enhancements.
- [react-rails-benchmark_renderer](https://github.com/pboling/react-rails-benchmark_renderer) adds performance instrumentation to server rendering.
- [Ruby Hyperstack](https://hyperstack.org/): Use Ruby to build reactive user interfaces with React.
## Contributing
-๐ Thanks for taking the time to contribute! ๐
-
-With 5 Million+ downloads of the react-rails Gem and another 2 Million+ downloads of react_ujs on NPM, you're helping the biggest React + Rails community!
-
-By contributing to React-Rails, you agree to abide by the [code of conduct](https://github.com/reactjs/react-rails/blob/main/CODE_OF_CONDUCT.md).
-
-You can always help by submitting patches or triaging issues. Even offering reproduction steps to issues is incredibly helpful!
+๐ Thanks for taking the time to contribute! ๐ See [CONTRIBUTING.md](./CONTRIBUTING.md) for more details.
# Supporters
-The following companies support the development of this and other open-source projects maintained by ShakaCode by providing licenses to the ShakaCode team. ShakaCode stands by the usefulness of these products!
+The following companies provide licenses to the ShakaCode team, supporting the development of this and other open-source projects maintained by ShakaCode. ShakaCode stands by the usefulness of these products!