Dub Dub, as Apple calls WWDC, has just ended. We are after the opening keynote which brings a lot of new stuff. The keynote was split into three parts. The first one addressed Apple platforms - some changes here and there in iOS, macOS and tvOS. The second part was dedicated to hardware. I am going to skip these two parts, as they are very well covered in most of popular tech channels. I’d like to focus on the third part, because from the perspective of a guy who makes a living on building software for Apple platforms, what’s happened there outshines the other two by a large margin.
The third part was dedicated to… Yes! Developers! In fact, it has been the most developer-centric part of WWDC keynote since Swift was first introduced in 2014 (or even earlier than that!). Two topics were discussed in this part and both are very significant.
The first of them was a subject of rumors for quite a long time across the Internet, but it does not make it any less exciting. Marzipan, oh sorry, Catalyst is here. This one is a real game changer. Thanks to it, when you create an iOS app, you can add a Mac app with a minimal effort. And we’re not talking here about any kind of iOS emulator-thing. No. It’s a fully native application. It can take full advantage of the macOS and of the computer hardware itself.
iOS apps come to macOS
So wait. How does it work? What does it look like? We’ve been all thinking about it since the first rumors about Marzipan came out. Now it’s officially confirmed. Apple developers are able to bring UIKit to the macOS. It means we can use UI, that we already built for iOS devices, on the Mac. As Mac’s screen size is, of course, more alike to the one of iPad’s, the Mac app will look pretty much like an iPad app with an additional menu bar. Therefore, the better your app adapts to iPad screen, the better it will look on the Mac. Of course, this is just a warm up. Let’s consider this as a first step of bringing your product into the Mac. After you run the iPad version on Mac, the real fun begins. You are able to access Mac resources like in any other macOS application. All of the macOS API’s and tools are there to help you build a great experience for your users.
What’s more interesting, Apple says that the process of adding Mac platform to your existing project is painless. As a proof, they invited one of the Atlassian iOS Developer’s, who had been playing with Catalyst for some time. He states that they were able to run Jira on macOS within days. Sounds great.
Imagine one code base for iOS and macOS app. A fully integrated project that is developed and maintained by one team of, yes, iOS developers. Less code, fewer dependencies, shared parts and one team for two platforms, sounds like fewer bugs to me. The funny thing is, how do we call iOS and macOS developers? Full Apple Stack Developer?
Why this matters?
There is a ton of app categories, where having a Mac counterpart makes perfect sense, like all the streaming and VOD apps, task managers and calendars, recipe apps, messaging apps, shopping and booking apps… And these are just the ones that immediately come to mind. Imagine what potential Apple has enabled with this move. Imagine how many ideas that were restrained by limited budgets can now be accomplished.
This can have a big impact on how we design portfolio of the apps within a Product. I had an opportunity to work on many projects that required two teams just because there was a web app needed. It’s quite a habit to build a mobile app and to have web Admin panel at the same time. Mobile devices are sometimes too limited to manage all of the resources in the system of a Product. It’s a natural decision to build an admin panel which helps us with that. In order to build such a panel, it is required to involve web developers. With Catalyst, we can build an admin panel as a Mac app and spare ourselves a lot of resources. We will also get bonus from that in the form of mini-admin panel for our iOS devices
There’s also another thing that may make up for Catalyst’s impact on the market. There are many more developers who are familiar with iOS’ UI frameworks than those familiar with Mac’s. This means that many more people will be eager to build for Mac and will be able to do it swiftly. I assume that you can expect an increase of traffic in the Mac App Store very soon.
More Universal UI
The second big announcement is SwiftUI. This is actually a bit related to Catalyst, but it goes beyond that. While working paralelly for a few years with Android devs I have noticed that they are able to build UI way, way faster. It’s not related to experience or knowledge of a developer but it’s a matter of tools that we have. This is going to change very soon. SwiftUI is a new way to build UI on every Apple platform available.
I don’t want to go too deep in technical stuff, but it’s worth knowing that it is declarative UI framework. A framework which allows you to declare your layout, while SwiftUI will figure out what components should it use, based on the platform that your code is run on. This gives your app a fully native feeling. When you combine it with the new Xcode features like live reloading, device previews and an ability to generate the preview for multiple locales, dark mode or other user preferences at once, this makes up for smooth developer experience and fast-paced iterations of UI development process.
All of these new features make WWDC 2019 the most exciting Apple event of the last years. I really look forward to seeing the implementation of SwiftUI in Web applications. Google is developing its own Flutter web framework so I think this might be a good motivation to port SwiftUI to Web Frontend. With every year, Apple is opening its own technologies to web developers, like they did with Apple Pay and just introduced Sign in with Apple. Why shouldn’t they try with the UI?
SwiftUI is so big, that it might offer new ways of how we design and develop our applications. I’m excited to watch upcoming WWDC sessions to see what’s inside of it. But what we already know made a huge positive buzz on Twitter. It also confirms that modern SDKs and frameworks are getting more universal than ever before and they allow us to build apps much faster and run them on different devices.