Standards for Web Applications on Mobile: February 2012 current state and roadmap

Latest version
http://www.w3.org/Mobile/mobile-web-app-state/
This version
http://www.w3.org/2012/02/mobile-web-app-state/
Previous version
http://www.w3.org/2011/11/mobile-web-app-state

Web technologies have become powerful enough that they are used to build full-featured applications; this has been true for many years in the desktop and laptop computer realm, but is increasingly so on mobile devices as well.

This document summarizes the various technologies developed in W3C that increase the capabilities of Web applications, and how they apply more specifically to the mobile context.

  1. Graphics
  2. Multimedia
  3. Device Adaptation
  4. Forms
  5. User interactions
  6. Data storage
  7. Personal Information Management
  8. Sensors and hardware integration
  9. Network
  10. Communication_and_Discovery
  11. Packaging
  12. Performance & Optimization

Status and changes

This document is the fifth edition of this overview of mobile Web applications technologies. Previous editions were released in February 2011, May 2011, August 2011, and November 2011. A live version of this document accepts contributions in the W3C Wiki.

Feedback on every aspect of this document should be sent to the author (dom@w3.org) and will serve as input for the next iteration of the document.

As an addition to previous releases of this document, it now indicates which mobile browser implements which specification, and starting from which version. Feedback on the usefulness and accuracy of the said information would be particularly welcome.

It also incorporates the following changes in the Web platform since November 2011:

Document structure

The features that these technologies add to the Web platform are organized under the following categories: graphics, multimedia, device adaptation, forms, user interactions, data storage, personal information management, sensors and hardware integration, network, communication and discovery, packaging, performance & optimization.

Diagram showing the various components of the Web platform
The Web as an application development platform

In each category, a table summarizes for each feature:

As a reminder, W3C creates Web standards by progressing documents through its Recommendation track, with the following stages:

Prior to starting standardization, a Working Group needs to be chartered, based on input from W3C Members, often through the organization of a workshop, or after the reception of a W3C Member Submission.

W3C has recently set up Community Groups, a new mechanism that allows anyone to do experimental work within the W3C infrastructure, under IPR rules that are compatible to transition the work to the W3C standardization process.

1. Graphics

SVG, Scalable Vector Graphics, provides an XML-based markup language to describe two-dimensions vector graphics. Since these graphics are described as a set of geometric shapes, they can be zoomed at the user request, which makes them well-suited to create graphics on mobile devices where screen space is limited. They can also be easily animated, enabling the creation of very advanced and slick user interfaces.

The integration of SVG in HTML5 opens up new possibilities, for instance applying advanced graphic filters (through SVG filters) to multimedia content, including videos. SVG 2.0 is set to facilitate that integration and complete the set of features in SVG.

In complement to the declarative approach provided by SVG, the <canvas> element added in HTML5 enables a 2D programmatic API that is well-suited for processing graphics in a less memory intensive way. That API not only allows to render graphics, but can also be used to do image processing and analysis.

Both SVG and HTML can be styled using CSS (Cascading Style Sheets); in particular, CSS3 (the third level of the specification) is built as a collection of specifications set to offer a large number of new features that make it simple to create graphical effects, such as rounded corners, complex background images, shadow effects (CSS Backgrounds and Borders), rotated content (CSS 2D Transforms), animations (CSS Animations, CSS Transitions), and even 3D effects (CSS 3D Transforms).

Animations can be resource intensive — the possibility offered by the Timing control for script-based animations API to manage the rate of updates to animations can help keep them under control.

Fonts play also an important role in building appealing graphical interfaces, but mobile devices are in general distributed with only a limited set of fonts. WOFF (Web Open Font Format) addresses that limitation by making it easy to use fonts that are automatically downloaded through style sheets, while keeping the size of the downloaded fonts limited to what is actually needed to render the interface.

NB: work on defining a 3D graphic API called WebGL has started outside of W3C, as part of the Khronos Group; this API has been built to be compatible with OpenGL ES, i.e. for embedded systems, and is intended to work on mobile devices.

