siftlode/frontend/src
npeter83 2344902a7f perf: route- and modal-level code splitting (React.lazy)
The whole app shipped in one bundle, so the logged-out landing and every page
pulled all module code. Split into lazy chunks:
- main.tsx: lazy App + the public leaves (WatchPage, Privacy, Terms), so a
  public /watch share link never downloads the authenticated app.
- App.tsx: each module page (Feed, Channels, Playlists, Stats, Scheduler,
  Config, Users, Settings, Notifications, Messages, Downloads, ChannelPage) and
  the About/ReleaseNotes/Onboarding modals load on demand behind <Suspense>.
- Heavy modals lazy in their parents: PlayerModal (Feed, Playlists),
  DownloadDialog (DownloadButton — kept out of the feed chunk), and the
  VideoEditor/ShareDialog/ProfileEditor (DownloadCenter).
- Extracted focusAccessRequestsTab + the tab constants to lib/adminUsersTab so
  callers can pre-select the admin tab without statically importing the now
  lazy-loaded AdminUsers page (which would defeat the split).

Build now emits ~25 chunks. Landing no longer downloads any module code
(~350 KB deferred); dev landing Perf 93->95. Verified in a real browser: every
page + the video editor load with no console errors.
2026-07-04 19:43:50 +02:00
..
components perf: route- and modal-level code splitting (React.lazy) 2026-07-04 19:43:50 +02:00
i18n feat(downloads): edit + remove actions on shared-with-me items (no re-share) 2026-07-04 05:21:50 +02:00
lib perf: route- and modal-level code splitting (React.lazy) 2026-07-04 19:43:50 +02:00
App.tsx perf: route- and modal-level code splitting (React.lazy) 2026-07-04 19:43:50 +02:00
index.css feat(player): keyboard + scroll-wheel controls in the video modal 2026-06-29 23:37:18 +02:00
main.tsx perf: route- and modal-level code splitting (React.lazy) 2026-07-04 19:43:50 +02:00
vite-env.d.ts feat(i18n): foundation — react-i18next, language switcher, server-persisted choice 2026-06-15 00:30:34 +02:00