A Compose UI test in commonTest runs five times and fails on one
The clock, the input source and the available fonts differ per target.
We use Google Analytics to see which pages help people. No ads, no profiles. Privacy Policy
138 posts
The clock, the input source and the available fonts differ per target.
First paint waits on a wasm binary and a font, which no mobile profile shows.
Density comes from the platform and the user's font scale multiplies it.
Font rasterisation differs per renderer, so one reference image cannot hold.
MaterialTheme scopes values to a subtree, which is the wrong shape for reusable per-component configuration. Compose's styles direction addresses that gap; wrapper composables are the pattern to use today.
IME composition, autocorrect and hardware keyboards reach Compose differently per platform, so state hoisted too far loses keystrokes on exactly one of them.
A hardware button, an edge swipe, a window close and a browser history entry are not the same event. One shared handler gets at least two of them wrong.
Same folder names, different resolution. The accessor is typed, and a missing qualifier fails somewhere new.
Material models colour, type and shape. Everything else a design system needs — spacing, motion, semantic colour — has to be added. Extending with a parallel CompositionLocal is usually right; a full custom system rarely is.
Material's shape scale gives five corner sizes mapped to component categories. The system is simple; the interesting parts are clip ordering, asymmetric corners, and shapes that must respond to state.
Material's type scale gives fifteen named roles instead of a font-size parameter. Naming the role rather than the size is what makes typography consistent across a team and correct at large font scales.
Dynamic colour derives a full Material scheme from the user's wallpaper. It improves the feel of most apps and destroys brand recognition if applied indiscriminately, so the interesting work is deciding what stays fixed.