Feature Specification Working Group Maturity Stability Latest editors draft Current implementations Test suite
2D Vector Graphics SVG Tiny 1.2 SVG Working Group Recommendation Finished New version of SVG (SVG 2.0) in preparation Widely deployed
Supported in Safari on iOS from version 4.0, Supported in Blackberry browser from version 5.0, Supported in Internet Explorer on Windows Phone from version 10, Supported in Firefox mobile from version 10, Supported in Android browser from version 3, Supported in Opera mobile from version 10
High coverage
SVG 2.0 N/A N/A editors draft N/A N/A
2D Programmatic API HTML Canvas 2D Context HTML Working Group Last Call Working Draft Mostly stable Updated regularly Widely deployed
Supported in Safari on iOS from version 4.0, Supported in Blackberry browser from version 5.0, Supported in Internet Explorer on Windows Phone from version 10, Supported in Firefox mobile from version 10, Supported in Android browser from version 2.1, Supported in Opera mobile from version 10
Good coverage
Rounded Corners CSS Backgrounds and Borders CSS Working Group Last Call Working Draft Mostly finished Updated regularly Deployed as an extension in many mobile browsers
Supported in Safari on iOS from version 4.0, Supported in Blackberry browser from version 5.0, Supported in Internet Explorer on Windows Phone from version 10, Supported in Firefox mobile from version 10, Supported in Android browser from version 2.1, Supported in Opera mobile from version 11
None
Complex background images Very limited (?)
Supported in Safari on iOS unknown, Supported in Blackberry browser unknown, Not supported in Internet Explorer on Windows Phone, Not supported in Firefox mobile, Supported in Android browser unknown, Not supported in Opera mobile
Box shadow effects Widely deployed
Supported in Safari on iOS from version 4.0, Supported in Blackberry browser unknown, Supported in Internet Explorer on Windows Phone from version 10, Supported in Firefox mobile from version 10, Supported in Android browser from version 2.1, Supported in Opera mobile from version 11
CSS 2D Transforms CSS 2D Transforms Module Level 3 Working Draft Mostly stable, but being merged with 3D Transforms Last update Feb 2012 Well deployed
Supported in Safari on iOS from version 4.0, Supported in Blackberry browser from version 5.0, Supported in Internet Explorer on Windows Phone from version 10, Supported in Firefox mobile from version 10, Supported in Android browser from version 2.1, Supported in Opera mobile from version 11
None
3D Effects CSS 3D Transforms Module Level 3 Working Draft Early work, but stabilizing Last update Feb 2012 (merging with CSS 2D Transforms) Growing deployment
Supported in Safari on iOS from version 4.0, Supported in Blackberry browser from version 5.0, Supported in Internet Explorer on Windows Phone from version 10, Supported in Firefox mobile from version 10, Supported in Android browser from version 3, Not supported in Opera mobile
None
Animations CSS Animations Module Level 3 Working Draft First draft Updated regularly Growing deployment
Supported in Safari on iOS from version 4.0, Supported in Blackberry browser from version 5.0, Supported in Internet Explorer on Windows Phone from version 10, Supported in Firefox mobile from version 10, Supported in Android browser from version 4, Not supported in Opera mobile
None
CSS Transitions Module Level 3 Working Draft Early draft Last update Feb 2012 Well deployed
Supported in Safari on iOS from version 4.0, Supported in Blackberry browser from version 5.0, Supported in Internet Explorer on Windows Phone from version 10, Supported in Firefox mobile from version 10, Supported in Android browser from version 2.1, Supported in Opera mobile from version 10
None
Timing control for script-based animations API Web Performance Working Group Working Draft Early Regularly updated Very limited
Not supported in Safari on iOS, Supported in Blackberry browser unknown, Supported in Internet Explorer on Windows Phone from version 10, Supported in Firefox mobile from version 10, Not supported in Android browser, Not supported in Opera mobile
None
Downloadable fonts WOFF File Format 1.0 WebFonts Working Group Candidate Recommendation Mostly stable Last update Jan 2012 Good deployment
Supported in Safari on iOS from version 5, Supported in Blackberry browser unknown, Supported in Internet Explorer on Windows Phone from version 10, Supported in Firefox mobile from version 10, Not supported in Android browser, Supported in Opera mobile from version 11
Good coverage

2. Multimedia

HTML5 adds two tags that dramatically improve the integration of multimedia content on the Web: the <video> and <audio> tags. Respectively, these tags allows to embed video and audio content, and make it possible for Web developers to interact much more freely with that content than they would through plug-ins. They make multimedia content first-class citizens of the Web, the same way images have been for the past 15 years.

While these tags allow to play multimedia content, the HTML Media Capture defines a markup-based mechanism to access captured multimedia content using attached camera and microphones, a very common feature on mobile devices. The Web Real-Time Communications Working Group and the Device APIs Working Group are building together an API (getUserMedia) to directly manipulate streams from camera and microphones.

Beyond recording, two additional APIs add multimedia manipulation capabilities to the Web platform. We have already mentioned the Canvas 2D Context API: it enables modifying images, which in turn opens up the possibility of video editing. In a similar vein, the Audio Working Group is working on an API that that makes it possible to modify audio content, as well as analyze and synthesize sounds; two proposals are currently under consideration on which developers feedback is sought.

Finally, the new charter of the Device APIs Working Group includes an API for reading the current audio volume of a device, allowing to adapt the type of interactions with the user depending on that setting.

The combination of all these features mark the starting point of the Web as a comprehensive platform for multimedia, both for consuming and producing. The rising interest around bridging the Web and TV worlds (manifested through the W3C Web and TV Interest Group) should strengthen that trend in the coming months. Mobile devices are expected to take a growing role in many users TV experience, providing a “second screen” experience, where users can find more information on or interact with a TV program they're watching via their mobile devices.

