On Monday, Apple announced new versions of all their operating systems, including macOS 11 (aka "Big Sur"), which they describe as the biggest change to macOS since Mac OS X. Apple also announced the widely-expected macOS on ARM (or Apple Silicon as they've branded their chips). Developer Transition Kits will be available as soon as this week in the form of a Mac mini with an A12Z processor. Sign up for the Quick Start Program at https://developer.apple.com.
iOS 14's two marquee features for developers are WidgetKit and App Clips. If you want to increase your chances of getting featured in the App Store this fall, make sure you implement both of these features.
WidgetKit looks like a terrific improvement. Getting to bring your app's content out of your app is going to be a big usability win for apps with lots of 'glanceable' information, like transit, stocks, calendars, or messages for instance. This'll be a 'table stakes' feature for every good app when iOS 14 ships this fall.
WidgetKit will allow you to create rich, new Today View-style widgets in up to three sizes (small, medium, and large), and allow users to place them directly onto the home screen. Beyond superficial aspects, WidgetKit widgets seem to be pretty different from their old-school NCWidgetProviding forebears:
- They can only be written in SwiftUI.
- They are rendered out of process; the widget content shown to the user is entirely static and they are updated on a developer-specified timeline. Learn more about on this topic.
App Clips allow you to deliver a small part of app that can help the user accomplish a specific goal in the real world. For instance, a user without the Yelp app installed might launch a Yelp App Clip for a restaurant they're currently at in order to get suggestions about what to order. App Clips can be launched from NFC/QR codes found in the real world or from apps.
App Clips are written in normal, real, native code, and are defined through a new Target type in Xcode. Here are some other details:
- App Clips support Apple Pay and Sign in with Apple.
- Recently used Clips can be found in the App Library.
- They must be less than 10MB to help them launch quickly. ("Leave out analytics libraries you don't really need.")
- It's easy for the user to upgrade to full app version from an App Clip.
- An exclusive 8 hour push notification option will allow a Clip to provide the user with information about an action they took without having to bug the user for permission.
Dropdown menus! Spotlight search! Easier three column layouts with UISplitViewController! I like that Apple is finally allowing the iPad to evolve independently of iOS.
- Sidebars (UISplitViewController) have new support for creating three column layouts
- New lightweight context menus replace action sheets. Designed to work on Mac Catalyst, too.
- Tons of new Pencil features! I love that this is getting as much attention as it is today.
- LiDAR - iPadOS 14 includes developer access to the iPad Pro's LiDAR sensor, including a depth API. It seems pretty clear that some models of the iPhone 12 will include a LiDAR sensor, too.
SwiftUI in iOS 14 is entirely additive and will not require any migration of existing SwiftUI code. Lots of new SwiftUI features were announced, and I expect more will surface over the week:
- New built-in SwiftUI views for representing gauges and progress views, including on watchOS.
- LazyVStack and LazyHStack stack views will offer UITableView or UICollectionView-level performance with large collections.
- MapKit and AVKit now have SwiftUI interfaces.
- Describe your app's structure in SwiftUI to make it easier to build multi-platform apps and take advantage of platform-specific behaviors.
watchOS 7 🕺
To be honest, this felt like a pretty light release for watchOS from a developer perspective, but being able to create complications in SwiftUI and preview them within Xcode is pretty snazzy. Here's what else you can look forward to in watchOS 7:
- Multiple complications from a single app.
- Complication previews in Xcode 12.
macOS 11 Big Sur and Catalyst
Apple will enable you to ship Universal binaries containing both Intel and ARM code, and support for Apple Silicon should simply require a recompile in Xcode for most apps...assuming your third party libraries have been updated. Apple Silicon-based machines will be able to run iOS and iPadOS apps natively without any changes or recompiling, which seems fraught. I think the overall quality of apps you can run on macOS is going to decline dramatically over the next couple years.
Hopefully Catalyst keeps improving, and allows developers to make better Mac apps with minimal extra effort. Make sure you use the new Mac device idiom in your Catalyst apps to get the best results.
I was happy to hear Apple say unequivocally that the transition to Apple Silicon will not cause macOS to be locked down like a clumsier iPadOS device. Also, it's encouraging that Apple will be offering patches to popular open source software libraries and languages to add support for Apple Silicon over the next few days. I wonder if this might be related to why Apple is removing their ancient versions of the Ruby and Python interpreters from macOS.
Notably, there was no mention of running Windows for ARM on Apple Silicon-based hardware. I'm going to go out on a limb and guess that you will never be able to run Windows on Apple Silicon. Pour one out for Boot Camp. (2006 - 2022, R.I.P.)
- This keynote has an 'uncanny valley' feeling to it, which isn't helped by it being pre-recorded. It actually feels like an infomercial.
- It took 75 minutes before Craig first used the phrase "take it to the next level" in the Keynote. Next year, let's just skip it entirely, eh?
- Fewer COVID jokes, please.