The Ember.js team has this week released version 1.6 of the JavaScript framework, following delays caused by adding an AMD loader.
In the official announcement Ember core team member Robert Jackson described how 1.6+ builds are now transpiled by the es6-module-transpiler into AMD. Jackson says the adding of a small AMD loader to handle loading the transpiled modules had a performance impact on the boot speed of older mobile clients. He said:
This regression was brought to our attention just before 1.6.0 was intended to ship (late May), and we decided to hold the release until a fix could be applied.
In retrospect this was absolutely the wrong decision. The fix has taken much longer than originally anticipated and in the meantime folks are stuck with 1.5.1. Many of our users either are not affected or do not care about this regression, and they are forced to use beta/canary channels for certain bug fixes that have already been made.
User Xtian commented on the announcement: "It's not clear to me from the first couple paragraphs: Has the boot performance regression been resolved or is it still outstanding?"
Jackson responded "It has not been fixed, it will be fixed as soon as possible and backported to the 1.7 beta branch."
Stefan Penner -- member of the core Ember.js team -- elaborated:
The fix is Brian Donovan's new bundle format for the square/es6-module-transpiler. It removes the AMD loader entirely, and it also yields smaller overall builds. The block here has just been improving and removing invalid cycles within ember-core.
Additionally, the boot issue likely doesn't matter on desktop browsers, but we saw lots of time burnt on Android browsers.
However, this delay has been largely unremarked upon by the Ember community, with users excited about the new features in version 1.6 and the promise of 1.7.
Among the notable changes to the latest release are an updated Ember.computed.empty, an improved cache lookup throughput, test friendly promises, and numerous bug fixes. Jackson notes that the update to Ember.computed.empty means that it now automatically respects arrays without forcing users to use array.[] as the dependent key.
Explaining the test friendly promises, Jackson said:
With 1.5.1 you were forced to wrap any Promise resolve and/or reject calls in an Ember.run loop while in testing, but the same code did not need to be wrapped in a run loop for normal operation. In 1.6 you do not need to do this promise run loop wrapping simply for the purposes of testing.
With the 1.6 release announcement came the beta release of version 1.7, including query params support, enabled by default in 1.7. The announcement was greeted warmly by users in the community. Adrian Meredith, software engineer for NetNames, commented:
I just updated my app with the latest query params, it works! (after the necessary updates). It's looking much better than when I tried canary about a month ago. Good work guys.
Other improvements to Ember 1.7 include:
- ember-routing-consistent-resources
- uuid is now consistently used across the project
- Ember.uuid is now an internal function instead of a property on Ember itself
Ember.js is released via an MIT licence. InfoQ readers can contribute to Ember.js via its GitHub project. Version 1.7 is expected to be released on schedule.