Feature Specification Working Group Maturity Stability Latest editors draft Current implementations Test suite
Video playback HTML5 video element HTML Working Group Last Call Working Draft Stabilizing Updated regularly Good deployment
Supported in Safari on iOS from version 4.0, Supported in Blackberry browser from version 7.0, Supported in Internet Explorer on Windows Phone from version 10, Supported in Firefox mobile from version 10, Supported in Android browser from version 2.3, Supported in Opera mobile from version 11
Just started
Audio playback HTML5 audio element Last Call Working Draft Good deployment
Supported in Safari on iOS from version 4.0, Supported in Blackberry browser from version 7.0, Supported in Internet Explorer on Windows Phone from version 10, Supported in Firefox mobile from version 10, Supported in Android browser from version 2.3, Supported in Opera mobile from version 11
Barely started
Capturing audio/video HTML Media Capture Device APIs Working Group Working Draft Early draft Last update Apr 2011 Limited
Not supported in Safari on iOS, Not supported in Blackberry browser, Not supported in Internet Explorer on Windows Phone, Partial support in ['name'] from version 9, Partial support in ['name'] from version 3.0, Not supported in Opera mobile
None
getUserMedia() Joint work between Web Real-Time Communications Working Group and Device APIs Working Group Working Draft Early work last updated Dec 2011 A few experimental ones
Not supported in Safari on iOS, Not supported in Blackberry browser, Not supported in Internet Explorer on Windows Phone, Not supported in Firefox mobile, Not supported in Android browser, Not supported in Opera mobile
None
Image & Video analysis, modification HTML Canvas 2D Context HTML Working Group Last Call Working Draft Mostly stable Updated regularly Widely deployed
Supported in Safari on iOS from version 4.0, Supported in Blackberry browser from version 5.0, Supported in Internet Explorer on Windows Phone from version 10, Supported in Firefox mobile from version 10, Supported in Android browser from version 2.1, Supported in Opera mobile from version 10
Good coverage
Audio analysis, modification Web Audio API Audio Working Group Working Draft Early work Last updated Jul 2011 None
Not supported in Safari on iOS, Not supported in Blackberry browser, Not supported in Internet Explorer on Windows Phone, Not supported in Firefox mobile, Not supported in Android browser, Not supported in Opera mobile
None
MediaStream Processing API Working Draft Early work Last updated Feb 2012 None
Not supported in Safari on iOS, Not supported in Blackberry browser, Not supported in Internet Explorer on Windows Phone, Not supported in Firefox mobile, Not supported in Android browser, Not supported in Opera mobile
None
Audio volume reading N/A Device APIs N/A Not started N/A None None

3. Device Adaptation

Mobile devices not only differ widely from traditional computers, but they also have a lot of variations among themselves, in term of screen size, resolution, type of keyboard, media recording capabilities, etc.

The Device Description Repository API is a unified server-side API that allows Web developers to retrieve data on the devices that are accessing their pages on a variety of device information database.

The Media Capture task force is currently evaluating if and how to expose capabilities from camera and microphones to make it possible to take advantage of the large variety of media capturing devices provided on mobile phones.

CSS Media Queries offer a mechanism that allows to adapt the layout and behavior of a Web page based on some of the characteristics of the device, including the screen resolution. CSS Device Adaptation defines a set of CSS directives to define the size on which this layout should be based, relatively to the size of the underlying device — specifying what has been implemented using the <meta name="viewport"> element so far.

Feature Specification Working Group Maturity Stability Latest editors draft Current implementations Test suite
Device information Device Description Repository Simple API (server-side) Device Description Working Group (now closed) Recommendation finished N/A Limited Good Coverage
Media Capture Capabilities API WebRTC and Device APIs Working Group N/A Not started N/A N/A N/A
CSS-based adaptation Media Queries CSS Working Group Candidate Recommendation Mostly finished Last update Feb 2012 Widely deployed
Supported in Safari on iOS from version 4.0, Supported in Blackberry browser from version 4.7.1, Supported in Internet Explorer on Windows Phone from version 10, Supported in Firefox mobile from version 10, Supported in Android browser from version 2.1, Supported in Opera mobile from version 10
Good coverage
CSS Device Adaptation Working Draft Early draft Last update Jan 2012 Very limited
Not supported in Safari on iOS, Not supported in Blackberry browser, Not supported in Internet Explorer on Windows Phone, Not supported in Firefox mobile, Not supported in Android browser, Supported in Opera mobile from version 11.1
N/A

4. Forms

The ability to build rich forms with HTML is the basis for user input in most Web-based applications. Due to their limited keyboards, text input on mobile devices remains a difficult task for most users; HTML5 address parts of this problem by offering new type of form controls that optimize the way users will enter data:

