OTA Updates & CI Pipeline

Ship JavaScript fixes with EAS Update and run typecheck, lint and tests in CI before every release.

Over-the-air updates let you fix JavaScript bugs without waiting for store review, and CI makes sure what you ship was checked.

Core concepts

  1. EAS Update: Publish a JavaScript bundle to a branch; builds on the matching channel and runtime version download it. — EAS Update
  2. Runtime versions: An update only reaches builds with a compatible runtime version, which protects users from JavaScript that expects native code they do not have. — EAS Update
  3. Rollback: Keep the previous update available and roll back quickly if a release misbehaves. — EAS Update
  4. CI on pull requests: Run install, typecheck, lint and tests on every pull request so broken agent changes never reach main. — GitHub Actions

Concept videos

YouTube channels and searches for these topics. On a large screen they open in the reading panel next to the roadmap.

Explanation

Respect store policies

OTA is for fixes and improvements within the reviewed app's purpose, not for changing what the app is.

Branch per environment

Use staging and production branches and channels so you can test an update on testers first.

What Is It?

OTA updates deliver new JavaScript to installed apps; CI runs automated checks on every change.

Why Should I Care?

Together they shorten the fix cycle while keeping quality gates.

Real World Analogy

OTA is a software patch delivered to a device you already own; CI is the quality inspector at the factory door.

Visual Mental Model

text
PR -> CI checks -> merge -> eas update (staging) -> verify -> promote to production

Smallest Possible Example

yaml
name: ci
on: [pull_request]
jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: 20, cache: npm }
      - run: npm ci
      - run: npx tsc --noEmit
      - run: npx expo lint
      - run: npm test -- --ci

Common Mistakes

❌ Publishing updates incompatible with the installed native runtime.

Users crash on launch; use runtime versions.

❌ No CI.

Agent changes break main and you find out at release time.

Build This Mini Project

Add the CI workflow, publish an update to a staging channel and verify it on a preview build.

Prompts for Cursor, Claude Code & Codex

Paste these into Cursor, Claude Code, Codex, or any coding agent. Replace the bracketed parts with your app details, and keep the agent in plan mode first so you review the approach before it edits files.

Add CI

text
Create a GitHub Actions workflow that runs npm ci, typecheck, lint and tests on pull requests with caching. Add an npm script named verify that runs all three locally.

Rules, databases & blogs to use

Resources

Threads in the same domain as this chapter — go deeper on iHateReading without leaving the roadmap.

393 SaaS directories and the agent that has to use them cover

393 SaaS directories and the agent that has to use them

Launch and backlink strategy for a finished product.

Hosting under $100/month at 10k visitors cover

Hosting under $100/month at 10k visitors

Cut hosting burn for agent-heavy apps with sane infra choices.

Expo new version SDK 52 cover

Expo new version SDK 52

What a real Expo SDK upgrade changes for app builders.