Skip to main content

Android with Kotlin, iOS with Swift, Kotlin Native, flutter.io, React Native, PWA, Xamarin, Hybrid - which way to go?

Currently there are tons of frameworks how to get your business model to the user... and in the app store
  • Full Native
    • Android with Kotlin, iOS with Swift
    • Deepest integration
    • Single way to make sure that you have no lock-in effect with a framework, and you are f**ed, when Apple or Google disallows the usage of a specific technology...
    • Two teams required
    • 2x code
  • PWA (Progressive Web App)
    • Write offline- and push-capable PWA with web-technologies only
    • Some native features might require hybrid native development and bridging (like In-App purchases, AR, ...)
    • In best case:
      • One web team only for website and app
      • Maybe some native specialists for special features
  • Kotlin Native
    • Develop a shared framework with or without UI using Kotlin Native
    • Additional native code will most probably be required
    • Big Android team, small iOS specialists
  • flutter.io (React Native | Xamarin | ... )
    • One codebase (flutter: Dart, React Native: JavaScript, Xamarin: C#)
      • Additional native code will most probably be required
    • flutter.io is supposed to be the next default development platform for upcoming Android-successor Fuchsia - and has a good hype at the moment 
    • Big flutter team with some iOS and Android specialists
      • Or enthusiastic native developers that want to jump on flutter
  • Hybrid
    • Mix of PWA, Web and Full Native where you choose e.g. on a screen or feature-wise level what to use with which technology
    • Mix of Web, Android and iOS specialists
How to make a decision from here?
There is no simple answer to this - the longer you are working with the technologies and teams, the more the context gets into focus rather than the technology itself. You should ask yourself: What is the most suitable technology for my context?
  • What are the planned features and which technologies are mandatory?
  • How can I standout from my competitors?
  • Which skills are in my team?
  • What budget do I have at hands?
  • How fast do I need to move - how much risk can I take (lock-in effect, dropped technology, development speed, quality, ...)?
  • How long-term do I have to plan?
  • Which crew/teams do I have at hands with which skills... and which commitment?
    • Freelance/internal?
    • Technical skills?
  • Do I have an app-only use-case or do I have to maintain a website as well?
After having answered those questions for yourself, head back to the stacks presented above - and choose your weapon.

What do we do at WELT?
Well, we have a full native team staffed already and our native apps have excellent ratings.

For Edition (iOS and Android) we have chosen to go for the (local) hybrid way - so the main application is native code but most of the views are WebViews, showing local HTML for performance and synergy reasons.

For News (iOS and Android) we went fully native, following the Server-driven UI principle:
  • We defined a design language with pre-defined, multi-purpose bricks, having the backend defining the screens and data
  • We shift as much as possible of the business logic to the backend, to avoid double implementation and staying flexible for changes without requiring to do another app release in the App Stores
  • We have a slighty bigger Android/Kotlin crew that takes care not only of the Android client, but also of the backend implementation using Kotlin with Spring Boot
    • We share a Kotlin lib with the Android Client and the backend
    • We are also trying to share the lib with iOS using Kotlin/Native but are not there yet
For us this works out quite nicely and we can move fast, adding more and more flexibility by shifting more and more dynamic logic to the backend.

For you it most probably is a question of your context
😊

Thanks to Anton Averin and Pawl Polanski for your input!

More reads:

Comments

Most Favorite Posts

Server-driven UI (SDUI): Meet Zalandos AppCraft and AirBnB Lona

A short WTF: Joe Birch:  SERVER DRIVEN UI, PART 1: THE CONCEPT Zalando seems to follow the SDUI principle as well - defining a common design language and construct the screens on the backend while displaying them natively on the clients. They even go one step further; they implemented a mighty toolset to enable non-technical stakeholders to define their own native app screens Compass: Web tooling to create screens and bind data Beetroot: Backend service that combines the screen layout definition with the data Lapis/Golem: iOS/Android UI render engines Crazy cool! Good job, guys (when you do an open-source release?) To even move faster a Flutter based UI render engine implementation was great! See also AirBnB Lona SDUI approach Building a Visual Language Why Dropbox sunsetted its universal C++ mobile project and AirBnB its React Native implementation

Speed up your unit tests! Swap out your App Delegate for testing.

Faster, please One thing that can slow our tests down is if our App performs expensive tasks on startup and it is not unusual to place code that synchronizes with a server in our implementation of UIAppDelegate. Luckily for us there is a way to change the production App Delegate with a fake that does nothing. Objective-C class FakeAppDelegate: UIResponder, UIApplicationDelegate {   var window: UIWindow?   func application(application: UIApplication,     didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {     self.window?.rootViewController = UIViewController()     return true   } } let isRunningTests = NSClassFromString("XCTestCase") != nil if isRunningTests {   UIApplicationMain(Process.argc, Process.unsafeArgv, nil,     NSStringFromClass(FakeAppDelegate)) } else {   UIApplicationMain(Process.argc, Process.unsafeArgv, nil,     NSStringFromClass(AppDelegate)) ...

Titanium: Releasing Memory

- It’s true that you can’t manually manage your application objects’ reference count in iOS applications. There are, however, things you can do to free up memory – the big ones in the 1.x product are closing windows (which releases all UI resources associated with the window) and setting references to a proxy object (like one returned by Ti.UI.createXXX) to null, which will release the resources associated with that object. Why you should stay away from Titanium

Leveraging your iPhone development expertise to build Windows Phone 7 applications

Assuming you are a happy coder, the joy of developing software all comes down to a few things: Building something cool that users will enjoy Getting rewards from users and recognition from peers Learning how to solve new challenges and build novel features. Even if you have a solid expertise on a particular platform/language, I think it is essential to be a “polyglot” developer. In other words, you might have a native or preferred language, but opening your mind to others can be very stimulating and will bring considerable value to your abilities and your resume. Jumping from one platform or language to another can introduce breaking changes in your habits, but ultimately change is very stimulating and will expand your opportunities. If you are a .NET developer, learning Windows Phone development is not really “change.” Instead, it is more of a continuum, where you just add new features to what you already know. If you are an iPhone developer, new to Windows Phone (and .NET), ...

CouchDB for iOS

A build of Apache CouchDB optimized for iPad, iPhone, and iPod Touch iOS-Couchbase CouchDB - Key Features Documents Views Schema-Free Distributed CouchDB is a peer based distributed database system. Any number of CouchDB hosts (servers and offline-clients) can have independent “replica copies” of the same database, where applications have full database interactivity (query, add, edit, delete). When back online or on a schedule, database changes are replicated bi-directionally. CouchDB has built-in conflict detection and management and the replication process is incremental and fast, copying only documents and individual fields changed since the previous replication. Most applications require no special planning to take advantage of distributed updates and replication. CouchDB

App Store Optimization (ASO) Factors and Trends 2020... and earlier

New in ASO: Keyword Spy, Keyword Lists, and Search Visibility Level-up your strategy with these new ASO enhancements in our mobile marketing suite: Keyword Spy, Keyword Lists, and Search Visibility. AppAnnie The ASO Factors & Trends for 2018 study is based on survey data from over 60 ASO and app marketing professionals who were asked to evaluate the effect of different on-metadata and off-metadata factors on Search Rankings and Conversion Rate of mobile apps and games. The TOP 5 factors responsible for ASO on Google Play Store and Apple App Store (on both Search and Conversion Rate level) are nearly identical: App Name / Title Localized product page User Ratings Subtitle / Short Description User reviews TheTool Another nice blog about ASO: Important Tips on Writing An App Description The Apple App Store Optimization Guide 5 Tips on How to Increase App Downloads Keywords Optimization ... MobileAction