Skip to main content
← 🎨 CSS as a design systemΒ·Module B4 Β· Lesson 1
TaskSet body font-family to 'system-ui, sans-serif' and font-size to 16px. Set code, pre to 'ui-monospace, SF Mono, Consolas, monospace' at 14px.

font-family stacks: system-ui first

75 XP6 min
Theory

What "system-ui" gives you for free

body {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI",
               Roboto, "Helvetica Neue", Arial, sans-serif;
}

Each entry is a fallback. The browser walks the list left-to-right and uses the first one available.

  • -apple-system / BlinkMacSystemFont β€” San Francisco on Mac/iOS.
  • Segoe UI β€” Windows.
  • Roboto β€” Android / Chrome OS.
  • Helvetica Neue β€” old Mac fallback.
  • Arial β€” Windows fallback.
  • sans-serif β€” last-resort generic family.

Modern CSS has the shorter system-ui keyword that maps to the OS's native UI font:

body { font-family: system-ui, sans-serif; }

That's 2 entries instead of 6, and works on every modern browser.

Why prefer the system font

  • Zero download. No FOUT, no CDN hit, no Lighthouse penalty.
  • Familiar to the user. Your site feels native to their OS.
  • Hinted for the screen. Apple, Microsoft, Google spent millions making these readable at small sizes.

When to ship a custom font

  • Brand identity (your logo or a hero headline).
  • Specific aesthetic (serif for editorial, mono for code).
  • Variable font that does work with one file (next lesson).

For body text on a SaaS product, system-ui is usually the right call.

Generic families

Always end your stack with a generic family:

  • sans-serif β€” Helvetica-style
  • serif β€” Times-style
  • monospace β€” Courier-style
  • system-ui β€” OS-specific UI font
  • ui-monospace β€” OS-specific mono (SF Mono on Mac, Cascadia on Win, etc.)
πŸ”’

Sign up to start coding

Theory is open to everyone. The interactive editor, live preview, and check are unlocked with a 7-day free trial β€” card required, cancel anytime.

Sign up β€” free trial β†’

First 10 lessons in each track are free. No card needed for those.

← PreviousNext lesson β†’

Get one Python or web tip a day β€” by email

Short, hand-written, no spam. Unsubscribe in one click.