2017-01-23

Today, the Ember project is releasing Ember.js, Ember Data and Ember CLI
version 2.11.0.

This also kicks off the 2.12 beta cycle for all sub-projects. We encourage our
community (especially addon authors) to help test these beta builds and report
any bugs before they are published as a final release in six weeks' time. The
ember-try addon is a great way to
continuously test your projects against the latest Ember releases.

You can read more about our general release process here:

Release Dashboard

The Ember Release Cycle

The Ember Project

Ember LTS Releases

Ember.js

Ember.js is the core framework for building ambitious web applications.

Changes in Ember.js 2.11

Ember.js 2.11 continues to build on the foundation of Glimmer 2, incorporating
many bug fixes to improve compatibility and stability since 2.10.

Among other improvements and thanks to the work of Gavin Joyce,
this release provides a much improved
"backtracking re-render" assertion message. The new message provides actionable
information that can help track down the source of a backtracking re-render.
If you had previously encountered this assertion while
upgrading to 2.10, we recommend giving 2.11 a try.

Additionally, the last-minute issue regarding frozen helper arguments
mentioned in the 2.10 blog post has been
fixed in this release.

Starting with 2.11, Ember.js releases will be available on npm via the
ember-source package. Please
refer the Ember CLI section below for more details.

Finally, following the mitigation section in the recent security incident
report, this is
also the first Ember.js release to be published by our automated build system.

Other Notable Changes

Concatenated properties (such as classNames and classNameBindings) are
now frozen in debug builds
to prevent unintended and unsupported mutations.

The legacy render helper (i.e. {{render 'foo'}}) has been deprecated
(issue, deprecation
guide).

The private Component#renderToElement API has also been deprecated
(issue, deprecation
guide).

For more details on the changes in Ember.js 2.11, please review the
Ember.js 2.11.0 release page.

Upcoming Changes in Ember.js 2.12

Ember.js 2.12 will serve as the basis of the next LTS release
and includes additional stability, compatibility and performance improvements.

In addition to those improvements, it also implemented several changes arising
from the RFC process:

RFC #150
adds factoryFor as a public API to replace the widely used _lookupFactory
private API, which is now deprecated. In addition to providing a public API
for a sorely needed feature, it also unlocks the opportunity to eliminate one
of the major performance hotspot in the Ember.js object-model. This will
happen in a future release once the community has had the chance to migrate to
the new API. See pull request #14360
for additional details.

RFC #178
deprecates the Ember.K utility function. See pull request #14751
for additional details.

RFC #191
deprecates the private arguments passed to the component lifecycle hooks
(didInitAttrs, didReceiveAttrs and didUpdateAttrs). Please note that
this only deprecates the usage of the arguments passed to this hook, not the
hooks themselves. See pull request #14711
for additional details.

For more details on the upcoming changes in Ember.js 2.12, please review the
Ember.js 2.12.0-beta.1 release page.

Ember Data

Ember Data is the official data persistence library for Ember.js applications.

Changes in Ember Data 2.11

Ember Data 2.11 represents the work of 15 direct contributors
and over 70 commits.

Ember Data 2.11 continues to expand on the performance improvements
started in Ember Data
2.10. Chris Thoburn and
Stefan Penner contributed several
pull requests that allow Ember Data to defer work until it is needed by an
application or avoid the work all together if it is never
needed. Overall the process of pushing records into the store in Ember
Data 2.11 is about twice as fast as it was in 2.10.

The Ember Data 2.11 release concludes an effort to audit the existing
API docs for Ember Data. The Ember Data community has checked all of
the API docs and ensured they are clear and contain code examples of
how to use the API. You can see the improved documentation
here.

Deprecations in Ember Data 2.11

Ember Data now issues deprecation warnings for
store#serialize(). Instead, it is recommended that you use
record.serialize() in place of
store.serialize(record).

store#lookupAdapter() and store#lookupSerializer() have also been
deprecated starting in Ember 2.11. These methods were never publicly
documented. In their place we recommend you use store#adapterFor()
and store#serializerFor() respectively.

store#recordIsLoaded() is deprecated in favor of
store#hasRecordForId(), as the logic in these two methods has been
identical since
March 2015.

