feat(pwa): implement service worker and PWA enhancements
- Added service worker (sw.js) for offline functionality, caching strategies, and performance improvements. - Registered service worker in App component to manage updates and offline readiness. - Introduced ServiceWorkerStatus component to display connection status and provide cache management controls. - Created manifest.json for PWA configuration, including app name, icons, and display settings. - Updated index.html with PWA meta tags and links to support mobile web app capabilities. - Refactored authentication guards to utilize useAuthStatus hook for improved user state management. - Removed deprecated unregister-sw.js file to streamline service worker management.
This commit is contained in:
@@ -19,6 +19,9 @@ import { Language } from './features/i18n/localesSlice';
|
||||
import logger from './utils/errorLogger';
|
||||
import { SuspenseFallback } from './components/suspense-fallback/suspense-fallback';
|
||||
|
||||
// Service Worker
|
||||
import { registerSW } from './utils/serviceWorkerRegistration';
|
||||
|
||||
/**
|
||||
* Main App Component - Performance Optimized
|
||||
*
|
||||
@@ -96,6 +99,25 @@ const App: React.FC = memo(() => {
|
||||
};
|
||||
}, []);
|
||||
|
||||
// Register service worker
|
||||
useEffect(() => {
|
||||
registerSW({
|
||||
onSuccess: (registration) => {
|
||||
console.log('Service Worker registered successfully', registration);
|
||||
},
|
||||
onUpdate: (registration) => {
|
||||
console.log('New content is available and will be used when all tabs for this page are closed.');
|
||||
// You could show a toast notification here for user to refresh
|
||||
},
|
||||
onOfflineReady: () => {
|
||||
console.log('This web app has been cached for offline use.');
|
||||
},
|
||||
onError: (error) => {
|
||||
logger.error('Service Worker registration failed:', error);
|
||||
}
|
||||
});
|
||||
}, []);
|
||||
|
||||
// Defer non-critical initialization
|
||||
useEffect(() => {
|
||||
const initializeNonCriticalApp = () => {
|
||||
|
||||
Reference in New Issue
Block a user