Performance
Cutting static payload
The busiest discovery routes were shipping several megabytes of static data because everything was inlined at build time. I moved them onto paginated, API driven data.
Core discovery routes inlined their full datasets at build time. /deals shipped 2.15 MB and /lines and /zones reached up to 10.6 MB, so first loads pulled far more than any single view needed.
Replaced the build time JSON imports with paginated, API driven data so each route fetches only the slice it actually renders.
The discovery routes dropped from several megabytes to small per view fetches, and page weight stopped scaling with the size of the catalogue.
Static payload per route, before and after moving to paginated API data. After numbers are placeholders until the real post release sizes are added.