1.0.2 โข Published 6 months ago
@keithj/react-native-offline-sync v1.0.2
react-native-offline-sync
A lightweight React Native library to queue API requests when offline and automatically sync them when the device is back online.
๐ Features
- ๐ก Detects network status using
@react-native-community/netinfo
- ๐ฆ Queues failed or offline API requests
- ๐ Automatically retries requests when online
- ๐ Retry logic with max retry limit
- ๐ง Real-time queue size tracking
- ๐งช Hook-based API โ no Redux required!
๐ฆ Installation
npm install @keithj/react-native-offline-sync
Or with Yarn:
yarn add @keithj/react-native-offline-sync
You also need to install these peer dependencies:
yarn add @react-native-async-storage/async-storage @react-native-community/netinfo axios
๐ง Usage
import React from 'react';
import { View, Text, Button } from 'react-native';
import { useOfflineSync } from '@keithj/react-native-offline-sync';
export default function App() {
const { isOnline, enqueueRequest, queueLength } = useOfflineSync();
const handleSend = () => {
enqueueRequest({
request: {
url: 'https://jsonplaceholder.typicode.com/posts',
method: 'POST',
data: {
title: 'Offline Test',
body: 'This request will be queued if offline.',
},
},
options: {
maxRetries: 5,
preventDuplicate: true, // Optional: avoid enqueueing the same request again
},
});
};
return (
<View>
<Text>Network: {isOnline ? 'Online โ
' : 'Offline โ'}</Text>
<Text>Queue Length: {queueLength}</Text>
<Button title="Send Request" onPress={handleSend} />
</View>
);
}
๐ By default, the library will retry each request up to 3 times.
You can override this by passingmaxRetries
in theoptions
object.
๐ Roadmap
- Retry with max attempts
- Queue length tracking
- Pause/resume queue
- Exponential backoff strategy
- Devtools panel (debug view)
- Configurable storage adapter
๐งโ๐ป Contributing
See the contributing guide to learn how to contribute to the repository and development workflow.
๐ License
MIT ยฉ Ketan Jingar
GitHub: keithj/react-native-offline-sync
Made with create-react-native-library