Hacker News new | past | comments | ask | show | jobs | submit
I agree, the first section "Data Flow" reflects my concern with Compose as well:

> Data flow in SwiftUI is indeed reactive—but sometimes I wish it wasn’t, because it’s reactive in all the wrong ways. It often reacts to changes it should ignore, and it ignores the changes you actually care about. To me, SwiftUI’s reactivity is a black box: It makes achieving predictable behavior almost impossible.

In Compose, seeing rememberXXX(key1, key2) sprinkled all over with keys makes following the code difficult.

Then add some side effects like LifecycleEventEffect(Lifecycle.Event.ON_RESUME) { ... read permissions and render warning if we can't do something ... } and it becomes even more difficult to comprehend. Much of the Android framework APIs are not reactive, and polling on these UI events is still necessary (permission could have changed if the user put the app in the background, and you can't listen to them via Flow etc).

As the author says, these frameworks make the static data dependencies explicit but often at the expense of what is changing and why.

When I see rememberXXX(key1, key2) { } the first thing that comes to mind is, why would key1 and key2 change, and often that is not obvious.