We have worked in mobile development since the iPhone 3GS era in 2009 and have distributed our own apps since 2016. The iPhone showed what was possible: a powerful handheld device connected to the internet could deliver services around the world.
Usage data from our own apps lets us evaluate technology and UI/UX continuously in real-world conditions. It also lets us test at a scale that individual projects rarely reach. We apply what we learn to design work beyond mobile.
In 2016, we compared Xamarin, Cordova, and React Native through hands-on implementation, and we have evaluated Flutter since its public release. Today, we focus on native development in Swift and Kotlin and have used SwiftUI extensively in production since iOS 15.
Working close to the OS and hardware lets us optimize both measured performance and perceived responsiveness in rendering and camera work. We can also use new OS features and C/C++ libraries without waiting for an abstraction layer to catch up. Long-running apps are also less affected by breaking changes in cross-platform frameworks.