Steps to migrate a React Native project from 0.5.x to 0.6.x

Steps to migrate a React Native project from 0.5.x to 0.6.x

Migrations always give headaches and even more if the system you are trying to migrate is not well structured and of course, it's a thing that people(clients or devs) tend to avoid due different reasons.

This time I was in charge of migrating a React Native project that has been in production for at least 3 years and receiving updates from time to time. This app handles hundreds and sometimes thousands of visits per day.

This migration was necessary to support new libraries, stability and stores approval because the new policies from each store (Google Play and Apple Store).

So, in case you are about or you are in the process of performing a migration, let me help you by explaining to you the steps I followed to ensure a correct migration (from my point of view).

Steps

  1. List all the packages you are using.
  2. Find the latest version of every package and begin a research of each one, this should specifically in the release notes to see if the current functionality you have in your app, won't be affected or sometimes completely removed in the latest version.
  3. Make some notes about every package you have, the latest version features and the compatibility with your current app behaviour.
  4. Once you have a detailed summary of your packages and their newest versions, use this tool to review the changes from the React Native version you have and the one you want to upgrade it to. https://react-native-community.github.io/upgrade-helper/
  5. Begin the replacement of one plugin at once, at some point the migration will ask you to upgrade more than 1 project at a time and this is completely normal in case a package depends on another one.
  6. Always write some notes about the migration you are having and list all the errors presented during the upgrade.
  7. Once you have replaced the old package, make sure you are testing the functionality within your app and see if everything it's working as expected.
  8. Repeat the same replacement process until you finish all of them.
  9. At this point you have the list of packages and a good documentation which it will be very helpful in the future.

Migration is a stressful way to keep software always running and with the latest packages, so make sure to upgrade your packages regularly to avoid perform a big migration that will consume lots of time.