Feature Specification Working Group Maturity Stability Latest editors draft Current implementations Test suite
Date and time entries HTML5 Date and Time state of input element HTML Working Group Last Call Working Draft Stabilizing Updated regularly Limited
Supported in Safari on iOS from version 5.0, Supported in Blackberry browser from version 4.7.1, Not supported in Internet Explorer on Windows Phone, Partial support in ['name'] from version 9, Not supported in Android browser, Supported in Opera mobile from version 11
Just started
Customized text entries (tel, email, url) HTML5 telephone, email and URL state of input element Last Call Working Draft Stabilizing Updated regularly Limited, but growing
Partial support in ['name'] from version 5, Partial support in ['name'] from version 4.7.1, Supported in Internet Explorer on Windows Phone from version 10, Partial support in ['name'] from version 4, Partial support in ['name'] from version 3, Supported in Opera mobile from version 11
None
Input pattern HTML5 pattern attribute Last Call Working Draft Stabilizing Updated regularly Very limited
Not supported in Safari on iOS, Supported in Blackberry browser from version 4.7.1, Not supported in Internet Explorer on Windows Phone, Partial support in ['name'] from version 4, Not supported in Android browser, Supported in Opera mobile from version 11
Just started
Input hint HTML5 placeholder attribute Last Call Working Draft Stabilizing Updated regularly Well deployed
Supported in Safari on iOS from version 4, Supported in Blackberry browser from version 5, Supported in Internet Explorer on Windows Phone unknown, Supported in Firefox mobile from version 4, Supported in Android browser from version 3, Supported in Opera mobile from version 11
None
Pre-defined values for text entries HTML5 datalist element Last Call Working Draft Stabilizing Updated regularly Very limited
Not supported in Safari on iOS, Not supported in Blackberry browser, Supported in Internet Explorer on Windows Phone from version 10, Supported in Firefox mobile from version 10, Not supported in Android browser, Supported in Opera mobile from version 10
None

5. User interactions

An increasing share of mobile devices relies on touch-based interactions. While the traditional interactions recognized in the Web platform (keyboard, mouse input) can still be applied in this context, a more specific handling of touch-based input is a critical aspect of creating well-adapted user experiences. As a result, work has started on defining Touch Events in the DOM (Document Object Model).

Conversely, many mobile devices use haptic feedback (such as vibration) to create new form of interactions (e.g. in games); work on a vibration API has started in the Device APIs Working Group.

But as the Web reaches new devices, and as devices gain new user interactions mechanisms, it also becomes important to allow Web developers to react to a more abstract set of user interactions: instead of having to work in terms of “click”, “key press”, or “touch event”, being able to react to an “undo” command, or a “next page” command independently of how the user instructed it to the device will prove beneficial to the development of device-independent Web applications. Work on abstract DOM events that would address this need is planned as part of the Web Events Working Group, probably as a joint work with the proposed Indie UI Working Group.

Mobile devices follow their users everywhere, and many mobile users rely on them to remind them or notify them of events, such as messages: the Web Notifications specification proposes to add that feature to the Web environment.

Similarly, the addition in the new charter of the Device APIs Working Group of an API to generate system beeps (rather than app-provided sounds) would facilitate the integration of the underlying system mechanisms to notify the user.

Mobile devices, and mobile phones in particular, are also in many cases well-suited to be used through voice-interactions; the HTML Speech Incubator Group is exploring the opportunity of starting standardization work around a framework that would make it possible for users to interact with a Web page through spoken commands (see their use cases and requirements.)

The hardware constraints of mobile devices, and their different usage context can make mobile users experience similar barriers to people with disabilities. These similarities in barriers mean that similar solutions can be used to cater for them, making a Web site accessible both for people with disabilities and mobile devices a natural goal. The Relationship between Mobile Web Best Practices and WCAG document look into these similarities.

WAI-ARIA provides semantic information on widgets, structures and behaviors hooks to make Web applications more accessible, including on mobile devies.

Feature Specification Working Group Maturity Stability Latest editors draft Current implementations Test suite
Touch-based interactions Touch Events Specification Web Events Working Group Candidate Recommendation Mostly finished Updated regularly Largely deployed
Supported in Safari on iOS from version 4.0, Supported in Blackberry browser from version 6.1, Partial support in ['name'] from version 10, Supported in Firefox mobile from version 10, Supported in Android browser from version 2.1, Supported in Opera mobile from version 11
Just started
Vibration Vibration API Device API Last Call Working Draft Stabilizing Updated regularly Experimental implementations
Not supported in Safari on iOS, Not supported in Blackberry browser, Not supported in Internet Explorer on Windows Phone, Supported in Firefox mobile from version 11, Not supported in Android browser, Not supported in Opera mobile
started
Intent-based events N/A Web Events Working Group (with proposed Indie UI Working Group) N/A Not started Not started None
Not supported in Safari on iOS, Not supported in Blackberry browser, Not supported in Internet Explorer on Windows Phone, Not supported in Firefox mobile, Not supported in Android browser, Not supported in Opera mobile
None
Notification Web Notifications Web Notifications Working Group Working Draft Early draft Regularly updated A few experimental ones
Not supported in Safari on iOS, Not supported in Blackberry browser, Not supported in Internet Explorer on Windows Phone, Supported in Firefox mobile from version 4, Not supported in Android browser, Not supported in Opera mobile
None
System beeps N/A Device API N/A Not started Not started None None
Speech-based interactions N/A HTML Speech Incubator Group, planning to request creation of standards-track work N/A N/A Use cases and requirements N/A
Not supported in Safari on iOS, Not supported in Blackberry browser, Not supported in Internet Explorer on Windows Phone, Not supported in Firefox mobile, Not supported in Android browser, Not supported in Opera mobile
N/A
Model-based user interfaces N/A Model-Based User Interfaces Working Group N/A N/A Model-based UI Incubator Group report N/A N/A
Accessibilitiy Relationship between Mobile Web Best Practices (MWBP) and Web Content Accessibility Guidelines (WCAG) Mobile Web Best Practices Working Group & Education and Outreach Working Group Working Group Note Finished N/A N/A N/A
Accessible Rich Internet Applications (WAI-ARIA) 1.0 Protocols & Formats Working Group Candidate Recommendation Stable Last updated Jan 2012 Growing deployment
Partial support in ['name'] from version 4.0, Not supported in Blackberry browser, Supported in Internet Explorer on Windows Phone from version 10, Supported in Firefox mobile from version 10, Not supported in Android browser, Partial support in ['name'] from version 10
N/A

