Shopify successfully migrated two of its largest apps, Shopify Mobile and Shopify Point of Sale (POS) to React Native's New Architecture while maintaining weekly releases and serving millions of merchants. This migration involved a complex codebase with hundreds of screens and native modules, extensive custom components, and deep integration with first-party libraries like FlashList.
Overview
This article discusses Shopify's successful migration of their apps, Shopify Mobile and Shopify Point of Sale (POS), to React Native's New Architecture. It details their migration strategy, key outcomes, technical challenges faced, and lessons learned, providing valuable insights for other teams considering similar transitions.
What You'll Learn
How to maintain development velocity during a migration to React Native's New Architecture
Why minimizing code changes initially can prevent build issues during migration
How to identify and solve common migration issues at scale
When to implement phased rollouts for app updates
Prerequisites & Requirements
- Familiarity with React Native and mobile app development
- Experience with large-scale app migrations(optional)
Key Questions Answered
What are the key principles for migrating to React Native's New Architecture?
What common migration issues did Shopify face during their transition?
How did Shopify manage their rollout strategy for the new architecture?
What performance improvements were observed post-migration?
Key Statistics & Figures
Technologies & Tools
Some links below are affiliate links. We may earn a commission if you make a purchase.
Key Actionable Insights
1Focus on dual architecture testing to ensure continuous integration during migration.By generating builds for both architectures on every pull request, teams can catch breaking changes early, preventing disruptions in the development workflow.
2Utilize feature flags for third-party dependencies that do not support both architectures.This allows developers to conditionally disable features in development, reducing the risk of integration issues while migrating to the new architecture.
3Prioritize upgrading to the latest React Native version before starting migration.This ensures that teams benefit from upstream bug fixes and performance improvements, reducing the likelihood of encountering known issues during migration.
4Implement a phased rollout strategy to mitigate risks associated with app updates.Gradually increasing the rollout percentage allows teams to monitor stability and address issues without impacting all users at once.