Lesson · Beginner

Progressive enhancement

Start with a working HTML experience, then add CSS and JavaScript enhancements without making basic access depend on them.

Editorial preview — publication review is still required.

Author
Editorial team
Reviewer
Publication review pending
Review tier
180-day

Start from the outcome

A link should navigate before JavaScript adds transitions. A form should describe a real submission before JavaScript adds inline feedback. Native elements should provide their built-in behavior whenever it fits.

<details>
  <summary>What does the workshop cost?</summary>
  <p>The introductory workshop is free.</p>
</details>

This disclosure works without a script. JavaScript is justified when the required interaction is not already available or when it improves feedback without removing the baseline.

Failure is a design state

Test with scripts blocked, slow, and throwing an error. Critical text and navigation should remain available. Label features that genuinely require JavaScript and provide a useful fallback.

Exercise

Choose a scripted component on a page. Write down the user’s goal, disable the script, and decide whether native HTML can preserve more of that goal.