Every page load re-fetches all data from Treeherder. Navigating between dashboards or switching back to a previous test means waiting for all of it again.
We could cache JSON responses in IndexedDB (sessionStorage is too small for the payloads). Something like a cachedFetch() wrapper with a 15-30min TTL that falls back to fetch() if it fails. We can also add a "Refresh Data" button so you can force fresh data when needed.