Application Container
The Application container handles core application-wide functionality, including service worker integration, custom storage management, and network status detection. It provides a centralized way to manage these features within your app.
Features
-
Service Worker for Offline Caching
The Application container supports service worker integration, enabling offline capabilities by caching static assets and handling API requests when the network is unavailable.
-
Pluggable Storage
Pass in IndexedDB or LocalStorage storage methods.
-
Offline/Online Detection
Automatically detects network changes and displays toast notifications:
- Offline: Shows a warning toast with "Application is offline".
- Online: Shows an informational toast with "Application is online".
Usage
Setting up Application instance
To use the Application container, instantiate it with your desired configuration:
import { Application } from "@nmfs-radfish/radfish";
const myApp = new Application({
serviceWorker: {
url:
import.meta.env.MODE === "development"
? "/mockServiceWorker.js"
: "/service-worker.js",
},
storage: store, // Use IndexedDBMethod or LocalStorageMethod for offline storage
});
Using <Application>
Once instantiated, the Application instance should be passed to the <Application> component.
import { Application } from "@nmfs-radfish/react-radfish";
<Application application={myApp} />;
Distinguishing Application from @nmfs-radfish/radfish vs. @nmfs-radfish/react-radfish
@nmfs-radfish/radfish (Core)
- Provides the underlying non-UI logic, such as the
Applicationclass for managing:- Offline support
- Service workers
- Storage (IndexedDB, LocalStorage)
@nmfs-radfish/react-radfish (React Integration)
- Offers React components and hooks that make it easy to integrate
Applicationcontainer into a React app. - Provides:
<Application>component for wrapping your app with offline support.- Hooks like
useOfflineStatusfor checking network connectivity. useOfflineStoragefor managing offline storage state within React components.
- This package is React-specific and simplifies working with the
Applicationcontainer in a React project.
In Other Words:
@nmfs-radfish/radfish= the engine (all the logic).@nmfs-radfish/react-radfish= the React car that sits on top of the engine, making it easy to drive your offline-ready web app in React.