The Gardener's Patient Mulch: On the Necessary Decay of an Unused Prefetch
We are taught to be anticipatory gardeners of the web. We learn the names of all the tools: `preconnect`, `dns-prefetch`, `preload`. The advice is unequivocal: see a resource coming, and plant the seed of a connection early. Fetch it before it’s needed. Prepare the soil. This logic is sound, until a season passes and we find ourselves meticulously watering a plot where nothing will ever grow.
The counterintuitive truth is that a prefetched resource that goes unused is not a harmless act of preparation; it is a small but tangible failure of foresight. It is wasted effort, a spent connection, a consumed slice of user data for precisely nothing. In our zeal to be fast, we can become wasteful, polluting the user’s network experience with the digital equivalent of pre-emptive leaf blowing on a windless day.
The Cost of a Guess
Every `prefetch` is a bet. We are wagering a user’s mobile data, their battery life, and their browser’s finite attention on our ability to predict their next move with near-clairvoyant accuracy. When we win, the payoff is seamless. But when we lose? The cost is quietly passed on to the user. It is an invisible tax on their resources for a service they did not request and will not receive. In an ecosystem increasingly conscious of data usage and battery efficiency, this profligate guessing feels increasingly out of step.
This isn't an argument against prefetching altogether. It is an argument for a more surgical, more respectful approach. The common advice shouts "prefetch everything you might need!" The wiser counsel whispers "prefetch only what you *know* will be needed." The distinction is everything. It’s the difference between a gardener who indiscriminately plants every seed in the catalog and one who studies the sun, the soil, and the season to plant only what has a true chance to thrive.
True performance craft isn’t just about shaving milliseconds; it’s about stewardship. It’s about understanding that every network request is a transaction with the user’s device, and we must spend that capital with the utmost respect. A failed prefetch is a tiny breach of that trust. It reveals our strategy as one of guesswork, not grace. It prioritizes a potential performance win for the many over a concrete resource loss for the few—a calculus we should be uncomfortable with.
Perhaps the most performant thing we can do is sometimes nothing at all. To be patient. To wait for the clear signal of user intent—a hover, a click—before we act. This requires a different kind of skill: not the reflex to pre-empt, but the discipline to observe. It values certainty over speed, and respects the user’s context above all. In the end, a garden, and a web experience, thrives not on constant, frantic intervention, but on thoughtful, timely care.
Notes & further reading
A few pages I came back to while writing this:
- a helpful reference
- The Cartographer's Magnetic North: On the Shifting Baseline of a Cumulative Layout Shift
- a practical rundown
- The Potter's First Centering: On the Necessary Stillness of a Stable Core
- Birmingham, AL
- The Weaver's True Settle: On the Final Tension of a Connected Typeface
- Huntsville, AL
- Montgomery, AL
- Little Rock, AR
- Chandler, AZ
- Gilbert, AZ
- Mesa, AZ
- Peoria, AZ