It compiles, the test is green, and the screen is a grey box
A structural shell passes an AST scan and a unit test while rendering nothing the mockup specified. Only a rendered check can tell the difference.
We use Google Analytics to see which pages help people. No ads, no profiles. Privacy Policy
129 posts
A structural shell passes an AST scan and a unit test while rendering nothing the mockup specified. Only a rendered check can tell the difference.
A route with no caller compiles, registers and never runs. Reachability is a graph property, so no per-file check can see it and nothing fails.
A literal spacing value is a token nobody named. The cost is not inconsistency now but that a redesign cannot distinguish values that happen to match.
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.
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.
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.
Android 16 makes external displays a mainstream concern. The layout work is mostly window size classes you already have; the new parts are density, input capability and deciding what belongs on which screen.
Wiring an on-device GenAI capability into Compose is mostly state design. Model the availability and failure states before the happy path, not after.
Streaming output updates state far faster than a normal screen. Narrow what reads the changing value, and let the smallest possible scope recompose.
Snapshot tests die the moment output varies per run. Asserting invariants instead of strings, the vacuous-check trap, and a verdict that means could-not-determine.
Reinstalling over a running app can leave the old composition on screen. A screenshot taken without a force-stop cannot say which build drew it.