@layers/amba-react-native
v4.4.0
Published
amba SDK for React Native — pure-JS HTTP client, full 32-module surface, secure on-device identity persistence, native push notifications.
Keywords
Readme
@layers/amba-react-native
Amba is the agent-native backend-as-a-service for mobile and web apps. This package is the React Native SDK. Works in both bare React Native and Expo (Go + bare workflow).
What's new in 2.0.0
The SDK is now a pure-JS HTTP client — smaller bundles, faster cold starts, no native runtime dependency. The public API (Amba.configure, Amba.auth.*, Amba.events.track, …) is unchanged. Customers upgrading from 1.x do not need any code changes.
If you were importing values directly from @layers/amba-core through this SDK, install @layers/amba-core as a direct dependency. Most apps don't need this.
Install
npm install @layers/amba-react-native @react-native-async-storage/async-storage
# or, for Expo:
npx expo install @layers/amba-react-native @react-native-async-storage/async-storageThe SDK installs a secure crypto.getRandomValues for you through react-native-get-random-values, one of its dependencies; no import is needed. Bare React Native (and Expo SDK 50 to 53 builds) link only the native modules listed in your app's package.json, so add it there too (npm install react-native-get-random-values, then npx pod-install). Expo Go and Expo SDK 54+ builds need nothing.
Configure + first call
import { Amba } from "@layers/amba-react-native";
await Amba.configure({
projectId: "<your project id>",
clientKey: "amb_dev_ck_…",
});
await Amba.auth.signInAnonymously();
await Amba.events.track("app_opened");Push registration
import { Platform } from "react-native";
import * as Notifications from "expo-notifications";
import { Amba } from "@layers/amba-react-native";
const { data: token } = await Notifications.getDevicePushTokenAsync();
await Amba.push.register(token, Platform.OS === "ios" ? "apns" : "fcm");Sign in with Apple / Google
import * as AppleAuthentication from "expo-apple-authentication";
import { Amba } from "@layers/amba-react-native";
const credential = await AppleAuthentication.signInAsync({
requestedScopes: [
AppleAuthentication.AppleAuthenticationScope.FULL_NAME,
AppleAuthentication.AppleAuthenticationScope.EMAIL,
],
});
if (credential.identityToken) {
await Amba.auth.signInWithApple(credential.identityToken);
}Google works the same way via expo-auth-session/providers/google: pass response.params.id_token to Amba.auth.signInWithGoogle(idToken).
Docs
Full reference: https://docs.amba.dev/sdk/react-native.
License
MIT
