Hybrid Apps - No Marzipan

Everybody is talking about Marzipan and the amalgamation of UIKit and AppKit. This step is a logical consequence for Apple. But this is still just beneficial for the Apple universe and cross platform is much more than iOS, macOS, tvOS and watchOS.

I write macOS and iOS apps for over a decade now, but for my latest project I decided to choose a different approach. I decided to use web technologies in the front end, as I described in this previous article. You might say: Oh, you are using Electron and Cordova. Well, almost.

Instead of using existing web app wrappers I wrote my own. This might sound stupid, but it has some benefits. First of all the footprint on disc of these apps is much smaller. Then I have full control over native features, even the newest ones. And I can reuse a lot of existing native code as well.

For the front end I use HTML, CSS and JS. If you did not use it for a long time you will be surprised how much it has matured over time. Javascript in its current form of ECMAScript7 (ES7) and later has evolved to a super powerful yet sexy language. All the packaging is greatly performed by webpack, which you might refer to as the compiler of web apps.

But what indeed is a big difference is the fresh wind blowing in user interface concepts. ReactJS and VueJS are certainly the most production ready frameworks. You need to change your mindset in order to not try to reach out to a certain view and manipulate its properties. Instead you have a state and derive rendering of everything from it. The framework is doing updates in a smart and efficient way in a 60fps manner. This allows to split large project into smaller easier to handle pieces. And these little pieces can be reused on all platforms, even if the visual appearance has to be different.

For mobile devices I found a great UI framework called Framework7, which does a fantastic job. It comes really close to how the native UI looks and feels. But you benefit from the full flexibility of a web app. And you just need to set up the UI once and it looks great on both iOS and Android out of the box.

So for now I'm super happy with this approach and first results are in the wild at collect-app.com.