React Native framework · platform guide

The backend for Expo apps.

Amba is a backend for Expo apps installed as one package: auth (Apple, Google, anonymous), data collections, push campaigns, streaks, leaderboards, and analytics over HTTPS, with no server to write. An AI coding agent provisions the whole project over MCP in about ten seconds. EAS keeps doing what it is genuinely best at: builds, updates, and store submission.

Get an API key All platformsupdated June 12, 2026
copy, paste, build:

Expo is the default way AI-assisted teams build React Native apps, and it deliberately does not ship a backend — EAS covers builds, updates, and submission, then points you at a hosted backend for data, auth, and push. @layers/amba-expo fills that slot as one package: it wraps the pure-JS React Native SDK and adds the Expo-native pieces — session tokens stored via SecureStore (Keychain on iOS, encrypted preferences on Android), one-call Sign in with Apple and Google wrappers, push-token capture through expo-notifications, and a config plugin that writes URL schemes and intent filters at prebuild. Because the SDK core is plain HTTP with no native module of its own, it runs in Expo Go too; the one Expo Go limit that matters is remote push, covered honestly below.

quickstart

How do I add Amba to an Expo app?

Install

npx expo install @layers/amba-expo @react-native-async-storage/async-storage

AsyncStorage is the only required peer you add. The SecureStore, notifications, and sign-in modules are optional peers — install them only if you use those helpers.

Config plugin (app.json) — wires deep-link schemes at prebuild

{
  "expo": {
    "plugins": [
      ["@layers/amba-expo", {
        "projectId": "proj_…",
        "clientKey": "amba_ck_…",
        "scheme": "myapp"
      }]
    ]
  }
}

First call

import { Amba } from '@layers/amba-expo';

await Amba.configure({ projectId: 'proj_…', clientKey: 'amba_ck_…' });
await Amba.auth.signInAnonymously();
await Amba.events.track('app_opened');

Push + Sign in with Apple — the Expo-native helpers

// Captures the device token via expo-notifications and registers it.
// Needs a development build or production app — not Expo Go.
await Amba.registerPushToken();

// Drives the native Apple sign-in sheet, then exchanges the identity token.
const result = await Amba.signInWithApple();
capability coverage

What does Amba ship for Expo developers?

surfacestatusnotes
Auth & identity (Apple, Google, anonymous, link)Yes — built insignInWithApple() and signInWithGoogle() wrap the Expo auth modules; session and refresh tokens persist via SecureStore instead of plaintext AsyncStorage.
Push notifications (iOS + Android, scheduled)PartialCampaigns, segments, and scheduling are built in; Amba.registerPushToken() captures the device token via expo-notifications. Works in development builds and production — Expo Go cannot receive remote push (an Expo platform limit, not an SDK one).
Data collections + vector searchYes — built inTyped collections with per-column filters, pagination, and vector search — schema defined by your agent over MCP, read/written from the SDK.
Streaks (declarative, grace, timezone)Yes — built inStreaks are server-side rules; the SDK reads state and reports activity.
Leaderboards, XP & weekly leaguesYes — built inFull gamification surface: XP rules, achievements, challenges, leagues.
Virtual economy + subscriptions / IAPPartialCurrencies, inventory, catalog, and entitlement state are built in. Store receipt validation composes with RevenueCat rather than replacing it.
Social graph, feeds & group chatYes — built inFriends, groups, messaging, feeds, reviews, and moderation namespaces.
Product analytics (events, funnels, retention)Yes — built inAmba.events.track() with idempotency; funnels and cohorts query server-side.
Feature flags & remote configYes — built inFlags and config namespaces ship in the SDK.
Deep links & tracked linksYes — built inThe config plugin writes URL schemes (iOS) and intent filters (Android) at prebuild.

Live user segments are configured over MCP or the console and evaluated server-side; the SDK feeds them events. Coverage verified against the published package, June 2026.

the honest part

When is Amba not the right call?

EAS is genuinely good — keep it
EAS Build, EAS Update, and EAS Submit are the best build-and-release pipeline in the React Native ecosystem. Amba replaces the server you would write, not the pipeline — running both together is the intended setup, not a workaround.
Expo Go cannot receive remote push
Expo removed remote-push support from Expo Go. Auth, data, events, and every other Amba surface work in Expo Go because the SDK is pure JS over HTTPS — but testing push requires a development build. That constraint is Expo-wide and applies to any push provider.
Web-first or SQL-heavy apps
If your Expo project is primarily a web app, or your data model is deeply relational with hand-written SQL, Supabase is a legitimate better fit — the trade-offs are laid out in the Amba vs Supabase comparison rather than restated here.
the agent path

Can an AI agent set this up end to end?

Yes. Amba’s hosted MCP server at https://mcp.amba.dev/mcp (Streamable HTTP) exposes the whole backend as tool calls. amba_developer_signup mints a developer token and a provisioned project — client key and server key included — with no browser, and the project goes active in about ten seconds. Point your agent at the MCP server and it provisions the project, defines collections and streaks, and hands back the projectId + clientKey that go straight into Amba.configure — no console round-trip.

questions

Amba + ExpoFAQ

What backend should I use for an Expo app?

Expo deliberately ships no backend — EAS covers builds and updates, not data. The mainstream options are Firebase, Supabase, and Amba. Amba is the fit when your app runs on engagement loops (streaks, push, leaderboards, daily content) and you want an AI agent to provision the whole backend over MCP instead of assembling services by hand.

Does the Amba SDK work in Expo Go?

Mostly, yes. The SDK core is pure JavaScript over HTTPS — auth, collections, events, streaks, and flags all work in Expo Go. The exception is remote push: Expo Go cannot receive remote push notifications (an Expo platform limit), so Amba.registerPushToken() needs a development build or a production app.

Do I still need EAS if I use Amba?

Yes, and you should want to. EAS handles builds, over-the-air updates, and store submission — Amba does none of that. Amba replaces the backend you would otherwise write and host: auth, data, push campaigns, segments, gamification, and analytics. The two are complementary by design.

How do push notifications work in Expo with Amba?

One call — Amba.registerPushToken() — captures the device token through expo-notifications and registers it with your project. Campaigns, segment targeting, and scheduling then run server-side over APNs and FCM. You need a development build to test delivery, since Expo Go cannot receive remote push.

Can an AI agent set up the backend for my Expo app?

Yes — that is the design center. An MCP-aware agent (Claude Code, Cursor, Windsurf) connects to mcp.amba.dev, calls amba_developer_signup with an email and password, and gets a developer token plus a provisioned project with API keys in about ten seconds, no browser involved. It then defines collections, streaks, and campaigns as tool calls.

Is Amba a Firebase alternative for Expo?

For engagement-driven Expo apps, yes. Firebase gives you a mature general-purpose datastore plus FCM; Amba ships the engagement layer — streaks, segments, scheduled push, economy — as primitives. The full head-to-head, including where Firebase wins, is at /compare/firebase.

sources

Sources for this guide

start in 30 seconds

Hand the docs to your agent.
Ship by lunch.

Read the docs