From fifteen years of solid MVC apps to the clear, obvious choice of MVVM for GeoLog in the age of SwiftUI.
What MVVM actually is, where the Controller went, and why the switch felt obvious.
My friend has been writing MVC apps since before most of today’s iOS developers had their first smartphone. Good apps. Shipping apps. Apps that handle real complexity without falling apart. So when I told him that GeoLog — my photo location scouting app — is built on MVVM, he gave me the look.
You know the one. The slight squint. The almost-imperceptible pause before he said, “isn’t that just a Controller with a different name?”
I didn’t have a great answer on the spot. I mumbled something about data binding and testability and watched his expression settle into polite skepticism. My friend wasn’t wrong to push back — MVC works. It’s proven. Fifteen years of shipping software doesn’t lie.
But I knew there was a real answer in there somewhere. So I went home and tried to put it together properly. What follows is what I came up with — what MVVM actually is, why it exists, where the Controller went, and why SwiftUI made the switch feel less like a choice and more like the obvious path forward.
(more…)