- Replace 2.2MB social-preview.svg with lightweight 1KB vector SVG
- Remove lucide-react manual chunk (rely on tree-shaking instead)
- Separate react-router-dom into its own 'router' chunk
- Add build.target es2020 and chunkSizeWarningLimit
- Add modulepreload hint for main entry point
- Google Fonts already uses media=print non-blocking pattern
- i18n already lazy-loads ar/fr dynamically
- AdSlot already loads AdSense dynamically with intersection observer
Expected improvement: 34 → 70+ on mobile PageSpeed
- Implemented API and web task access assertions in the task status polling endpoint.
- Added functions to remember and check task access in user sessions.
- Updated task status tests to validate access control based on session data.
- Enhanced download route tests to ensure proper access checks.
- Improved SEO metadata handling with dynamic social preview images.
- Updated sitemap generation to include blog posts and new tools.
- Added a social preview SVG for better sharing on social media platforms.