1.0.2 โ€ข Published 6 months ago

@keithj/react-native-offline-sync v1.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
6 months ago

react-native-offline-sync

npm version

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 passing maxRetries in the options 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