{ "specification": [ { "name": "CSS Grid Layout Level 1", "status": { "status": "In Development", "enabled-by-default": true }, "url": "http://dev.w3.org/csswg/css-grid/", "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=60731", "keywords": ["css grid layout", "css grid", "grid"], "category": "css", "contact": { "name": "Sergio Villar Senin", "email": "svillar@igalia.com" } }, { "name": "CSS Image Values and Replaced Content Module Level 4", "url": "https://www.w3.org/TR/css4-images/", "keywords": ["css image values","css","image values"], "category": "css" }, { "name": "CSS Inline Layout Module Level 3", "status": { "status": "In Development", "enabled-by-default": true }, "url": "http://dev.w3.org/csswg/css-inline/", "keywords": ["css inline layout", "css inline", "inline"], "category": "css" }, { "name": "CSS Media Queries Level 4", "url": "http://dev.w3.org/csswg/mediaqueries-4/", "keywords": ["css media queries", "media queries"], "category": "css" }, { "name": "CSS Painting API Level 1", "status": { "status": "Under Consideration" }, "url": "https://drafts.css-houdini.org/css-paint-api/", "keywords": ["css", "houdini"], "category": "css" }, { "name": "CSS Positioned Layout Module Level 3", "url": "http://dev.w3.org/csswg/css-position/", "keywords": ["css positioning"], "category": "css" }, { "name": "CSS Properties and Values API Level 1", "status": { "status": "Under Consideration" }, "url": "https://drafts.css-houdini.org/css-properties-values-api/", "keywords": ["css", "houdini"], "category": "css" }, { "name": "CSS Scroll Snap Points Module Level 1", "status": { "status": "In Development", "enabled-by-default": true }, "url": "http://dev.w3.org/csswg/css-snappoints/", "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=134283", "keywords": ["css scroll snap points", "scroll snap", "snap points"], "category": "css", "contact": { "name": "Brent Fulgham", "email": "bfulgham@apple.com" } }, { "name": "CSS Selectors Level 4", "url": "http://dev.w3.org/csswg/selectors-4/", "keywords": ["css selectors", "selectors"], "category": "css", "contact": { "name": "Benjamin Poulain", "twitter": "@awfulben", "email": "benjamin@webkit.org" } }, { "name": "CSS Variables", "status": { "status": "Done", "enabled-by-default": true }, "url": "https://www.w3.org/TR/css-variables/", "keywords": ["css variable", "css custom property"], "category": "css", "description": "Allows developers to define reusable custom property values.", "contact": { "name": "Jon Davis", "twitter": "@jonathandavis", "email": "web-evangelist@apple.com" } }, { "name": "CSS Will Change", "status": { "status": "Done", "enabled-by-default": true }, "url": "https://drafts.csswg.org/css-will-change/", "keywords": ["css willchange", "css will-change"], "category": "css", "contact": { "name": "Simon Fraser", "twitter": "@smfr" } }, { "name": "Content Security Policy Level 2", "status": { "status": "Done", "enabled-by-default": true }, "url": "https://w3c.github.io/webappsec-csp/2/", "keywords": ["csp", "cross-site scripting", "xss", "injection", "header"], "category": "webapps", "description": "A mechanism that web applications can use to mitigate content injection vulnerabilities, such as cross-site scripting (XSS). Developers can declare a CSP policy to prohibit their web application from loading content or executing scripts that have not been whitelisted among other capabilities.", "contact": { "name": "Daniel Bates", "email": "dbates@webkit.org" } }, { "name": "Content Security Policy Level 3", "status": { "status": "Partial Support", "enabled-by-default": true }, "url": "https://w3c.github.io/webappsec-csp/", "keywords": ["csp", "cross-site scripting", "xss", "injection", "header"], "category": "webapps", "contact": { "name": "Daniel Bates", "email": "dbates@webkit.org" } }, { "name": "DOM", "url": "https://dom.spec.whatwg.org", "keywords": ["dom", "dom4"], "category": "html" }, { "name": "Fetch API", "status": { "status": "In Development" }, "url": "https://fetch.spec.whatwg.org", "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=151937", "keywords": ["fetch", "http", "cors", "request", "response", "header"], "category": "webapps", "description": "An underlying unified architecture for making resource requests.", "contact": { "name": "Jon Davis", "twitter": "@jonathandavis", "email": "web-evangelist@apple.com" } }, { "name": "Filter Effects Module Level 2", "url": "http://dev.w3.org/fxtf/filters-2/", "keywords": ["css filters", "filter effects", "filters"], "category": "css" }, { "name": "HTML5", "url": "https://html.spec.whatwg.org", "keywords": ["html", "html5", "html5.1"], "category": "html" }, { "name": "IndexedDB", "status": { "status": "Done" }, "url": "http://www.w3.org/TR/IndexedDB/", "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=149117", "keywords": ["indexeddb", "index db", "indexed db", "indexed database", "idb"], "description": "A standard interface to a browser database of records for simple values and objects. IndexedDB currently matches the W3C recommended spec (version 1). We are participating in development of version 2 of the spec and plan to implement new features as they stabilize.", "contact": { "name": "Brady Eidson", "twitter": "@bradeeoh", "email": "beidson@webkit.org" } }, { "name": "Resource Timing", "status": { "status": "In Development", "enabled-by-default": false }, "url": "http://www.w3.org/TR/resource-timing/", "webkit-url": "https://webkit.org/b/61138", "keywords": ["resourcetiming","resource timing","rsrc"], "description": "Provides detailed timing information to JavaScript for sub-resources loaded by the page.", "contact": { "name": "Jonathan Davis", "email": "web-evangelist@apple.com", "twitter": "@jonathandavis" } }, { "name": "Service Workers", "status": { "status": "Under Consideration" }, "url": "http://www.w3.org/TR/2015/WD-service-workers-20150625/", "keywords": ["service workers"], "category": "webapps", "description": "A method for browsers to run JavaScript in the background to handle network requests and manage cached responses. Service Workers offers a replacement for Application Cache.", "contact": { "name": "Jon Davis", "twitter": "@jonathandavis", "email": "web-evangelist@apple.com" } }, { "name": "Streams", "url": "https://streams.spec.whatwg.org", "keywords": ["streams api"], "category": "webapps" }, { "name": "WOFF File Format 2.0", "status": { "status": "Done" }, "url": "https://www.w3.org/TR/WOFF2/", "keywords": ["woff"], "category": "css", "description": "Improves compression to reduce bandwidth with content-aware preprocessing.", "contact": { "name": "Jonathan Davis", "email": "web-evangelist@apple.com", "twitter": "@jonathandavis" } }, { "name": "Web Animations", "status": { "status": "Under Consideration" }, "url": "https://www.w3.org/TR/web-animations-1/", "keywords": ["web animations"], "description": "An API to synchronize with the timing for presentation changes of a web page.", "contact": { "name": "Jonathan Davis", "email": "web-evangelist@apple.com", "twitter": "@jonathandavis" } }, { "name": "Web Components", "url": "http://www.w3.org/wiki/WebComponents/", "keywords": ["web components", "shadow dom", "html imports", "custom elements", "template element"], "category": "webapps", "description": "A collection of technologies to improve modularization of DOM subtrees.", "contact": { "name": "Ryosuke Niwa", "twitter": "@RyosukeNiwa", "email": "rniwa@webkit.org" } }, { "name": "WebCrypto", "status": { "status": "Partial Support", "enabled-by-default": true }, "url": "http://www.w3.org/TR/WebCryptoAPI/", "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=122679", "keywords": ["webcrypto"], "category": "webapps", "description": "A JavaScript API for web applications to perform cryptographic operations.", "contact": { "name": "Jon Davis", "twitter": "@jonathandavis", "email": "web-evangelist@apple.com" } }, { "name": "WebGL 1", "status": { "status": "Done", "enabled-by-default": true }, "url": "https://www.khronos.org/registry/webgl/specs/1.0/", "keywords": ["webgl"], "category": "html" }, { "name": "WebGL 2", "status": { "status": "In Development", "enabled-by-default": true }, "url": "https://www.khronos.org/registry/webgl/specs/latest/2.0/", "keywords": ["webgl"], "category": "html" }, { "name": "WebRTC", "status": { "status": "In Development" }, "url": "http://www.w3.org/TR/webrtc/", "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=124288", "keywords": ["webrtc"], "category": "webapps", "description": "An API to facilitate real-time communication for browser-to-browser applications.", "contact": { "name": "Jon Davis", "twitter": "@jonathandavis", "email": "web-evangelist@apple.com" } } ], "features": [ { "name": "CSS Selector :any-link", "status": { "status": "Done", "enabled-by-default": true }, "url": "http://dev.w3.org/csswg/selectors-4/#the-any-link-pseudo", "specification": "CSS Selectors Level 4", "description": "The pseudo class :any-link matches any element that would match :link or :visisted.", "comment": "A prefix version :-webkit-any-link has been available for a while but it was not 100% compliant to the specification.", "contact": { "name": "Benjamin Poulain", "twitter": "@awfulben", "email": "benjamin@webkit.org" } }, { "name": "CSS Selector :focus-within", "status": { "status": "Done", "enabled-by-default": true }, "url": "https://drafts.csswg.org/selectors-4/#the-focus-within-pseudo", "webkit-url": "https://trac.webkit.org/changeset/202358", "specification": "CSS Selectors Level 4", "description": "The selector :focus-within matches an element if the element or a descendant has the focus.", "contact": { "name": "Benjamin Poulain", "twitter": "@awfulben", "email": "benjamin@webkit.org" } }, { "name": "CSS Selector :lang() level 4", "status": { "status": "Done", "enabled-by-default": true }, "url": "http://dev.w3.org/csswg/selectors-4/#the-lang-pseudo", "specification": "CSS Selectors Level 4", "description": "The selector :lang() is extended in level 4 to support a list of language range, each range can contain a wildcard. For example: p:lang(\"*-be\", \"en\")." }, { "name": "CSS Selector :matches()", "status": { "status": "Done", "enabled-by-default": true }, "url": "http://dev.w3.org/csswg/selectors-4/#matches", "specification": "CSS Selectors Level 4", "description": "The selector :matches() takes a selector list as argument and matches an element if any of them matches (e.g. :matches(article > section, #target)). When used for styling, the specificity of :matches() is the higest specificity of all selectors in the selector list.", "comment": "The pseudo classes :visited and :link are not supported inside :matches().", "contact": { "name": "Benjamin Poulain", "twitter": "@awfulben", "email": "benjamin@webkit.org" } }, { "name": "CSS Selector :not() level 4", "status": { "status": "Done", "enabled-by-default": true }, "url": "http://dev.w3.org/csswg/selectors-4/#negation", "specification": "CSS Selectors Level 4", "description": "The selector :not() in level 4 supports full selector lists as argument. For example: :not(:any-link >> img, :any-link >> picture).", "comment": "The pseudo classes :visited and :link are not supported inside :not().", "contact": { "name": "Benjamin Poulain", "twitter": "@awfulben", "email": "benjamin@webkit.org" } }, { "name": "CSS Selector :nth-child(An+B of selector list) and :nth-last-child(An+B of selector list)", "status": { "status": "Done", "enabled-by-default": true }, "url": "http://dev.w3.org/csswg/selectors-4/#the-nth-child-pseudo", "specification": "CSS Selectors Level 4", "description": "The pseudo classes :nth-child() and :nth-last-child() now supports a selector list that filters what to count. For example: \":nth-child(even of .visible)\".", "comment": "The pseudo classes :visited and :link are not supported inside :nth-child() and :nth-last-child().", "contact": { "name": "Benjamin Poulain", "twitter": "@awfulben", "email": "benjamin@webkit.org" } }, { "name": "CSS Selector :placeholder-shown", "status": { "status": "Done", "enabled-by-default": true }, "url": "http://dev.w3.org/csswg/selectors-4/#placeholder", "specification": "CSS Selectors Level 4", "description": "The selector :placeholder-shown matches any input element that has a visible placeholder.", "comment": "Styling the placeholder can be done through the WebKit pseudo-element \"::placeholder\".", "contact": { "name": "Benjamin Poulain", "twitter": "@awfulben", "email": "benjamin@webkit.org" } }, { "name": "CSS Shapes Level 1", "status": { "status": "In Development", "enabled-by-default": true }, "url": "http://www.w3.org/TR/css-shapes-1/", "description": "CSS Shapes describe geometric shapes for use in CSS. For Level 1, CSS Shapes can be applied to floats.", "comment": "The implementation is feature complete and shipping, but is -webkit prefixed." }, { "name": "Case-insensitive attribute selectors", "status": { "status": "Done", "enabled-by-default": true }, "url": "http://dev.w3.org/csswg/selectors-4/#attribute-case", "specification": "CSS Selectors Level 4", "description": "Any attribute selector that test a value can take a flag \"i\" to use case insensitive checks. For example: input[type=number i] test the value \"number\" case-insensitively.", "contact": { "name": "Benjamin Poulain", "twitter": "@awfulben", "email": "benjamin@webkit.org" } }, { "name": "Conic Gradients", "status": { "status": "Under Consideration" }, "url": "https://www.w3.org/TR/css4-images/#conic-gradients", "specification": "CSS Image Values and Replaced Content Module Level 4", "description": "Defines gradients wrapped around a central point.", "contact": { "name": "Jonathan Davis", "email": "web-evangelist@apple.com", "twitter": "@jonathandavis" } }, { "name": "Custom Elements", "status": { "status": "In Development" }, "url": "http://w3c.github.io/webcomponents/spec/custom/", "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=150225", "specification": "Web Components", "description": "Define a custom HTML tag and associate it with an ES6 class.", "contact": { "name": "Ryosuke Niwa", "twitter": "@RyosukeNiwa", "email": "rniwa@webkit.org" } }, { "name": "Download Attribute", "status": { "status": "In Development" }, "url": "https://html.spec.whatwg.org/multipage/semantics.html#downloading-resources", "webkit-url": "https://webkit.org/b/102914", "specification": "HTML5", "description": "An attribute to an anchor or area element to indicate that a resource is intended to be downloaded for use later rather than immediately.", "contact": { "name": "Brent Fulgham", "email": "bfulgham@apple.com", "twitter": "@bfulgham" } }, { "name": "Element.closest()", "status": { "status": "Done", "enabled-by-default": true }, "url": "https://dom.spec.whatwg.org/#dom-element-closest", "documentation-url": "https://developer.mozilla.org/en-US/docs/Web/API/Element/closest", "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=137418", "specification": "DOM", "description": "Find the closest ancestor matching the selector passed as argument. The element itself is returned if it matches the selector.", "contact": { "name": "Benjamin Poulain", "twitter": "@awfulben", "email": "benjamin@webkit.org" } }, { "name": "Filter Effects backdrop-filter propery", "status": { "status": "Done", "enabled-by-default": true }, "url": "http://dev.w3.org/fxtf/filters-2/#propdef-backdrop-filter", "specification": "Filter Effects Module Level 2", "description": "This property specifies styling for filters applied to the backdrop of an element." }, { "name": "Force Click Events", "status": { "status": "Prototyping", "enabled-by-default": true }, "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=142836", "description": "Provide the events necessary to handle force click events in the page, overriding the default behavior." }, { "name": "HTML imports", "status": { "status": "Not Considering" }, "url": "http://w3c.github.io/webcomponents/spec/imports/", "specification": "Web Components", "description": "Includes resusable HTML documents in other HTML documents.", "comment": "There are concerns about the disconnect between this specification and ES6 Modules. WebKit has no intent to support the current specification.", "contact": { "name": "Jon Davis", "twitter": "@jonathandavis", "email": "web-evangelist@apple.com" } }, { "name": "ImageBitmap", "status": { "status": "Under Consideration" }, "url": "https://html.spec.whatwg.org/multipage/webappapis.html#imagebitmap", "webkit-url": "https://webkit.org/b/", "specification": "HTML5", "description": "An interface for drawing bitmap images to a without undue latency.", "contact": { "name": "Jonathan Davis", "email": "web-evangelist@apple.com", "twitter": "@jonathandavis" } }, { "name": "Initial Letter", "status": { "status": "Done", "enabled-by-default": true }, "url": "http://dev.w3.org/csswg/css-inline/#propdef-initial-letter", "specification": "CSS Inline Layout Module Level 3", "description": "This property specifies styling for dropped, raised, and sunken initial letters." }, { "name": "Interaction Media Features (pointer, hover, any-pointer, any-hover)", "status": { "status": "Done", "enabled-by-default": true }, "url": "http://dev.w3.org/csswg/mediaqueries-4/#mf-interaction", "specification": "CSS Media Queries Level 4", "description": "The \"pointer\" media defines how percise the pointing device is. The \"hover\" media defines the ability of the poiting device to hover elements." }, { "name": "MicroData", "status": { "status": "Removed" }, "url": "https://html.spec.whatwg.org/multipage/microdata.html", "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=119480", "specification": "HTML5", "comment": "WebKit used to support MicroData. The feature never gained any traction and was eventually removed to clean up the codebase." }, { "name": "Navigator.hardwareConcurrency", "status": { "status": "Done", "enabled-by-default": true }, "url": "https://wiki.whatwg.org/wiki/Navigator_HW_Concurrency", "webkit-url": "http://trac.webkit.org/changeset/169017", "description": "Navigator.hardwareConcurrency provides the total number of logical processors available to the user agent." }, { "name": "Picture element", "status": { "status": "Done", "enabled-by-default": false }, "url": "https://html.spec.whatwg.org/multipage/embedded-content.html#the-picture-element", "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=116963", "specification": "HTML5", "description": "Enable handling the art-direction responsive images use-case by defining multiple image sources in markup", "contact": { "name": "Yoav Weiss", "twitter": "@yoavweiss", "email": "yoav@yoav.ws" } }, { "name": "Position: sticky", "status": { "status": "Done", "enabled-by-default": true }, "url": "http://dev.w3.org/csswg/css-position/#sticky-pos", "specification": "CSS Positioned Layout Module Level 3", "description": "Sticky positioning provides a way to position element out of the normal flow when scrolling. Unlike solutions based on JavaScript, the change of position is synchronized with scrolling.", "comment": "The feature is prefixed with -webkit-. There are some remaining issues to resolve in the specification." }, { "name": "Readable Streams", "status": { "status": "In Development", "enabled-by-default": true }, "url": "https://streams.spec.whatwg.org/#rs", "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=138967", "specification": "Streams", "comment": "The ReadableStream and ReadableStreamReader interfaces are available but not functional." }, { "name": "Shadow DOM", "status": { "status": "In Development" }, "url": "http://w3c.github.io/webcomponents/spec/shadow/", "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=148695", "specification": "Web Components", "description": "Functional encapsulation of HTML and CSS for Web Components.", "contact": { "name": "Ryosuke Niwa", "twitter": "@RyosukeNiwa", "email": "rniwa@webkit.org" } }, { "name": "Shared Web Workers", "status": { "status": "Removed" }, "url": "https://html.spec.whatwg.org/multipage/workers.html#shared-workers-introduction", "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=140344", "specification": "HTML5", "comment": "The implementation of Shared Web Workers was imposing undesirable constraints on the engine. The feature never gained any adoption and was eventually removed from the engine." }, { "name": "Srcset w descriptor and related sizes attribute", "status": { "status": "Done", "enabled-by-default": true }, "url": "https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element", "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=133620", "specification": "HTML5", "description": "Enable handling the variable width responsive images use-case by defining multiple image resources in markup", "contact": { "name": "Yoav Weiss", "twitter": "@yoavweiss", "email": "yoav@yoav.ws" } }, { "name": "Srcset x descriptor", "status": { "status": "Done", "enabled-by-default": true }, "url": "https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element", "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=110252", "specification": "HTML5", "description": "Enable handling the fixed width responsive images use-case by defining multiple image resources in markup", "contact": { "name": "Yoav Weiss", "twitter": "@yoavweiss", "email": "yoav@yoav.ws" } }, { "name": "Subresource Integrity", "status": { "status": "Under Consideration" }, "url": "https://w3c.github.io/webappsec-subresource-integrity/", "description": "Extends script and link elements with an integrity attribute that contains a cryptographic hash of the representation of the resource the author expects to load.", "contact": { "name": "Jonathan Davis", "email": "web-evangelist@apple.com", "twitter": "@jonathandavis" } }, { "name": "Template Element", "status": { "status": "Done", "enabled-by-default": true }, "url": "http://www.w3.org/TR/html5/scripting-1.html#the-template-element", "webkit-url": "https://bugs.webkit.org/show_bug.cgi?id=124637", "documentation-url": "https://developer.mozilla.org/en-US/docs/Web/HTML/Element/template", "specification": "Web Components", "description": "Declares HTML fragments that can be cloned and inserted into the document by a script." } ] }