offline-event-sdk
v1.0.1
Published
A React Native SDK for offline event tracking with automatic retry
Downloads
198
Maintainers
Readme
Offline Event Tracking Documentation
This document explains the usage and functionality of the OfflineEventSDK for your React Native application. This SDK provides a robust solution for tracking user events, ensuring that no data is lost even when the device is offline.
Installation
- Add SDK and Dependencies: Add the offline-event-sdk package to your project.
npm install offline-event-sdk or yarn add offline-event-sdk
- Install Required Packages: The SDK relies on two React Native libraries. Install them if you haven't already.
npm install @react-native-async-storage/async-storage @react-native-community/netinfo or yarn add @react-native-async-storage/async-storage @react-native-community/netinfo
For iOS, make sure to install the pods: npx pod-install
How It Works
The SDK employs an API-first, SDK-fallback strategy.
Direct API Call (First Attempt): When an event occurs, your app first attempts to send the data directly to your server using a standard API call.
Offline Fallback (If API Fails): If the API call fails due to a network error or the device being offline, the app falls back to the SDK. The SDK then stores the event data locally in the device's persistent storage (AsyncStorage).
Automatic Flushing (Network Restored): The SDK continuously monitors the network status. When the network connection is restored, it automatically retrieves all stored events from local storage and sends them to the server. This ensures data is not lost even with a temporary network outage.
Code Snippets and Usage
- Import the SDK
Import the OfflineEventSDK class.
import OfflineEventSDK from 'offline-event-sdk';
- Initialize the SDK and Implement trackEventWithFallback
This function is the core of the API-first strategy. It attempts a direct API call and falls back to the SDK on failure.
const trackEventWithFallback = async (eventData, method) => { try { // api call } catch (error) { // This block is for network errors or non-OK responses const sdk = OfflineEventSDK.getInstance(); await sdk.trackEvent(API_ENDPOINT, eventData, method); } };
This function is generic and can handle any HTTP method (POST, GET, PUT, etc.).
