Expanded MetricKit Support

macOS and a new hybrid mode

I think that MetricKit diagnostics are awesome. They don’t require invasive and complex SDKs, and they can capture crashes and terminations that are unavailable through other means. And, they are now coming to macOS 12.0! It’s wonderful to see Apple expanding the supported platforms. I always find it to be a big confidence-booster when this happens to an API.

So, of course we got right to work updating our SDK. But, that also got us thinking…

Pros and Cons

MetricKit can capture crashes and other termination events that are not accessible to in-process systems. The only way to get access to these kinds of reports is via MetricKit or Apple’s crash reporting system. And since Apple’s system is only available for App Store-delivered apps, that option is a no-go for many macOS apps. This alone makes MetricKit extremely compelling.

But, I’ve written about the limitations of MetricKit before. Most notably, it is incredibly frustrating to develop with. Diagnostic reports typically take around 24 hours to be delivered and there is no way to cause them to be sent earlier. This makes even simple testing take days, and I am not a fan.

UPDATE

It turns out that this 24 hour delay has been removed in iOS 15! This is a huge deal, and makes MetricKit pretty darn appealing. So far, I’m having issues with immediate delivery on macOS 12.0, but it’s just the first beta.

Why Not Both?

Most applications already use some form of in-process crash reporter. It would be really nice if you could just augment those reports with the data from MetricKit diagnostics. The main problem with this approach is potentially double-counting. De-duplication isn’t necessarily possible in all situations, but we have a strategy in place that will work reasonably well, especially if our SDK (specifically Impact) is being used. It’s such a compelling feature, we just had to do it. Hybrid in-process/MetricKit reporting is now supported! 😎

And, if you just want to go MetricKit-only, of course that’s still supported as well.

Test It Out

We’re still accepting apps for our beta. If this sounds like something you’d like to check out, get in touch with us!

Jun 09, 2021 - Matt Massicotte

Previous: Preview
Next: Symbolication Tips and Tricks