Many iOS developers rely on extensions to add custom functionality and content to their app, as well as to make that functionality and content available to users while they’re interacting with other apps (such as iMessage, Mail, etc.) or with the operating system.
Popular extensions include:
- iMessage, which allows users to access features of your iOS app while sending messages.
- Widget, which lets you display your app’s content in a convenient, informative widget on various devices.
- Intents, which lets your app interact with Siri. Apple currently supports over 30 different extension types for iOS.
While extensions aren’t actually part of your host app’s code, they do serve as an important component to your user experience. Users will not conceptually differentiate where your host app ends and where an extension begins when they’re using that functionality. For example, if a user is using your iMessage extension and it fails, they won’t attribute that failure to iMessage but to your app. That said, it’s crucial to monitor the health of any extensions you’re attaching to your app.
Now, iOS engineers using Embrace can track crashes, latency, and other issues happening within their extensions, thanks to a new support feature.
How it works
Embrace’s iOS Extensions Monitoring product expands our observability and analysis tooling to the extensions you’ve connected to your app.
With this added feature, we now capture a lot of the same granular data about how your extensions are performing as we do for your regular host app’s source code. You can see crash reports for crashes that originate in the extension code and also instrument breadcrumbs in extension code to enrich the session data you see in a User Timeline of events.
Currently, Embrace supports crash reporting for the following popular extensions:
- Intents UI
- Notification Center
- Notification Services
- Call Directory
Setting up Embrace with your app extensions takes a couple of extra steps. This is due to the unique nature of extensions.
In terms of their implementation, app extensions are different from standard apps. Although you must use an app to contain and deliver an extension, each extension is a separate binary that runs independent of the app and has a different life cycle and environment.
When using the Embrace SDK for your app extensions, both your host app and the app extension need to have the app groups capability configured. App groups are an Apple feature that enables communication and data sharing between multiple installed apps created by the same developer. With app groups, different apps can access one or more shared containers, as well as take part in inter-process communication with each other using various IPC mechanisms, including accessing shared memory.
You’ll need to create a new app for each extension you want to monitor with Embrace separate to your host app. To connect your host app with its extension, you’ll add app group information to the host app. The host app will gather information about the extension app and have the capability to upload that information to Embrace. This is a good failsafe, as the app extension might not be able to send us data about its own performance for various reasons, such as connectivity issues or a short life span (some extensions only exist for a fraction of a second).
Once the connection is made, you’ll be able to instrument calls directly in your extension code with Embrace’s new dedicated EmbraceExtension APIs.
This new set of APIs includes methods to initialize, stop, and restart the points at which you want to monitor extension sessions.
With your extensions all set up and instrumented, you’ll be able to view reports about any crashes that happen within your extensions right in the Embrace dashboard. Additionally, you can add breadcrumbs for added context to your extensions, which will appear in the User Timeline for 100% of all sessions captured. This will enrich your understanding of what your users were trying to do, either with your host app or its extension, that led to an issue.
The benefit of monitoring extensions
With Embrace’s iOS Extensions Monitoring, you’re able to get the full picture of your app’s performance in its entirety. Even though an extension is not technically part of your app, this distinction makes no difference to the end user. They’re trying to get from A to B using your app – for example, sharing a piece of content from your app directly via iMessage.
If the functionality they need is not working the way your users expect it to, it’s your app that will most likely be blamed, not the extension service. And we know that user frustration from a bad experience can lead to lost conversion opportunities, complaints, bad App Store ratings, drop offs, and even uninstalls.
Being able to get true visibility into all the performance issues that impact both your host app and its extensions mean that you can fix any aspect of your user’s journey that’s going wrong. Ultimately, that keeps them happy and coming back as recurring users
Learn more about monitoring iOS extensions with Embrace
Extension support is just one small piece of Embrace’s platform that’s specialized for mobile. We help engineers across the spectrum of industries and platforms – including iOS, Android, React Native, Flutter, and Unity – build highly performance apps for their end users.
Our data-rich issue detection and resolution tool is specially designed for early discovery because we capture the full story for each individual session. That means that you’re able to catch early performance risks as soon as they start impacting even just a handful of people, rather than 5-10% of your entire user base.
To learn more about Embrace, and how you can use our tooling to monitor your app and its iOS extensions, sign up for a demo today.