2023-03-21 · HTML

Know when to reach for the native dialog element

Native focus trapping, Esc handling, and ::backdrop, plus the cases where you still need JavaScript.

Introduction

Compares the native dialog element with hand-rolled modals across accessibility, scroll locking, and browser quirks.

Field notes

A few patterns we kept seeing while puttering around HTML problems:

  • The simple version survived every refactor; the clever version didn’t.
  • Documentation written during the work aged far better than documentation written after.
  • The second time a problem shows up, it is already a pattern — name it.

A checklist you can steal

  • The failure is reproducible with one command.
  • The fix has a test that fails without it.
  • Someone other than the author has run it on their machine.

Closing

Write the short version future-you will actually read. That is the whole trick.