As mobile ecosystems have evolved, the large platforms have begun a war on users—each fighting to be the ultimate platform where a user spends their time. The main result of this is that each platform designed experiences in vacuum, as if some or all of the other platforms didn’t exist. Because (unlike the web) there was no unification, different deep linking standards for each platform emerged, making it almost impossible for a brand to create a standard that fit all these standards.

Apple and Google both try to pretend that mobile deep linking is a simple thing. A check-the-box, “nice to have” feature that can be implemented by following a few guides buried deep in the developer documentation for each platform. Unfortunately, this couldn’t be further from the truth, and more importantly, it misses the true scale of the problem: if links are to be used everywhere, they need to work everywhere. The true complexity of how difficult this is to accomplish only becomes clear with much painful experimentation.

There are numerous competing mobile deep link standards, all with different functionality and requirements for implementation:

Note: iOS and Android together control 99.3% of the mobile market. Because of this, Branch has very limited support for other platforms, and they are omitted here for simplicity.

Of course, none of these standards is supported on every platform or OS version: