One of the most obvious changes iOS 14 and iPadOS 14 bring is the widgets on the homescreen. These can now be arranged more flexibly on the screen (at least currently on the iPhone) instead of being locked on a separate screen page. They also offer three different sizes as a representation. This offers the user new flexibility in structuring his home screen and thus enables him to keep an eye on the most important information quickly and easily.
The widgets can be positioned using drag & drop and thus share the space on the homescreen with the apps. The division still works as in the first days of iOS, because they fill the available space “one after the other” and there are no gaps between the apps. In other words, unlike Android, you cannot leave blank spaces or “create” an entire blank page that only shows your background image, for example.
While Apple’s approach to widgets in iOS 14 isn’t particularly revolutionary (at most for iOS), smart stacks are a really smart idea from Cupertino. It is a stack of widgets that a user can scroll through. This is sophisticated in itself, but what makes smart stacks really “smart” is that they can change their focus dynamically throughout the day, depending on the user. If he opens the weather view after getting up, later the calendar in the office and the music widget in the evening, the iOS system will remember this. The widgets are thus relevant, which the smart stack can access.
The widgets also pose challenges for app developers. It is not for nothing that the phrase “Widgets are not mini-apps” came up several times at WWDC. A widget can display dynamically loaded content and update it under various conditions, but the ability to interact with the user is limited. From a development perspective, it may be easiest to think of widgets as the static end result of a dynamic rendering process: there are no view controllers, no app delegates, and no navigation stacks – these are also not mini-apps. Instead, the system renders every widget on a user’s home screen.
Widgets can be configured in two different ways: statically and dynamically with the help of intents – this is the same system that has been supporting both Siri and Shortcuts for a long time. Whether a widget is configured statically or dynamically does not affect its ability to display dynamic data. Rather, it defines whether the user can configure a widget himself or whether its display is statically determined by the implementation in the underlying app. The elements that appear in a widget can be created more or less in the same way as any other SwiftUI view. The widget’s user interface is provided exclusively with SwiftUI. The same was only introduced and released by Apple for developers last year.
From a user perspective, this means in a very pragmatic way that a widget displays information. These are (hopefully) always up to date and will be re-rendered at the right time (or in real time). Depending on the size of the widget, different information or levels of detail can be displayed. Clicking a button in the widget opens the associated app and starts the associated command (deep link). (mb / fm)