Teardown

Storage Adapters

Persistent storage adapters for sessions, device IDs, and version status.

Storage adapters handle persistent data storage for the SDK. You must provide a storage adapter when initializing TeardownCore.

Available Adapters

AdapterPackageSync/AsyncBest For
MMKVStorageAdapterreact-native-mmkvSyncPerformance (recommended)
AsyncStorageAdapter@react-native-async-storage/async-storageAsyncCompatibility

Storage Interface

All storage adapters implement:

interface SupportedStorage {
  preload(): void;
  getItem(key: string): string | null;
  setItem(key: string, value: string): void;
  removeItem(key: string): void;
  clear(): void;
  keys(): string[];
}

What Gets Stored

The SDK stores:

DataStorage KeyDescription
Identity Stateidentity:IDENTIFY_STATESession, user ID, token
Version Statusversion:version_statusLast known update status
Device IDdevice:device_idStable device UUID

Namespacing

Keys are prefixed with org/project IDs to prevent conflicts:

teardown:{org_id}:{project_id}:identity:IDENTIFY_STATE
teardown:{org_id}:{project_id}:version:version_status
teardown:{org_id}:{project_id}:device:device_id

Custom Adapter

Extend StorageAdapter for custom implementations:

import { StorageAdapter, type SupportedStorage } from '@teardown/react-native';

class CustomStorageAdapter extends StorageAdapter {
  createStorage(storageKey: string): SupportedStorage {
    return {
      preload: () => {
        // Load data into memory (called on init)
      },
      getItem: (key: string) => {
        return myStorage.get(`${storageKey}:${key}`);
      },
      setItem: (key: string, value: string) => {
        myStorage.set(`${storageKey}:${key}`, value);
      },
      removeItem: (key: string) => {
        myStorage.delete(`${storageKey}:${key}`);
      },
      clear: () => {
        // Clear all keys for this namespace
      },
      keys: () => {
        // Return all keys for this namespace
        return [];
      },
    };
  }
}

Comparison

FeatureMMKVAsyncStorage
SpeedFaster (sync)Slower (async)
EncryptionBuilt-inNo
Bundle SizeSmallerLarger
DebuggingBinary dataPlain text
Platform SupportiOS, AndroidiOS, Android, Web