We deleted half the framework
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.
The changelog says what changed. These posts say why — one for each release, published every other Friday. RSS feed.
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.
The habit map from utility strings to what PolyFish does instead — and the honest list of what does not translate.
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.
Two new themes, and a set of example pages that turn the framework's central claim into something you can diff.
A small bug with a useful lesson about :has(), and an examples section that finally reads like a directory.
Troubleshooting, a full attribute reference, a WCAG accounting, and a decision log that marks four of our own calls as wrong.
It was the most convincing demo on the site, and it weakened a header that protects every page on it.
Capability tables for six components, listing their deliberate limits beside their features.
Four more interactive panels, all radio inputs and :has(), none of them scripted.
Metric-matched fallback fonts measured from the shipped files, and a print stylesheet worth the name.
Cascade layers mean your CSS always wins, and the framework now mirrors itself under dir=rtl.
Twelve columns solve a problem most pages don't have. What we shipped instead, and when column classes are still the right answer.
Media queries ask about the window — wrong for a component that lives at three widths on one page. What changed when we stopped.
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.