Files
jobtrackingapp/docs/i18n/JOBTABLE_ROUTE_CHUNK.md
T

2.7 KiB
Raw Blame History

Defer the Jobs and Trash route module

Bounded PERF-09/PERF-15 experiment on codex/perf-jobtable-chunk, based on 97d06180b7f41f8cd9d93c30b373ff3e8eac67b2. JobTable now loads under the existing route Suspense boundary for Jobs and Trash. Route selection, authentication, localisation, query behaviour and settings ownership are unchanged. The change leaves the shared route loader in charge of loading feedback.

Paired cold browser observations

Three fresh contexts per route on each build, Chromium 151.0.7922.34, 1366 × 900, loopback Next static exports, no throttle, no HTTP cache or service workers, external traffic blocked. The authenticated fixture returned 15 synthetic Jobs. File counts and byte sizes use browser-observed Resource Timing JavaScript entries and the corresponding exported files. Gzip is an offline level-6 estimate. Content time is the first detected visible route marker, including browser automation polling.

Route JS files before → after Raw JS bytes before → after Gzip-6 estimate before → after Content median before → after
Landing 18 → 15 2,005,009 → 1,763,692 591,190 → 519,804 819 → 499 ms
Login 18 → 15 2,005,009 → 1,763,692 591,190 → 519,804 404 → 380 ms
Jobs 20 → 23 2,033,752 → 2,063,063 601,063 → 611,639 1,014 → 939 ms

The public byte reduction was 241,317 raw bytes (12.0%) per route, with a 71,386-byte gzip estimate reduction. Jobs loaded 29,311 more raw bytes and three additional JavaScript files. The first visible Jobs row was detected in 981–1,042 ms before and 928–971 ms after. These small loopback samples showed no first-row regression. A separate functional run reached Jobs in 1,058 ms under concurrent local checks. Controlled mobile/throttled repeats are still needed to understand the additional request waterfall. Timing samples do not establish production latency or Web Vitals.

All paired routes reached their markers with zero page errors. A separate synthetic browser check exercised keyboard navigation from Jobs to Trash in Bokmål and verified the existing deleted-only query. It also verified that an anonymous Jobs deep link redirects to Landing before requesting application rows. No writes or external calls were allowed. The initial guard probe expected Login as its landing destination and was corrected after source inspection confirmed Landing is the existing contract.

74 tests passed across route contracts, public auth presentation, Landing redirect, Login, shell navigation and JobTable. Full frontend typecheck, scoped ESLint with zero warnings and the Next static export passed. A3 integration, wider browser/device qualification and full performance acceptance remain open.