6. Data storage

A critical component of many applications is the ability to save state, export content, as well as integrate data from other files and services on the system.

For simple data storage, the Web Storage specification offers two basic mechanisms, localStorage and sessionStorage, that can preserve data respectively indefinitely, or on a browser-session basis.

For richer interactions, the Web platform has a growing number of APIs to interact with a device filesystem: the File Reader API makes it possible to load the content of a file, the File Writer API allows to save or modify a file, while the nascent FileSystems API give access to more general file operations, including directory management.

On top of this file-based access, the Indexed Database API defines a database of values and hierarchical objects that integrates naturally with JavaScript, and can be queried and updated very efficiently. Note that the work around a client-side SQL-based database, which had been started in 2009, has been abandoned in favor of this new system.

Feature Specification Working Group Maturity Stability Latest editors draft Current implementations Test suite
Simple data storage Web Storage Web Applications Working Group Candidate Recommendation Stable Updated regularly Well deployed
Supported in Safari on iOS from version 4.0, Supported in Blackberry browser from version 6.0, Supported in Internet Explorer on Windows Phone from version 10, Supported in Firefox mobile from version 10, Supported in Android browser from version 2.1, Supported in Opera mobile from version 11
None
File reading File API Web Applications Working Group Working Draft Stabilizing toward LC Regular updates Growing
Not supported in Safari on iOS, Not supported in Blackberry browser, Supported in Internet Explorer on Windows Phone from version 10, Supported in Firefox mobile from version 10, Supported in Android browser from version 3, Supported in Opera mobile from version 11.1
None
File writing File API: Writer Web Applications Working Group Working Draft Early draft (but starting to stabilize) Last update Sep 2011 None
Not supported in Safari on iOS, Not supported in Blackberry browser, Not supported in Internet Explorer on Windows Phone, Not supported in Firefox mobile, Not supported in Android browser, Not supported in Opera mobile
None
Filesystems operations File API: Directories and System Web Applications Working Group Working Draft Early draft Last update Nov 2011 None
Not supported in Safari on iOS, Not supported in Blackberry browser, Not supported in Internet Explorer on Windows Phone, Not supported in Firefox mobile, Not supported in Android browser, Not supported in Opera mobile
None
Database query/update Indexed Database API Web Applications Working Group Working Draft Still changing, but starting to stabilize Regularly updated Very limited
Not supported in Safari on iOS, Not supported in Blackberry browser, Supported in Internet Explorer on Windows Phone from version 10, Supported in Firefox mobile from version 10, Not supported in Android browser, Not supported in Opera mobile
Started
Web SQL API Working Group Note Abandoned N/A Somewhat deployed, but won’t be further deployed
Supported in Safari on iOS from version 4.0, Supported in Blackberry browser from version 6.0, Not supported in Internet Explorer on Windows Phone, Not supported in Firefox mobile, Supported in Android browser from version 2.1, Supported in Opera mobile from version 11
N/A

7. Personal Information Management

Applications can benefit from integrating with existing data records; on mobile devices, the address book and calendar are particularly useful source of information, which the Contacts API and the Calendar API bring access to.

Feature Specification Working Group Maturity Stability Latest editors draft Current implementations Test suite
Address book data Contacts API Device APIs Working Group Last Call Working Draft Future of the approach uncertain; maybe be replaced with Web Intents Regularly updated A few experimental ones
Not supported in Safari on iOS, Not supported in Blackberry browser, Not supported in Internet Explorer on Windows Phone, Not supported in Firefox mobile, Not supported in Android browser, Not supported in Opera mobile
early draft
Calendar data Calendar API Device APIs Working Group Working Draft Still changing Regularly updated None
Not supported in Safari on iOS, Not supported in Blackberry browser, Not supported in Internet Explorer on Windows Phone, Not supported in Firefox mobile, Not supported in Android browser, Not supported in Opera mobile
None

