Documentation
Getting started with Ubriot CI/CD and Ubriot Notify.
CI/CD — iOS & Android builds
Configure signing credentials and trigger your first build.
OTA updates
Publish compatible JavaScript-only updates without app review.
Notify — push notifications
Send iOS and Android push notifications with the @ubriot/notify-rn SDK.
CI/CD — iOS & Android builds
Ubriot handles iOS and Android builds in the cloud. Upload your signing credentials once and trigger builds from the CLI or dashboard.
1. Upload signing credentials
In the dashboard go to Credentials → Add credential. Upload your iOS distribution certificate (.p12), provisioning profile (.mobileprovision), and App Store Connect API key (.p8). For Android upload your keystore and Google Play service account JSON. All credentials are AES-256 encrypted at rest and never logged.
2. Trigger a build
From the CLI:
# iOS build + TestFlight submission ubriot ship ios # Android build + Google Play submission ubriot ship android # OTA update only (no build required) ubriot update
Or go to Builds in the dashboard and click Trigger build.
OTA updates
Publish JavaScript-only changes directly to devices without waiting on App Store review. Roll forward or back from the dashboard at any time.
Configure your app
Point expo-updates at your Ubriot manifest URL (replace your-app-slug with your release app slug from Ubriot):
// app.config.js / app.json — updates.url (exact field depends on Expo SDK) // Example manifest base: "https://api.ubriot.dev/api/v1/ubriot/updates/manifest?appId=your-app-slug" // Devices request updates on launch; channel matches your ubriot update --channel.
New binaries must include this URL. Existing installs keep their previous update host until users upgrade the app.
Publish an update
ubriot update --channel production --message "Fix checkout bug"
The update is live to all devices on the production channel within seconds. Roll back from the dashboard under Updates if needed.
Notify — push notifications
Send iOS and Android push notifications directly to APNs and FCM. Per-device pricing, auto-retry, campaigns, and delivery logs.
1. Upload push credentials
Go to Credentials in the dashboard. For iOS: add an APNs auth key (.p8 file with Key ID, Team ID, and Bundle ID). For Android: add a Firebase service account JSON from the Firebase console.
2. Install the SDK
npm install @ubriot/notify-rn
No additional dependencies. Works with Expo, react-native-firebase, or any push library.
3. Register at app launch
Get a native push token however your app already does it, then pass it to Ubriot:
import { UbriotNotify } from '@ubriot/notify-rn';
import * as Notifications from 'expo-notifications'; // or firebase, etc.
useEffect(() => {
async function register() {
const { data: nativeToken } = await Notifications.getDevicePushTokenAsync();
await UbriotNotify.register({
appId: 'your-app-id',
nativeToken,
platform: Platform.OS === 'ios' ? 'ios' : 'android',
userId: currentUser?.id, // optional
});
}
register();
}, []);4. Send from your backend
Use the push server key from Credentials → Push server key:
curl -X POST https://api.ubriot.dev/api/v1/ubriot/push/send \
-H "X-Ubriot-Push-Key: your-server-key" \
-H "Content-Type: application/json" \
-d '{
"to": ["UbriotPushToken[abc123...]"],
"title": "New message",
"body": "Alice replied to your post",
"data": { "screen": "chat", "threadId": "42" }
}'5. Broadcast campaigns
To send to all registered devices at once, go to Notify → Campaigns in the dashboard and click Send campaign. Choose a platform filter (All / iOS / Android), write your notification, and send. Delivery counts appear as soon as APNs and FCM respond.
SDK reference
- UbriotNotify.register(opts)
- Register a native push token with Ubriot. Returns a stable UbriotPushToken. Idempotent — safe to call on every launch.
- UbriotNotify.identifyUser(userId, opts)
- Link a device to a user ID in your system. Pass pushToken from register(). Call after login.
Need help?
Email hello@ubriot.dev. Enterprise customers get a dedicated Slack channel. Check the FAQ for common questions about builds, credentials, and OTA updates.