A feature history of the modern Web Platform

When and where selected new Web-platform features were first specified, post-HTML4 and post-CSS2.1.

2003-09-05 XHTML Module: Extensions to Form Controls

The post-HTML4/CSS2.1 Web Platform spec history begins with these additions to the HTML language:

  • datetime, date, expdate, time, number, integer, and email values for the type attribute of the input element
  • <input minimum> and <input maximum> (soon after renamed to just min and max)
  • <select editable> (later changed to <input list> plus datalist element)
  • <textarea wrap>
  • pattern attribute for text-input controls
  • required attribute for form controls
  • form attribute for form controls
  • autocomplete attribute for form controls
  • inputmode attribute for text-input controls (later dropped and then re-introduced)
  • help attribute for form controls (borrowed from XForms, later dropped)
  • client-side HTML form validation
2003-12-03 Proposed XHTML Module: XForms Basic
  • <input type=uri> (later renamed to url)
  • output element

    XForms 1.0 (2001-06-08 sixth WD) was first to have an output element

2004-02-05 Web Forms 2.0
  • <input type=week>
  • <input type=tel> (later dropped but then later re-added)
  • <input type=location> (later dropped)
  • <input precision> (later renamed to step)
  • <form replace> (later dropped)
2004-03-09 Web Forms 2.0
  • <input type=range>
2004-04-07 Web Applications Markup Language 1.0
  • Document-level focus API
  • Element-level focus API
2004-06-27 Web Forms 2.0
  • <input type=local-datetime> (later renamed to datetime-local)
  • <input type=month>
  • autofocus attribute for form controls
2004-09-23 Web Applications 1.0
  • <!DOCTYPE html PUBLIC "-//WHATWG//NONSGML HTML5//EN"> (later changed)
  • command attribute (later dropped but then later re-added)
  • command element (later dropped)
  • commandset element (later dropped)
  • button element
  • menu element
  • menulabel element (later dropped)
  • menubar element (later dropped)
  • section element

    XHTML 2.0 (2004-07-22 sixth public working draft) had a section element

  • tabbox element (later dropped)
  • switch element (later dropped)
  • canvas element
  • event-source element (later renamed to eventsource and then dropped)
  • server-sent events
  • getElementsByClass method (later renamed to getElementsByClassName)
  • Window interface (first specified)
  • XMLHttpRequest interface (first specified)
2004-12-08
  • navigation element (later renamed to nav)
  • header element
  • footer element
  • article element
  • sidebar element (later renamed to aside)
  • calendar element (later dropped)
  • card element (later dropped)
  • inline data idea (placeholder for “where elements such as <date> or <time> might be defined”)
  • gauge element (later renamed to meter)
  • progress meters (placeholder)
  • data grids/trees (placeholder)
  • context-menu attribute (later renamed to contextmenu)
  • contentEditable attribute (first specified; later renamed to contenteditable)
  • ElementTraversal interface
  • Audio interface (later changed to HTMLAudioElement)
  • Connection interface (later changed to WebSocket)
2004-12-10 Web Forms 2.0
  • datalist element
  • <input list>
2005-02
  • alternate style sheets (later moved to CSSOM)
2005-03
  • cross-document messaging (postMessageUp and postMessageDown methods, shortly after changed to postMessage)
2005-04
  • m element (later renamed to mark)
  • datagrid element (later dropped)
  • outline algorithm
  • parsing algorithm (placeholder)
  • drag-and-drop (first specified; placeholder)
2005-06
  • undo history (placeholder)
  • History interface (placeholder)
  • Location interface (placeholder)
2005-07
  • <!DOCTYPE html>
2005-08
  • browsing context term
  • client-side persistent storage (placeholder)
2005-09
  • Storage interface, sessionStorage, globalStorage (later renamed to localStorage)
2005-11
  • execCommand method (first specified)
2005-12
  • getSelection method (first specified)
2006-01
  • UndoManager interface
2006-02
  • parsing algorithm
2006-03
  • meter element
  • progress element
2006-04
  • Navigating across documents section (placeholder)
  • Custom protocol and content handlers section
  • registerProtocolHandler() method
  • registerContentHandler() method
  • isPointInPath() method
2006-05
  • <script defer>
  • <script async>
2006-06 & 2006-07
  • details element
2006-08 & 2006-09
  • document.write()
  • innerHTML
  • drag-and-drop (for real)
2006-10
  • t element (later renamed to time)
  • HTMLCollection, HTMLFormControlsCollection, HTMLOptionsCollection
  • document.getSelection
  • designMode (placeholder)
2006-11
  • figure element
2006-12 through 2007-03
  • <style scoped>
  • video element
  • audio element
2007-04
  • source element
  • placeholder attribute
2007-05
  • DOMContentLoaded event
  • WebSQL (later dropped)
2007-06 through 2007-10
  • offline Web applications
  • scrollIntoView()
2007-11
  • ping attribute
2007-12 through 2008-04
  • SVG and MathML support in text/html (SVG soon after dropped and later reintroduced)
  • data-* attributes and associated dataset API
  • <ol reversed>
  • createTBody() for the table element
  • showModalDialog()
  • document.domain
  • <source pixelratio> (later dropped)
  • bufferedBytes, totalBytes and bufferingThrottled IDL attributes for the video element (later dropped)
