How do you choose between MVVM, MVC and something like TCA?
By what the app's complexity actually is. Apple's MVC is fine for a screen that displays and edits one thing; MVVM earns its place when view state is complex enough to test separately; a unidirectional architecture pays off when state is shared across many screens and bugs are about state getting out of sync. Choosing the heaviest one first costs velocity for years.