Ember 6.12 Released

– By Jared Galanis, Chris Manson

The Ember project is excited to announce the release of Ember v6.12. Following Ember's Major Version Policy, version 6.12 will be the final release of the 6.x series. This release of Ember.js is an LTS (Long Term Support) candidate. LTS candidates prioritize stability over the addition of new features, and have an extended support schedule.

Ember.js 6.12

Ember.js 6.12 does not introduce any new features in this release, but we have done some major improvements to the internal structure of the repo in preparation for Ember 7.0! We have also introduced three bugfixes and there are no new deprecations.

Merging the Glimmer and Ember monorepos

It has been over 9 years since we announced the publication of Glimmer.js as a separate repo with the intention that people could use Glimmer independently of Ember. The idea was that you could start any small app with only the reactivity layer that Glimmer gives you and "npm install your way to Ember"

Diagram showing a spectrum from less complext to more complex. On the left side is Glimmer logo for less complex applications. On the right side is Ember, for ambitious applications. In the middle is a sequence of npm install commands that show how you can move incrementally up the scale, one package at a time: npm install @ember/router, npm install @ember/service, and npm install @ember data.

A lot has changed in both Ember and the wider JavaScript ecosystem since 2017, and with those changes the need for having a separate repository for Glimmer, with separate releases, has gone away. Since the introduction of renderComponent() and the build system moving to Embroider and Vite by default in Ember 6.8 we can mostly rely on our build systems to not include the code you aren't using in your bundle.

There are more improvements to be made, but merging the Ember and Glimmer monorepos will significantly improve stability of future releases (all the test harnesses are now integrated) and make it much easier to make big improvements to the architecture of the ember-source package.

The glimmer-vm repo has also been archived to communicate that there will be no more work merged to that repo. Any @glimmer/* packages that still need to be released (such as @glimmer/syntax and @glimmer/component) will be released from the Ember monorepo. Relevant issues have also been moved to the emberjs/ember.js repo, but if you find an issue that you think we should have moved please reopen it on Ember.js (after doing a quick search 😉).

Bug Fixes

Ember.js 6.12 introduces 3 bugfixes

  • #20995 renderComponent fix error: 'attempted to close a tracking frame, but one was not open'
  • #20996 renderComponent fix error: 'Cannot read property of undefined: reading syscall'
  • #21091 Fix on modifier error message regression

Ember CLI v6.12

Ember CLI has had a number of improvements to the blueprints, a few bugfixes, and we continue to reduce the number of packages that are reported as deprecated during initial installation.

Update classic blueprint to use WarpDrive packages

Since Ember 6.8, when you generate a new app you will get the Embroider and Vite blueprint by default. This has been great for a lot of people but, for whatever reason, some apps haven't been able to upgrade to Vite quite yet. Because we still support building apps with ember-cli we are maintaining a legacy blueprint @ember-tooling/classic-build-app-blueprint.

As much as possible we want to keep this legacy blueprint up to date with what is happening in the modern default blueprint, but sometimes changes can lag a little. In @ember-tooling/classic-build-app-blueprint@6.12 we have converted the ember-data setup to match the WarpDrive setup that was added to the default @ember/app-blueprint in version 6.8.

Update modern blueprint to have better lint setup

The previous section was about changes made to the modern blueprint that hadn't yet made their way to the legacy blueprints, this section is about the opposite. Right before the modern application blueprint was forked from the classic one there were a number of improvements made to the eslint configs that helped catch issues with tests and correctness in JS files. In v6.12 we ported those improvements to the modern @ember/app-blueprint.

Convert ember-cli-build.js to an ESM file

As more and more of our stack becomes fully ESM we are getting closer to the point where we can add type: "module" to our package.json files and finally consider every file in your stack an ESM file. Until that day finally happens we are converting each of the files that can be converted to ESM by changing the extension from .js to .mjs. This will simplify some of the slightly confusing syntax that we have had to do up until this point.

Progress on the removal of deprecated npm dependencies

As we mentioned in previous release blogs, there is an effort to reduce the number of deprecation warnings when generating a new Ember App. Since this effort has started we have removed half of the deprecated npm dependencies 🎉 While this is great news there is still a long way to go, and if anyone is looking for a good way to contribute to Ember this is a task that could do with more help!

Remove using-amd-bundles deprecations

In Ember 7 we will be removing the AMD bundles that are shipped with the ember-source npm package. To prepare people for this change we introduced the using-amd-bundles deprecation in Ember v6.10 and in Ember v6.12 we have made sure that there are no more deprecation warnings displayed when you generate either a modern @ember/app-bluerpint app or one with the classic blueprint. This means that if you use ember-cli-update to update to 6.12 you will likely have successfully cleared the using-amd-bundles deprecation and will be ready for Ember v7 💪

Bug Fixes

Ember CLI v6.12 has also introduced 3 bugfixes (not already highlighted above)

  • #10941 Downgrade isbinaryfile to maintain node support
  • #10932 Remove tracked-built-ins as it is now actually built-in
  • #208 Add globals.browser to eslint config for TS files

Thank You!

As a community-driven open-source project with an ambitious scope, each of these releases serves 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.