All of the deprecated methods mentioned above will be supported until
Ember Data 3.0. Until then they will log a deprecation warning to
encourage use of the recommended replacement APIs.

Issues with Ember Data Model Fragments

Due to internal refactoring, Ember Data 2.11 has
compatibility issues with older versions of the popular
Ember Data Model Fragments
addon. If you are using this addon it
is recommended that you upgrade to
Ember Data Model Fragments 2.11
at the same time as you upgrade Ember Data.

For more details on the changes in Ember Data 2.11, please review the
Ember Data 2.11.0 release page.

Upcoming changes in Ember Data 2.12

Ember Data 2.12 contains further performance improvements, and is
looking to be the fastest ever release of Ember Data.

A new serializeId() method has been added to JSONSerializer,
RESTSerializer and JSONAPISerializer. This is useful if you are
working with a backend that requires your ids to be something other
than a string.

app/serializers/application.js

Deprecations in Ember Data 2.12

There are no planned deprecations for Ember Data 2.12.

For more details on the upcoming changes in Ember Data 2.11, please review the
Ember Data 2.12.0-beta.1 release page.

Ember CLI

Ember CLI is the command line interface for managing and packaging Ember.js
applications.

Upgrading Ember CLI

You may upgrade Ember CLI separately from Ember.js and Ember Data! To upgrade
your projects using yarn run:

To upgrade your projects using npm run:

After running the
upgrade command run ember init inside of the project directory to apply the
blueprint changes. You can preview those changes for applications
and addons.

Changes in Ember CLI 2.11

Ember CLI 2.11 no longer supports Node.js 0.12 per the
Ember Node.js LTS Support policy.
This also applies to a litany of sub-projects in the Ember community. Please
upgrade your Node.js version. We recommend adopting the most-recently-released
Node.js LTS.

Following the mitigation section in the recent security incident
report we have
begun the process of migrating repositories in the ember-cli GitHub organization
to be published automatically via their automated build systems. Ember CLI
itself has not yet been migrated and as such continues to follow our
manual release process.

Ember No Longer Supplied Via bower

We've been preparing for this moment for over a year now, but using bower is
now completely optional inside of Ember CLI! Beginning with 2.11 we now provide
Ember via the ember-source npm package.
This means that when you run ember new after installing 2.11 you can expect
to have an empty (but present) bower.json file. Further work in 2.12 has been
done to remove bower itself as a dependency. Addon developers please ensure
that you're able to successfully test your addons with ember-try.

Updated ember-welcome-page

The Learning Team has spent an incredible amount of time and energy improving
the new user experience. As part of that we've updated the ember-welcome-page
addon to the newest version which they have released. We're calling this out
because it adds application.hbs back into the default blueprint and includes
assets in a non-production build. Make sure that you always ship a production
build when you publish your application; otherwise you will also include the
assets from ember-welcome-page into your application.

Other Notable Changes

We have a litany of other smaller improvements in this release:

We watch the vendor folder by default,
making rebuilds work for changes in that directory. This may have performance
consequences, please monitor the resource consumption in your applications to
ensure that we have not regressed.

Stefan Penner and David Hamilton made it so we do a better job at
cleanup upon exit of Ember CLI.
This work prevents the pollution of the tmp folder inside of your applications.

Robert Jackson dramatically reduced the number of merge steps
inside of the build, speeding up the build process.

For more details on the changes in Ember CLI 2.11 and detailed upgrade
instructions, please review the Ember CLI 2.11.0 release page.

Upcoming Changes in Ember CLI 2.12

We adopted the standard six week release cycle for Ember CLI shortly following
EmberConf 2016. This constant cadence allows us to get the improvements we've
collectively been working on into our applications. Ember CLI 2.12 will be the
most work we've ever had in a single release cycle and we're ecstatic to get all
300+ commits (not including merges or upstream changes!) into your hands.

Babel

We've made changes in the way you configure Babel in your applications and also
now require that addons which need Babel transpilation supply their own
ember-cli-babel dependency. The root application is no longer wholly
responsible for the transpilation of all dependent addons. There is a
deprecation message which should guide you through the steps to make the
necessary changes in your application. This also means that addons themselves
are responsible for transpiling their code into AMD modules.

