ReactFoo 2017

A conference on React

Surya Kanoria


Delivering Instant Update Patches for React Native to 50+ million people

Submitted Aug 20, 2017

One of the chief reasons why we adopted React Native at Flipkart was to deliver Over The Air (OTA) updates to our 50+ million users instantly. When we looked at the known existing solutions like CodePush etc, we found three major issues that were not solved but were critical for us:

  1. The updates were not really instant as a cached bundle gets loaded while it silently gets updated in the background.
  2. These updates were enormous in size (around 700kB) as the entire bundle gets downloaded at the client-end everytime an update is shipped. For our average 2G users who visit the app once a month, it would take more than 30s for the React Native bundle to get downloaded and the page to be loaded everytime the App is launched.
  3. We have multiple teams maintaining their own React Native bundles. When these teams themselves share a lot of common components besides the React Native Framework Code, lots of redundant download is caused.

We built our own system which efficiently solved all of these issues and is being used by multiple Apps inside Flipkart.

This talk will give a detailed description of the solution and teach the audience to build their own optimized solution to deliver instant OTA updates for React Native.


The existing issues with other Over The Air Update solutions
Workings of the React Native Packager
Making the unpredictable bundle generation, predictable
Getting just the update patch
Sharing code between multiple bundles
Further optimizations
Building a generic deployer system.

Speaker bio

Surya Kanoria is a co-creator of the team that started React Native at Flipkart. He developed the Over The Air Update System for React Native. He has also worked on the Android, PWA, AMP and Windows stack at Flipkart apart from React Native. His goal is to improve User Experiences on Mobile Devices and is currently working on developing a Cross Platform Framework.



{{ gettext('Login to leave a comment') }}

{{ gettext('Post a comment…') }}
{{ gettext('New comment') }}
{{ formTitle }}

{{ errorMsg }}

{{ gettext('No comments posted yet') }}