Edit on Github

This document lists the major changes to the entirety of the project, including polyfill repos.


Notice: This release contains important changes to the structure of the project.


See the full list of changes.

Elements and animations

  • New g-overlay element with web animations (commit) and g-tabspanel (commit)

  • Added g-fadein, g-fadeout animations (commit) and g-shake, a configurable shake animation (commit)

Features & bug fixes

  • Element registration now puts a .elementElement property on the prototpe to reference the <element> (commit)

  • pseudo-scoping now works on Firefox and IE where cssRule.selectorText is readonly (commit)

  • Attributes de-serialization is more predicable. For example, numbers are treated as numbers, srings as strings, dates as Date, etc. (commit, commit, commit)

  • MDV v3 is now turned on by default.

    • Added .unbind() and additional machinery for MDV bindings (commit)

    • MDV bindings are more comprehensive, with Node, Text, and <input> elements (commit)

  • Toolkit.getBinding(element, name) no longer generates an exception if element is null [commit)


Custom Elements

See the full list of changes.

  • Implement life cycle callbacks (inserted|removed|attributeChanged) using MutationObsevers. Note: you can no longer add lifecycle callbacks to a lifecycle object. They must be on the prototpye. (commit)

  • document.register() only triggers document-wide upgrade when called after initial load is complete (commit)

  • document.register() tests were updated to align with spec changes (commit)

  • Added support for native document.webkitRegister() (if available) (commit)

  • attributeChanged callback only fires when attribute has actually been modified (commit)

  • <style> elements are now (correctly) ignored if they’re in the main document (commit)

HTML Imports

See the full list of changes

  • HTMLImports.getDocumentUrl() added (commit)

  • HTMLImports.readyTime added for primative timing data [commit)

  • Caching is configurable with .cache [commit)


See the full list of changes

  • Now using ChangeSummary v3 (commit)

  • Removed .effectiveContent API (commit)

  • Removed HTMLTemplateElement.bindTree in favor of template.model (commit)

  • Exposed HTMLTemplateElement.parseAndBind_ (commit)

  • Implemented .getInstanceModel for returning the model associated with a template (commit)

Pointer Events / Gestures

See the full list of changes here and here.

  • touch-action: user is an alias for touch-action: none (commit)

  • Fix pointercapture throws on IE10 (commit)

  • Expose .clientXY, .pageXY, .screenXY of track gestures. (commit)

Shadow DOM

See the full list of changes

  • Implemented .querySelector|All() and .getElementById() (commit, commit)

  • Implemented .elementFromPoint for document and ShadowRoot (commit)

  • Wrapped MutationRecord interface now that Blink has it. (commit)

  • document.write() is now overriden and wrapped in the polyfill (commit)



  • If you’re writing a Toolkit component, there’s no longer need to include platform.js alongside toolkit.js. toolkit.js now loads platform.js under the hood.



  • The constructor attribute is now supported (commit)

HTML Imports

  • Fixed issue with imports loaded at the same url would not have the content associated with them (commit)

  • Polyfill now correctly checks for HTMLTemplateElement before using it (commit)

  • If HTMLTemplateElement.bootstrap is available, then bootstrap templates in imported documents. (commit)


Notice: This release contains important changes to the structure of the project.

  • The toolkit repository now brings in the platform repository as a submodule.
  • Until now, the dev branch has been the development branch and master has been the stable release. Now, the stable branch is the default “stable” codebase. master branches are the in-development tip of tree. The stable branch is also the default view on Github.


  • g-component.html no longer exists as the Tookit kernel. It has been replaced with loading in toolkit.js instead.
  • Added debug runtime flags to conditionally load debug version of platform.js.



  • Changed “toolkit/src” folder name to “toolkit/components”. Update your source paths accordingly.

  • Introduced selectedClass property to g-selector component. (commit)

  • g-selector now sends an activate event which is fired whenever an item is activated (can occur when the currently selected item is activated). The select event is fired only when the selected item changes. (commit)

  • g-menu-button: the menu now closes in response to the selector’s activate event (commit)

  • g-selection: selecting the same item is now a no-op (commit)

  • Added support for 2-way bindings on input elements (commit)

  • g-ajax: Response is bindable; params can be set as json or object.

  • g-panels: Added autoselect property that controls if keys/swipes can select panels; added canselect event to control if a panel can be selected.


  • Landed version 2 of the Shadow DOM shim. See the pull request for details.

  • ShadowRoot now installs shadow reference on node.webkitShadowRoot, as per spec. Fixes #68. (commit)

  • Loader: allow stylesheets and scripts in components defined in document. (commit)


  • Shadow DOM inspector Added a tool for inspecting Shadow DOM trees. You can invoke the tool via window.sinspect(node), where node is the element to start inspecting from. If not specified then it will use document.body.

To use the tool, open the JavaScript console and type sinspect().

Note: The tool opens in a pop-up window so you may have to unblock it.