8. Sensors and hardware integration

Mobile devices are packed with sensors, making them a great bridge between the real and virtual worlds: GPS, accelerometer, ambient light detector, microphone, camera, thermometer, etc.

To take full advantage of these sensors in mobile Web applications, Web developers need to be provided with hooks to interact with them.

The Geolocation API provides a common interface for locating the device, independently of the underlying technology (GPS, WIFI networks identification, triangulation in cellular networks, etc.) The second version of that API adds the ability to retrieve a civic address matching the user’s current location.

Work has also started on providing access to orientation and acceleration data via the DeviceOrientation Event Specification.

A new proposed Sensor API (replacing a feature previously available in the abandoned System Information API) proposes a generic API to get and monitor data from sensors.

As already mentioned in the section on multimedia, there is ongoing work on APIs to open up access to camera and microphone streams.

Feature Specification Working Group Maturity Stability Latest editors draft Current implementations Test suite
Geolocation Geolocation API Geolocation Working Group Candidate Recommendation Mostly finished Regularly updated Widely deployed
Supported in Safari on iOS from version 4.0, Supported in Blackberry browser from version 6.0, Supported in Internet Explorer on Windows Phone from version 10, Supported in Firefox mobile from version 10, Supported in Android browser from version 2.1, Supported in Opera mobile from version 11
Good coverage
Geolocation API v2 Last Call Working Draft Still changing Last update Oct 2011 None N/A
Motion sensors DeviceOrientation Event Specification Geolocation Working Group Last Call Working Draft Stabilizing Regularly updated Growing
Supported in Safari on iOS from version 4.2, Not supported in Blackberry browser, Not supported in Internet Explorer on Windows Phone, Partial support in ['name'] from version 10, Supported in Android browser from version 3, Not supported in Opera mobile
None
Battery Status Battery Status API Device APIs Working Group Last Call Working Draft Stabilizing Updated regularly Experimental implementations
Not supported in Safari on iOS, Not supported in Blackberry browser, Not supported in Internet Explorer on Windows Phone, Supported in Firefox mobile from version 10, Not supported in Android browser, Not supported in Opera mobile
None
Generic sensors Sensor API Device APIs Working Group N/A Very early draft Last update Nov 2011 None
Not supported in Safari on iOS, Not supported in Blackberry browser, Not supported in Internet Explorer on Windows Phone, Not supported in Firefox mobile, Not supported in Android browser, Not supported in Opera mobile
None
Camera & Microphone streams WebRTC 1.0: Real-time Communication Between Browsers Web Real-Time Communications Working Group Working Draft Early draft Last updated Jan 2012 A few experimental ones
Not supported in Safari on iOS, Not supported in Blackberry browser, Not supported in Internet Explorer on Windows Phone, Not supported in Firefox mobile, Not supported in Android browser, Not supported in Opera mobile
None

9. Network

Network connectivity represents a major asset for mobile devices: the Web is an immense store of content, as well as an almost endless source of processing power, overcoming two of the limitations of mobile devices.

The Web platform is growing a number of APIs that facilitate establishing network connectivity in different contexts.

XMLHttpRequest (the “X” in AJAX) is a widely deployed API to load content from Web servers using the HTTP and HTTPs protocol: the W3C specification (formerly known as XMLHttpRequest Level 2) completes the existing deployed API with the ability to make requests on servers in a different domain, programmatic feedback on the progress of the network operations, and more efficient handling of binary content. The work on documenting the currently deployed API (XMLHttpRequest Level 1) has been abandoned in favor of getting the new API developed more quickly.

By default, browsers do not allow to make request across different domains (or more specifically, across different origins, a combination of the protocol, domain and port) from a single Web page; this rule protects the user from having a Web site abusing their credentials and stealing their data on another Web site. Sites can opt-out of that rule by making use of the Cross-Origin Resource Sharing mechanism, opening up much wider cooperation across Web applications and services.

XMLHttpRequest is useful for client-initiated network requests, but mobile devices with their limited network capabilities and the cost that network requests induce on their battery (and sometimes on their users bill) can often make better use of server-initiated requests. The Server-Sent Events API allows to trigger DOM events based on push notifications (via HTTP and other protocols.)

The WebSocket API, built on top of the IETF WebSocket protocol, offers a bidirectional, more flexible, and less resource intensive network connectivity than XMLHttpRequest.

Of course, an important part of using network connectivity relies on being able to determine if such connectivity exists, and the type of network available. The HTML5 onLine DOM flag (and its associated change event, ononline) signals when network connectivity is available to the Web environment.

The network-information API addresses discovery of the network characteristics, allowing to determine for instance if the user is on a WIFI or a 3G connection.

