Ember 3.15 "Octane" Released

Today the Ember project is releasing version 3.15 of Ember.js, Ember Data, and Ember CLI. In addition to brining new features and bug fixes, Ember 3.15 also marks the official release of the Octane edition, which is Ember's first edition release.

Ember developers using the Octane edition can exercise modern features like native ES classes, decorators, the new Glimmer component API, and a new approach to state management called tracked properties. Combined, these innovative changes to Ember are more than just new tools and APIs. Octane's features, together, sum up to a paradigm shift in how Ember applications are built.

Read more about how Octane makes web application development fun and productive in Octane is Here, a blog post from Yehuda.

...and then explore our completely updated and refreshed guide and API documentation:

In addition to the Octane release, today you can also find version 3.16-beta.1 released for Ember.js, Ember Data, and Ember CLI. As always 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.

You can read more about Ember's general release process at the Release Dashboard.


Other Changes in Ember.js 3.15

Deprecations are added to Ember.js when an API will be removed at a later date. Each deprecation has an entry in the deprecation guide describing the migration path to a more stable API. Deprecated public APIs are not removed until a major release of the framework.

Consider using the ember-cli-deprecation-workflow addon if you would like to upgrade your application without immediately addressing deprecations.

There were three deprecations in Ember.js v3.15.0.

Deprecate Component#isVisible (1 of 3)

Classic Ember components support using the isVisible property to toggle the visibility of a component's root element. This API was very common in early Ember 1.x applications but is rare today. In practice use of template bindings has supplanted use of the isVisible API.

isVisible is deprecated as of Ember 3.15.

To transition away from this, we recommend using conditionals in a template:

1
2
3
4
5
6
7
{{#if this.showComponent}}
  <MyComponent />
{{/if}}

{{! or }}
<div hidden={{this.isHidden}}></div>

See the deprecation guide for isVisible for more information.

Deprecate {{partial}} (2 of 3)

As of the introduction of template-only components and Glimmer components, as well as of the template-only-glimmer-components optional feature the {{partial}} API in Ember no longer provides any unique benefits. Instead it has several downsides including difficult to teach scoping rules and poor performance.

See the deprecation guide for {{partial}} for an example of how to migration existing use to component APIs.

Deprecate intimate window.ENV API (3 of 3)

Ember applications long ago shifted to using window.EmberENV as the home of various configuration options. As of 3.15.0 application code which uses window.ENV for Ember configuration values will cause a deprecation warning to be issued. Support for this intimate API will be removed in 3.17.0.

See emberjs/ember.js#18441 for more details about this deprecation.

For more details on changes in Ember.js 3.15, please review the Ember.js 3.15.0 release page.

Ember Data

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

There were two new features and no deprecations for EmberData v.3.15.0.

Identifiers (1 of 2)

Identifiers provides infrastructure for handling identity within ember-data to satisfy requirements around improved caching, serializability, replication, and handling of remote data.

For more information read RFC-403 Identifiers.

Inspector Support is now optional in production (2 of 2)

EmberData ships with a DataAdapter which provides the necessary support for the data panel in the Ember Inspector.

This package adds roughly .6 KB when minified and compressed to your application in production; however, you can now opt out of shipping this addon in production via options in ember-cli-build.js

1
2
3
4
5
let app = new EmberApp(defaults, {
  emberData: {
    includeDataAdapterInProduction: false
  }
});

When using ember-data as a dependency of your app, the default is to ship the inspector support to production.

When not using ember-data as a dependency but instead using EmberData via declaring specific @ember-data/<package> dependencies the default is to not ship to production.

For additional details on changes in Ember Data 3.15.0, please review the full Ember Data 3.15.0 change log.

Ember CLI

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

There were some noteworthy changes in ember-cli to support the release of the Octane edition of Ember. The @glimmer/component@1.0.0 package was added as a dev dependency for both apps and addons, Octane-related optional features were enabled, ember-template-lint was updated to use the octane edition preset, and all packages were updated to their latest version in the application blueprint!

The new addon blueprint also dropped the Ember 3.4 ember-try scenario, but dropping support for existing addons should be considered a breaking change. Existing addons should either keep the scenario, or do a major version bump if they drop support for older Ember versions.

For additional details on the changes in Ember CLI 3.15.0 and detailed upgrade instructions, please review the Ember CLI 3.15.0 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.