~/swaraj.dev
Back to all posts
April 23, 20261 min read

Fast Fixes: Using Expo Updates for OTA Patches

Learn how to ship critical bug fixes instantly with Expo Updates and EAS, avoiding the app store review cycle.

expoupdatesotareact-native

Insight

Expo's expo-updates module lets you push JavaScript and asset changes over‑the‑air (OTA) without resubmitting to the App Store or Play Store. By pairing it with EAS Build, you can generate a signed update bundle that the client checks at launch (or on demand). This is ideal for hot‑fixes, feature toggles, or A/B experiments, but remember that native code changes still require a store release.

Example

import * as Updates from 'expo-updates';
import { Button } from 'react-native';

export default function UpdateButton() {
  const checkForUpdate = async () => {
    const { isAvailable } = await Updates.checkForUpdateAsync();
    if (isAvailable) await Updates.fetchUpdateAsync();
    // Reload to apply the new bundle
    await Updates.reloadAsync();
  };
  return <Button title="Check for OTA" onPress={checkForUpdate} />;
}

Takeaway

Enable OTA updates in your app.json ("updates": { "fallbackToCacheTimeout": 0 }) and use checkForUpdateAsync sparingly to avoid draining battery. Treat OTA as a rapid‑response layer for JS‑only changes; any native module or SDK bump still goes through the traditional store flow.