migrating-to-modifier-node
Migrating to Modifier.Node — Persistent Nodes Over composed { }
Modifier.composed { } allocates a fresh composable scope per modifier per composition: it cannot
be skipped, cannot be hoisted, and forces the parent to run on every recomposition. Modifier.Node
is a persistent node diffed by ModifierNodeElement.equals() — created once on first apply, updated
in place on subsequent applies. There is no per-recomposition allocation, no fresh composable
scope, and no parent invalidation chain, which is why Android Developers describes the system as "
designed from the ground up to be far more performant" than the legacy composed { } factory (see
developer.android.com/develop/ui/compose/custom-modifiers). This skill teaches Claude how to
author new modifiers as Modifier.Node and migrate legacy composed { } factories.