1.2 KiB
Tip #6 — Move mc-items.json out of the critical path
Date: 2026-06-17
Category: performance
Source: MC-Survival Wiki Daily Tip (backfilled from state.json)
Move mc-items.json out of the critical path
Move the 135KB mc-items.json file behind a TanStack Query server function with staleTime: Infinity and long-lived HTTP cache headers, so the browser downloads it once and reuses the cached copy across visits. It solves a measurable LCP and time-to-interactive hit: that JSON is currently fetched on every page, blocking the first paint. The signal is hard data — a 135KB blocking resource is the single largest performance offender on the recipe pages, and the existing item-picker only needs the data when the user actually opens the picker. Hydrating the result into a Zustand store or React context means downstream components can read items synchronously without re-fetching.
Implementation tips
- Move it behind a TanStack Query server function with staleTime: Infinity and HTTP cache headers (immutable, 1y).
- Hydrate into a Zustand store or React context once, then items are sync-accessible everywhere.
- For the item-picker specifically, lazy-load the JSON only when the picker is opened, not on page mount.