Onboarding
1. Create an account
Section titled “1. Create an account”Sign up in the Rumtrace web app and complete auth. Once signed in, open Dashboard → Onboarding.
2. Generate your ingest key
Section titled “2. Generate your ingest key”From Dashboard → Settings → Ingest Key, copy your key. You’ll use it in the SDK.
3. Install the SDK
Section titled “3. Install the SDK”Use the tab that matches your app type.
npm install @mobore/rum-react-native @react-native-community/netinfo react-native-device-infoexpo install @mobore/rum-react-native @react-native-community/netinfo react-native-device-info1) Swift Package Manager in Xcode:
- File -> Add Package Dependencies…
- Add
https://github.com/mobore/mobore-ios-sdk.git
2) CocoaPods:
pod 'MoboreIosSdk', '~> 0.9.0'pod install4. Quick start
Section titled “4. Quick start”import { RumProvider } from '@mobore/rum-react-native';import { NavigationContainer, useNavigationContainerRef } from '@react-navigation/native';
export default function App() { const navigationRef = useNavigationContainerRef(); return ( <RumProvider config={{ clientToken: 'YOUR_CLIENT_TOKEN' }} ref={navigationRef} > <NavigationContainer ref={navigationRef}>{/* your app */}</NavigationContainer> </RumProvider> );}import { RumProvider } from '@mobore/rum-react-native';import { useNavigationContainerRef } from 'expo-router';
export default function RootLayout() { const navigationRef = useNavigationContainerRef(); return ( <RumProvider config={{ clientToken: 'YOUR_CLIENT_TOKEN' }} ref={navigationRef}> {/* app layout */} </RumProvider> );}import RUM, { AutoInstrumentation } from '@mobore/rum-react-native';
RUM.initialize({ clientToken: 'YOUR_CLIENT_TOKEN' }).then(() => { AutoInstrumentation.start();});import SwiftUIimport MoboreIosSdk
@mainstruct MyApp: App { init() { let config = MoboreAgentConfigBuilder() .withClientToken("YOUR_CLIENT_TOKEN") .withEnvironment("production") .build()
MoboreIosSdkAgent.start(with: config) }
var body: some Scene { WindowGroup { ContentView() } }}For full iOS setup details, see /ios-sdk/.
5. Send browser telemetry (optional)
Section titled “5. Send browser telemetry (optional)”For websites, send OTLP/HTTP to the Rumtrace browser ingest endpoint:
import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base';import { WebTracerProvider } from '@opentelemetry/sdk-trace-web';import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
const sessionId = crypto.randomUUID();
const exporter = new OTLPTraceExporter({ url: 'https://ingest.rumtrace.com/v1/traces', headers: { 'x-rumtrace-key': 'YOUR_INGEST_KEY', 'x-rumtrace-session-id': sessionId, },});
const provider = new WebTracerProvider({ spanProcessors: [new BatchSpanProcessor(exporter)],});
provider.register();The browser endpoint accepts OTLP/HTTP JSON or protobuf payloads and rejects compressed payloads.
6. Send backend telemetry (optional)
Section titled “6. Send backend telemetry (optional)”To correlate mobile sessions with backend traces:
import { NodeSDK } from '@opentelemetry/sdk-node';import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto';
const traceExporter = new OTLPTraceExporter({ url: 'https://ingest.rumtrace.com/v1/traces', headers: { 'x-rumtrace-key': 'YOUR_INGEST_KEY' },});
const sdk = new NodeSDK({ traceExporter, serviceName: 'my-backend-service' });sdk.start();process.on('SIGTERM', () => sdk.shutdown());7. Verify data flow
Section titled “7. Verify data flow”Return to the Dashboard. Once the app starts sending data, you’ll see sessions, errors, and crashes. If nothing appears, check the token, network connectivity, and reinstall the app in development.