We no longer overload the babel key inside of ember-cli-build.js to
conditionally use certain arguments for babel and others for
ember-cli-babel. This is categorically better, and we've provided deprecation
messages to help guide you to the new correct usage pattern.

Rather than trying to walk through how to make these changes, please test this
out during the beta period and let us know if the messages are able to guide you
to the newly correct setup.

ESLint All The Things!

Tobias Bieniek has been on a mission; we've now completed the move to ESLint
as the newly recommended linting tool for Ember applications. After upgrading to
Ember CLI 2.12 and running ember init you will be presented with options to
remove the existing ember-cli-jshint and rules and adopt ember-cli-eslint.
The process should be relatively straightforward, though you'll have to migrate
your styling rules from JSHint to ESLint. Please test it out and let us know how
it works in your applications during the beta period.

Nested Addon preprocessTree and postprocessTree Invocation

In an oversight, we did not invoke preprocessTree and postprocessTree
against addon trees which were nested inside of other addons preventing them
from interacting with their parent addons in the ideal manner. This has been
fixed but it is possible that this bug-fix will change the build outcome of your
applications. We manually reviewed all public addons and didn't identify any
likely issues, please report back with any problems you discover in your private
addons.

Performance

One of the major themes for this release cycle has been a focus on the build
performance of Ember CLI. We've added instrumentation to understand where we're
spending time and have begun the consistent incremental work required to bring
build times down without changing the build output. This has been a team effort
with contributions from David Hamilton, Robert Jackson, Stefan Penner, Trent
Willis, and more.

Global npm Usage

Rather than bundling our own copy of npm into Ember CLI we now delegate to the
system-installed version of npm. This should dramatically reduce the install
time for your node_modules directory. Note that we have set the minimum
supported version to be npm@3. If you need to update the version on your
system you can do so by running npm install -g npm.

Developers, Developers, Developers, Developers

We've made a tremendous number of behind-the-scene changes to Ember CLI in
2.12. Our goal is to make contributing to Ember CLI simpler and quicker. Some
of the improvements include:

We've adopted ESLint for Ember CLI itself, painted a few bikesheds, and
now have a much more consistent codebase. PR comments around code style should
come with an associated style rule change to enforce that behavior so that it
is consistent given the multitude of reviewers we have.

Now that we have dropped support for Node.js 0.12 we have begun adoption of
all of the nice things we weren't previously able to use; most-specifically
ES6 classes! We've modified core-object as well in order to make it
compatible with ES6 classes.

We've adopted Yarn for development of Ember CLI. We now use it for CI and are
using this to lay a foundation for making yarn a default and supported
option for package management in applications.

By virtue of a lot of work in CI and on caching test run times have been
reduced to seven minutes. Check out PackageCache
which got us most of the reward. More work is being done to allow offline tests.

We've introduced an experiments API which allows us to incrementally land
invasive changes behind an experiment flag. The experiment flag prevents their
use except on the canary branch. This allows us to experiment with API shape
and understand problems without committing to publishing a feature. Currently
the instrumentation changes are behind an experiment flag which allows us to
understand the needs and write a much more complete RFC.

We will continue this effort in upcoming releases.

Other Notable Changes

ember new and ember addon correctly support the --directory argument and
allow you to specify an existing empty directory.

Removed ember-data and ember-cli-app-version from the default
ember addon blueprint.

Duplicate calls to .import('assetname.js)' will no longer include the asset
in the output file twice.

Given that we no longer require bower in the default scenario, we now lazily
install it into your application the first time that you need it.

Krati Ahuja split and removed the internal serve-files addon which was
responsible for serving of assets in ember serve. This enables progress on
FastBoot.

For more details on the changes in Ember CLI 2.12.0-beta.1 and detailed upgrade
instructions, please review the Ember CLI 2.12.0-beta.1 release page.

Thank You!

As a community-driven open-source project with an ambitious scope, each of
these releases serve as a reminder that the Ember project would not have been
possible without your continued support. We are extremely grateful to our
contributors for their efforts.

Show more