Web Platform Status

This page captures the implementation status of HTML5 feature support in Chrome (desktop) and Chrome for Android. The current release of Chrome for Android matches m25, any exceptions to this will be indicated below.

You have a few ways to watch these features more closely:

☆ the Chromium bug tickets or add yourself to the CC of WebKit tickets.

File APIs

File System

Availability: started to land in m8, but only available for apps & extensions. Synchronous APIs are in m9 for web workers. window.resolveLocalFileSystemURL() and Entry.toURL() were added in m11. Stable release for web pages [not apps/extensions] was m13.

BlobBuilder

Notes: window.createBlobURL() changed to new spec's window.createObjectURL() somewhere around m8. As of M10, the call is prefixed under window.webkitURL.createObjectURL(). Chrome 23 unprefixes window.URL.

Known differences between Chrome (as of M25) and the draft specification (as of July 16, 2012):

a "blocked" event will fire against a request created by an open(name, version), a setVersion(version) or deleteDatabase(name) call even if all other connections are closed in response to a "versionchange" event

"blocked" events may also fire multiple times against the same deleteDatabase(name) request

Blobs, Files, and FileLists in values are not supported.

The Sync API is not supported - but neither IE nor Firefox support this either; it is marked as "At Risk" in the spec

Updates in M23 (from M22)

The new-style open(name, version).onupgradeneeded API is now supported; the old open(name) followed by setVersion(version) API may still be used for now, but web applications should migrate as soon as possible.

Updates in M22 (from M21)

deleteDatabase() and webkitGetDatabaseNames() can now be called from Workers

IDBKeyRange.upperOpen/lowerOpen flags are now reported correctly when lowerBound()/upperBound() used

Empty arrays are no longer valid key paths

Requests can no longer be issued against transactions when not active (i.e. outside of creation context or callbacks, e.g. from a timeout or non-IDB event)

"versionchange" events are no longer fired against connections that are closing

Multi-entry indexes with invalid/duplicate subkeys now populated per spec

Web Storage

Availability: localStorage in m4, sessionStorage in m5

Notes: localStorage serves basic use cases. For more comprehensive storage solution, consider IndexedDB. While the spec indicates anything that structured clone algorithm can clone can be stored, all browser implementations currently allow only strings. Chrome's storage capacity is currently 2.5mb.

CSS3 Regions

position: sticky

position: sticky is a new way to position elements and is conceptually similar to position: fixed. The difference is that a stickily positioned element behaves like position: relative within its parent, until a given offset threshold is met.

matchMedia()

API for testing if a given media query will apply.

Availability: m9

Pointer Lock (TAPIFKA Mouse Lock)

Gives access to raw mouse movement, locks the target of mouse events to a single element, eliminates limits of how far mouse movement can go in a single direction, and removes the cursor from view. Obvious use cases are for first person or real time strategy games.Availability: m18 behind flag. On be default in m22 with a refined API similar to requestFullScreen.

Pointer lock can only work within one document. If you lock in one iframe, you can not have another iframe try to lock and transfer the target... it will error instead. The first iframe has to unlock, then the second iframe can lock.

Also, iframes work by default, but sandboxed iframes block pointer lock. Landed recently into WebKit the ability to use <iframe sandbox="allow-pointer-lock">, but that will not percolate into Chrome until 23.

Page Visibility

Provides an API to ask whether the current tab is visibile or not. If you, you might want to throttle back action or set an idle state.

Availability: m13, prefixed as document.webkitHidden

Notes: Relatedly, setTimeout/Interval are clamped to 1000ms when in a background tab as of m11. Firefox 5 has the same behavior.

Workers

Notes: Pre-M15, there was a limit to the number of workers that each page can start, as well as the number of workers that can be running globally across all pages. This was because a new process was started for each worker. As of M15, workers are started in-process, meaning less memory footprint and faster messaging. Transferrable objects landed in m17 (see next)

Dev Contact: Dmitry Lomov (dslomov), Drew Wilson (atwilson)

Transferable Object messaging passing

With transferable objects/data, ownership is transferred from one context to another. It is zero-copy, which vastly improves the performance of sending data to a Worker or another window.