Stop hand-registering what a processor can see
A registry, a binding and a cleanup hook maintained by hand are three chances to forget. A processor already has what it needs to write all three.
We use Google Analytics to see which pages help people. No ads, no profiles. Privacy Policy
120 posts
A registry, a binding and a cleanup hook maintained by hand are three chances to forget. A processor already has what it needs to write all three.
A hardcoded string is not just untranslated — it is invisible to the sweep that finds untranslated text, so coverage reports complete while it is not.
Replacing a cached page is several row operations, and a reader arriving between them observes a state that never existed. Make the swap one transaction.
Recomposition scope is set by where a value is read, not where it is declared. Most Compose performance problems are a read placed higher than it needed to be.
Tests that assert on visible text break on copy edits, which trains people to weaken assertions. A test tag is a deliberate contract that survives rewording.
Starting in a platform source set means shared code never gets written. Default to commonMain and let the compiler decide what genuinely cannot live there.
Calling it a configuration cache incompatibility frames a real defect as a missing feature. The task captures a live object where it should capture a value.
The compiler verifies an expect declaration's shape on every platform and nothing verifies its meaning. The narrowest declaration is the only promise you can keep.
Thirty-six fork modules were declared in a template-owned file that syncs by overwrite. The seam built for exactly this was present, documented and empty.
Scaffold arranges the app shell and hands back the insets its own bars consume. Ignoring that PaddingValues is the single most common Compose layout bug, and edge-to-edge makes it worse.
A cache and the writes against it drift apart in five distinct ways. Each ships separately, each looks reasonable, and all five look identical to a user.
A cold open and a deliberate refresh want different things from a cache. One read method forces the repository to guess what only the call site knows.