Lazy loads dashboard modules using IntersectionObserver.
Defers dynamic import() calls until the dashboard container enters the viewport,
reducing initial page load and improving Time to Interactive (TTI).
Falls back to immediate loading when IntersectionObserver is unavailable.
Performance
Each lazy dashboard defers its dynamic import() until the section
scrolls into view (plus a 200 px pre-fetch margin), preventing Chart.js (~200 KB),
D3 (~250 KB) and PapaParse (~50 KB) from blocking the initial parse/render.
Description
Lazy loads dashboard modules using IntersectionObserver. Defers dynamic import() calls until the dashboard container enters the viewport, reducing initial page load and improving Time to Interactive (TTI).
Falls back to immediate loading when IntersectionObserver is unavailable.
Performance
Each lazy dashboard defers its dynamic import() until the section scrolls into view (plus a 200 px pre-fetch margin), preventing Chart.js (~200 KB), D3 (~250 KB) and PapaParse (~50 KB) from blocking the initial parse/render.