React nativeGetting Started
Getting Started
Install and configure the Teardown SDK for React Native.
Installation
Install the core package:
bun add @teardown/react-nativeSetup
1. Create SDK Configuration
Create a file to initialize the Teardown SDK (e.g., lib/teardown.ts):
import { TeardownCore } from '@teardown/react-native';
import { ExpoDeviceAdapter } from '@teardown/react-native/adapters/expo';
import { MMKVStorageAdapter } from '@teardown/react-native/adapters/mmkv';
export const teardown = new TeardownCore({
org_id: 'your-org-id',
project_id: 'your-project-id',
api_key: 'your-api-key',
storageAdapter: new MMKVStorageAdapter(), // or your own storage adapter or another supplied adapter
deviceAdapter: new ExpoDeviceAdapter(), // or your own device adapter or another supplied adapter
forceUpdate: {
throttleMs: 30_000, // Min time between checks (default: 30s)
checkCooldownMs: 300_000, // Cooldown after check (default: 10s)
},
});2. Wrap Your App
In your root layout file (e.g., app/_layout.tsx for Expo Router):
import { TeardownProvider } from '@teardown/react-native';
import { teardown } from '../lib/teardown';
export default function RootLayout() {
return (
<TeardownProvider core={teardown}>
<YourApp />
</TeardownProvider>
);
}3. Use in Components
import { useTeardown, useSession, useForceUpdate } from '@teardown/react-native';
function MyComponent() {
const { core } = useTeardown();
const session = useSession();
const { isUpdateRequired } = useForceUpdate();
const handleLogin = async () => {
const result = await core.identity.identify({
user_id: 'user-123',
email: 'user@example.com',
});
if (result.success) {
console.log('Session:', result.data.session_id);
}
};
if (isUpdateRequired) {
return <UpdateRequiredScreen />;
}
return <Button onPress={handleLogin} title="Login" />;
}Configuration Options
TeardownCore Options
| Option | Type | Required | Description |
|---|---|---|---|
org_id | string | Yes | Organization ID from dashboard |
project_id | string | Yes | Project ID from dashboard |
api_key | string | Yes | API key from dashboard |
storageAdapter | StorageAdapter | Yes | Storage adapter instance (see adapters) |
deviceAdapter | DeviceInfoAdapter | Yes | Device info adapter instance (see adapters) |
forceUpdate | object | No | Force update configuration |
Force Update Options
| Option | Type | Default | Description |
|---|---|---|---|
throttleMs | number | 30000 | Min time between foreground checks (ms) |
checkCooldownMs | number | 300000 | Min time since last check (ms) |
Hooks
useTeardown
Access the TeardownCore instance:
const { core } = useTeardown();
// Access clients
core.identity.identify({ user_id: '123' });
core.identity.reset();
core.setLogLevel('verbose');useSession
Get current session (reactive):
const session = useSession();
if (!session) {
return <LoginScreen />;
}
// session.session_id, session.device_id, session.user_id, session.tokenuseForceUpdate
Check version status:
const { versionStatus, isUpdateRequired, isUpdateAvailable } = useForceUpdate();
if (isUpdateRequired) {
return <ForceUpdateModal />;
}