Major/New Features

Rails 5 support

Spree 3.2 is now compatible with Rails 5 compared to 3.1 which used to run on Rails 4.2. Thanks to that you can start using all of the new great features available in Rails 5

Contributed by Spark Solutions & Vinsol & John Hawthorn

Products Tagging

You can now tag Products additionally to just using Taxons. Tagging module uses acts-as-taggable-on gem. You can easily fetch a list of Products associated to any given tag(s) which should be very helpful for creating new dynamic products listings.

Contributed by Vishal Zambre

Promo code applier on Cart

Discount code applier was brought back to the Cart view in customer frontend. Now enhanced, more user friendly and using API V1.

Contributed by Vinsol

Extended Google Analytics Enhanced Ecommerce integration

Spree now passes more meaningful information into Google Analytics when adding Products to Cart like:

  • product category name
  • product brand name
  • variant description

Contributed by Spark Solutions

New Spree open source branding

We’ve changed logo for default customer frontend and Admin Panel to differentiate Spree Open Source project from Spree Commerce (company).

Contributed by Spark Solutions

Lighter and more user-friendly Admin Panel

We’ve removed a lot of unused, deprecated, outdated code and assets from the Admin Panel, overall reducing the codebase by a lot. We’ve also fixed a huge amount of UX issues like missing validation, bad navigation or lack of thereof and so on.

Contributed by Spark Solutions

Semantic versioning for future Extensions

We’re changing how extensions dependencies work. Previously you had to match extension branch to Spree branch. Starting from now master branch of all generated extensions will work with Spree >= 3.1 and < 4.0. Thanks to that we’re dropping versioning of extensions same as Spree and using standard Semantic versioning.

Contributed by Spark Solutions

More developer-friendly Extension generator

Extension template used by the generator includes now Travis CI config with settings to test extension against Spree 3.1, 3.2 & 3.3 (edge), PostgreSQL, MySQL, Ruby 2.2 & 2.3 thanks to Appraisals gem by thoughtbot.

Contributed by Spark Solutions


Update your Rails version to 5.0

Please follow the official Rails guide to upgrade your store.

Update Gemfile

gem 'spree', '~> 3.2.0'
gem 'spree_auth_devise', '~> 3.2.0'
gem 'spree_gateway', '~> 3.2.0'

Update your extensions

We’re changing how extensions dependencies work. Previously you had to match extension branch to Spree branch. Starting from now master branch of all spree-contrib extensions should work with Spree >= 3.1 and < 4.0. Please change your extensions in Gemfile eg.:


gem 'spree_braintree_vzero', github: 'spree-contrib/spree_braintree_vzero', branch: '3-1-stable'


gem 'spree_braintree_vzero', github: 'spree-contrib/spree_braintree_vzero'

Run bundle update

Install missing migrations

rails spree:install:migrations
rails spree_auth:install:migrations
rails spree_gateway:install:migrations

Run migrations

rails db:migrate

Other Gotchas

Ruby >= 2.2.2 required

As Rails 5 is now a dependency it requires at least Ruby 2.2.2 to run. Ruby 2.3 is also supported.

Noteworthy Changes

Also please review each of the noteworthy changes, and ensure your customizations or extensions are not effected. If you are affected by a change, and have any of your own tips please submit a PR to help the next person!

Full Changelog

You can view the full changes using Github Compare.

Noteworthy Changes

  • Removed previously deprecated Spree CMD installer

    Spark Solutions

  • Removed unused Spree::StoreController#apply_coupon_code action

    Spark Solutions

  • Removed Admin::SearchController and pointed Admin Panel search actions to API endpoints

    Spark Solutions

  • Removed previously deprecated Spree::ProductsHelper::line_item_description

    Spark Solutions

  • Removed unused method Spree::Admin::BaseHelper#attribute_name_for

    Spark Solutions

  • Removed unused Spree::Admin::InventorySettingsHelper

    Spark Solutions

  • Removed unused Spree::Admin::TablesHelper

    Spark Solutions

  • Removed unused Spree::Admin::ProductsHelper

    Spark Solutions

  • Removed unused method Spree::Admin::NavigationHelper#collapse_sidebar_link

    Spark Solutions

  • Removed unused method Spree::Admin::NavigationHelper#configurations_menu_item

    Spark Solutions

  • Moved Spree::PromotionRulesHelper to Spree::Admin::PromotionRulesHelper

    Spark Solutions

  • Fixed permissions for Product associations management in Admin Panel

    Spark Solutions

  • ActiveMerchant updated to ~> 1.59

    Spark Solutions

  • Added created_at to Variant model

    Spark Solutions

  • Additional Admin Panel usability fixes

    Nimish Gupta

  • Allow order to transit from resumed state to returned state

    Nimish Gupta

  • Changed state translation key in Admin Panel to status


  • Fixed API pagination per_page and current_page values (now always returned as integer)

    Spark Solutions

  • Display Spree version in Admin Panel

    Spark Solutions

    By default, it’s displayed only for Admin users who can manage the current Store, but can be disabled altogether by changing preferences:

    Spree::Config[:admin_show_version] = false in config/initializers/spree.rb

  • New preferences for Admin Panel per_page settings, default value for all of them is now Kaminari.config.default_per_page (by default 25)

    Spark Solutions

    • orders_per_page renamed to admin_orders_per_page
    • properties_per_page renamed to properties_per_page
    • promotions_per_page renamed to admin_promotions_per_page
    • customer_returns_per_page renamed to admin_customer_returns_per_page
    • added admin_users_per_page
  • Removed unused Spree::Admin::UsersController#json_data method

    Spark Solutions

  • Added validation errors and other UX fixes for return process in Admin Panel

    Spark Solutions

  • Added GitGub issue template

    Josh Powell

  • Added revert and deactivate methods to allow actions to take place when a Promotion is removed from the Cart

    Joe Connor

  • Use Spree::Money to display values in Sales Total report

    Spark Solutions

  • Fixed filtering out Products by discontinue_on in Admin Panel products index

    Joe Swann

  • Allow title separator to be customized

    Ryan Siddle

  • Additional fixes for Spree mounted in other then default / mountpoint

    Spark Solutions

  • Search for current Order in Frontend using guest token only

    Björn Andersson

  • Deprecated Spree::Calculator::FreeShipping

    Spark Solutions

  • Added promotion rule for shipping country

    Spark Solutions