npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

react-native-livepatch

v0.4.0

Published

Free, self-hosted OTA updates for React Native. Push JS bundle updates instantly. CodePush alternative.

Downloads

515

Readme

🩹 LivePatch

npm version license

CodePush is dead. This is the free replacement.

Push JavaScript updates to your React Native app instantly. No rebuild, no app store review, no cloud dependency.

CodePush shut down. Now what?

Microsoft killed CodePush in March 2025. Your options:

| Solution | Cost | Self-hosted | Bare RN | No account | |----------|------|-------------|---------|------------| | ~~CodePush~~ | Dead | — | — | — | | EAS Update | Paid tiers | ❌ | ⚠️ needs Expo | ❌ | | Shorebird | Paid | ❌ | Limited | ❌ | | LivePatch | Free | | | |

Install

yarn add react-native-livepatch

Quick Start

1. In your app (2 lines):

import { LivePatch } from 'react-native-livepatch';

LivePatch.configure({
  updateUrl: 'https://your-server.com/updates',
  channel: 'production',
});

App checks for updates on launch. If available, downloads and applies automatically.

2. Push an update (1 command):

npx livepatch push --upload github

Done. All users get the update on next app open.

How It Works

You change code → livepatch push → users open app → new code running
                                    (no store update needed)
  1. livepatch push bundles your JS and uploads to hosting
  2. App launches → checks update server → downloads new bundle
  3. App restarts with new code — instant, seamless

Upload Options

livepatch push --upload github      # GitHub Releases (free, unlimited)
livepatch push --upload vercel      # Vercel (free tier)
livepatch push --upload https://s3.amazonaws.com/my-bucket  # Any server
livepatch push                      # Bundle only (upload manually)

No paid service needed. GitHub Releases is free and handles unlimited downloads.

Commands

livepatch push                          # Bundle + prepare update
livepatch push --upload github          # Bundle + publish to GitHub
livepatch push --channel staging        # Push to staging channel
livepatch push --platform android       # Android only
livepatch serve                         # Local dev server (testing)
livepatch history                       # Show push history

Features

  • Free forever — no paid tiers, no limits, no accounts
  • Self-hosted — GitHub Releases, Vercel, S3, any static host
  • TypeScript — full type definitions included
  • Native modules — Android (Kotlin) + iOS (Swift)
  • Channel-based — push different updates to dev/staging/production
  • Integrity verification — SHA-256 hash check on every bundle
  • Rollback — revert to previous version instantly
  • Tiny — 13 KB package size, no heavy dependencies
  • Works offline — app functions normally without updates
  • Auto-apply — or manual control, your choice

Expo Support

Works with Expo prebuild (bare workflow) and Dev Client. Add to app.json:

{
  "plugins": ["react-native-livepatch"]
}

Then run npx expo prebuild — the config plugin auto-configures native modules. No manual setup needed.

| Expo Type | Supported | |-----------|-----------| | Expo prebuild (bare) | ✅ | | Expo Dev Client | ✅ | | Expo Go | ❌ (use EAS Update) |

Native Integration

Android (MainApplication.kt):

import com.livepatch.LivePatchModule

// In getDefaultReactHost:
jsBundleFilePath = LivePatchModule.getCustomBundlePath(this@MainApplication)

iOS (AppDelegate.swift):

import LivePatchModule

// In sourceURL:
return LivePatchModule.bundleURL() ?? Bundle.main.url(forResource: "main", withExtension: "jsbundle")

API

import { LivePatch } from 'react-native-livepatch';

// Configure (once on startup)
LivePatch.configure({ updateUrl: '...', channel: 'production' });

// Manual control
const update = await LivePatch.checkForUpdate();
// → { available: true, version: '2026.6.5', size: 983040 }

await LivePatch.download((percent) => console.log(percent + '%'));
LivePatch.apply({ immediate: true }); // restart with new bundle

// Rollback
await LivePatch.rollback();

// Sync (check + download + apply in one call)
await LivePatch.sync();

Security

  • Bundle integrity verified with SHA-256 hash before applying
  • HTTPS enforced for production update URLs
  • Rollback on crash detection (if app crashes after update, reverts automatically)
  • No code execution from untrusted sources — only signed bundles

Store Compliance

  • Google Play ✅ — allows JS/asset updates without review (no native code changes)
  • Apple App Store ✅ — same policy, CodePush used this for years without issues

The rule: you can update JavaScript and assets, but not native code or app purpose.

Architecture

┌──────────────────────────────────────────────────┐
│  Your App                                        │
│  ┌────────────────────────────────────────────┐  │
│  │  LivePatch SDK (JS)                        │  │
│  │  - Check for updates                       │  │
│  │  - Download bundle                         │  │
│  │  - Trigger restart                         │  │
│  └─────────────┬──────────────────────────────┘  │
│                │                                  │
│  ┌─────────────▼──────────────────────────────┐  │
│  │  Native Module (Kotlin/Swift)              │  │
│  │  - Store bundle on filesystem              │  │
│  │  - Override bundle path on next launch     │  │
│  │  - Restart app                             │  │
│  └────────────────────────────────────────────┘  │
└──────────────────────────────────────────────────┘
         │
         ▼
┌──────────────────────┐
│  Update Server       │
│  (GitHub / Vercel /  │
│   S3 / your server)  │
│                      │
│  manifest.json       │
│  android.jsbundle    │
│  ios.jsbundle        │
└──────────────────────┘

License

MIT

Author

Hasan Gönen@hasangonen91


Also check out react-native-starship — wireless deploy for React Native (QR scan → install → running).