Feature Specification Working Group Maturity Stability Latest editors draft Current implementations Test suite
HTTP(s) network API XMLHttpRequest Web Applications Working Group Working Draft Still changing, but starting to stabilize Regularly updated Very broad for level 1 features, growing for level 2
Supported in Safari on iOS from version 5, Not supported in Blackberry browser, Supported in Internet Explorer on Windows Phone from version 10, Supported in Firefox mobile from version 10, Supported in Android browser from version 3, Not supported in Opera mobile
Coverage of XMLHTTPRequest "level 1"
Cross-domain requests Cross-Origin Resource Sharing Web Applications Working Group Working Draft Close to stabilizing Last update Feb 2012 Growing deployment
Supported in Safari on iOS from version 4.0, Not supported in Blackberry browser, Supported in Internet Explorer on Windows Phone from version 10, Supported in Firefox mobile from version 10, Supported in Android browser from version 2.1, Not supported in Opera mobile
Started
Server-pushed requests Server-Sent Events Web Applications Working Group Working Draft Still changing but stabilizing Regularly updated Growing
Supported in Safari on iOS from version 4.0, Not supported in Blackberry browser, Not supported in Internet Explorer on Windows Phone, Supported in Firefox mobile from version 10, Not supported in Android browser, Supported in Opera mobile from version 11.1
None (?)
Bidirectional connections The WebSocket API Web Applications Working Group Candidate Recommendation Stable Regularly updated Growing
Partial support in ['name'] from version 4.2, Supported in Blackberry browser from version 6.1, Supported in Internet Explorer on Windows Phone from version 10, Supported in Firefox mobile from version 10, Not supported in Android browser, Partial support in ['name'] from version 11
Started
on-line state HTML5 onLine DOM state HTML Working Group Last Call Working Draft Mostly stable regularly updated Limited
Not supported in Safari on iOS, Not supported in Blackberry browser, Supported in Internet Explorer on Windows Phone from version 8, Not supported in Firefox mobile, Supported in Android browser from version 2.2, Not supported in Opera mobile
None
Network characteristics The Network Information API Device APIs Working Group Working Draft Early draft Regularly updated Very limited
Not supported in Safari on iOS, Not supported in Blackberry browser, Not supported in Internet Explorer on Windows Phone, Not supported in Firefox mobile, Partial support in ['name'] from version 2.2, Not supported in Opera mobile
N/A

10. Communication and Discovery

Beyond connection to on-line services, allowing communications between users, but also between devices and between applications is an important aspect of a good mobile development platform. To communicate with unknown devices or pre-existing services, a discovery component is critical.

The Messaging API completes the existing ability to create and send message through links (with sms:, mms: and mailto: URI schemes) with more control on adding attachments and the success of the message sending.

The postMessage API of HTML5 Web Messaging allows for Web Applications to communicate between each other.

Exploratory work in the Device APIs Working Group, based on Web Intents, should also open up possibilities of closer integration of Web applications, as well as of Web applications with native applications.

The recent launch of the Web Real-Time Communications Working Group is the starting point of a much wider set of communication opportunity:

Feature Specification Working Group Maturity Stability Latest editors draft Current implementations Test suite
Emails, SMS and MMS with generated attachments The Messaging API Device APIs Working Group Working Draft Candidate for replacement by a Web Intents-based approach Last update July 2011 None
Not supported in Safari on iOS, Not supported in Blackberry browser, Not supported in Internet Explorer on Windows Phone, Not supported in Firefox mobile, Not supported in Android browser, Not supported in Opera mobile
None
Inter-app communications HTML5 Web Messaging Web Applications Working Group Working Draft Stabilizing Regularly updated Well deployed
Supported in Safari on iOS from version 4.0, Supported in Blackberry browser from version 7, Partial support in ['name'] from version 10, Supported in Firefox mobile from version 10, Supported in Android browser from version 2.1, Supported in Opera mobile from version 10
None
Inter-app triggers Web Intents Device APIs Working Group (expected to form a task force with Web Apps Working Group) N/A Not started Starting from Web Intents None
Not supported in Safari on iOS, Not supported in Blackberry browser, Not supported in Internet Explorer on Windows Phone, Not supported in Firefox mobile, Not supported in Android browser, Not supported in Opera mobile
None
P2P connections WebRTC 1.0: Real-time Communication Between Browsers Web Real-Time Communications Working Group Working Draft Early draft Regularly updated None
Not supported in Safari on iOS, Not supported in Blackberry browser, Not supported in Internet Explorer on Windows Phone, Not supported in Firefox mobile, Not supported in Android browser, Not supported in Opera mobile
None
P2P Video/Audio streams

11. Packaging

An important aspect of the user experience of applications is linked to how the user perceives the said application is available permanently (even when off-line, which is particularly important on mobile devices), as well as how it can shared and distributed, typically through purchases via applications stores — this is adequately addressed by packaging the application.

The Web platform offers two complementary approaches to packaging Web applications:

NB: in addition to aiding in the development of client-side Web applications for mobile devices, W3C Widgets have been used as server side-applications, standalone applications, daemons, and as a Browser extension format.

