Data Fetching with SWR
The React Native Frontend app leverages SWR (stale-while-revalidate) for efficient data fetching, caching, and revalidation. SWR ensures that API requests return fresh data while keeping the UI responsive and minimizing network calls.
Core Concepts & Implementation
1. Global SWR Configuration (StaleWhileRevalidate Component)
This component sets up global defaults for SWR, ensuring consistent behavior across the app.
Key Features:
- Automatic Revalidation: Revalidates data on app focus and network reconnection.
- Polling: Uses
refreshInterval: 30sto keep data up-to-date. - Deduplication: Employs
dedupingInterval: 2sto prevent redundant requests. - Error Handling & Retry Strategies: Implements robust error handling and retry mechanisms.
- Network Status: Uses React Native's
NetInfoto detect and display online/offline status. - In-Memory Caching: Stores cached responses in memory for improved performance.
2. Fetching API Data (useApiCall Hook)
This custom hook provides a standardized wrapper around SWR for making API calls.
Key Features:
- Configurable Options: Supports options like
refreshInterval,revalidateOnFocus,errorRetryCount, etc. - Internal Fetcher Function: Handles API requests and errors gracefully.
- Return Values:
data: The latest API response.isLoading: Indicates if the request is in progress.hasError: Flags errors if any occur.refetch(): Allows manual revalidation of the request.
3. Lazy API Calls (useLazyApiCall Hook)
This hook is designed for on-demand API requests, triggered by user actions.
Key Features:
useSWRMutation: Executes API calls only when needed.executeFunction: Triggers the API request.
4. API Cache Management (useApiCache Hook)
This hook provides direct access to cached API responses.
Key Features:
- Cache Access: Allows reuse of already-fetched data, preventing unnecessary API calls.
Benefits of Using SWR
- Optimized Performance: Reduces redundant API calls with caching and deduplication.
- Seamless User Experience: Keeps data fresh while ensuring UI remains responsive.
- Resilient Error Handling: Automatically retries failed requests with configurable intervals.
- Offline Support: Detects network changes and gracefully manages data fetching.
This SWR-based data-fetching solution ensures a scalable, efficient, and user-friendly experience across the app.