Background Sync
This package doesn't manage background tasks — that's platform-specific. But OfflineManager is a standalone singleton that works outside React, so you can call it from any background task runner.
react-native-background-fetch
tsx
import BackgroundFetch from 'react-native-background-fetch';
import { OfflineManager } from '@mustafaaksoy41/react-native-offline-queue';
BackgroundFetch.configure({
minimumFetchInterval: 15,
}, async (taskId) => {
// Re-configure if the app was killed and relaunched
await OfflineManager.configure({
storageType: 'mmkv',
onSyncAction: myApiHandler,
});
await OfflineManager.flushQueue();
BackgroundFetch.finish(taskId);
});expo-task-manager
tsx
import * as TaskManager from 'expo-task-manager';
import { OfflineManager } from '@mustafaaksoy41/react-native-offline-queue';
TaskManager.defineTask('OFFLINE_SYNC', async () => {
await OfflineManager.configure({
storageType: 'mmkv',
onSyncAction: myApiHandler,
});
await OfflineManager.flushQueue();
return BackgroundFetch.Result.NewData;
});Important
If iOS killed and relaunched the app for a background task, OfflineManager.configure() must be called again before flushQueue(). The in-memory configuration is lost on app termination.
Why configure() again?
When iOS terminates and relaunches the app for a background task:
- The React component tree is NOT mounted
OfflineProvidernever rendersOfflineManagerhas no configuration
So you need to manually call configure() to set up the storage adapter and sync handler before flushing.