<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>dout.dev - frontend</title>
    <link>https://dout.dev/tags/frontend/</link>
    <description>RSS feed for posts tagged with frontend</description>
    <atom:link href="https://dout.dev/tags/frontend.xml" rel="self" type="application/rss+xml" />
    <language>en</language>
    <lastBuildDate>Tue, 30 Jun 2026 00:00:00 GMT</lastBuildDate>
    <item>
      <title>Honest Lazy Loading: IntersectionObserver vs Native loading=lazy (The Real Difference)</title>
      <link>https://dout.dev/posts/2026-06-30-honest-lazy-loading.html</link>
      <guid isPermaLink="true">https://dout.dev/posts/2026-06-30-honest-lazy-loading.html</guid>
      <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
      <description>The two tools, in one paragraph</description>
    </item>
    <item>
      <title>Accessible Scrollspy and Outline Without contenteditable (Yes, It Can Be Done)</title>
      <link>https://dout.dev/posts/2026-06-27-accessible-scrollspy-outline.html</link>
      <guid isPermaLink="true">https://dout.dev/posts/2026-06-27-accessible-scrollspy-outline.html</guid>
      <pubDate>Sat, 27 Jun 2026 00:00:00 GMT</pubDate>
      <description>The feature and its trap</description>
    </item>
    <item>
      <title>A Custom Element for Syntax Highlight: Why I Wrote `pix-highlighter`</title>
      <link>https://dout.dev/posts/2026-06-23-custom-element-syntax-highlight.html</link>
      <guid isPermaLink="true">https://dout.dev/posts/2026-06-23-custom-element-syntax-highlight.html</guid>
      <pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate>
      <description>The stack I did not want</description>
    </item>
    <item>
      <title>The End of Borrowed Abstractions</title>
      <link>https://dout.dev/posts/2026-06-13-the-end-of-borrowed-abstractions.html</link>
      <guid isPermaLink="true">https://dout.dev/posts/2026-06-13-the-end-of-borrowed-abstractions.html</guid>
      <pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate>
      <description>The reflex that shaped software</description>
    </item>
    <item>
      <title>Why DisplayPreferencesPopover Exists (Accessibility Is Not a Checklist, It&apos;s User Preferences)</title>
      <link>https://dout.dev/posts/2026-06-09-why-display-preferences-popover-exists.html</link>
      <guid isPermaLink="true">https://dout.dev/posts/2026-06-09-why-display-preferences-popover-exists.html</guid>
      <pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate>
      <description>Accessibility is not one feature (it&apos;s ALL of them)</description>
    </item>
    <item>
      <title>How PixHighlighter Is Built (Or: I Wrote a Syntax Highlighter Because Prism Was Too Bloaty)</title>
      <link>https://dout.dev/posts/2026-06-06-how-pixhighlighter-is-built.html</link>
      <guid isPermaLink="true">https://dout.dev/posts/2026-06-06-how-pixhighlighter-is-built.html</guid>
      <pubDate>Sat, 06 Jun 2026 00:00:00 GMT</pubDate>
      <description>The contract stays plain (because HTML should be readable)</description>
    </item>
    <item>
      <title>WCAG 2.2 AA Without ARIA-Spam (Landmarks, Heading Order, Skip-Links - That&apos;s 80% of It)</title>
      <link>https://dout.dev/posts/2026-06-02-wcag-22-aa-without-aria-spam.html</link>
      <guid isPermaLink="true">https://dout.dev/posts/2026-06-02-wcag-22-aa-without-aria-spam.html</guid>
      <pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate>
      <description>The unpopular opinion (brace yourself)</description>
    </item>
    <item>
      <title>Modern CSS Is Enough (Container Queries, Nesting, `:has()` - No Framework Required)</title>
      <link>https://dout.dev/posts/2026-05-30-modern-css-is-enough.html</link>
      <guid isPermaLink="true">https://dout.dev/posts/2026-05-30-modern-css-is-enough.html</guid>
      <pubDate>Sat, 30 May 2026 00:00:00 GMT</pubDate>
      <description>The short version (for the impatient)</description>
    </item>
  </channel>
</rss>
