> ## Documentation Index
> Fetch the complete documentation index at: https://spreecommerce.org/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 4.1 to 4.2

> This guide covers upgrading a 4.1 Spree application to Spree 4.2.

<Note>
  If you're on an older version than 4.1 please follow previous upgrade guides and perform those upgrades incrementally\*\*, eg.

  1. [upgrade 3.7 to 4.0](3.7-to-4.0)
  2. [upgrade 4.0 to 4.1](4.0-to-4.1)
</Note>

## Update gems

Run the following command to update your gems to 4.2:

```bash theme={"theme":"night-owl"}
bundle update
```

## Remove SpreeMultiCurrency optional

If you used that gem in the past you need to remove it. Multi-Currency is now incorporated into Spree core and you cannot use that gem anymore.

1. Remove `spree_multi_currency` from your `Gemfile`

   ```bash theme={"theme":"night-owl"}
   bundle remove spree_multi_currency
   ```

2. Remove these preferences from your Spree initializer `config/initializers/spree.rb`:
   * `allow_currency_change`
   * `show_currency_selector`
   * `supported_currencies`

3. Remove `//= require spree/frontend/spree_multi_currency` from `vendor/assets/javascripts/spree/frontend/all.js`

4. Remove `//= require spree/backend/spree_multi_currency` from `vendor/assets/javascripts/spree/backend/all.js`

## Optional Remove SpreeI18n config

All international configuration is now kept on the `Store` model in the database rather than in initializer files.

If you used `spree_i18n` gem before please remove any `SpreeI18n::Config`references from your `config/initializers/spree.rb` file.

## Optional Add `deface` gem

If you used [Deface overrides](../../advanced/deface_overrides_tutorial#organizing-overrides) you will need to include `deface` in your `Gemfile` as it was removed from Spree / Spree Auth Devise / Spree Gateway dependencies.

```bash theme={"theme":"night-owl"}
bundle add deface
```

## Fix RMA migration

Please find a `add_stock_location_to_rma` migration in your `db/migrate` directory and change:

```ruby theme={"theme":"night-owl"}
class AddStockLocationToRma < ActiveRecord::Migration[4.2]
```

to

```ruby theme={"theme":"night-owl"}
class AddStockLocationToRMA < ActiveRecord::Migration[4.2]
```

## Install missing migrations

```bash theme={"theme":"night-owl"}
bin/rake spree:install:migrations
```

## Run migrations

```bash theme={"theme":"night-owl"}
bin/rails db:migrate
```

## Other things to remember

### Replace `fast_json` with `jsonapi-serializer`

Please follow [this guide to migrate your custom serializers](https://github.com/jsonapi-serializer/jsonapi-serializer#migrating-from-netflixfast_jsonapi).

### Migrate select2 3.5 to 4

Only if you've added new Admin Panel pages with Select2 dropdown - [this guide will help](https://select2.org/upgrading/migrating-from-35)

### Make sure you've got up to date Spree templates Storefront

If you're using Spree default Storefront `spree_frontend` gem make sure to update your templates, especially:

* [app/views/spree/shared/\_head.html.erb](https://github.com/spree/spree/blob/4-2-stable/frontend/app/views/spree/shared/_head.html.erb)
* [app/views/spree/shared/\_locale\_and\_currency.html.erb](https://github.com/spree/spree/blob/4-2-stable/frontend/app/views/spree/shared/_locale_and_currency.html.erb)
* [app/views/spree/shared/\_link\_to\_account.html.erb](https://github.com/spree/spree/blob/4-2-stable/frontend/app/views/spree/shared/_link_to_account.html.erb)
* [app/views/spree/shared/\_internationalization\_options.html.erb](https://github.com/spree/spree/blob/main/frontend/app/views/spree/shared/_internationalization_options.html.erb)
* [app/views/spree/shared/\_locale\_dropdown.html.erb](https://github.com/spree/spree/blob/4-2-stable/frontend/app/views/spree/shared/_locale_dropdown.html.erb)
* [app/views/spree/shared/\_currency\_dropdown.html.erb](https://github.com/spree/spree/blob/4-2-stable/frontend/app/views/spree/shared/_currency_dropdown.html.erb)
* [app/views/spree/shared/\_mobile\_navigation.html.erb](https://github.com/spree/spree/blob/4-2-stable/frontend/app/views/spree/shared/_mobile_navigation.html.erb)
* [app/views/spree/shared/\_mobile\_internationalization\_options.html.erb](https://github.com/spree/spree/blob/4-2-stable/frontend/app/views/spree/shared/_mobile_internationalization_options.html.erb)
* [app/views/spree/shared/\_nav\_bar.html.erb](https://github.com/spree/spree/blob/4-2-stable/frontend/app/views/spree/shared/_nav_bar.html.erb)
* [app/views/spree/shared/\_line\_item.html.erb](https://github.com/spree/spree/blob/4-2-stable/frontend/app/views/spree/shared/_line_item.html.erb)

Or simply run `bin/rails g spree:frontend:copy_storefront`

## Read the release notes

For information about changes contained within this release, please read the [4.2.0 Release Notes](https://github.com/spree/spree/releases/tag/v4.2.0).

## More info
