Implement server-side extraction of marriage profile data from cookies
to seed the React Query cache during initial application load. This
reduces client-side loading states by providing immediate access to
profile information.
- Extract and parse marriage data in `RootLayout`
- Pass initial profile data to `Providers` component
- Seed `QueryClient` with `initialProfile` using `setQueryData`
- Update `getInitialMarriageProfile` to support data overrides
- Refine loading conditional in `NewMatchClient` to prevent flickering
when summary data is already present
Refactor the application initialization and data fetching strategy to improve performance, reliability, and user experience, especially within the Flutter webview context.
Key changes:
- **Bootstrap & Initialization**: Implemented a `beforeInteractive` bootstrap script to handle locale correction and safe-area insets before the app becomes visible, reducing layout shift and flickering.
- **Locale Routing**: Enhanced the middleware proxy to prioritize authoritative cookie-based locales and improved `Accept-Language` header parsing to support complex device headers.
- **Assessment Progress**: Introduced a local assessment progress tracking mechanism that merges server-side completion data with local `localStorage` drafts, ensuring users don't lose progress during transitions.
- **Data Fetching**: Optimized React Query configurations by increasing `staleTime` and disabling aggressive refetching on window focus/mount to reduce unnecessary network overhead.
- **UI/UX Improvements**:
- Replaced `next/image` icon loading with an inline `UiIcon` component to eliminate per-icon network requests and ensure icons are available in the initial HTML.
- Implemented a Flutter-style skeleton shimmer animation using CSS transforms for smoother performance in the webview.
- Updated CSS variables to use `env(safe-area-inset-*)` for better mobile compatibility.
- **Refactoring**:
- Consolidated marriage-related data fetching into a unified `useFormSchemaQuery` pattern.
- Simplified component logic by removing redundant `silent-reloader` calls and manual cache-busting headers.
- Improved type safety for the Flutter bridge and window global objects.
- Implemented `useMarriageProfileQuery` and `getMarriageProfile` for fetching main marriage profile data.
- Created `useMarriageSectionDataQuery` and `updateMarriageSectionData` for managing section data with query and mutation hooks.
- Added `useMarriageSectionsQuery` for retrieving available marriage sections.
feat: add temporary media upload hook
- Introduced `useUploadTmpMediaMutation` and `uploadTmpMedia` for handling temporary media uploads.
feat: implement internationalization support
- Added localization configuration and dictionaries for English and Persian languages.
- Created `I18nProvider` for managing locale and dictionary context.
- Implemented utility functions for locale management and path localization.
feat: define API communication layer
- Established an HTTP client using Axios with proxy path handling for API requests.