Even though iOS 8 superficially looks like its immediate predecessor, there are some new under-the-hood technologies that’ll have a huge impact on the way we all use our iOS devices. One of the most significant of these is something Apple calls Extensions.
What are extensions?
Simply put, extensions allow iOS apps to “lend” functionality to one another or to the operating system. Apple is allowing developers to create and distribute extensions whose functionality falls in six distinct areas:
Actions allow you to manipulate content inside another app; for example, you could use an Action to translate a non-English Web page right inside Safari.
Custom Keyboards provide keyboards other than the ones already built into iOS. Third-party app developers could take advantage of this functionality to offer innovative input methods, support unusual languages and scripts, or even offer input mechanisms for specialized applications.
Document Providers enable apps to save and retrieve documents from a variety of services, such as cloud-storage providers and network disks.
Photo Editing extensions can be used to manipulate photos and videos—everything from providing a filters to the host app to offering full-blown editing services without having to move your content from one program to another by saving it in your Photo Album first.
Sharing extensions expand iOS’s ability to share data with external services such as social networks or cloud-storage websites. The functionality they offer is similar to Document Providers, but the process is one-way: The app can export data through a sharing extension, but not load from it.
Today widgets provide interactive functionality that can be accessed from the panel you slide down from the top of your iPhone and iPad’s screen, giving you immediate access to data, such as a status report from your smart thermostat or a handy calculator.
Who can use extensions?
Any device that can run iOS 8 is also capable of supporting extensions. But an individual extension’s ability to work on your device depends on a number of factors, such as whether its developer decides to support the appropriate form factor, or whether the code behind the extension depends on some hardware feature that is only available in newer iPhone and iPad models—such as, say, Touch ID.
Once OS X Yosemite launches later this fall, extensions will also be available to Mac users, although under slightly different rules and conditions.
What’s the big deal? I could do most of this stuff before!
While some of this functionality, such as custom keyboards, makes its debut on iOS 8, the ability to export and share data is not new, and was widely available in previous versions of the operating system. What has changed is the way in which this functionality is made available from one app to the other.
Until now, iOS’s sandboxing model prevented apps from accessing each other’s functionality. This meant that if developers wanted to, say, provide support for saving and retrieving documents from Dropbox, they would have to embed the functionality right in their software, leading to problems like duplication of code, inconsistency in the functionality provided by different apps, and the need to log in to the same service multiple times.
Even worse, the old approach caused apps to become “closed” once they were published: Following the example above, if you didn’t want to use Dropbox for whatever reason, you could only use a different provider like Google Drive if the app specifically supported it.
With Extensions, apps are automatically aware of each other and can exchange information in a standardized way (assuming, of course, that developers implement the appropriate bits in their iOS 8-compatible software). Better yet, developers won’t have to constantly reinvent the wheel just so that their apps provide the same kind of basic functionality as everybody else’s, leaving them free to focus on creating innovative new software.
Is this secure?
Apple has gone to extreme lengths to make sure that extensions are implemented in a way that is fundamentally compatible with iOS’s focus on privacy and security.
Despite the fact that apps are now allowed to communicate with each other, they can only do so in a very specific way that does not compromise the operating system’s sandboxing model. Essentially, the operating system creates a “netural zone” in which both the host app and the app that provides an extension can “meet” and exchange data in a controlled fashion.
Inside this virtual Switzerland, communication with either app—and with the outside world—is strictly regulated to ensure that extensions do not gain access to unwanted data without the user’s permission.
Don’t be too worried if this sounds draconian: Developers have had years to get used to life inside iOS’s sandbox, and they won’t find working with extensions much different. Besides, it’s entirely possible (and probably a good thing) that Apple has decided to err on the side of caution for now, and will open up more communication avenues for third parties in a later release of iOS if the need arises.
Won’t this lead to a lot of hidden software on my device?
No. To avoid this very problem, Apple has decided to foist a significant limitation on developers: They must bundle their extensions with apps that provide some kind of functionality.
Thus, any extension that ends up on your device must be tied to a particular app—and, when you remove the app, its extensions will be deleted as well.
We should also note that Apple has decided to impose some pretty strict restrictions on when and how extensions can run. In most cases, an extension will only kick off when called upon explicitly by a user, for example, and will only be allowed to use a relatively small slice of the system’s CPU and memory. This should, in principle, limit the impact that extensions will have on your device’s battery life and performance.
Note: When you purchase something after clicking links in our articles, we may earn a small commission. Read ouraffiliate link policyfor more details.
Marco Tabini is based in Toronto, Canada, where he focuses on software development for mobile devices and for the Web.