<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>PolyFish</title>
    <link>https://polyfish.org/blog</link>
    <atom:link href="https://polyfish.org/blog/feed.xml" rel="self" type="application/rss+xml"/>
    <description>Release notes for the PolyFish CSS framework, with the reasoning behind them.</description>
    <language>en</language>
    <lastBuildDate>Fri, 16 Oct 2026 09:00:00 +0000</lastBuildDate>
    <item>
      <title>We deleted half the framework</title>
      <link>https://polyfish.org/blog/half-the-framework</link>
      <guid isPermaLink="true">https://polyfish.org/blog/half-the-framework</guid>
      <pubDate>Fri, 16 Oct 2026 09:00:00 +0000</pubDate>
      <description>1,740 classes down to 857, and nothing lost but a twelve-column grid nobody used. What went, how we decided, and the bug deleting it uncovered.</description>
    </item>
    <item>
      <title>Coming from Tailwind</title>
      <link>https://polyfish.org/blog/coming-from-tailwind</link>
      <guid isPermaLink="true">https://polyfish.org/blog/coming-from-tailwind</guid>
      <pubDate>Mon, 05 Oct 2026 09:00:00 +0000</pubDate>
      <description>The habit map from utility strings to what PolyFish does instead — and the honest list of what does not translate.</description>
    </item>
    <item>
      <title>What a real browser found that no checker could</title>
      <link>https://polyfish.org/blog/what-a-browser-found</link>
      <guid isPermaLink="true">https://polyfish.org/blog/what-a-browser-found</guid>
      <pubDate>Fri, 02 Oct 2026 09:00:00 +0000</pubDate>
      <description>The first browser run returned 55 failures. Forty were our own test server; the rest led to nine framework bugs, two shipping since 0.17.</description>
    </item>
    <item>
      <title>Seven palettes, one page of markup</title>
      <link>https://polyfish.org/blog/seven-palettes-one-page</link>
      <guid isPermaLink="true">https://polyfish.org/blog/seven-palettes-one-page</guid>
      <pubDate>Fri, 18 Sep 2026 09:00:00 +0000</pubDate>
      <description>Two new themes, and a set of example pages that turn the framework&#x27;s central claim into something you can diff.</description>
    </item>
    <item>
      <title>The changelog filter never worked</title>
      <link>https://polyfish.org/blog/the-filter-that-never-worked</link>
      <guid isPermaLink="true">https://polyfish.org/blog/the-filter-that-never-worked</guid>
      <pubDate>Fri, 04 Sep 2026 09:00:00 +0000</pubDate>
      <description>A small bug with a useful lesson about :has(), and an examples section that finally reads like a directory.</description>
    </item>
    <item>
      <title>Documentation that says what it doesn&#x27;t do</title>
      <link>https://polyfish.org/blog/documentation-that-admits-limits</link>
      <guid isPermaLink="true">https://polyfish.org/blog/documentation-that-admits-limits</guid>
      <pubDate>Fri, 21 Aug 2026 09:00:00 +0000</pubDate>
      <description>Troubleshooting, a full attribute reference, a WCAG accounting, and a decision log that marks four of our own calls as wrong.</description>
    </item>
    <item>
      <title>Why we removed the sandbox</title>
      <link>https://polyfish.org/blog/why-we-removed-the-sandbox</link>
      <guid isPermaLink="true">https://polyfish.org/blog/why-we-removed-the-sandbox</guid>
      <pubDate>Fri, 07 Aug 2026 09:00:00 +0000</pubDate>
      <description>It was the most convincing demo on the site, and it weakened a header that protects every page on it.</description>
    </item>
    <item>
      <title>A sandbox, and what components cannot do</title>
      <link>https://polyfish.org/blog/a-sandbox-and-what-cannot-be-done</link>
      <guid isPermaLink="true">https://polyfish.org/blog/a-sandbox-and-what-cannot-be-done</guid>
      <pubDate>Fri, 24 Jul 2026 09:00:00 +0000</pubDate>
      <description>Capability tables for six components, listing their deliberate limits beside their features.</description>
    </item>
    <item>
      <title>Documentation you can poke</title>
      <link>https://polyfish.org/blog/docs-you-can-poke</link>
      <guid isPermaLink="true">https://polyfish.org/blog/docs-you-can-poke</guid>
      <pubDate>Fri, 10 Jul 2026 09:00:00 +0000</pubDate>
      <description>Four more interactive panels, all radio inputs and :has(), none of them scripted.</description>
    </item>
    <item>
      <title>Printing, and the font swap that moved headings</title>
      <link>https://polyfish.org/blog/printing-and-the-font-swap</link>
      <guid isPermaLink="true">https://polyfish.org/blog/printing-and-the-font-swap</guid>
      <pubDate>Fri, 26 Jun 2026 09:00:00 +0000</pubDate>
      <description>Metric-matched fallback fonts measured from the shipped files, and a print stylesheet worth the name.</description>
    </item>
    <item>
      <title>Cascade layers and right-to-left</title>
      <link>https://polyfish.org/blog/cascade-layers-and-rtl</link>
      <guid isPermaLink="true">https://polyfish.org/blog/cascade-layers-and-rtl</guid>
      <pubDate>Fri, 12 Jun 2026 09:00:00 +0000</pubDate>
      <description>Cascade layers mean your CSS always wins, and the framework now mirrors itself under dir=rtl.</description>
    </item>
    <item>
      <title>We didn&#x27;t ship a grid system</title>
      <link>https://polyfish.org/blog/no-grid-system</link>
      <guid isPermaLink="true">https://polyfish.org/blog/no-grid-system</guid>
      <pubDate>Fri, 29 May 2026 09:00:00 +0000</pubDate>
      <description>Twelve columns solve a problem most pages don&#x27;t have. What we shipped instead, and when column classes are still the right answer.</description>
    </item>
    <item>
      <title>Container queries, used in anger for a month</title>
      <link>https://polyfish.org/blog/container-queries-in-anger</link>
      <guid isPermaLink="true">https://polyfish.org/blog/container-queries-in-anger</guid>
      <pubDate>Fri, 15 May 2026 09:00:00 +0000</pubDate>
      <description>Media queries ask about the window — wrong for a component that lives at three widths on one page. What changed when we stopped.</description>
    </item>
    <item>
      <title>The checker that says no</title>
      <link>https://polyfish.org/blog/the-checker-that-says-no</link>
      <guid isPermaLink="true">https://polyfish.org/blog/the-checker-that-says-no</guid>
      <pubDate>Fri, 01 May 2026 09:00:00 +0000</pubDate>
      <description>A build script that refuses to ship is the cheapest code review you will ever get. Every rule in ours exists because something broke first.</description>
    </item>
  </channel>
</rss>