Feature Specification Working Group Maturity Stability Latest editors draft Current implementations Test suite
Application Cache HTML5 Application Cache HTML Working Group Last Call Working Draft Still changing but stabilizing Regularly updated Well deployed
Supported in Safari on iOS from version 4.0, Supported in Blackberry browser from version 6.0, Supported in Internet Explorer on Windows Phone from version 10, Supported in Firefox mobile from version 10, Supported in Android browser from version 2.1, Supported in Opera mobile from version 11
None
Widgets Widgets Packaging & Configuration Web Applications Working Group Recommendation Finished Last update Aug 2011 4 complete implementations; 1 impl 99%
Not supported in Safari on iOS, Not supported in Blackberry browser, Not supported in Internet Explorer on Windows Phone, Not supported in Firefox mobile, Not supported in Android browser, Supported in Opera mobile from version 9.5
Full coverage
Digital Signatures for Widgets Proposed Recommendation Finished Last update Aug 2011 2 or more implementations pass each test Full coverage
Widget Access Request Policy (WARP) Recommendation Finished Last update Dec 2011 3 complete implementations; 1 impl 98% Full coverage

12. Performance & Optimization

Due to their limited CPU, and more importantly to their limited battery, mobile devices require a lot of attention in terms of performance.

The work started by the Web Performance Working Group on Navigation Timing, Resource Timing, and more recently Performance Timeline and User Timing, gives tools to Web developers for optimizing their Web applications.

The proposed work on Efficient Script Yielding offers the opportunity to Web developers to use more efficiently asynchronous programming.

The API to determine whether a Web page is being displayed (Page Visibility API) can also be used to adapt the usage of resources to the need of the Web application, for instance by reducing network activity when the page is minimized. Likewise, the Timing control for script-based animations API can help reduce the usage of resources needed for playing animations.

The battery API allows to adjust the use of resources to the current level of power available in the battery of a mobile device.

Beyond optimization of resources, the perceived reactivity of an application is also a critical aspect of the mobile user experience. The thread-like mechanism made possible via Web Workers allows keeping the user interface responsive by offloading the most resource-intensive operations into a background process.

The Mobile Web Application Best Practices provide general advice on how to build Web applications that work well on mobile devices, taking into account in particular the needs for optimization.

Feature Specification Working Group Maturity Stability Latest editors draft Current implementations Test suite
Timing hooks Navigation Timing Web Performance Working Group Candidate Recommendation Mostly finished Regularly updated Started
Resource timing Last Call Working Draft Stabilizing Regularly updated None
Supported in Safari on iOS unknown, Supported in Blackberry browser unknown, Supported in Internet Explorer on Windows Phone unknown, Supported in Firefox mobile unknown, Supported in Android browser unknown, Supported in Opera mobile unknown
N/A
Performance Timeline Last Call Working Draft Stabilizing Regularly updated None
Supported in Safari on iOS unknown, Supported in Blackberry browser unknown, Supported in Internet Explorer on Windows Phone unknown, Supported in Firefox mobile unknown, Supported in Android browser unknown, Supported in Opera mobile unknown
N/A
User timing Last Call Working Draft Stabilizing Regularly updated None
Supported in Safari on iOS unknown, Supported in Blackberry browser unknown, Supported in Internet Explorer on Windows Phone unknown, Supported in Firefox mobile unknown, Supported in Android browser unknown, Supported in Opera mobile unknown
N/A
Priority handling Efficient Script Yielding N/A Early draft Regulary updated Very limited
Not supported in Safari on iOS, Not supported in Blackberry browser, Supported in Internet Explorer on Windows Phone from version 10, Not supported in Firefox mobile, Not supported in Android browser, Not supported in Opera mobile
N/A
Page Visibility detection Page visibility API Last Call Working Draft Stabilizing Regularly updated Very limited
Not supported in Safari on iOS, Not supported in Blackberry browser, Supported in Internet Explorer on Windows Phone from version 10, Supported in Firefox mobile from version 10, Not supported in Android browser, Not supported in Opera mobile
N/A
Animation optimization Timing control for script-based animations Working Draft Early draft Regularly updated Very limited
Not supported in Safari on iOS, Supported in Blackberry browser unknown, Supported in Internet Explorer on Windows Phone from version 10, Supported in Firefox mobile from version 10, Not supported in Android browser, Not supported in Opera mobile
N/A
Threading Web Workers Web Applications Working Group Last Call Working Draft Stabilizing Regularly updated Growing
Supported in Safari on iOS from version 5, Supported in Blackberry browser from version 6.0, Supported in Internet Explorer on Windows Phone from version 10, Supported in Firefox mobile from version 10, Supported in Android browser from version 2.1, Supported in Opera mobile from version 11
Started
Battery Status Battery Status Events Device APIs Working Group Last Call Working Draft Stabilizing Updated regularly Very limited
Not supported in Safari on iOS, Not supported in Blackberry browser, Not supported in Internet Explorer on Windows Phone, Supported in Firefox mobile from version 10, Not supported in Android browser, Not supported in Opera mobile
None
Optimization Best Practices Mobile Web Application Best Practices Mobile Web Best Practices Working Group (now closed) Recommendation Finished N/A N/A N/A