This article shows the Tailwind 4 upgrade of the tailwindcss-rails gem.
Upgrades
1) Pointing to the correct tailwind in the Gemfile
gem 'tailwindcss-rails', "~> 4.0"
2) If you have previously pinned to a tailwindcss-ruby version, please remove it
# gem "tailwindcss-ruby", "~> 3.4"
3) In your application.tailwind.css, replace the @tailwind directive
@tailwind base;
@tailwind components;
@tailwind utilities;
4) Replace them with:
@import 'tailwindcss';
5) In your tailwind.config.js, removes the default plugins:
require('@tailwindcss/forms'),
require('@tailwindcss/typography'),
require('@tailwindcss/container-queries'),
6) If you are using these or other additional plugins, please ensure you import them via a package manager.
7) Bundle install/upgrade
8) Run the upgrade utility.
rails tailwindcss:upgrade
After this step, your tailwind.config.js will be removed, and your application.tailwind.css will be moved to tailwind/application.css
Tuning
1) The behavior of the class scanner has changed for ERB.
<!-- in v3, both bg-sky-100 and bg-sky-200 will be picked up. But in v4, only the former will be picked up. -->
<div class="<% if something %>bg-sky-100<% else %>bg-sky-200<% end %> px-3 py-1">test</div>
You could fix this by @apply. For example:
.category {
@apply bg-sky-100 px-3 px-1;
}
.category.active {
@apply bg-sky-200 px-3 px-1;
}
Then:
<div class="category <% if something %>active<% end %>">test</div>
2) Deprecated classes:
<!-- v3 -->
<div class="bg-black bg-opacity-50"></div>
<!-- v4 -->
<div class="bg-black/50"></div>
Ref: https://tailwindcss.com/docs/upgrade-guide#removed-deprecated-utilities
3) Renamed classes:
<!-- v3 -->
<div class="rounded"></div>
<!-- v4 -->
<div class="rounded-sm"></div>
Ref: https://tailwindcss.com/docs/upgrade-guide#renamed-utilities
Full guides
1) The tailwindcss-rails gem
2) Tailwind official