Publishing a KMP library commits you to every target you listed
Dropping a target in a minor release breaks consumers at resolution time.
We use Google Analytics to see which pages help people. No ads, no profiles. Privacy Policy
Dropping a target in a minor release breaks consumers at resolution time.
Strong skipping lets composables skip even with unstable parameters, using instance comparison, and memoises lambdas automatically. It removes most of the need for @Immutable annotations and changes what the compiler report means.
Compose infers stability per class and per parameter, and can emit a report saying what it concluded. Understanding the inference rules — and why List is unstable — explains most unnecessary recomposition.
Bus factor is a property of your supply chain, not just your team.
Storing UTC is necessary and not sufficient. Any report bucketed by day needs a declared zone.
Low selectivity plus random access beats a sequential scan only sometimes.
A committed secret is public the moment it is pushed. Deleting the line changes nothing.
Compose performance work reduces to knowing which of composition, layout and draw is being invalidated, and why. The diagnostic order matters more than any individual optimisation.
Compose's drag-and-drop moves ClipData between sources and targets, including across apps. Reordering a list is a different problem with a different solution, and conflating them is why reorder implementations get complicated.
Source compatibility and binary compatibility are different guarantees, and a default argument preserves only the first.
Copy-pasted build config drifts silently per module. A convention plugin makes the shared part shared.
animate*AsState holds its value in the composition. A key change starts it over.