Not yet stable

For a given set of browsers, what APIs are not yet in all of them.

Example Comparisons
Browsers
Features

Summary

A count of the number of APIs are in Browser X but not in Browser Y.
Not in Safari on iOSNot in Firefox
In Safari on iOS 63
In Firefox 68

Unstable APIs

Below is a list of features that are not in all of Safari on iOS and Firefox

Raw Data

Quick Links:

HTML Data

API First Browser Date Days in Limbo Notes
html.elements.a.attributionsourceid 📋Safari on iOS4/26/20211996
html.elements.a.coords 📋Safari on iOS6/29/20077046
Firefox: You can no longer nest an <a> element inside a <map> element to create a hotspot region - coords and shape attribute support removed.Firefox for Android: You can no longer nest an <a> element inside a <map> element to create a hotspot region - coords and shape attribute support removed.
html.elements.a.href.href_sms Firefox4/24/20125285
html.elements.a.shape 📋Safari on iOS6/29/20077046
Firefox: You can no longer nest an <a> element inside a <map> element to create a hotspot region - coords and shape attribute support removed.Firefox for Android: You can no longer nest an <a> element inside a <map> element to create a hotspot region - coords and shape attribute support removed.
html.elements.audio.disableremoteplayback 📋Safari on iOS9/19/20192581
html.elements.canvas.moz-opaque Firefox6/30/20096314
html.elements.col.char 📋Safari on iOS7/11/20086668
html.elements.col.charoff 📋Safari on iOS7/11/20086668
html.elements.colgroup.char 📋Safari on iOS7/11/20086668
html.elements.colgroup.charoff 📋Safari on iOS7/11/20086668
html.elements.form.autocomplete.new-password Firefox5/21/20192702
html.elements.iframe.allow.autoplay 📋Firefox3/10/20202408
html.elements.iframe.allow.display-capture 📋Firefox3/10/20202408
html.elements.iframe.allow.document-domain 📋Firefox3/10/20202408
html.elements.iframe.allow.encrypted-media 📋Firefox3/10/20202408
html.elements.iframe.allow.fullscreen 📋Firefox8/25/20202240
html.elements.iframe.allow.gamepad 📋Firefox8/10/20211890
Firefox: The default allowlist is * instead of self (as required by the specification).Firefox for Android: The default allowlist is * instead of self (as required by the specification).
html.elements.iframe.allow.geolocation 📋Firefox3/10/20202408
html.elements.iframe.allow.midi 📋Firefox3/10/20202408
html.elements.iframe.allow.payment 📋Firefox3/10/20202408
html.elements.iframe.allow.publickey-credentials-create 📋Firefox2/20/2024966
html.elements.iframe.allow.publickey-credentials-get 📋Firefox9/26/20231113
html.elements.iframe.allow.speaker-selection 📋Firefox8/1/20231169
Firefox for Android: Not available due to a limitation in Android (see bug 1473346).
html.elements.iframe.allow.web-share 📋Firefox9/22/20202212
Firefox: Firefox recognizes the web-share permissions policy, but this has no effect in versions of Firefox that do not support the share() method.Firefox for Android: Firefox for Android recognizes the web-share permissions policy, but this has no effect in versions of Firefox for Android that do not support the share() method.
html.elements.iframe.sandbox.allow-orientation-lock 📋Firefox9/20/20163675
html.elements.iframe.sandbox.allow-pointer-lock 📋Firefox9/20/20163675
html.elements.iframe.sandbox.allow-presentation 📋Firefox11/15/20163619
html.elements.input.capture 📋Safari on iOS9/13/20163682
html.elements.input.type_month 📋Safari on iOS3/29/20183120
Safari: The input type is recognized, but there is no month-specific control. See bug 200416.
html.elements.input.type_password.insecure_login_handling Firefox3/7/20173507
html.elements.input.type_week 📋Safari on iOS12/11/2024671
html.elements.input.webkitdirectory Firefox11/15/20163619
Chrome Android: In Chrome for Android 131, choosing a directory crashes the browser (see bug 376834374).Chrome Android: Before version 131, users cannot choose a directory, only individual files (see bug 40248532.Opera Android: In Chrome for Android 131, choosing a directory crashes the browser (see bug 376834374).Opera Android: Before version 87, users cannot choose a directory, only individual files (see bug 40248532.Safari on iOS: The attribute can be set but users cannot choose a directory, only individual files (see bug 271705).WebView Android: In Chrome for Android 131, choosing a directory crashes the browser (see bug 376834374).WebView Android: Before version 131, users cannot choose a directory, only individual files (see bug 40248532.WebView on iOS: The attribute can be set but users cannot choose a directory, only individual files (see bug 271705).
html.elements.link.blocking 📋Safari on iOS12/11/2024671
html.elements.link.rel.alternate_stylesheet 📋Firefox6/17/20086692
html.elements.link.rel.icon Firefox10/24/20067294
Chrome: If both ICO and PNG are available, will use ICO over PNG if ICO has better matching sizes set. (Per caniuse.com.).Edge: In version 79 and later (Blink-based Edge), if both ICO and PNG are available, will use ICO over PNG if ICO has better matching sizes set. (Per caniuse.com.)Firefox: Before Firefox 83, the crossorigin attribute is not supported for rel="icon".Firefox: The media attribute is not supported for rel="icon", see bug 1603885.Opera: In version 15 and later (Blink-based Opera), if both ICO and PNG are available, will use ICO over PNG if ICO has better matching sizes set. (Per caniuse.com.)Safari: If both ICO and PNG are available, will ALWAYS use ICO file, regardless of sizes set. (Per caniuse.com.)Safari on iOS: Does not use favicons at all (but may have alternative for bookmarks, etc.). (Per caniuse.com.)WebView on iOS: Does not use favicons at all (but may have alternative for bookmarks, etc.). (Per caniuse.com.)
html.elements.link.rel.manifest 📋Safari on iOS3/29/20183120
html.elements.link.rel.preload.as-track Safari on iOS3/29/20183120
html.elements.meta.name.theme-color 📋Safari on iOS9/20/20211849
Chrome: Chrome uses the color only on installed progressive web apps.Chrome: Chrome reports support, but does not actually use the color anywhere.Chrome Android: Chrome for Android does not use the color on devices with native dark mode enabled unless it's an installed progressive web app or a trusted web activity.Edge: Edge uses the color only on installed progressive web apps.Quest Browser: Chrome for Android does not use the color on devices with native dark mode enabled unless it's an installed progressive web app or a trusted web activity.
html.elements.script.blocking 📋Safari on iOS12/11/2024671
html.elements.script.type.importmap.integrity 📋Safari on iOS9/16/2024757
html.elements.select.size 📋Firefox11/9/20048008
html.elements.style.blocking 📋Safari on iOS12/11/2024671
html.elements.summary.display_list_item Firefox9/20/20163675
html.elements.tbody.char Safari on iOS4/3/20106037
html.elements.td.char Safari on iOS4/3/20106037
html.elements.td.rowspan.rowspan_zero Firefox8/8/20173353
html.elements.template.shadowrootclonable 📋Firefox4/16/2024910
html.elements.template.shadowrootdelegatesfocus 📋Firefox2/20/2024966
html.elements.textarea.autocomplete.new-password Firefox5/21/20192702
html.elements.tfoot.char Safari on iOS4/3/20106037
html.elements.th.char Safari on iOS4/3/20106037
html.elements.th.rowspan.rowspan_zero Firefox8/8/20173353
html.elements.thead.char Safari on iOS4/3/20106037
html.elements.tr.char Safari on iOS4/3/20106037
html.elements.tr.charoff Safari on iOS4/3/20106037
html.elements.video.disableremoteplayback 📋Safari on iOS9/19/20192581
html.elements.video.playsinline 📋Safari on iOS9/13/20163682
html.global_attributes.autocorrect 📋Safari on iOS4/26/20211996
Safari: Takes values of true/false (instead of on/off).Safari: Allowed on <input type='password'> elements.Safari on iOS: Takes values of true/false (instead of on/off).Safari on iOS: Allowed on <input type='password'> elements.
html.global_attributes.contenteditable.plaintext-only Safari on iOS3/24/20202394
html.global_attributes.is 📋Firefox10/23/20182912
html.global_attributes.writingsuggestions 📋Safari on iOS9/16/2024757
html.manifest.display 📋Safari on iOS3/29/20183120
Chrome: display and/or display_override are required for a web app to be installable.Chrome Android: display and/or display_override are required for a web app to be installable.Edge: display and/or display_override are required for a web app to be installable.Quest Browser: display and/or display_override are required for a web app to be installable.Opera: display and/or display_override are required for a web app to be installable.Opera Android: display and/or display_override are required for a web app to be installable.Samsung Internet: display and/or display_override are required for a web app to be installable.WebView Android: display and/or display_override are required for a web app to be installable.
html.manifest.display.browser 📋Safari on iOS3/29/20183120
html.manifest.display.standalone 📋Safari on iOS3/29/20183120
html.manifest.icons 📋Safari on iOS3/14/20221674
Chrome: icons is required for a web app to be installable.Chrome Android: icons is required for a web app to be installable.Edge: icons is required for a web app to be installable.Quest Browser: icons is required for a web app to be installable.Opera: icons is required for a web app to be installable.Opera Android: icons is required for a web app to be installable.Safari: Only used when no apple-touch-icon is present and either "purpose" is set to "any" or "purpose" is not specified.Safari on iOS: Only used when no apple-touch-icon is present and either "purpose" is set to "any" or "purpose" is not specified.Samsung Internet: icons is required for a web app to be installable.WebView Android: icons is required for a web app to be installable.WebView on iOS: Only used when no apple-touch-icon is present and either "purpose" is set to "any" or "purpose" is not specified.
html.manifest.id 📋Safari on iOS3/27/20231296
Firefox: The property parses, but has no effect.
html.manifest.name 📋Safari on iOS3/29/20183120
Chrome: name or short_name is required for a web app to be installable.Chrome Android: name or short_name is required for a web app to be installable.Edge: name or short_name is required for a web app to be installable.Quest Browser: name or short_name is required for a web app to be installable.Opera: name or short_name is required for a web app to be installable.Opera Android: name or short_name is required for a web app to be installable.Samsung Internet: name or short_name is required for a web app to be installable.WebView Android: name or short_name is required for a web app to be installable.
html.manifest.scope 📋Safari on iOS3/29/20183120
html.manifest.short_name 📋Safari on iOS3/29/20183120
Chrome: short_name or name is required for a web app to be installable.Chrome Android: short_name or name is required for a web app to be installable.Edge: short_name or name is required for a web app to be installable.Quest Browser: short_name or name is required for a web app to be installable.Opera: short_name or name is required for a web app to be installable.Opera Android: short_name or name is required for a web app to be installable.Samsung Internet: short_name or name is required for a web app to be installable.WebView Android: short_name or name is required for a web app to be installable.
html.manifest.start_url 📋Safari on iOS3/29/20183120
Chrome: start_url is required for a web app to be installable.Chrome Android: start_url is required for a web app to be installable.Edge: start_url is required for a web app to be installable.Quest Browser: start_url is required for a web app to be installable.Opera: start_url is required for a web app to be installable.Opera Android: start_url is required for a web app to be installable.Samsung Internet: start_url is required for a web app to be installable.WebView Android: start_url is required for a web app to be installable.
html.manifest.theme_color 📋Safari on iOS9/20/20211849

JS Data

API First Browser Date Days in Limbo Notes
javascript.builtins.Atomics.Atomic_operations_on_non_shared_buffers Firefox7/28/20202268
javascript.builtins.Atomics.waitAsync 📋Safari on iOS3/27/20231296
javascript.builtins.Error.Error.fileName_parameter Firefox11/9/20048008
javascript.builtins.Error.Error.lineNumber_parameter Firefox11/9/20048008
javascript.builtins.Error.cause.displayed_in_console Firefox8/10/20211890
javascript.builtins.Error.columnNumber Firefox11/9/20048008
javascript.builtins.Error.fileName Firefox11/9/20048008
javascript.builtins.Error.lineNumber Firefox11/9/20048008
javascript.builtins.Error.serializable_object 📋Firefox7/26/20221540
Firefox: Version 103 serialized properties: name, message, cause, fileName, lineNumber and columnNumber.Firefox: Version 104 adds serialization of stack in the main thread (window.postMessage() and structuredClone()).Firefox: Version 110 adds serialization of stack in workers (worker.postMessage() and structuredClone()).Firefox for Android: Version 103 serialized properties: name, message, cause, fileName, lineNumber and columnNumber.Firefox for Android: Version 104 adds serialization of stack in the main thread (window.postMessage() and structuredClone()).Firefox for Android: Version 110 adds serialization of stack in workers (worker.postMessage() and structuredClone()).
javascript.builtins.EvalError.serializable_object 📋Firefox7/26/20221540
Firefox: Version 103 serializable properties: name, message, cause, fileName, lineNumber and columnNumber.Firefox: Version 104 also serializes stack in the main thread (window.postMessage() and structuredClone()).Firefox: Version 110 also serializes stack in workers (worker.postMessage() and structuredClone()).Firefox for Android: Version 103 serializable properties: name, message, cause, fileName, lineNumber and columnNumber.Firefox for Android: Version 104 also serializes stack in the main thread (window.postMessage() and structuredClone()).Firefox for Android: Version 110 also serializes stack in workers (worker.postMessage() and structuredClone()).
javascript.builtins.FinalizationRegistry.symbol_as_target Safari on iOS3/27/20231296
javascript.builtins.Function.displayName Firefox6/5/20125243
javascript.builtins.InternalError Firefox11/9/20048008
javascript.builtins.InternalError.InternalError Firefox11/9/20048008
javascript.builtins.Intl.DurationFormat 📋Safari on iOS3/27/20231296
javascript.builtins.Intl.DurationFormat.DurationFormat 📋Safari on iOS3/27/20231296
javascript.builtins.Intl.DurationFormat.format 📋Safari on iOS3/27/20231296
javascript.builtins.Intl.DurationFormat.formatToParts 📋Safari on iOS3/27/20231296
javascript.builtins.Intl.DurationFormat.resolvedOptions 📋Safari on iOS3/27/20231296
javascript.builtins.Intl.DurationFormat.supportedLocalesOf 📋Safari on iOS3/27/20231296
javascript.builtins.Intl.Locale.getCalendars 📋Safari on iOS9/18/20231121
Chrome: Implemented as an accessor property.Chrome Android: Implemented as an accessor property.Edge: Implemented as an accessor property.Node.js: Implemented as an accessor property.Quest Browser: Implemented as an accessor property.Opera: Implemented as an accessor property.Opera Android: Implemented as an accessor property.Safari: Implemented as an accessor property.Safari on iOS: Implemented as an accessor property.Samsung Internet: Implemented as an accessor property.WebView Android: Implemented as an accessor property.WebView on iOS: Implemented as an accessor property.
javascript.builtins.Intl.Locale.getCollations 📋Safari on iOS9/18/20231121
Chrome: Implemented as an accessor property.Chrome Android: Implemented as an accessor property.Edge: Implemented as an accessor property.Node.js: Implemented as an accessor property.Quest Browser: Implemented as an accessor property.Opera: Implemented as an accessor property.Opera Android: Implemented as an accessor property.Safari: Implemented as an accessor property.Safari on iOS: Implemented as an accessor property.Samsung Internet: Implemented as an accessor property.WebView Android: Implemented as an accessor property.WebView on iOS: Implemented as an accessor property.
javascript.builtins.Intl.Locale.getHourCycles 📋Safari on iOS9/18/20231121
Chrome: Implemented as an accessor property.Chrome Android: Implemented as an accessor property.Edge: Implemented as an accessor property.Node.js: Implemented as an accessor property.Quest Browser: Implemented as an accessor property.Opera: Implemented as an accessor property.Opera Android: Implemented as an accessor property.Safari: Implemented as an accessor property.Safari on iOS: Implemented as an accessor property.Samsung Internet: Implemented as an accessor property.WebView Android: Implemented as an accessor property.WebView on iOS: Implemented as an accessor property.
javascript.builtins.Intl.Locale.getNumberingSystems 📋Safari on iOS9/18/20231121
Chrome: Implemented as an accessor property.Chrome Android: Implemented as an accessor property.Edge: Implemented as an accessor property.Node.js: Implemented as an accessor property.Quest Browser: Implemented as an accessor property.Opera: Implemented as an accessor property.Opera Android: Implemented as an accessor property.Safari: Implemented as an accessor property.Safari on iOS: Implemented as an accessor property.Samsung Internet: Implemented as an accessor property.WebView Android: Implemented as an accessor property.WebView on iOS: Implemented as an accessor property.
javascript.builtins.Intl.Locale.getTextInfo 📋Safari on iOS9/18/20231121
Chrome: Implemented as an accessor property.Chrome Android: Implemented as an accessor property.Deno: Implemented as an accessor property.Edge: Implemented as an accessor property.Node.js: Implemented as an accessor property.Quest Browser: Implemented as an accessor property.Opera: Implemented as an accessor property.Opera Android: Implemented as an accessor property.Safari: Implemented as an accessor property.Safari on iOS: Implemented as an accessor property.Samsung Internet: Implemented as an accessor property.WebView Android: Implemented as an accessor property.WebView on iOS: Implemented as an accessor property.
javascript.builtins.Intl.Locale.getTimeZones 📋Safari on iOS9/18/20231121
Chrome: Implemented as an accessor property.Chrome Android: Implemented as an accessor property.Edge: Implemented as an accessor property.Node.js: Implemented as an accessor property.Quest Browser: Implemented as an accessor property.Opera: Implemented as an accessor property.Opera Android: Implemented as an accessor property.Safari: Implemented as an accessor property.Safari on iOS: Implemented as an accessor property.Samsung Internet: Implemented as an accessor property.WebView Android: Implemented as an accessor property.WebView on iOS: Implemented as an accessor property.
javascript.builtins.Intl.Locale.getWeekInfo 📋Safari on iOS9/18/20231121
Chrome: Implemented as an accessor property.Chrome Android: Implemented as an accessor property.Edge: Implemented as an accessor property.Node.js: Implemented as an accessor property.Quest Browser: Implemented as an accessor property.Opera: Implemented as an accessor property.Opera Android: Implemented as an accessor property.Safari: Implemented as an accessor property.Safari on iOS: Implemented as an accessor property.Samsung Internet: Implemented as an accessor property.WebView Android: Implemented as an accessor property.WebView on iOS: Implemented as an accessor property.
javascript.builtins.Intl.PluralRules.PluralRules.options_parameter.options_trailingZeroDisplay_parameter Firefox8/1/20231169
javascript.builtins.Iterator.Iterator 📋Firefox10/1/2024742
javascript.builtins.Iterator.drop 📋Firefox10/1/2024742
javascript.builtins.Iterator.every 📋Firefox10/1/2024742
javascript.builtins.Iterator.filter 📋Firefox10/1/2024742
javascript.builtins.Iterator.find 📋Firefox10/1/2024742
javascript.builtins.Iterator.flatMap 📋Firefox10/1/2024742
javascript.builtins.Iterator.forEach 📋Firefox10/1/2024742
javascript.builtins.Iterator.from 📋Firefox10/1/2024742
javascript.builtins.Iterator.map 📋Firefox10/1/2024742
javascript.builtins.Iterator.reduce 📋Firefox10/1/2024742
javascript.builtins.Iterator.some 📋Firefox10/1/2024742
javascript.builtins.Iterator.take 📋Firefox10/1/2024742
javascript.builtins.Iterator.toArray 📋Firefox10/1/2024742
javascript.builtins.JSON.isRawJSON 📋Firefox2/4/2025616
javascript.builtins.JSON.parse.reviver_parameter_context_argument 📋Firefox2/4/2025616
javascript.builtins.JSON.rawJSON 📋Firefox2/4/2025616
javascript.builtins.Promise.incumbent_settings_object_tracking 📋Firefox11/15/20163619
javascript.builtins.RangeError.serializable_object 📋Firefox7/26/20221540
Firefox: Version 103 serializable properties: name, message, cause, fileName, lineNumber and columnNumber.Firefox: Version 104 also serializes stack in the main thread (window.postMessage() and structuredClone()).Firefox: Version 110 also serializes stack in workers (worker.postMessage() and structuredClone()).Firefox for Android: Version 103 serializable properties: name, message, cause, fileName, lineNumber and columnNumber.Firefox for Android: Version 104 also serializes stack in the main thread (window.postMessage() and structuredClone()).Firefox for Android: Version 110 also serializes stack in workers (worker.postMessage() and structuredClone()).
javascript.builtins.ReferenceError.serializable_object 📋Firefox7/26/20221540
Firefox: Version 103 serializable properties: name, message, cause, fileName, lineNumber and columnNumber.Firefox: Version 104 also serializes stack in the main thread (window.postMessage() and structuredClone()).Firefox: Version 110 also serializes stack in workers (worker.postMessage() and structuredClone()).Firefox for Android: Version 103 serializable properties: name, message, cause, fileName, lineNumber and columnNumber.Firefox for Android: Version 104 also serializes stack in the main thread (window.postMessage() and structuredClone()).Firefox for Android: Version 110 also serializes stack in workers (worker.postMessage() and structuredClone()).
javascript.builtins.SyntaxError.serializable_object 📋Firefox7/26/20221540
Firefox: Version 103 serializable properties: name, message, cause, fileName, lineNumber and columnNumber.Firefox: Version 104 also serializes stack in the main thread (window.postMessage() and structuredClone()).Firefox: Version 110 also serializes stack in workers (worker.postMessage() and structuredClone()).Firefox for Android: Version 103 serializable properties: name, message, cause, fileName, lineNumber and columnNumber.Firefox for Android: Version 104 also serializes stack in the main thread (window.postMessage() and structuredClone()).Firefox for Android: Version 110 also serializes stack in workers (worker.postMessage() and structuredClone()).
javascript.builtins.TypeError.serializable_object 📋Firefox7/26/20221540
Firefox: Version 103 serializable properties: name, message, cause, fileName, lineNumber and columnNumber.Firefox: Version 104 also serializes stack in the main thread (window.postMessage() and structuredClone()).Firefox: Version 110 also serializes stack in workers (worker.postMessage() and structuredClone()).Firefox for Android: Version 103 serializable properties: name, message, cause, fileName, lineNumber and columnNumber.Firefox for Android: Version 104 also serializes stack in the main thread (window.postMessage() and structuredClone()).Firefox for Android: Version 110 also serializes stack in workers (worker.postMessage() and structuredClone()).
javascript.builtins.URIError.serializable_object 📋Firefox7/26/20221540
Firefox: Version 103 serializable properties: name, message, cause, fileName, lineNumber and columnNumber.Firefox: Version 104 also serializes stack in the main thread (window.postMessage() and structuredClone()).Firefox: Version 110 also serializes stack in workers (worker.postMessage() and structuredClone()).Firefox for Android: Version 103 serializable properties: name, message, cause, fileName, lineNumber and columnNumber.Firefox for Android: Version 104 also serializes stack in the main thread (window.postMessage() and structuredClone()).Firefox for Android: Version 110 also serializes stack in workers (worker.postMessage() and structuredClone()).
javascript.builtins.WeakMap.symbol_as_keys Safari on iOS3/27/20231296
javascript.builtins.WeakRef.symbol_as_target Safari on iOS3/27/20231296
javascript.builtins.WeakSet.symbol_as_keys Safari on iOS3/27/20231296
javascript.grammar.trailing_commas.trailing_commas_in_dynamic_import Safari on iOS9/20/20211849
Node.js: The second parameter no longer throws a parser error, but the --experimental-json-modules flag is still needed to load JSON modules.
javascript.operators.import.options_parameter Safari on iOS9/20/20211849
Node.js: The second parameter no longer throws a parser error, but the --experimental-json-modules flag is still needed to load JSON modules.
javascript.regular_expressions.modifier 📋Firefox10/29/2024714
javascript.statements.import.import_attributes 📋Safari on iOS12/11/20231037
javascript.statements.import.import_attributes.type_json Safari on iOS12/11/20231037
javascript.statements.import.service_worker_support Safari on iOS9/20/20211849
javascript.statements.import.worklet_support Firefox6/6/20231225