import { StrictMode, Component, ErrorInfo, ReactNode, lazy, Suspense } from 'react'; import { createRoot } from 'react-dom/client'; import './index.css'; import './styles/global.css'; // Lazy load heavy providers to reduce initial JS parse/execute time const ThemeProvider = lazy(() => import('./contexts/ThemeContext').then(m => ({ default: m.ThemeProvider }))); const AuthProvider = lazy(() => import('./contexts/AuthContext').then(m => ({ default: m.AuthProvider }))); const CompanyProvider = lazy(() => import('./contexts/CompanyContext').then(m => ({ default: m.CompanyProvider }))); const App = lazy(() => import('./App.tsx')); import { setupNavigatorLockHandler } from './utils/setupNavigatorLockHandler'; import { registerServiceWorker } from './utils/serviceWorker'; // Performance mark: App start if (typeof performance !== 'undefined' && performance.mark) { performance.mark('app-start'); } // Lightweight fallback while heavy components load const InitialFallback = () => (

Tallybooks

Initializing...

); class ErrorBoundary extends Component<{ children: ReactNode }, { hasError: boolean; error: Error | null }> { constructor(props: { children: ReactNode }) { super(props); this.state = { hasError: false, error: null }; } static getDerivedStateFromError(error: Error) { return { hasError: true, error }; } componentDidCatch(error: Error, errorInfo: ErrorInfo) { console.error("Uncaught error:", error, errorInfo); } render() { if (this.state.hasError) { return (

Something went wrong.

{this.state.error?.toString()}
); } return this.props.children; } } // Mount the app const rootElement = document.getElementById('root'); if (rootElement) { const root = createRoot(rootElement); // Performance mark: Before render if (typeof performance !== 'undefined' && performance.mark) { performance.mark('before-render'); } // Progressive hydration: Load shell immediately, defer heavy providers root.render( }> }> }> }> ); // Performance mark: After render if (typeof performance !== 'undefined' && performance.mark) { performance.mark('after-render'); performance.measure('app-mount', 'app-start', 'after-render'); // Log performance metrics in development if (import.meta.env.DEV) { setTimeout(() => { const measures = performance.getEntriesByName('app-mount'); if (measures.length > 0) { console.log(`⚡ App mounted in ${measures[0].duration.toFixed(2)}ms`); } }, 100); } } // Defer ALL non-critical initialization to reduce TBT & improve LCP if ('requestIdleCallback' in window) { window.requestIdleCallback(() => { // Initialize NavigatorLock setupNavigatorLockHandler(); // Register service worker if (import.meta.env.PROD) { registerServiceWorker(); } // Preload ONLY Sales page (most common entry point) import('./pages/Sales').catch(() => {}); // Preconnect to Supabase const preconnect = document.createElement('link'); preconnect.rel = 'preconnect'; preconnect.href = 'https://*.supabase.co'; document.head.appendChild(preconnect); }, { timeout: 2000 }); } } else { console.error('Root element not found!'); }