Mustafa Ali Profile picture
Nov 5 โ€ข 15 tweets โ€ข 3 min read โ€ข Read on X
We've just finished migrating the @Shopify mobile app to @reactnative ๐ŸŽ‰. This is our biggest app and was built over a decade. Here's how it went ๐Ÿงต
๐Ÿ‘ฉโ€๐Ÿ’ป We added 683k lines of code while deleting 2.5M lines. That's a net reduction of 1.8M lines. We migrated 586 screens to React Native and deleted 232 outdated screens.
๐Ÿ“ฑ86% of our code is now shared between iOS and Android compared to just 5% previously. Maintaining feature parity between platforms is now a non-issue.
๐ŸŽ๏ธ Performance was a big area of focus for us. We improved screen load times by 59%, app launches are now 44% faster, and webviews are now 63% faster.
๐Ÿ› ๏ธ We've also improved stability of the app by eliminating ~500K crashes per app version to achieve >99.9% crash-free sessions.
๐ŸŒŸ Our users have noticed all these improvements. Our 28-day avg app store rating has increased from 4.4 to 4.8 on iOS and from 4.1 to 4.4 on Android.
๐Ÿ“ธ Apple and Google have noticed them as well. The app got featured 5 times while it was being migrated.
We โค๏ธ open source and wanted to give back to the community. We built and open sourced Flashlist โšก๏ธ which has become the defacto way of building high-performance lists in React Native
Our partnership with @wcandillon has resulted in the creation of React Native Skia. It brings the Skia Graphics Library to React Native, enabling high-quality 2D graphics and animations.
We are sponsoring @swmansion's work on Reanimated which enables high-quality animations with React Native
We built and open sourced Tophat ๐ŸŽฉ to enable 1-click installation of mobile builds
๐Ÿ“ Things we learned:
1/3 Native code and native devs are crucial. There is no replacing the experience and taste that comes from having built high-quality mobile apps.
2/3 100% React Native should be an anti-goal. Use native wherever it is the best tool for the job (widgets, Siri shortcuts, watch app and complications, etc), or in places where there are high performance requirements.
3/3 Achieving good performance takes work and should be a priority from the start. Measure everything and relentlessly optimize every layer. Add automated monitoring to catch regressions.
shopify.engineering/improving-shopโ€ฆ
Overall, React Native has given Shopify a step change in productivity while allowing us to keep leveraging native wherever it makes sense. We're stoked about the future of React Native and will continue to work with Meta and the community to make it better.

โ€ข โ€ข โ€ข

Missing some Tweet in this thread? You can try to force a refresh
ใ€€

Keep Current with Mustafa Ali

Mustafa Ali Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(