For agencies, startups & public sector teams

Ship all your Capacitor apps from one desk.

CapWrapp puts a Fastlane + GitHub Actions pipeline in each repo, keeps certificates and keystores in a vault, and gives your team one dashboard to preview, ship to TestFlight and Play, and submit to review — for every app you maintain.

Get started free
  • Runs on your GitHub Actions
  • No SDK in your apps
  • Free to start

Who it’s for

One desk, whoever owns the apps.

  • Agencies

    Ship every client’s app with its own store keys and its own Slack channel, from one dashboard your whole team shares.

  • Startups & product companies

    Run several apps or brands from GitHub without a dedicated mobile release engineer.

  • Public sector & large organizations

    Many public-facing apps, admin and member roles, and builds that run on your own GitHub runners.

The fleet tax

Every new app adds another pipeline to babysit.

Capacitor shares your code across iOS and Android. Shipping it is still per-app work — and it multiplies with every app you add.

10
8
release pipelines to maintain
10
signing setups (iOS and Android)
20
store listings to keep in sync
160
  • Signing identities

    Distribution certificates, provisioning profiles, and Apple’s cap on certificates per team.

  • Upload keystores

    One per Android app. Lose one and you are asking Google for an upload key reset.

  • Build numbers

    They must go up on every upload, for every app, on both stores.

  • Pipeline drift

    Fastlane lanes and workflow YAML copied between repos, slowly diverging.

  • Capacitor upgrades

    Repos stuck on different majors, each with its own set of plugins.

  • Credentials in DMs

    “Who has the .p8 for this app?” — asked in Slack, again.

  • Listings × languages

    Name, subtitle, description and what’s new, per store and per locale.

  • Two consoles

    App Store Connect and Play Console tabs for every review submission.

How it works

A real pipeline in each repo. One control plane on top.

CapWrapp writes standard files to your repos and orchestrates GitHub, Apple and Google. Nothing runs on a black-box build farm.

  1. 1Install the GitHub AppGrant the repos you choose: Contents, Actions and Pull requests, plus Workflows if you want the native folders generated in CI. Installation tokens never leave the server.
  2. 2Connect your reposCapWrapp detects Capacitor, reads package versions, and guesses the last native release from tags, GitHub releases and past runs.
  3. 3Vault the store keysApp Store Connect API key in, Distribution certificate out. Play service account in, upload keystore minted or stored. Reuse keys across apps on the same team.
  4. 4Merge the pipeline PRcapwrapp/native-pipeline adds the workflow and Fastlane lanes. iOS builds on macos-latest, Android on ubuntu-latest — your runners, your minutes.
  5. 5Ship a SHAPick a commit, confirm, and follow the step reports. Build numbers bump themselves; TestFlight and Play Internal get the binaries.
.github/workflows/capwrapp-native.ymlexcerpt
name: CapWrapp native

on:
  workflow_dispatch:
    inputs:
      sha:           # commit to ship (required)
      version:       # CFBundleShortVersionString / versionName
      ios:           # TestFlight: 'true' | 'false'
      android:       # Play Internal: 'true' | 'false'
      report_url:    # where step reports go
      report_token:  # short-lived, one per run

concurrency:
  group: capwrapp-native-${{ github.repository }}
  cancel-in-progress: false

jobs:
  prepare:   # checkout, install, secrets, web build, cap sync
    runs-on: ubuntu-latest
  ios:       # pods, signed IPA, fastlane → TestFlight
    runs-on: macos-latest
  android:   # keystore, versionCode, AAB, fastlane → Play
    runs-on: ubuntu-latest
  finish:
    runs-on: ubuntu-latest

Step reports

  • checkouta1f9c2e
  • installpnpm-lock.yaml found
  • web_builddist/index.html
  • cap_syncios · android
  • ios_archivesigned IPA on macos-latest
  • ios_upload
  • android_bundle
  • android_upload

Built for fleets

Everything between merge and the store, for every app.

One place for the parts of a release that don’t live in your code — per app, per team, per store.

A vault per app

App Store Connect key, Distribution certificate, Play service account, upload keystore and build-time env live server-side. Copy keys between apps on the same team; settings sit behind a PIN.

