Image loading is the least portable thing in your shared UI
Decode, cache and memory pressure are platform concerns, and the composable that hides them decides your scroll performance.
We use Google Analytics to see which pages help people. No ads, no profiles. Privacy Policy
Decode, cache and memory pressure are platform concerns, and the composable that hides them decides your scroll performance.
Flags that differ per platform at the same moment produce bug reports nobody can reproduce.
Gradle metadata decides which variant each target gets. A library with no native artifact fails at link, not at resolution.
Android has a system back gesture with an owner. iOS has a navigation controller. A shared back stack answers to both.
A processor sees one compilation at a time. Generating into commonMain is a race you win by accident.
TextFieldState models text, selection and composition together. Editing through its transaction API preserves undo history and cursor position in ways string replacement cannot, which matters for any non-trivial input.
wasm has no filesystem and iOS has a sandbox with policy. An interface forces you to name what you need.
Each platform has a vetted crypto provider. A pure-Kotlin implementation has none of their review.
Swift sees NSError with a wrapped message, so a typed catch becomes a string match.
Random is seeded differently per target and is not secure anywhere. An id generator is a security decision.
Text height depends on content, font and scale, which makes uniform list rows harder than they look. Line-break strategies, hyphenation and baseline-relative padding are the tools that solve it without fixed heights.
The annotation lives in an Android artifact, so commonMain cannot use it — and that shapes how you write composables.