Before proceeding to upgrade, please ensure you’re at Spree 5.2
Upgrade steps
Update gems
Fetch and run missing migrations
Re-run Admin Panel Install Generator
Admin Panel was completely rewritten to use Tailwind v4 so you need to re-run the install generator to setup Tailwind and remove any Dart Sass related files.Procfile.dev file to include the new Tailwind CSS watch task instead of the old Dart Sass watch task.
Add listen gem to Gemfile
You also need to addlisten gem to your Gemfile in the development group, unless you already have it.
Run counter cache rake tasks
Spree 5.3 introduces counter caches for products, taxons and variants. You need to run the following rake tasks to populate the counter caches:Generate product metrics
Spree 5.3 introduces product metrics for products. You need to run the following rake task to populate the product metrics:Replace auto_strip_attributes gem usage
auto_strip_attributes gem was removed from Spree due to bugs and conflicts with translations feature. Also it’s not required anymore as built-in Rails normalizes provides the same feature without an additional depepdency.
If you used auto_stripe_attributes in your application, you will need to change it to normalizez, eg.
Replace
Update Storefront to Tailwind v4 (Optional)
This is optional if you’re not using the
spree_storefront gem.bundle update previously installed Tailwind v4. You only need to run
- Overwrite
config/tailwind.config.jsfile with the new Tailwind v4 configuration. - Add
app/assets/tailwind/application.cssfile with the new Tailwind v4 styles. If you modifiedapp/assets/stylesheets/application.tailwind.cssfile, you will need to merge your changes with the new one.
Update Storefront to use pagy instead of kaminari (Optional)
This is optional if you’re not using the
spree_storefront gem.use_kaminari_pagination preference to true in your config/initializers/spree.rb file.
Products infinite scroll fix
Please replace the contents of yourshow_more_button.html.erb with the following code:
Posts pagination
In the following files:page_sections/_post_grid.html.erbposts/_pagination.html.erb
Include Page Builder factories (Optional)
Page Builder was extracted to a separate gem (spree_page_builder) so you need to include the Page Builder factories in your test suite if you were using them in your tests
Add this line to your spec_helper.rb file:
Updating Spree Extensions
If you maintain a Spree extension, the following changes may be required to ensure compatibility with Spree 5.3.Admin Controller Changes
Use prepend_before_action for filters that modify params[:q]
In Spree 5.3, the ResourceController#load_resource before_action calls collection which builds the search query using search_params. If your extension uses before_actions to load data needed for filtering (e.g., loading a vendor to filter products), you must use prepend_before_action to ensure your filter runs before load_resource.
Before (Spree 5.2):
Replace assign_extra_collection_params with search_params override
The assign_extra_collection_params method is no longer used in Spree 5.3. Instead, override the search_params method to add custom Ransack filters.
Before (Spree 5.2):
Date range filtering changes
The baseResourceController#search_params now processes date range params (created_at_gt, created_at_lt, etc.) and converts them to beginning_of_day. If you need end_of_day for _lt params, override search_params with custom handling:
Admin Tables API
The old filter partial system (Spree.admin.partials.*_filters) has been replaced with built-in filtering in the Tables API. Remove any filter partials and configure filtering directly in table column definitions.
Before (Spree 5.2):
Tailwind CSS v4 Migration
If your extension includes admin views with CSS classes, update Bootstrap utility classes to Tailwind v4:| Bootstrap | Tailwind v4 |
|---|---|
d-flex | flex |
d-none | hidden |
text-muted | text-gray-500 |
ml-2, mr-2 | ms-2, me-2 |
pl-2, pr-2 | ps-2, pe-2 |
font-weight-bold | font-bold |
Stimulus Tabs Controller
If your extension uses Bootstrap tabs, migrate to the Stimulus tabs controller: Before (Bootstrap):Progress Bar Component
Theprogress_bar_component signature has changed:
Before (Spree 5.2):
Table Column Visibility
All table columns now requiredefault: true to be visible by default:

