Tuesday, March 29, 2016

Universal Links Association Files Crashing iOS Apps

Joe Rossignol:

A significant number of iPhone and iPad users on the MacRumors discussion forums, Apple Support Communities, and Twitter have reported an apparent iOS bug that causes Safari, Mail, Messages, Notes, Chrome, and select other preinstalled and third-party apps to crash or freeze after tapping or long-pressing on web links.

Benjamin Mayo:

Since posting our original story, we have heard from a lot of readers that are affected by iOS 9 crashes or app hangs when tapping links, spanning multiple iOS versions (not just 9.3) and devices. In a statement, Apple has now confirmed that they are working on a fix for the problem, coming in a software update (presumably iOS 9.3.1).

[…]

Previously, we pinpointed Bookings.com as a cause of the bug, although noting it affects other apps as well. On Twitter, it was found that their website association file, used by the system for the universal links feature introduced with iOS 9, was many megabytes, grossly oversized. This would essentially overload the daemon that had to parse these files, causing the crashing. The Booking.com app has since corrected its payload file to be a far more reasonable 4 kilobytes. Users of Booking.com should delete and reinstall the app, to refresh the system caches for the URL association file.

[…]

Unfortunately, it is practically impossible to find out which apps are the misdemeanours. In terms of high-profile cases, we have heard that Wikipedia and Eat 24 are among the apps registering too many domains in their universal link directory.

Rosyna Keller:

The bug has existed in every version of iOS 9, from the very beginning. Booking.com just happened to update their association file last week to a version that triggered the bug. It has nothing whatsoever to do with iOS 9.3.

[…]

There’s no need to harbor any ill will towards booking.com for this. The documentation on Universal Links is extremely sparse. It never talks about the limits or best practices. It never even discusses how apple-app-site-association files are updated on iOS devices.

The file itself is completely valid JSON and passes all correctness tests. It’s just that iOS’ swcd daemon doesn’t like it and chokes hard. It’s nigh impossible for developers to test updates to their apple-app-site-association files from anywhere except the iOS simulator, which doesn’t have all the resource limitations a real iOS device has when shared with multiple other iOS apps.

[…]

Eat24 and Wikipedia are not related to this issue. The wikipedia site association file registers 5 paths. The Eat24 site association file registers only 1 (and it’s 156 bytes total). There’s no need to mention apps that are totally unrelated to this issue. All it does is worry people.

Timothy Hatcher:

New in iOS 9.3: Use wildcards for the domain name associations of Universal Links to help reduce duplication.

Update (2016-03-30): John Gruber:

In the meantime, if you’ve been hit by this bug, Ben Collier has a step-by-step workaround guide. (It’s not simple.)

Gruber says that apps were misusing the Universal Links feature, but that’s not clear to me.

Update (2016-03-31): Federico Viticci:

Apple released iOS 9.3.1 earlier today, bringing a fix for a problem related to Universal Links that caused apps to become unresponsive after tapping web links.

Update (2016-04-21): Apple (via Rosyna Keller):

In iOS 9.3.1 and later, the file must be no larger than 128 KB (uncompressed), regardless of whether it is signed.

3 Comments RSS · Twitter

For clarification, is the Universal Links issue THE iOS 9.3 issue? Or is there some iOS 9.3 link hanging bug that is separate from the Universal Links? Regardless, I will follow standard procedure and not update any non-burner devices until the masses say it is safe.

@John My understanding is that the hanging is because of Universal Links but that it’s not specific to 9.3. Of course, there may be other 9.3 issues, so I would probably what a little longer if you wanted to be sure it’s safe.

@John Rosyna says there is a second bug in 9.3 that can be fixed by app updates.

Leave a Comment