AddThisFeature

Font Loading Strategy

Load the custom fonts without invisible text, broken metrics, or a late reflow.

involved Design Systems

What it adds

A defined loading, fallback, and failure path for every custom font the interface depends on.

What your agent is told to do

5
  1. 1

    List every font family, weight, and style the app actually renders, then check that list against what is being downloaded. Most apps ship weights nothing on the page uses.

  2. 2

    Choose a fallback whose metrics are adjusted to match the custom face, so the text laid out before the font arrives occupies close to the same space and the swap does not reflow the page.

  3. 3

    Preload only the faces needed for the first meaningful render. Preloading everything competes with the request for the content itself and delays the thing the user came for.

  4. 4

    Define what happens when the font never arrives: blocked network, a failed request, an unsupported format. The page must remain fully readable in the fallback indefinitely rather than showing invisible text.

  5. 5

    Do not solve a slow font by hiding text until it loads. Blank text on a working page is a worse failure than a brief change of typeface, and it is the failure users report as the site being broken.

Edge cases it handles

7
  • The fallback must be metric-compatible or metric-adjusted, otherwise the swap shifts every line of text and the layout jumps after the page appeared finished.
  • Preloading more than the critical faces steals bandwidth from the first render, so the preload list needs to be short and justified rather than generated from the whole family.
  • Variable fonts change the calculation — one file may replace six, but only if the app actually uses the axes it carries, and language subsets need their own decision about which are fetched eagerly.
  • A complete font failure must leave the page readable in the fallback rather than blank, which means the invisible-text period has to be bounded and short.
  • Fonts loaded conditionally for a script the user's content requires must not arrive so late that the text has already been measured and laid out with a wrong-width fallback.
  • Icon fonts fail differently from text fonts: an unloaded icon face renders as boxes or as unrelated characters, which is why icons belong in the Icon System rather than in a font.
  • Reserving space for text that has not rendered is shared ground with Layout Shift Guard; this feature owns the font metrics and swap behaviour, and that feature owns detecting the movement when it happens anyway.

Definition of done

9
  • Text is readable throughout loading and never invisible for a prolonged period.
  • Fallback metrics are adjusted so the swap produces no visible reflow.
  • Only the faces required for first render are preloaded.
  • Every weight and style downloaded is one the app actually renders.
  • A total font failure leaves the interface fully usable in the fallback.
  • Variable font axes and language subsets are loaded deliberately rather than wholesale.
  • No icon or symbol rendering depends on a custom font loading successfully.
  • The feature matches the existing design system.
  • No existing functionality is broken.

Related features

How it works

  1. 1

    Copy the link

    Grab the Markdown instruction URL for this feature.

  2. 2

    Give it to your AI

    Paste it into Claude Code, Cursor, v0, Lovable — whatever you build with.

  3. 3

    It inspects, then implements

    Your agent reads your existing app first, then adds the feature to fit it.

Works with your stack

These instructions are written to adapt. They tell the agent to detect your framework, match your existing design system, and reuse what you already have — rather than assuming a particular stack.

Need it tighter than that? Customize the feature and tell it exactly what you're running.