@me/changelog: HTML

version: 2026.04

Contextual & Historical Importance

I learned HTML around 2003 as a child. I was learning right in the middle of the XHTML era, when every tutorial was teaching <br /> as gospel. XHTML was the official standard, and self-closing void elements were required.

From 2012 to 2014, I was moving through some pretty big life stages—college graduation, moving out, falling into a career by-way-of internship, a post-hire for one year before lay-off, six months of unemployment, and finally finding a position I would stay at for ten years before moving on again. During those two turbulent years, HTML5 quietly reversed the trailing slash, and void elements no longer required it. I focused on learning other technologies required for the job I was trying to keep, and the demands for my position evolved so quickly that I never had a reason to look back at something as basic as <br>. I adopted the patterns that were being used around me, omitted the trailing slash most times, but it never felt intentional. The problem remains, though; I still sometimes default to the old habit and include it. The reality is the HTML platform kept growing while I was heads-down in deadlines, frameworks, and casually adopting new habits without really understanding why.

Void Elements

area, base, br, col, embed, hr, img, input, link, meta, source, track, wbr

Severity: cosmetic → browsers ignore trailing slash

Previous Pattern: <br />

New Pattern: <br>

Exception: self-closing tags required in void elements for JSX, XML, XHTML, SVG

Semantic Tags

<header>, <nav>, <article>, <section>, <footer>, etc.

Severity: cosmetic → additive

Value: accessibility, SEO

Previous Pattern: <div> soup

New Pattern: retire the reflex to reach for <div> when a more specific element exists

Native Lazy Loading

loading="lazy"

Severity: additive → deprecated (the JS approach)

Previous Pattern: lazysizes library, IntersectionObserver boilerplate

New Pattern: loading="lazy" on img and iframe

Dialog

<dialog>

Severity: deprecated (the div/JS modal pattern)

Previous Pattern: div + z-index + JS focus trap + aria roles + backdrop div

New Pattern: <dialog> with showModal() handles all of it natively