AppURL broadens the definition of "opening a URL".

An HTTP client is a program that thinks "opening a URL" means contacting a web server and downloading a web page. Your web browser is a type of HTTP client.

An AppURL client is a program that thinks "opening a URL" means looking up the right app and launching the right screen – unless a user doesn't have the right app on their device, in which case open the URL on the web.

An AppURL client has a two-step procedure for opening a URL in an app (Plan A). If either step fails, the AppURL client will degenerate into a regular HTTP client and open a URL in a website (Plan B).

  1. URL transformation. If a valid appurl.json file exists at the root of the subdomain of the URL being opened, then apply the transformations specified in that file. Otherwise, fall back to Plan B.

  2. App launching. Pass your post-transformation custom-scheme URL to your platform's URL-opening API call, which should launch the right app into the right screen if the user has it installed. But if that doesn't work, fall back to Plan B.

AppURL's game of semantics can be played on any level of the HTTP client stack. Any of these layers may be responsible for turning an HTTP client into AppURL client:

  • an OS-level API function
  • a programming library function
  • a web browser
  • an add-on/extension/plugin for a web browser
  • a JavaScript program on your app's website that runs at load time and retroactively attempts to open the page's URL in your native app
  • a JavaScript function on someone else's web page that intercepts click events on hyperlinks pointing to your app's domain

As a URL-opening standard, AppURL is fully backward-compatibile with HTTP. That's because a non-AppURL HTTP client is equivalent to an AppURL client that happens to be falling back to its Plan B.

Http-triggered app launching

AppURL isn't really about transforming http URLs into custom schemes.

AppURL is about standarizing http as the all-platform URL scheme, thereby broadening the URL-addressible web to include apps.

Some platforms support http-triggered app launching. These platforms give you AppURL's "Plan A" without the need for a URL-transformation step.

For example:

  • Your Android app can use intents for http-triggered app launching.
  • Your BlackBerry app can register invocation filters for http-triggered app launching.

If the community embraces AppURL's conception of broadening the web to include apps, then custom URLs may eventually become deprecated in favor of http-triggered app launching mechanisms.

AppURL's recommendation is to implement http-triggered app launching wherever possible, while maintaining AppURL compliance through URL schemes and appurl.json files.

Ready to AppURL-enable your app?

Get started