2008-05
  • ruby, rt, and rp elements
  • <iframe seamless>
  • <iframe sandbox>
  • <link sizes>
  • Web Notifications
2008-06
  • URL parsing
2008-07
  • Web Sockets
2008-07
  • Web Workers
2008-08
  • outerHTML
  • insertAdjacentHTML
2008-09 through 2008-10
  • autofocus attribute
2008-09 through 2009-02
  • <input type=color>
  • <input type=search>
  • <input multiple> (for file and email, later also for range)
  • novalidate attribute for input, button and form elements (later renamed to formnovalidate for input and button)
  • indeterminate IDL attribute for the input element (for checkboxes)
  • MessageChannel
  • bb element (later dropped)
  • a element now allowed nested flow content
  • window.frameElement
  • event loop and task queue
  • hidden attribute (earlier irrelevant)
  • <audio loop> and <video loop>
  • canPlayType() on audio and video elements
  • location.resolveURL() on location (later dropped, later replaced by URL() constructor)
  • unload and beforeunload events
2009-02 through 2009-04
  • spellcheck global attribute
  • autobuffer attribute on audio and video elements (later changed to preload)
  • locationbar, menubar, personalbar, scrollbars, statusbar and toolbar IDL attributes on window
  • rendering section
  • storage mutex concept and navigator.getStorageUpdates() (later made optional due to refusal to implement)
  • <textarea placeholder>
2009-04
  • keygen element
  • hgroup element
2009-04 through 2009-08
  • startTime on audio and video elements (later initialTime, later dropped; separately startOffsetTime was added and later renamed to startDate and then getStartDate())
  • <section cite> and <article cite> (later dropped)
  • The last of the parsing quirks
  • textLength IDL attribute on textarea element
  • location.reload()
  • files IDL attribute on input element and the drag-and-drop DataTransfer object
  • WAI-ARIA integrated in HTML
2009-05
  • HTML Microdata
2009-08 through 2010-03
  • document.head
  • createHTMLDocument()
  • text/html-sandboxed MIME type (later dropped)
2010-01
  • drawFocusRing() (later changed to drawSystemFocusRing() and drawCustomFocusRing())
  • <iframe srcdoc>
  • figcaption element (earlier legend)
  • summary element (earlier legend)
2010-02 through 2011-01
  • wbr element
  • device element and AbstractPeer and PeerToPeerServer interfaces (later changed to WebRTC)
  • WebSRT (later renamed to WebVTT), the track element and associated API
  • <select required>
  • <video audio=muted> (later changed to muted attribute)
  • dropzone attribute
  • bdi element
  • dir="auto"
  • <input dirname>
2011-01 through 2011-04
  • history.state
  • atob() and btoa()
2011-04 through 2011-05
  • toBlob() method on canvas element
  • selectionDirection IDL attribute on input and textarea elements
  • MediaController API and the mediagroup attribute
2011-05 through 2012-03
  • translate global attribute
  • beforescriptexecute and afterscriptexecute events for script elements
  • window.onerror fourth argument for column position
  • CSS @global at-rule (later dropped)
  • data element
  • isProtocolHandlerRegistered(), isContentHandlerRegistered(), unregisterProtocolHandler() and unregisterContentHandler()
  • Transferring objects instead of cloning for window.postMessage
  • typemustmatch attribute on object element
  • crossorigin attribute on img, video and audio elements
  • external IDL attribute on window
  • ellipse() method on canvas 2d context
  • Path object for canvas 2d context
  • http+aes: and https+aes: URL schemes (later dropped)
  • download attribute on the a element
  • window.find() placeholder section (later dropped)
2012-03 through 2012-09
  • inBandMetadataTrackDispatchType IDL attribute on TextTrack
  • setRangeText() method on input and textarea elements
  • <img srcset>
  • dialog element
  • inert global attribute (later dropped)
  • dialog value for the method attribute on the form element
  • resetTransform() method, currentTransform IDL attribute, several IDL attributes for font metrics, resetClip() method, imageSmoothingEnabled IDL attribute, addHitRegion() method, removeHitRegion() method and support for dashed lines for the canvas 2d context
2012-09 through 2013-05
  • isPointInStroke() for canvas 2d context
  • dragexit event for drag-and-drop
  • invalid event on the form element
  • main element
  • fillRule IDL attribute for canvas 2d context
  • navigator.language
  • menuitem element
  • sortable tables
  • document.currentScript
  • <link crossorigin>
  • <script crossorigin>
  • canvas indirect and proxied rendering contexts
  • direction IDL attribute for canvas 2d context
  • screen.canvasResolution
  • PortCollection
  • supportsContext() method for the canvas element
  • forceSpellCheck() method on HTML elements
  • fastSeek() method on audio and video elements
2013-05 through 2014-08
  • <textarea minlength>
  • reportValidity() on form elements
  • BroadcastChannel
  • template element
  • requestAutocomplete()
  • picture element, <img sizes>