Harbor Reuse from another app

  • App Store Connect API key.p8 · Key ID 2X9R4HXF82
  • Distribution certificatecreated by CapWrapp
  • Play service accountJSON key
  • Upload keystoreminted · downloadable
  • Build envVITE_API_URL, VITE_SUPABASE_ANON_KEY

Per-app alerts

Give each app its own Slack webhook, so every team or client follows its own channel. Telegram and email too: started, failed, ready to test, new commit on the default branch.

#harbor-releases Telegram Email
  • New commit ready to deploy
  • Ship started
  • Ship failed
  • Ready to test

#harbor-releases CapWrapp 🧪 Harbor is ready to test on TestFlight / Play Internal, version 1.4.0!

Previews for QA and sign-off

Any commit becomes a hosted web build with a QR code and a signed link that expires after 7 days. Revoke it whenever you like.

preview.capwr.app/p/7f3a…c91e

Fitloop · 9f2c1ab

expires in 7 days

Copy URLTurn off

Listings and review, without the consoles

Edit store copy per locale with live character limits and AI translation, push copy and screenshots, then submit to App Review or promote to Play production.

App Store

On the store
2.0.1
In test
2.1.0

In review

Google Play

On the store
2.0.1
In test
2.1.0
Send to production

ENFRDEESITPTJA

  • Every app, one dashboard

    Capacitor status, packages behind npm and last activity for each repo. Search, pin, switch organizations.

  • Teams, stakeholders, clients

    Organizations with email invites. Members ship and edit listings; admins also manage settings and people.

  • Capacitor drift, as PRs

    Official packages, plugins and @capgo/* are checked against npm daily. Upgrades land on capwrapp/capacitor-deps.

  • Failed runs, explained

    CapWrapp reads the Actions log and tells you which step broke and what to change.

  • Integrations by PR

    RevenueCat, OneSignal, Sentry, Firebase and Capacitor plugins, added with a PR and keys in the vault.

  • Turn a web app into an app

    Still a website? CapWrapp commits Capacitor and a CI job that generates the iOS and Android projects.

Under the hood

A control plane, not a build farm.

Your code and your builds stay in GitHub. CapWrapp holds the keys, dispatches the workflow, and listens to what happens.

Your GitHub

  • Repo with the workflow and .capwrapp/
  • Actions runners: macOS for iOS, Linux for Android
  • workflow_dispatch · sha, version
  • secrets · short-lived token
  • step reports · workflow_run

CapWrapp

  • Dashboard and release board
  • Vault for signing keys and env
  • Webhooks and step reports
  • listings · screenshots
  • review · promotion
  • release status

Apple & Google

  • App Store Connect API
  • Google Play Developer API
signed IPA / AAB, uploaded by Fastlane straight from your runner
  • Your runners, your logs

    Every build is a GitHub Actions run in your org. macOS minutes are billed to you by GitHub, at GitHub’s price.

  • Secrets fetched per run

    The job pulls signing keys and env with a short-lived token. Nothing is written to GitHub secrets, and it all leaves with the runner.

  • Least-privilege GitHub App

    Installation tokens are minted server-side. Webhooks for pushes, workflow runs and pull requests keep the desk live.

  • Plain files, revertible

    Capacitor config, native projects, GitHub Actions workflows and a .capwrapp folder. Close the PR or revert the commit to walk away.

GitHub App permissions

Metadata Know the repo existsRead
Contents Read commits, add Capacitor and pipeline filesRead & write
Actions Dispatch the native and preview workflowsRead & write
Pull requests Open pipeline, upgrade and integration PRsRead & write
Workflows Add the job that generates ios/ and android/Read & write · optional

Build it yourself?

You could wire this up per repo. Then do it again for every app.

  • Pipeline

    Copy and adapt lanes and YAML, then keep them in sync

    Installed by PR; reinstall to refresh every helper

  • iOS signing

    Match repo or manual certificates, until the team cap bites

    Created from the API key; unused CI certificates revoked at the cap

  • Android signing

    Keystores in someone’s Drive

    Minted or uploaded once, vaulted, downloadable

  • Build numbers

    Scripted per app

    Latest TestFlight build + 1; highest Play versionCode + 1

  • Secrets

    GitHub secrets per repo, rotated by hand

    One vault per app, fetched per run

  • Listings

    Two consoles × every language

    One editor, AI translation, push to both stores

  • Review

    Submit in App Store Connect and Play Console

    Submit or promote from the release board

  • Visibility

    A tab of Actions runs per repo

    One dashboard; per-app Slack alerts

Moving off Ionic Appflow?

Appflow sunsets on December 31, 2027. Our guide maps the move: store builds from GitHub with CapWrapp, live updates with a dedicated OTA service.

Read the migration guide

Pricing

14 days free. Then pay for the apps you ship.

Every plan includes everything CapWrapp does. Plans only differ by how many apps you’re actively shipping.

Founder

For founders shipping their own apps

$29/mo

Up to 3 active apps

Start free trial

No credit card needed

Pro

For makers and small teams

$99/mo

Up to 10 active apps

Start free trial

No credit card needed

Agency

For agencies shipping apps for clients

$249/mo

Up to 50 active apps

Start free trial

No credit card needed

Included in every plan

  • Your iPhone and Android apps, made from your web app
  • Unlimited builds on your own GitHub account — no Mac needed
  • Test builds on TestFlight and Google Play, then release to both stores
  • Store listings in every language, translated by AI
  • Failed builds explained in plain English
  • Email, Slack and Telegram alerts
  • Payments, ads and push notifications
  • Unlimited projects, previews and teammates
  • A free setup call during your trial

An app counts as active for 30 days after you ship it: a test build, a store release, an update or a listing change. Connected projects and previews never count, and an app’s iPhone and Android versions count as one.

Cancel anytime — your apps stay live on the stores, and your code stays in your project.

Need more than 50 apps?

FAQ

The questions dev teams ask first

Straight answers, including what CapWrapp doesn’t do yet.

Which CI does CapWrapp use?

GitHub Actions, in your own repositories. CapWrapp dispatches the capwrapp-native.yml workflow with the commit SHA and version; iOS jobs run on macOS runners and Android on Linux. You can point CapWrapp at your own workflow if it accepts the same inputs.

Does it run our test suite?

No. CapWrapp builds, signs, uploads and tracks releases. Keep your tests in GitHub Actions and ship the commits that pass — the pipeline is a normal workflow file you can read.

Can it ship automatically on every merge?

Not today. Every store build starts from a confirmed click in CapWrapp, so nothing reaches TestFlight or App Review by accident. CapWrapp tells you on Slack, Telegram or email when a new commit lands on the default branch.

Do you support monorepos?

Not yet. CapWrapp expects one Capacitor app at the root of each repository.

GitLab or Bitbucket?

GitHub only, for now.

Which frameworks and package managers work?

Anything whose build outputs a static folder with an index.html — Vite, Ionic (www), static Next.js exports and similar — installed with npm, pnpm, Yarn or Bun. A server-only bundle needs a static build output.

We already manage our own certificates and keystores.

CapWrapp doesn’t use Fastlane Match. It creates an Apple Distribution certificate from your App Store Connect API key, or you upload a .p12. On Android, upload the keystore you registered with Play, or let CapWrapp mint one.

Where do the signing keys live?

In CapWrapp’s server-side vault, never in your repositories or GitHub secrets. Each run fetches what it needs with a short-lived token, and the files disappear with the runner.

What about live updates (OTA)?

CapWrapp ships store builds today and doesn’t offer live updates yet. Keep your OTA provider for web-only changes.

Can people outside the dev team get access?

Yes, with organizations. Invite product owners, QA or clients by email as admins or members. Members can ship versions and edit listings; admins also manage settings and invites.

What does CapWrapp store?

Repository and app metadata, store listing drafts and screenshots, run history, and — in the vault — signing keys and build-time env. Store builds run on your own GitHub runners; commit previews host the built web files behind a link that expires.

How do people sign in?

With a Google or GitHub account. Screens that touch signing keys sit behind an extra 4-digit PIN.

How much does it cost?

You pay for active apps, not seats, and teammates and clients are free: Founder is $29 a month for up to 3 apps, Pro $99 for 10, Agency $249 for 50. Every plan starts with a 14-day free trial, no credit card needed. Rolling out many apps? Chat with the founder and plan the first ones together.

Put your Capacitor fleet on one desk.

Connect your first repos, vault the keys, and send your first TestFlight build from your own GitHub Actions.

Get started free
  • Runs on your GitHub Actions
  • No SDK in your apps
  • Free to start