<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ember.js</title>
    <description>The latest articles on DEV Community by Ember.js (@emberjs).</description>
    <link>https://dev.to/emberjs</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F297601%2F4f640100-944c-45a0-b619-21021d9f16b6.png</url>
      <title>DEV Community: Ember.js</title>
      <link>https://dev.to/emberjs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/emberjs"/>
    <language>en</language>
    <item>
      <title>Ember 3.28 and 4.0 Beta Released</title>
      <dc:creator>Ember.js</dc:creator>
      <pubDate>Tue, 07 Sep 2021 18:30:42 +0000</pubDate>
      <link>https://dev.to/emberjs/ember-3-28-and-4-0-beta-released-10o</link>
      <guid>https://dev.to/emberjs/ember-3-28-and-4-0-beta-released-10o</guid>
      <description>&lt;p&gt;After 3.5 years and 28 minor releases, Ember 3.28 marks the end of the project's 3.x series. To ensure a smooth upgrade path going into the 4.x series, 3.28 has been declared an LTS (Long Term Support) candidate. In six weeks, the latest patch version of 3.28 will be promoted to be the latest LTS release and replace 3.24-LTS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We're also announcing the start of the Ember 4.0 beta cycle for all sub-projects.&lt;/strong&gt; Following the process set in previous major versions, Ember 4.0's beta introduces no new features. Instead, it removes support for deprecated public APIs. We encourage our community (especially addon authors) to help test beta builds and report any bugs before they are published as a stable release in six weeks' time. We also encourage everyone to help maintainers resolve deprecations in their favorite addons. The &lt;a href="https://github.com/ember-cli/ember-try"&gt;ember-try&lt;/a&gt; addon is a great way to continuously test your projects against the latest Ember releases.&lt;/p&gt;

&lt;p&gt;Developers who want to prepare for the upcoming 4.0 version of Ember should work to resolve all deprecation warnings in their apps and addons while using Ember 3.28. An app or addon with no deprecation warnings on Ember 3.28 should be able to upgrade from Ember 4.0 without making significant changes outside of the dependency versions.&lt;/p&gt;

&lt;p&gt;You can read more about Ember's plans for 4.0 in &lt;a href="https://blog.emberjs.com/the-road-to-ember-4-0/"&gt;The Road to Ember 4.0&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Ember.js
&lt;/h2&gt;

&lt;p&gt;Ember.js is the core framework for building ambitious web applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Changes in Ember.js 3.28
&lt;/h3&gt;

&lt;p&gt;Ember.js 3.28 is an incremental, backwards compatible release of Ember with bug fixes, performance improvements, and a minor deprecation fix. 3.28 introduces no new features, helping to ensure the final release of the 3.x cycle is stable and battle-tested.&lt;/p&gt;

&lt;p&gt;For the full set of changes (including 7 bug fixes), see the &lt;a href="https://github.com/emberjs/ember.js/releases/tag/v3.28.0"&gt;Ember.js 3.28.0 release page&lt;/a&gt; on GitHub.&lt;/p&gt;

&lt;p&gt;In Ember 3.24, various string methods added to the &lt;code&gt;String.prototype&lt;/code&gt; were deprecated for removal in Ember 4.0. &lt;code&gt;htmlSafe&lt;/code&gt; (the version available via string prototype) was supposed to be included in those deprecations, however it was overlooked. This omission is corrected in 3.28.&lt;/p&gt;




&lt;h2&gt;
  
  
  Ember Data
&lt;/h2&gt;

&lt;p&gt;Ember Data is the official data persistence library for Ember.js applications. The changes introduced in Ember Data 3.28 focus on bug fixes and refactors in preparation for 4.0.&lt;/p&gt;

&lt;h3&gt;
  
  
  Changes in Ember Data 3.28
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Improvements to relationship materialization &amp;amp; unloading performance
&lt;/h4&gt;

&lt;p&gt;A number of performance improvements were shipped in Ember Data 3.28, including significant improvements to relationship materialization and unloading performance via &lt;a href="https://github.com/emberjs/data/pull/7491"&gt;emberjs/data#7491&lt;/a&gt; and &lt;a href="https://github.com/emberjs/data/pull/7493"&gt;emberjs/data#7493&lt;/a&gt;. In particular, the performance improvements should be notable when loading large sets of data.&lt;/p&gt;

&lt;p&gt;See the PRs linked above and &lt;a href="https://github.com/emberjs/data/blob/v3.28.3/CHANGELOG.md#release-3280-aug-20-2021"&gt;changelog&lt;/a&gt; for further notes on performance improvements.&lt;/p&gt;

&lt;h4&gt;
  
  
  Unload records from the store when calling &lt;code&gt;destroyRecord&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;destroyRecord&lt;/code&gt; would previously leave the deleted record in the store. This could cause issues if IDs were re-used, or could require extra filtering to confirm that destroyed content was not in an array of models.&lt;/p&gt;

&lt;p&gt;3.28 will unload records from the store when &lt;code&gt;destroyRecord&lt;/code&gt; is called. For more details, see &lt;a href="https://github.com/emberjs/data/pull/7258"&gt;emberjs/data#7258&lt;/a&gt; and the GitHub issues mentioned in the PR.&lt;/p&gt;

&lt;h4&gt;
  
  
  Custom Model Classes
&lt;/h4&gt;

&lt;p&gt;Used conventionally, Ember Data blends the definition of a model's schema and record API into a single JavaScript class. For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Model&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@ember-data/model&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nx"&gt;PersonModel&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nx"&gt;Model&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="cm"&gt;/*
   * Define a schema
   */&lt;/span&gt;
  &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;attr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;firstName&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;attr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;lastName&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="cm"&gt;/*
   * Define an API on the record instance
   */&lt;/span&gt;
  &lt;span class="kd"&gt;get&lt;/span&gt; &lt;span class="nx"&gt;fullName&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;firstName&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lastName&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ember Data 3.28 introduces the ability to separate model schema and record instance class definitions. This is a low-level capability that we expect addon authors to use when they experiment in these areas (possibly others):&lt;/p&gt;

&lt;p&gt;First, forcing the definition (statically or at runtime) of a distinct class for every model can cause performance issues. Large applications may have hundreds of models. If most or all of these models do not require unique classes, we're generating more memory load and asking more of the JIT's type system than they may be necessary. In the extreme case, it may be possible for all record instances in an application to share a single root class.&lt;/p&gt;

&lt;p&gt;Second, the current Ember Data schema definition API forces definitions to be authored in JavaScript. Removing that limitation allows us to experiment with more optimal or powerful ways to encode schema (such as JSON). These alternatives may perform better (in payload size, or in parse/eval), may better support generation and synchronization with API typing systems, and better support static analysis (for example, with TypeScript).&lt;/p&gt;

&lt;p&gt;For further details on these new capabilities, refer to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/emberjs/rfcs/blob/master/text/0487-custom-model-classes.md"&gt;RFC #487: Custom Model Class&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/emberjs/rfcs/blob/master/text/0466-request-state-service.md"&gt;RFC #466: Request State Service&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/emberjs/rfcs/blob/master/text/0463-record-data-state.md"&gt;RFC #463: Record State on RecordData&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/emberjs/rfcs/blob/master/text/0465-record-data-errors.md"&gt;RFC #463: RecordData Errors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Much of this API surface is already used by the &lt;a href="https://github.com/hjdivad/ember-m3"&gt;ember-m3&lt;/a&gt; project, which provides an alternative model class for Ember Data.&lt;/p&gt;

&lt;h4&gt;
  
  
  Bug Fixes
&lt;/h4&gt;

&lt;p&gt;Ember Data 3.28 introduced 12 bug fixes and some internal refactors. For the full set of changes, see the &lt;a href="https://github.com/emberjs/data/blob/v3.28.3/CHANGELOG.md#release-3280-aug-20-2021"&gt;CHANGELOG.md&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Ember CLI
&lt;/h2&gt;

&lt;p&gt;Ember CLI is the command line interface for managing and packaging Ember.js applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Changes in Ember CLI 3.28
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Drop Node 10 support
&lt;/h4&gt;

&lt;p&gt;Ember CLI 3.28 drops support for Node 10. Node 10 became end of life (it no longer receives security updates) in April 2021.&lt;/p&gt;

&lt;h4&gt;
  
  
  Introducing &lt;code&gt;ember-addon.projectRoot&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;This new configuration option allows you to run &lt;code&gt;ember serve&lt;/code&gt; from outside of a project's root directory. For example, if you're using yarn workspace or a monorepo and want to support running &lt;code&gt;ember serve&lt;/code&gt; from the root of the repo, update the top-level &lt;code&gt;package.json&lt;/code&gt; to include the following config:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"ember-addon"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"projectRoot"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"./packages/path-to-ember-project"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For more details on the changes in Ember CLI 3.28 and detailed upgrade instructions, please review the &lt;a href="https://github.com/ember-cli/ember-cli/releases/tag/v3.28.0"&gt;Ember CLI 3.28.0 release page&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Upgrading Ember CLI
&lt;/h3&gt;

&lt;p&gt;You may upgrade Ember CLI using the &lt;code&gt;ember-cli-update&lt;/code&gt; project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx ember-cli-update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This utility will help you to update your app or addon to the latest Ember CLI version. You will probably encounter merge conflicts, in which the default behavior is to let you resolve conflicts on your own. For more information on the &lt;code&gt;ember-cli-update&lt;/code&gt; project, see &lt;a href="https://github.com/ember-cli/ember-cli-update"&gt;the GitHub README&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;While it is recommended to keep Ember CLI versions in sync with Ember and Ember Data, this is not required. After updating ember-cli, you can keep your current version(s) of Ember or Ember Data by editing &lt;code&gt;package.json&lt;/code&gt; to revert the changes to the lines containing &lt;code&gt;ember-source&lt;/code&gt; and &lt;code&gt;ember-data&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thank You!
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

</description>
      <category>ember</category>
      <category>javascript</category>
      <category>news</category>
      <category>webdev</category>
    </item>
    <item>
      <title>The Road to Ember 4.0</title>
      <dc:creator>Ember.js</dc:creator>
      <pubDate>Thu, 15 Jul 2021 14:39:17 +0000</pubDate>
      <link>https://dev.to/emberjs/the-road-to-ember-4-0-7f1</link>
      <guid>https://dev.to/emberjs/the-road-to-ember-4-0-7f1</guid>
      <description>&lt;p&gt;Contributors to the Ember project have been hard at work since &lt;a href="https://blog.emberjs.com/octane-is-here/"&gt;Ember Octane&lt;/a&gt; was released in December 2019.&lt;/p&gt;

&lt;p&gt;Over the duration of a challenging (and sometimes devastating) year and a half, we've shipped a powerful new feature (&lt;a href="https://api.emberjs.com/ember/3.26/modules/@glimmer%2Fcomponent#passing-multiple-blocks"&gt;Named Blocks&lt;/a&gt;) and supported an ecosystem shifting to Octane conventions. We've more closely aligned Ember with wider frontend conventions through improved publishing &amp;amp; build tooling (&lt;a href="https://github.com/embroider-build/embroider"&gt;Embroider&lt;/a&gt;) and better support for TypeScript (both through &lt;a href="https://github.com/typed-ember/ember-cli-typescript"&gt;ember-cli-typescript&lt;/a&gt; and reducing reliance on type-unsafe framework features).&lt;/p&gt;

&lt;h2&gt;
  
  
  Announcing Ember 4.0
&lt;/h2&gt;

&lt;p&gt;In his &lt;a href="https://www.youtube.com/watch?v=pJPUQQQ9QDg"&gt;EmberConf 2021 keynote&lt;/a&gt;, Yehuda shared a name for Ember's next edition: &lt;strong&gt;Polaris&lt;/strong&gt;. In order to unblock Polaris providing the best, most productive experience the Ember project can build, we're going to remove already-deprecated APIs in a 4.0 release.&lt;/p&gt;

&lt;p&gt;Ember 3.27, which has already been released, was the final version of Ember to include new deprecations targeting Ember 4.0.&lt;/p&gt;

&lt;p&gt;Ember 3.28, which has been released as a beta, will be released as stable around August 9th. It will not introduce additional deprecations targeting Ember 4.0. Six weeks after its stable release, around September 20th, Ember 3.28 will become a &lt;a href="https://emberjs.com/releases/lts/"&gt;Long-Term Support&lt;/a&gt; release.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ember 4.0 will be released around September 20th.&lt;/strong&gt; Ember 4.0 itself is not an LTS candidate.&lt;/p&gt;

&lt;p&gt;Ember 4.4 will be the first LTS candidate of the 4.x series. It will be released as stable around February 2022 and as an LTS around March 2022.&lt;/p&gt;

&lt;h2&gt;
  
  
  Whats in a 4.0?
&lt;/h2&gt;

&lt;p&gt;Since the release of Ember 2.0, major versions of Ember have been about removal of deprecated API, and not about the introduction of new features or development styles. &lt;strong&gt;Ember 4.0 follows that tradition, and will contain no new features.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Additionally, Ember 4.0 does not remove the &lt;code&gt;EmberComponent&lt;/code&gt; API or the core parts of the &lt;code&gt;EmberObject&lt;/code&gt; system. These APIs are widely used, even after the release of Octane, by existing application and addon code.&lt;/p&gt;

&lt;p&gt;Ember 4.0 will remove &lt;a href="https://deprecations.emberjs.com/v3.x"&gt;all APIs deprecated in Ember 3.x&lt;/a&gt; and targeting Ember 4.0. These include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Ember.Logger&lt;/code&gt; is removed in favor of native &lt;code&gt;console&lt;/code&gt; APIs. &lt;a href="https://deprecations.emberjs.com/v3.x/#toc_ember-console-deprecate-logger"&gt;Guide here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Copyable&lt;/code&gt; mixin is removed in favor of the &lt;a href="https://github.com/emberjs/ember-copy"&gt;ember-copy addon&lt;/a&gt;. &lt;a href="https://deprecations.emberjs.com/v3.x/#toc_ember-runtime-deprecate-copy-copyable"&gt;Guide here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;sendAction&lt;/code&gt; is removed in favor of calling closure actions like any other callback. &lt;a href="https://deprecations.emberjs.com/v3.x/#toc_ember-component-send-action"&gt;Guide here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;willTransition&lt;/code&gt; and &lt;code&gt;didTransition&lt;/code&gt; are removed in favor of router service events. &lt;a href="https://deprecations.emberjs.com/v3.x/#toc_deprecate-router-events"&gt;Guide here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Computed Property &lt;code&gt;volatile()&lt;/code&gt; calls are removed in favor of native getters. &lt;a href="https://deprecations.emberjs.com/v3.x/#toc_computed-property-volatile"&gt;Guide here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;this.$()&lt;/code&gt; and other jQuery APIs are deprecated in favor of native browser equivalents. &lt;a href="https://deprecations.emberjs.com/v3.x/#toc_jquery-apis"&gt;Guide here&lt;/a&gt;. An optional feature which restored this and other jQuery-specific features is also removed. &lt;a href="https://deprecations.emberjs.com/v3.x/#toc_optional-feature-jquery-integration"&gt;Guide here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;{{partial}}&lt;/code&gt; is removed in favor of template-only components. &lt;a href="https://deprecations.emberjs.com/v3.x/#toc_ember-partial"&gt;Guide here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Using the built-in global resolver (&lt;code&gt;App.FooController&lt;/code&gt; anyone?) is deprecated in favor of using &lt;a href="https://github.com/ember-cli/ember-resolver"&gt;ember-resolver&lt;/a&gt;, already the default for Ember CLI generated apps. &lt;a href="https://deprecations.emberjs.com/v3.x/#toc_ember-deprecate-globals-resolver"&gt;Guide here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Ambiguous references to a component's properties are removed. You must now write &lt;code&gt;{{this.someProp}}&lt;/code&gt;. &lt;a href="https://deprecations.emberjs.com/v3.x/#toc_this-property-fallback"&gt;Guide here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;renderTemplate&lt;/code&gt; is removed in favor of &lt;code&gt;{{in-element}}&lt;/code&gt; or other rendering target redirection like &lt;a href="https://github.com/yapplabs/ember-wormhole"&gt;ember-wormhole&lt;/a&gt;. &lt;a href="https://deprecations.emberjs.com/v3.x/#toc_route-render-template"&gt;Guide here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Support for the &lt;code&gt;Ember&lt;/code&gt; global on &lt;code&gt;window&lt;/code&gt; is removed in favor of importing the &lt;code&gt;Ember&lt;/code&gt; object or using the module-based API. &lt;a href="https://deprecations.emberjs.com/v3.x/#toc_ember-global"&gt;Guide here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Support for specific features of the &lt;code&gt;&amp;lt;LinkTo&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;Input&amp;gt;&lt;/code&gt;, and &lt;code&gt;&amp;lt;Textarea&amp;gt;&lt;/code&gt; components are removed. See guides on &lt;a href="https://deprecations.emberjs.com/v3.x/#toc_ember-glimmer-link-to-positional-arguments"&gt;positional arguments&lt;/a&gt;, &lt;a href="https://deprecations.emberjs.com/v3.x/#toc_ember-built-in-components-legacy-arguments"&gt;legacy arguments&lt;/a&gt;, &lt;a href="https://deprecations.emberjs.com/v3.x/#toc_ember-built-in-components-legacy-attribute-arguments"&gt;legacy HTML attributes&lt;/a&gt;, and &lt;a href="https://deprecations.emberjs.com/v3.x/#toc_ember-built-in-components-import"&gt;importing legacy built-in components&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Finally, &lt;strong&gt;Ember classic is deprecated in favor of Ember Octane&lt;/strong&gt;. Although
many APIs from Ember classic (like &lt;code&gt;EmberComponent&lt;/code&gt;) continue to be available,
the optional features and application configuration which define Ember Octane
must be enabled in 4.0. See &lt;a href="https://deprecations.emberjs.com/v3.x#toc_editions-classic"&gt;the deprecation guide
entry&lt;/a&gt; and
&lt;a href="https://guides.emberjs.com/v3.27.0/upgrading/current-edition/"&gt;upgrading to Ember
Octane&lt;/a&gt; guide for
more details.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The above APIs, listed as an example of what will be removed but not defining the complete list, show that API removals in 4.x largely consist of APIs that date back to Ember 1.x, and are rarely used now (or should be rarely used).&lt;/p&gt;

&lt;p&gt;An additional important change is the completion of Ember 3.x's browser support policy. Ember 4.0 will support two classes of browsers: Evergreen (those on a weeks-long, auto-upgrade release cycle) and non-evergreen. This classification system allows us to create a rolling minimum version for evergreen browsers, while using a more traditional, pinned minimum version for non-evergreen browsers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Specifically, the Ember 4.x release policy includes support for Google Chrome, Mozilla Firefox, Microsoft Edge, and Apple Safari on desktop and mobile. It does not include support for any version of Internet Explorer.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Read more about this change in &lt;a href="https://deprecations.emberjs.com/v3.x/#toc_3-0-browser-support-policy"&gt;the deprecation guide&lt;/a&gt; and at &lt;a href="https://emberjs.com/browser-support/"&gt;Ember's browser support policy page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Existing Ember users should note that Ember 3.27 has already removed IE11 from the default target list for production and testing builds.&lt;/p&gt;

&lt;h2&gt;
  
  
  Planning your upgrade to 4.0
&lt;/h2&gt;

&lt;p&gt;For each API removed in Ember 4.0, you can find an entry in the &lt;a href="https://deprecations.emberjs.com/v3.x/"&gt;Ember 3.x deprecation guide&lt;/a&gt;. As many of the removed APIs have not been included in best practices or common documentation for the entire 3.x cycle, applications started on 3.x are expected to have a fairly smooth upgrade path.&lt;/p&gt;

&lt;p&gt;Consider using the &lt;a href="https://github.com/mixonic/ember-cli-deprecation-workflow"&gt;ember-cli-deprecation-workflow&lt;/a&gt; addon as part of your upgrade process. The addon allows you to create a configuration file to silence most deprecations. This means you can focus on one or a few warnings at a time. Additionally, you can configure the addon to throw an error when a deprecation that was previously addressed is re-introduced. If you work with a large codebase and many contributors, this helps you prevent backsliding in your upgrade process.&lt;/p&gt;

&lt;p&gt;In contrast to prior major releases, we have no plans to offer an &lt;code&gt;ember-3-legacy&lt;/code&gt; package that makes Ember 3.x APIs available for a limited time in Ember 4.0. This is based on fairly low use of these packages in the past.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don't panic.&lt;/strong&gt; We expect many Ember users to enthusiastically adopt our 4.0 release. If you prefer a conservative upgrade path, we suggest using Ember's Long-Term Support releases. Ember 3.28, the last version of the 3.x cycle, will become an LTS in September 2021. The first 4.x release to be promoted to LTS will be Ember 4.4 around March 2022. This timeline provides a long window for your business to address any remaining 4.0-targeted deprecations (while using 3.28-LTS) before 4.4-LTS is promoted.&lt;/p&gt;

&lt;h2&gt;
  
  
  Contributing to Ember 4.0
&lt;/h2&gt;

&lt;p&gt;In the &lt;a href="https://github.com/emberjs/ember.js"&gt;Ember.js&lt;/a&gt;, &lt;a href="https://github.com/emberjs/data"&gt;Ember Data&lt;/a&gt;, and &lt;a href="https://github.com/ember-cli/ember-cli"&gt;Ember CLI&lt;/a&gt; repos, the final beta cycle of 3.x has already started. The &lt;code&gt;master&lt;/code&gt; branch is ready for code changes targeting 4.0. You are welcome to contribute to these repos by removing already deprecated functionality and IE11 compatibility code.&lt;/p&gt;

&lt;p&gt;The core framework effort to prepare for 4.0 is tracked at &lt;a href="https://github.com/emberjs/ember.js/issues/19545"&gt;emberjs/ember.js#19545&lt;/a&gt;, and a list of deprecated APIs we need help to remove is tracked at &lt;a href="https://github.com/emberjs/ember.js/issues/19617"&gt;emberjs/ember.js#19617&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Join us on &lt;a href="https://discord.com/invite/emberjs"&gt;Discord&lt;/a&gt; in the &lt;code&gt;#dev-ember-js&lt;/code&gt;, &lt;code&gt;#dev-ember-data&lt;/code&gt;, &lt;code&gt;#dev-ember-cli&lt;/code&gt;, or &lt;code&gt;#dev-ember-learning&lt;/code&gt; channels to find out how you can contribute.&lt;/p&gt;

&lt;p&gt;In less than six weeks, we expect the first betas for 4.0 to be released. Please help test the betas on your applications and addons so that we can catch any regressions.&lt;/p&gt;

&lt;p&gt;We're looking forward to working with the community on Ember 4.0 and on the opportunities beyond it. As always we appreciate your support, your trust, and our common partnership.&lt;/p&gt;

</description>
      <category>ember</category>
      <category>javascript</category>
      <category>news</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Ember 3.27 Released</title>
      <dc:creator>Ember.js</dc:creator>
      <pubDate>Thu, 15 Jul 2021 03:42:58 +0000</pubDate>
      <link>https://dev.to/emberjs/ember-3-27-released-69n</link>
      <guid>https://dev.to/emberjs/ember-3-27-released-69n</guid>
      <description>&lt;p&gt;On July 3, 2021, the Ember project announced release 3.27 of Ember.js, Ember Data, and Ember CLI. This is a minor version, stable release.&lt;/p&gt;

&lt;p&gt;We also announced the start of the 3.28 beta cycle for all sub-projects. We encourage our community (especially addon authors) to help test beta builds and report any bugs before they are published as a stable release in six weeks' time. The &lt;a href="https://github.com/ember-cli/ember-try"&gt;ember-try&lt;/a&gt; addon is a great way to continuously test your projects against the latest Ember releases.&lt;/p&gt;

&lt;p&gt;Ember.js 3.28 (again, starting &lt;strong&gt;beta&lt;/strong&gt; today) is the final planned version of the 3.x release cycle, and will become an LTS release. As of the 3.28-beta being released, the main development branch of all Ember projects will become 4.0. Look for more information on Ember 4.0 here on the blog this coming week.&lt;/p&gt;

&lt;p&gt;You can read more about our general release process with these resources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://emberjs.com/releases/"&gt;Release Dashboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.emberjs.com/new-ember-release-process/"&gt;The Ember Release Cycle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.emberjs.com/ember-project-at-2-0/"&gt;The Ember Project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.emberjs.com/announcing-embers-first-lts/"&gt;Ember LTS Releases&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Ember.js
&lt;/h2&gt;

&lt;p&gt;Ember.js is the core framework for building ambitious web applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Changes in Ember.js 3.27
&lt;/h3&gt;

&lt;p&gt;Ember.js 3.27 is an incremental, backwards compatible release of Ember with bug fixes, performance improvements, and deprecations. For a full set of changes see &lt;a href="https://github.com/emberjs/ember.js/blob/master/CHANGELOG.md#v3275-june-10-2021"&gt;&lt;code&gt;CHANGELOG.md&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Notable Bug Fixes
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Prior to 3.27 &lt;code&gt;&amp;lt;:inverse&amp;gt;&lt;/code&gt; would not always alias else blocks. This is corrected in &lt;a href="https://github.com/glimmerjs/glimmer-vm/pull/1296"&gt;glimmerjs/glimmer-vm#1296&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Ember.js 3.27.0 was released in early May and included several regressions. These were largely related to the changes in the glimmer VM and and the implementation of several deprecations, and have been corrected in patch releases leading up to 3.27.5.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Feature Additions
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Contextual Helpers &amp;amp; Modifiers
&lt;/h4&gt;

&lt;p&gt;For several years Ember has provided a mechanism called "contextual components". This API allows a developer to yield a component, optionally with arguments to apply, into a block.&lt;/p&gt;

&lt;p&gt;In &lt;a href="https://github.com/emberjs/rfcs/blob/master/text/0432-contextual-helpers.md"&gt;RFC #432&lt;/a&gt; additional APIs were proposed which allow helpers and modifiers to be used in the same way.&lt;/p&gt;

&lt;p&gt;For example the layout for a &lt;code&gt;SuperForm&lt;/code&gt; component might be implemented as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight handlebars"&gt;&lt;code&gt;// app/components/super-form.hbs
&lt;span class="nt"&gt;&amp;lt;form&amp;gt;&lt;/span&gt;
  &lt;span class="k"&gt;{{&lt;/span&gt;&lt;span class="nv"&gt;yield&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;hash&lt;/span&gt;

    &lt;span class="nv"&gt;Input&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;component&lt;/span&gt; &lt;span class="s2"&gt;"super-input"&lt;/span&gt; &lt;span class="nv"&gt;form&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;this&lt;/span&gt; &lt;span class="nv"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;model&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nv"&gt;Textarea&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;component&lt;/span&gt; &lt;span class="s2"&gt;"super-textarea"&lt;/span&gt; &lt;span class="nv"&gt;form&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;this&lt;/span&gt; &lt;span class="nv"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;model&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nv"&gt;Submit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;component&lt;/span&gt; &lt;span class="s2"&gt;"super-submit"&lt;/span&gt; &lt;span class="nv"&gt;form&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;this&lt;/span&gt; &lt;span class="nv"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;model&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="nv"&gt;is-valid&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;helper&lt;/span&gt; &lt;span class="s2"&gt;"super-is-valid"&lt;/span&gt; &lt;span class="nv"&gt;form&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;this&lt;/span&gt; &lt;span class="nv"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;model&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nv"&gt;error-for&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;helper&lt;/span&gt; &lt;span class="s2"&gt;"super-error-for"&lt;/span&gt; &lt;span class="nv"&gt;form&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;this&lt;/span&gt; &lt;span class="nv"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;model&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="nv"&gt;auto-resize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;modifier&lt;/span&gt; &lt;span class="s2"&gt;"super-auto-resize"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

  &lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="k"&gt;}}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/form&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And be used as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight handlebars"&gt;&lt;code&gt;// app/templates/index.hbs
&lt;span class="nt"&gt;&amp;lt;SuperForm&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;model=&lt;/span&gt;&lt;span class="k"&gt;{{&lt;/span&gt;&lt;span class="nv"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;post&lt;/span&gt;&lt;span class="k"&gt;}}&lt;/span&gt; &lt;span class="na"&gt;as&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="na"&gt;f&lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="c"&gt;{{! Invoke a contextual component }}&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;f.Input&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"title"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;

  &lt;span class="c"&gt;{{! Invoke contextual helpers }}&lt;/span&gt;
  &lt;span class="k"&gt;{{#&lt;/span&gt;&lt;span class="nn"&gt;unless&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;is-valid&lt;/span&gt; &lt;span class="s2"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="k"&gt;}}&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"error"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;This field &lt;span class="k"&gt;{{&lt;/span&gt;&lt;span class="nv"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;error-for&lt;/span&gt; &lt;span class="s2"&gt;"title"&lt;/span&gt;&lt;span class="k"&gt;}}&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="k"&gt;{{/&lt;/span&gt;&lt;span class="nn"&gt;unless&lt;/span&gt;&lt;span class="k"&gt;}}&lt;/span&gt;

  &lt;span class="c"&gt;{{! Invoke a contextual modifier on a contextual component invocation }}&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;f.Textarea&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"body"&lt;/span&gt; &lt;span class="k"&gt;{{&lt;/span&gt;&lt;span class="nv"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;auto-resize&lt;/span&gt; &lt;span class="nv"&gt;maxHeight&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"500"&lt;/span&gt;&lt;span class="k"&gt;}}&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;f.Submit&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/SuperForm&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These APIs open the doors for the creation of new, more powerful UI abstractions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Deprecations
&lt;/h3&gt;

&lt;p&gt;Ember 3.27 introduces the final set of deprecations targeting Ember 4.0. The newly introduced deprecations primarily impact uncommonly used APIs. As always, deprecated APIs are documented with a transition path in the &lt;a href="https://deprecations.emberjs.com/v3.x"&gt;deprecation guides&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Several notable deprecations added in 3.27 are:&lt;/p&gt;

&lt;h4&gt;
  
  
  Invoking Helpers Without Arguments and Parentheses in Named Argument Positions
&lt;/h4&gt;

&lt;p&gt;In some templates, a helper passed as an argument can be treated as an invocation instead of passing the uninvoked helper as a value. For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight handlebars"&gt;&lt;code&gt;&lt;span class="c"&gt;{{! is someHelper invoked, or passed as a reference? }}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;SomeComponent&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;arg=&lt;/span&gt;&lt;span class="k"&gt;{{&lt;/span&gt;&lt;span class="nv"&gt;someHelper&lt;/span&gt;&lt;span class="k"&gt;}}&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To better align helpers with how component and modifiers behave in the same setting, parenthesis are now required to cause an invocation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight handlebars"&gt;&lt;code&gt;&lt;span class="c"&gt;{{! (someHelper) is clearly an invocation with no arguments }}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;SomeComponent&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;arg=&lt;/span&gt;&lt;span class="k"&gt;{{&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;someHelper&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="k"&gt;}}&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The non-param version of helper passing will pass a reference to the helper in Ember 4.0. See the &lt;a href="https://deprecations.emberjs.com/v3.x#toc_argument-less-helper-paren-less-invocation"&gt;deprecation guide entry&lt;/a&gt; for more details.&lt;/p&gt;

&lt;h4&gt;
  
  
  Importing Legacy Built-in Components
&lt;/h4&gt;

&lt;p&gt;Historically, Ember applications have been able to import the base classes which define &lt;code&gt;&amp;lt;Input&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;Textarea&amp;gt;&lt;/code&gt;, and &lt;code&gt;&amp;lt;LinkTo&amp;gt;&lt;/code&gt; for reopening or subclassing. In Ember 4.0, we intend to improve the internal implementation of those built-ins. To allow this, we've been steadily deprecating parts of the built-in APIs throughout the 3.x release series.&lt;/p&gt;

&lt;p&gt;In 3.27, importing a the base classes of Ember built-ins is deprecated. In Ember 4.0 these modules will be unavailable. The specific deprecated imports are:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Checkbox&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@ember/component/checkbox&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Textarea&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@ember/component/text-area&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;TextField&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@ember/component/text-field&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;LinkToComponent&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@ember/routing/link-component&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Accessing these classes through other paths, like the owner interface, is also deprecated.&lt;/p&gt;

&lt;p&gt;See the &lt;a href="https://deprecations.emberjs.com/v3.x#toc_ember-built-in-components-import"&gt;deprecation guide entry&lt;/a&gt; for more details and guidance on migrating away from these APIs.&lt;/p&gt;

&lt;p&gt;Additionally, reopening these classes (for example to change the &lt;code&gt;tagName&lt;/code&gt; on a &lt;code&gt;&amp;lt;LinkTo&amp;gt;&lt;/code&gt;) has been deprecated and will be unsupported in 4.0. See &lt;a href="https://deprecations.emberjs.com/v3.x/#toc_ember-built-in-components-reopen"&gt;the deprecation guide for migration strategies&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Deprecate Legacy Arguments to Built-ins
&lt;/h4&gt;

&lt;p&gt;Ember's built-in components had a public interface largely defined by their implementation as classic Ember components. In order to refactor these built-ins to more modern implementations and improve their interfaces, large parts of their API is deprecated in 3.27.&lt;/p&gt;

&lt;p&gt;These deprecations break down into two sections. First, there are arguments which are essentially setting HTML attributes or dealing with events. See &lt;a href="https://deprecations.emberjs.com/v3.x/#toc_ember-built-in-components-legacy-attribute-arguments"&gt;this guide entry on legacy attribute arguments&lt;/a&gt; for a detailed list of deprecated arguments and migration paths.&lt;/p&gt;

&lt;p&gt;Second, there is a set of arguments which were effectively leaks of the private implementation, or which no longer have a clear meaning (or usefulness) in modern application development. See &lt;a href="https://deprecations.emberjs.com/v3.x/#toc_ember-built-in-components-legacy-arguments"&gt;this guide entry on legacy arguments&lt;/a&gt; for a detailed list and migration paths.&lt;/p&gt;

&lt;h4&gt;
  
  
  Deprecate the Ember Global
&lt;/h4&gt;

&lt;p&gt;Ember has long set a property on the &lt;code&gt;window&lt;/code&gt; or &lt;code&gt;globalThis&lt;/code&gt; global so that it can be accessed via &lt;code&gt;window.Ember&lt;/code&gt;, for example. This approach to using Ember is incompatible with static analysis tools that can result in more optimized application payloads.&lt;/p&gt;

&lt;p&gt;In Ember 3.27, accessing the &lt;code&gt;Ember&lt;/code&gt; object via a non-module-import is deprecated. Support for using Ember this way will be removed in Ember 4.0.&lt;/p&gt;

&lt;p&gt;Instead, applications should adopt the Ember module API. This means importing either the &lt;code&gt;Ember&lt;/code&gt; object or a specific API from the module API:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Bad, deprecated&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Ember&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Component&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;extend&lt;/span&gt;&lt;span class="p"&gt;({});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Better&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Ember&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;ember&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Ember&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Component&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;extend&lt;/span&gt;&lt;span class="p"&gt;({});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Best&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Component&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@ember/component&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Component&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;extend&lt;/span&gt;&lt;span class="p"&gt;({});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;See &lt;a href="https://deprecations.emberjs.com/v3.x/#toc_ember-global"&gt;the deprecation guide&lt;/a&gt; and &lt;a href="https://github.com/emberjs/rfcs/blob/master/text/0706-deprecate-ember-global.md"&gt;RFC 706&lt;/a&gt; for more details and transition paths for other use cases.&lt;/p&gt;

&lt;h3&gt;
  
  
  Further Information On Upgrade Timelines
&lt;/h3&gt;

&lt;p&gt;For application maintainers who want to upgrade apps to Ember.js 4.0 on its release date, the list of deprecations in this release means their challenge is now well defined. Application maintainers should consider using the &lt;a href="https://github.com/mixonic/ember-cli-deprecation-workflow"&gt;ember-cli-deprecation-workflow&lt;/a&gt; addon to address deprecations incrementally after upgrading to 3.27. ember-cli-deprecation-workflow 2.0 was released &lt;em&gt;today&lt;/em&gt; in preperation for applications addressing Ember 3.x deprecations. Give us feedback in the issues on that repo.&lt;/p&gt;

&lt;p&gt;For app maintainers who are in less of a hurry, &lt;strong&gt;please note that the upcoming release of Ember.js 3.28 will contain no new deprecations targeting Ember.js 4.0&lt;/strong&gt;. Additionally, Ember.js 3.28 will be promoted to LTS on the same day Ember.js 4.0 is released.&lt;/p&gt;

&lt;p&gt;We recommend that applications using LTS releases wait for the first LTS of Ember.js 4.x to upgrade, which will be Ember.js 4.4. Ember's 6 week release cycle means we expect there is about 44 weeks (from today) for apps upgrading from LTS-to-LTS to address 4.0-targeted deprecations before Ember.js 4.4-LTS is made available.&lt;/p&gt;

&lt;p&gt;For more details on changes in Ember.js 3.27, please review the &lt;a href="https://github.com/emberjs/ember.js/blob/master/CHANGELOG.md#v3275-june-10-2021"&gt;Ember.js 3.27.5 release page&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Ember Data
&lt;/h2&gt;

&lt;p&gt;Ember Data is the official data persistence library for Ember.js applications. Ember Data's 3.27 release largely consists of compatability work with Ember.js.&lt;/p&gt;

&lt;p&gt;For more details on changes in Ember Data 3.27, please review the &lt;a href="https://github.com/emberjs/data/releases/tag/v3.27.0"&gt;Ember Data 3.27.0 release page&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Ember CLI
&lt;/h2&gt;

&lt;p&gt;Ember CLI is the command line interface for managing and packaging Ember.js applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Upgrading Ember CLI
&lt;/h3&gt;

&lt;p&gt;You may upgrade Ember CLI using the &lt;code&gt;ember-cli-update&lt;/code&gt; project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx ember-cli-update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This utility will help you to update your app or addon to the latest Ember CLI version. You will probably encounter merge conflicts, in which the default behavior is to let you resolve conflicts on your own. For more information on the &lt;code&gt;ember-cli-update&lt;/code&gt; project, see &lt;a href="https://github.com/ember-cli/ember-cli-update"&gt;the GitHub README&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;While it is recommended to keep Ember CLI versions in sync with Ember and Ember Data, this is not required. After updating ember-cli, you can keep your current version(s) of Ember or Ember Data by editing &lt;code&gt;package.json&lt;/code&gt; to revert the changes to the lines containing &lt;code&gt;ember-source&lt;/code&gt; and &lt;code&gt;ember-data&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Changes in Ember CLI 3.27
&lt;/h3&gt;

&lt;p&gt;Ember CLI 3.27 introduces a flag for enabling Embroider (Ember CLI's new build pipeline) for new applications and addons. For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ember new my-app &lt;span class="nt"&gt;--embroider&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Learn more about what Embroider offers and how to best configure it on the &lt;a href="https://github.com/embroider-build/embroider"&gt;embroider-build/embroider&lt;/a&gt; repo.&lt;/p&gt;

&lt;p&gt;For more details on changes and bugfixes in Ember CLI 3.27, see the &lt;a href="https://github.com/ember-cli/ember-cli/blob/v3.27.0/CHANGELOG.md#v3270"&gt;Ember 3.27.0 changelog&lt;/a&gt; and &lt;a href="https://github.com/ember-cli/ember-cli/releases/tag/v3.27.0"&gt;Ember CLI 3.27.0 release page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thank You!
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

</description>
      <category>ember</category>
      <category>javascript</category>
      <category>news</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Ember 3.26 Released</title>
      <dc:creator>Ember.js</dc:creator>
      <pubDate>Mon, 12 Apr 2021 19:34:53 +0000</pubDate>
      <link>https://dev.to/emberjs/ember-3-26-released-2mef</link>
      <guid>https://dev.to/emberjs/ember-3-26-released-2mef</guid>
      <description>&lt;p&gt;Today the Ember project is releasing version 3.26 of Ember.js, Ember Data, and Ember CLI.&lt;/p&gt;

&lt;p&gt;This release kicks off the 3.27 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 &lt;a href="https://github.com/ember-cli/ember-try"&gt;ember-try&lt;/a&gt; addon is a great way to continuously test your projects against the latest Ember releases.&lt;/p&gt;

&lt;p&gt;You can read more about our general release process here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://emberjs.com/releases/"&gt;Release Dashboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.emberjs.com/new-ember-release-process/"&gt;The Ember Release Cycle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.emberjs.com/ember-project-at-2-0/"&gt;The Ember Project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.emberjs.com/announcing-embers-first-lts/"&gt;Ember LTS Releases&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Ember.js
&lt;/h2&gt;

&lt;p&gt;Ember.js is the core framework for building ambitious web applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Changes in Ember.js 3.26
&lt;/h3&gt;

&lt;p&gt;Ember.js 3.26 is an incremental, backwards compatible release of Ember with bug fixes, performance improvements, and minor deprecations.&lt;/p&gt;

&lt;h4&gt;
  
  
  Bug Fixes
&lt;/h4&gt;

&lt;p&gt;Ember.js 3.26 introduced 5 bug fixes. Here are a few notable ones:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Ember router and the &lt;code&gt;router&lt;/code&gt; service have been updated so that an infinite recursion does not occur when the &lt;code&gt;router&lt;/code&gt; service is injected into &lt;code&gt;app/router.js&lt;/code&gt;. (&lt;a href="https://github.com/emberjs/ember.js/pull/19405"&gt;#19405&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;You can pass to an observer a dependent key whose name includes a colon. (&lt;a href="https://github.com/emberjs/ember.js/issues/19343"&gt;#19343&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;The Glimmer VM has been updated to prevent eagerly consuming arguments during modifier destruction. (&lt;a href="https://github.com/emberjs/ember.js/pull/19469"&gt;#19469&lt;/a&gt;)&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Features
&lt;/h4&gt;

&lt;p&gt;Ember.js 3.26 introduced 0 features.&lt;/p&gt;

&lt;h4&gt;
  
  
  Deprecations
&lt;/h4&gt;

&lt;p&gt;Ember.js 3.26 introduced several deprecations in preparation for v4.0 release. To learn more how to update your code, please check the provided link to the Deprecations Guide.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Transition methods of controllers and routes have been deprecated. Inject the &lt;code&gt;router&lt;/code&gt; service and use the service's methods instead. (&lt;a href="https://deprecations.emberjs.com/v3.x#toc_routing-transition-methods"&gt;Deprecations Guide&lt;/a&gt;, &lt;a href="https://github.com/emberjs/ember.js/pull/19255"&gt;#19255&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Invoking the &lt;code&gt;&amp;lt;LinkTo&amp;gt;&lt;/code&gt; component with positional arguments has been deprecated. Please provide named arguments such as &lt;code&gt;@route&lt;/code&gt;, &lt;code&gt;@model&lt;/code&gt;, &lt;code&gt;@models&lt;/code&gt;, and &lt;code&gt;@query&lt;/code&gt;. (&lt;a href="https://deprecations.emberjs.com/v3.x#toc_ember-glimmer-link-to-positional-arguments"&gt;Deprecations Guide&lt;/a&gt;, &lt;a href="https://github.com/emberjs/ember.js/pull/19345"&gt;#19345&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;{{with}}&lt;/code&gt; helper has been deprecated, in favor of using &lt;code&gt;{{let}}&lt;/code&gt;. (&lt;a href="https://deprecations.emberjs.com/v3.x#toc_ember-glimmer-with-syntax"&gt;Deprecations Guide&lt;/a&gt;, &lt;a href="https://github.com/emberjs/ember.js/pull/19346"&gt;#19346&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Implicit injection has been deprecated. In particular, the &lt;code&gt;store&lt;/code&gt; service from Ember Data must be explicitly injected into controllers and routes if they refer to &lt;code&gt;this.store&lt;/code&gt;. (&lt;a href="https://deprecations.emberjs.com/v3.x#toc_implicit-injections"&gt;Deprecations Guide&lt;/a&gt;, &lt;a href="https://github.com/emberjs/ember.js/pull/19358"&gt;#19358&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Browser support of Internet Explorer 11 has been deprecated. (&lt;a href="https://deprecations.emberjs.com/v3.x#toc_3-0-browser-support-policy"&gt;Deprecations Guide&lt;/a&gt;, &lt;a href="https://github.com/emberjs/ember.js/pull/19359"&gt;#19359&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Property fallback for implicit &lt;code&gt;this&lt;/code&gt; has been deprecated. Please review the templates in your app and write &lt;code&gt;this.&lt;/code&gt; when it is appropriate, e.g. change &lt;code&gt;{{localProperty}}&lt;/code&gt; to &lt;code&gt;{{this.localProperty}}&lt;/code&gt;. (&lt;a href="https://deprecations.emberjs.com/v3.x#toc_this-property-fallback"&gt;Deprecations Guide&lt;/a&gt;, &lt;a href="https://github.com/emberjs/ember.js/pull/19371"&gt;#19371&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ember Classic has been deprecated.&lt;/strong&gt; (&lt;a href="https://deprecations.emberjs.com/v3.x#toc_editions-classic"&gt;Deprecations Guide&lt;/a&gt;, &lt;a href="https://github.com/emberjs/ember.js/pull/19372"&gt;#19372&lt;/a&gt;)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In preparation for v4.0 release, developers are encouraged to update their app to Ember Octane by following these steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In &lt;code&gt;config/optional-features.json&lt;/code&gt;, update the feature flags for Octane.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"application-template-wrapper"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"jquery-integration"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"template-only-glimmer-components"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Specify the Octane edition in &lt;code&gt;package.json&lt;/code&gt;.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"ember"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"edition"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"octane"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Check the &lt;a href="https://guides.emberjs.com/release/upgrading/current-edition/"&gt;official upgrade guide&lt;/a&gt; and seek help in the &lt;code&gt;#help&lt;/code&gt; channel on &lt;a href="https://discord.gg/emberjs"&gt;Ember Discord&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;(list continued from above)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Component managers that use the &lt;code&gt;v3.4&lt;/code&gt; capabilities should update to the most recent component capabilities available, which is currently &lt;code&gt;v3.13&lt;/code&gt;. (&lt;a href="https://deprecations.emberjs.com/v3.x#toc_manager-capabilities-components-3-4"&gt;Deprecations Guide&lt;/a&gt;, &lt;a href="https://github.com/emberjs/ember.js/pull/19373"&gt;#19373&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Modifier managers that use the &lt;code&gt;v3.13&lt;/code&gt; capabilities should update to the most recent modifier capabilities available, which is currently &lt;code&gt;v3.22&lt;/code&gt;. (&lt;a href="https://deprecations.emberjs.com/v3.x#toc_manager-capabilities-modifiers-3-13"&gt;Deprecations Guide&lt;/a&gt;, &lt;a href="https://github.com/emberjs/ember.js/pull/19373"&gt;#19373&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;{{hasBlock}}&lt;/code&gt; and &lt;code&gt;{{hasBlockParams}}&lt;/code&gt; properties have been deprecated. Use &lt;code&gt;{{has-block}}&lt;/code&gt; and &lt;code&gt;{{has-block-params}}&lt;/code&gt; helpers instead. (&lt;a href="https://deprecations.emberjs.com/v3.x#toc_has-block-and-has-block-params"&gt;Deprecations Guide&lt;/a&gt;, &lt;a href="https://github.com/emberjs/ember.js/pull/19374"&gt;#19374&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Passing &lt;code&gt;classBinding&lt;/code&gt; and &lt;code&gt;classNameBindings&lt;/code&gt; as arguments has been deprecated. (&lt;a href="https://deprecations.emberjs.com/v3.x#toc_class-binding-and-class-name-bindings-in-templates"&gt;Deprecations Guide&lt;/a&gt;, &lt;a href="https://github.com/emberjs/ember.js/pull/19375"&gt;#19375&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Accessing named arguments via &lt;code&gt;{{attrs}}&lt;/code&gt; has been deprecated. (&lt;a href="https://deprecations.emberjs.com/v3.x#toc_attrs-arg-access"&gt;Deprecations Guide&lt;/a&gt;, &lt;a href="https://github.com/emberjs/ember.js/pull/19375"&gt;#19375&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Array observers have been deprecated. (&lt;a href="https://deprecations.emberjs.com/v3.x#toc_array-observers"&gt;Deprecations Guide&lt;/a&gt;, &lt;a href="https://github.com/emberjs/ember.js/pull/19381"&gt;#19381&lt;/a&gt;)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Consider using the &lt;a href="https://github.com/mixonic/ember-cli-deprecation-workflow"&gt;ember-cli-deprecation-workflow&lt;/a&gt; addon if you would like to upgrade your application without immediately addressing deprecations.&lt;/p&gt;

&lt;p&gt;For more details on changes in Ember.js 3.26, please review the &lt;a href="https://github.com/emberjs/ember.js/releases/tag/v3.26.0"&gt;Ember.js 3.26.0 release page&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Ember Data
&lt;/h2&gt;

&lt;p&gt;Ember Data is the official data persistence library for Ember.js applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Changes in Ember Data 3.26
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Bug Fixes
&lt;/h4&gt;

&lt;p&gt;Ember Data 3.26 introduced 0 bug fixes.&lt;/p&gt;

&lt;h4&gt;
  
  
  Features
&lt;/h4&gt;

&lt;p&gt;Ember Data 3.26 introduced 0 features.&lt;/p&gt;

&lt;h4&gt;
  
  
  Deprecations
&lt;/h4&gt;

&lt;p&gt;Ember Data 3.26 introduced 0 deprecations.&lt;/p&gt;

&lt;p&gt;For more details on changes in Ember Data 3.26, please review the&lt;br&gt;
&lt;a href="https://github.com/emberjs/data/releases/tag/v3.26.0"&gt;Ember Data 3.26.0 release page&lt;/a&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  Ember CLI
&lt;/h2&gt;

&lt;p&gt;Ember CLI is the command line interface for managing and packaging Ember.js applications.&lt;/p&gt;
&lt;h3&gt;
  
  
  Upgrading Ember CLI
&lt;/h3&gt;

&lt;p&gt;You may upgrade Ember CLI using the &lt;code&gt;ember-cli-update&lt;/code&gt; project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx ember-cli-update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This utility will help you to update your app or addon to the latest Ember CLI version. You will probably encounter merge conflicts, in which the default behavior is to let you resolve conflicts on your own. For more information on the &lt;code&gt;ember-cli-update&lt;/code&gt; project, see &lt;a href="https://github.com/ember-cli/ember-cli-update"&gt;the GitHub README&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;While it is recommended to keep Ember CLI versions in sync with Ember and Ember Data, this is not required. After updating ember-cli, you can keep your current version(s) of Ember or Ember Data by editing &lt;code&gt;package.json&lt;/code&gt; to revert the changes to the lines containing &lt;code&gt;ember-source&lt;/code&gt; and &lt;code&gt;ember-data&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Changes in Ember CLI 3.26
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Bug Fixes
&lt;/h4&gt;

&lt;p&gt;Ember CLI 3.26 introduced 2 bug fixes.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Issue a better error message for add-on's missing an entry point. (&lt;a href="https://github.com/ember-cli/ember-cli/pull/9473"&gt;#9473&lt;/a&gt;); and&lt;/li&gt;
&lt;li&gt;Add Prettier files to &lt;code&gt;.npmignore&lt;/code&gt; file in addon blueprint (&lt;a href="https://github.com/ember-cli/ember-cli/pull/9437"&gt;#9437&lt;/a&gt;).&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Features
&lt;/h4&gt;

&lt;p&gt;Ember CLI 3.26 introduced 1 feature.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;ember-try&lt;/code&gt; test scenarios for &lt;code&gt;embroider-safe&lt;/code&gt; and &lt;code&gt;embroider-optimized&lt;/code&gt; for addons are now enabled using &lt;a href="https://github.com/embroider-build/embroider/tree/master/packages/test-setup"&gt;@embroider/test-setup&lt;/a&gt; allowing Embroider compatibility testing for addons test matrix (&lt;a href="https://github.com/ember-cli/ember-cli/pull/9436"&gt;#9436&lt;/a&gt;).&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Deprecations
&lt;/h4&gt;

&lt;p&gt;Ember CLI 3.26 introduced 0 deprecations.&lt;/p&gt;

&lt;p&gt;For more details on the changes in Ember CLI 3.26 and detailed upgrade&lt;br&gt;
instructions, please review the &lt;a href="https://github.com/ember-cli/ember-cli/releases/tag/v3.26.0"&gt;Ember CLI 3.26.0 release page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thank You!
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

</description>
      <category>ember</category>
      <category>javascript</category>
      <category>news</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Ember 3.25 Released</title>
      <dc:creator>Ember.js</dc:creator>
      <pubDate>Fri, 26 Feb 2021 06:44:59 +0000</pubDate>
      <link>https://dev.to/emberjs/ember-3-25-released-m88</link>
      <guid>https://dev.to/emberjs/ember-3-25-released-m88</guid>
      <description>&lt;p&gt;Today the Ember project is releasing version 3.25 of Ember.js, Ember Data, and Ember CLI.&lt;/p&gt;

&lt;p&gt;This release kicks off the 3.26 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 &lt;a href="https://github.com/ember-cli/ember-try"&gt;ember-try&lt;/a&gt; addon is a great way to continuously test your projects against the latest Ember releases.&lt;/p&gt;

&lt;p&gt;You can read more about our general release process here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://emberjs.com/releases/"&gt;Release Dashboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.emberjs.com/new-ember-release-process/"&gt;The Ember Release Cycle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.emberjs.com/ember-project-at-2-0/"&gt;The Ember Project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.emberjs.com/announcing-embers-first-lts/"&gt;Ember LTS Releases&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Ember.js
&lt;/h2&gt;

&lt;p&gt;Ember.js is the core framework for building ambitious web applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Changes in Ember.js 3.25
&lt;/h3&gt;

&lt;p&gt;Ember.js 3.25 is an incremental, backwards compatible release of Ember with bug fixes, performance improvements, and minor deprecations.&lt;/p&gt;

&lt;h4&gt;
  
  
  Bug Fixes
&lt;/h4&gt;

&lt;p&gt;Ember.js 3.25 contains several bug fixes, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Empty &lt;code&gt;hmtmlSafe&lt;/code&gt; strings are now considered false. (&lt;a href="https://github.com/emberjs/ember.js/pull/18148"&gt;#18148&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Template locals no longer clobber component invocations of the same name. (&lt;a href="https://github.com/emberjs/ember.js/pull/19351"&gt;#19351&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Improved error message when invoking nested components, e.g. &lt;code&gt;&amp;lt;Foo:Bar /&amp;gt;&lt;/code&gt;. (&lt;a href="https://github.com/emberjs/ember.js/pull/19336"&gt;#19336&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Improved error messages and stack traces for &lt;code&gt;&amp;lt;LinkTo /&amp;gt;&lt;/code&gt;. (&lt;a href="https://github.com/emberjs/ember.js/pull/19342"&gt;#19342&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Features
&lt;/h4&gt;

&lt;p&gt;Ember.js 3.25 introduced 2 features.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Template strict mode (&lt;a href="https://github.com/emberjs/ember.js/pull/19302"&gt;#19302&lt;/a&gt;, &lt;a href="https://github.com/emberjs/ember.js/pull/19306"&gt;#19306&lt;/a&gt;, &lt;a href="https://github.com/emberjs/ember.js/pull/19319"&gt;#19319&lt;/a&gt;)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;While this feature won't have an impact for Ember developers quite yet, it is an important step towards allowing more experimental work in templates, like template imports and single-file components.&lt;/p&gt;

&lt;p&gt;If these topics interest you, keep an eye on our &lt;a href="https://github.com/emberjs/rfcs"&gt;RFCs&lt;/a&gt; repository for activity and a chance to participate!&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Named blocks (&lt;a href="https://github.com/emberjs/ember.js/pull/19318"&gt;#19318&lt;/a&gt;)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This feature enables developers to yield distinct blocks from a component, unlocking powerful composition patterns for components.&lt;/p&gt;

&lt;p&gt;This feature is useful when you want to render different things depending on passed-in data.&lt;br&gt;
Let us implement a shopping cart that lists the items in it, or shows a message that says it is empty.&lt;br&gt;
We will be using &lt;code&gt;{{gt}}&lt;/code&gt; from &lt;a href="https://emberobserver.com/addons/ember-truth-helpers"&gt;&lt;code&gt;ember-truth-helpers&lt;/code&gt;&lt;/a&gt; to help implement this.&lt;/p&gt;

&lt;p&gt;First we write the component template:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight handlebars"&gt;&lt;code&gt;// app/components/cart.hbs
&lt;span class="k"&gt;{{#if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;gt&lt;/span&gt; &lt;span class="na"&gt;@list&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;length&lt;/span&gt; &lt;span class="nv"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="k"&gt;}}&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;ul&amp;gt;&lt;/span&gt;
    &lt;span class="k"&gt;{{#&lt;/span&gt;&lt;span class="nn"&gt;each&lt;/span&gt; &lt;span class="na"&gt;@list&lt;/span&gt; &lt;span class="nv"&gt;as&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="nv"&gt;item&lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="k"&gt;}}&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;&lt;span class="k"&gt;{{&lt;/span&gt;&lt;span class="nv"&gt;yield&lt;/span&gt; &lt;span class="nv"&gt;item&lt;/span&gt;&lt;span class="k"&gt;}}&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
    &lt;span class="k"&gt;{{/&lt;/span&gt;&lt;span class="nn"&gt;each&lt;/span&gt;&lt;span class="k"&gt;}}&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;
&lt;span class="k"&gt;{{else}}&lt;/span&gt;
  &lt;span class="k"&gt;{{&lt;/span&gt;&lt;span class="nv"&gt;yield&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"empty"&lt;/span&gt;&lt;span class="k"&gt;}}&lt;/span&gt;
&lt;span class="k"&gt;{{/if}}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Which can be used like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight handlebars"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;Cart&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;list=&lt;/span&gt;&lt;span class="k"&gt;{{&lt;/span&gt;&lt;span class="nv"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;shoppingList&lt;/span&gt;&lt;span class="k"&gt;}}&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;:default&lt;/span&gt; &lt;span class="na"&gt;as&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="na"&gt;listItem&lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;You have a &lt;span class="k"&gt;{{&lt;/span&gt;&lt;span class="nv"&gt;listItem&lt;/span&gt;&lt;span class="k"&gt;}}&lt;/span&gt;.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/:default&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;:empty&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Your cart is empty.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/:empty&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/Cart&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then when &lt;code&gt;shoppingList&lt;/code&gt; contains multiple elements, like &lt;code&gt;[ "apple", "pear", "banana" ]&lt;/code&gt;, it renders the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight handlebars"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;ul&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&lt;/span&gt;apple&lt;span class="nt"&gt;&amp;lt;/p&lt;/span&gt;&lt;span class="err"&gt;&amp;lt;/li&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&lt;/span&gt;pear&lt;span class="nt"&gt;&amp;lt;/p&lt;/span&gt;&lt;span class="err"&gt;&amp;lt;/li&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&lt;/span&gt;banana&lt;span class="nt"&gt;&amp;lt;/p&lt;/span&gt;&lt;span class="err"&gt;&amp;lt;/li&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But if &lt;code&gt;shoppingList&lt;/code&gt; is empty, it renders the following instead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight handlebars"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Your cart is empty.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Named blocks are also useful if you want to ensure a certain structure to your HTML, but want to enable customization of the content.&lt;br&gt;
An example of this would be an &lt;code&gt;&amp;lt;Article&amp;gt;&lt;/code&gt; component, as shown in the yieldable named blocks RFC (&lt;a href="https://emberjs.github.io/rfcs/0460-yieldable-named-blocks.html#detailed-design"&gt;#460&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;You can find more information in the &lt;a href="https://api.emberjs.com/ember/3.25/modules/@glimmer%2Fcomponent"&gt;Component API documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;
  
  
  Deprecations
&lt;/h4&gt;

&lt;p&gt;Ember.js 3.25 introduced 0 deprecations.&lt;/p&gt;

&lt;p&gt;For more details on changes in Ember.js 3.25, please review the &lt;a href="https://github.com/emberjs/ember.js/releases/tag/v3.25.0"&gt;Ember.js 3.25.0 release page&lt;/a&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  Ember Data
&lt;/h2&gt;

&lt;p&gt;Ember Data is the official data persistence library for Ember.js applications.&lt;/p&gt;
&lt;h3&gt;
  
  
  Changes in Ember Data 3.25
&lt;/h3&gt;

&lt;p&gt;Apart from documentation fixes and internal cleanup of feature flags, there were no changes.&lt;/p&gt;

&lt;p&gt;For more details on changes in Ember Data 3.25, please review the&lt;br&gt;
&lt;a href="https://github.com/emberjs/data/releases/tag/v3.25.0"&gt;Ember Data 3.25.0 release page&lt;/a&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  Ember CLI
&lt;/h2&gt;

&lt;p&gt;Ember CLI is the command line interface for managing and packaging Ember.js applications.&lt;/p&gt;
&lt;h3&gt;
  
  
  Upgrading Ember CLI
&lt;/h3&gt;

&lt;p&gt;You may upgrade Ember CLI using the &lt;code&gt;ember-cli-update&lt;/code&gt; project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx ember-cli-update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This utility will help you to update your app or addon to the latest Ember CLI version. You will probably encounter merge conflicts, in which the default behavior is to let you resolve conflicts on your own. For more information on the &lt;code&gt;ember-cli-update&lt;/code&gt; project, see &lt;a href="https://github.com/ember-cli/ember-cli-update"&gt;the GitHub README&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;While it is recommended to keep Ember CLI versions in sync with Ember and Ember Data, this is not required. After updating ember-cli, you can keep your current version(s) of Ember or Ember Data by editing &lt;code&gt;package.json&lt;/code&gt; to revert the changes to the lines containing &lt;code&gt;ember-source&lt;/code&gt; and &lt;code&gt;ember-data&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Changes in Ember CLI 3.25
&lt;/h3&gt;

&lt;p&gt;Apart from updated dependencies in the app and addon blueprints, there were no changes.&lt;/p&gt;

&lt;p&gt;For more details on the changes in Ember CLI 3.25 and detailed upgrade&lt;br&gt;
instructions, please review the &lt;a href="https://github.com/ember-cli/ember-cli/releases/tag/v3.25.0"&gt;Ember CLI 3.25.0 release page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thank You!
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

</description>
      <category>ember</category>
      <category>javascript</category>
      <category>news</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Ember 3.24 Released</title>
      <dc:creator>Ember.js</dc:creator>
      <pubDate>Thu, 07 Jan 2021 19:28:09 +0000</pubDate>
      <link>https://dev.to/emberjs/ember-3-24-released-1jne</link>
      <guid>https://dev.to/emberjs/ember-3-24-released-1jne</guid>
      <description>&lt;p&gt;Today the Ember project is releasing version 3.24 of Ember.js, Ember Data, and Ember CLI. 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.&lt;/p&gt;

&lt;p&gt;This release kicks off the 3.25 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 &lt;a href="https://github.com/ember-cli/ember-try"&gt;ember-try&lt;/a&gt; addon is a great way to continuously test your projects against the latest Ember releases.&lt;/p&gt;

&lt;p&gt;You can read more about our general release process here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://emberjs.com/releases/"&gt;Release Dashboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.emberjs.com/new-ember-release-process/"&gt;The Ember Release Cycle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.emberjs.com/ember-project-at-2-0/"&gt;The Ember Project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.emberjs.com/announcing-embers-first-lts/"&gt;Ember LTS Releases&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Ember.js
&lt;/h2&gt;

&lt;p&gt;Ember.js is the core framework for building ambitious web applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Changes in Ember.js 3.24
&lt;/h3&gt;

&lt;p&gt;Ember.js 3.24 is an incremental, backwards compatible release of Ember with bug fixes, performance improvements, and minor deprecations.&lt;/p&gt;

&lt;h4&gt;
  
  
  Bug Fixes
&lt;/h4&gt;

&lt;p&gt;Ember.js 3.24 introduced 4 bug fixes.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;When the &lt;code&gt;router&lt;/code&gt; service is injected (e.g. into a component), the &lt;code&gt;router&lt;/code&gt; service can automatically work in non-application tests. In other words, we no longer need to call &lt;code&gt;this.owner.setupRouter()&lt;/code&gt;. (&lt;a href="https://github.com/emberjs/ember.js/pull/19080"&gt;#19080&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;When there is no template associated with a component class, the low-level API &lt;code&gt;getComponentTemplate()&lt;/code&gt; now returns &lt;code&gt;undefined&lt;/code&gt; instead of &lt;code&gt;null&lt;/code&gt;. The return value of &lt;code&gt;undefined&lt;/code&gt; is what had been specified in the &lt;a href="https://github.com/emberjs/rfcs/blob/master/text/0481-component-templates-co-location.md#low-level-primitives"&gt;Component Templates Colocation RFC&lt;/a&gt;. (&lt;a href="https://github.com/emberjs/ember.js/pull/19253"&gt;#19253&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;In an Ember Engines app, the &lt;code&gt;&amp;lt;LinkTo&amp;gt;&lt;/code&gt; component once again supports &lt;a href="https://ember-engines.com/docs/links#linking-within-an-engine"&gt;linking within an engine&lt;/a&gt;. Please note, a fix was made possible through a breaking change in the private implementation of &lt;code&gt;&amp;lt;LinkTo&amp;gt;&lt;/code&gt;. When you upgrade your app to v3.24 or above, you will want to upgrade Ember Engines to at least &lt;code&gt;ember-engines@0.8.9&lt;/code&gt; (see &lt;a href="https://github.com/ember-engines/ember-engines/releases/tag/v0.8.9"&gt;release notes here&lt;/a&gt; for details). (&lt;a href="https://github.com/emberjs/ember.js/pull/19223"&gt;#19223&lt;/a&gt;) ⚠️&lt;/li&gt;
&lt;li&gt;When a computed property has a dependent key that includes &lt;code&gt;@each&lt;/code&gt;, followed by an aliased property, the computed property recomputes when the aliased property's value changes. (&lt;a href="https://github.com/emberjs/ember.js/pull/19280"&gt;#19280&lt;/a&gt;)&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Features
&lt;/h4&gt;

&lt;p&gt;Ember.js 3.24 introduced 3 features.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;When &lt;code&gt;ember-page-title&lt;/code&gt; is installed, the blueprint for a route template creates a &lt;code&gt;{{page-title}}&lt;/code&gt; helper invocation in addition to &lt;code&gt;{{outlet}}&lt;/code&gt;. For more information, please see &lt;a href="https://github.com/emberjs/rfcs/blob/master/text/0645-add-ember-page-title-addon.md"&gt;RFC #645&lt;/a&gt; and &lt;a href="https://ember-cli.github.io/ember-page-title/"&gt;&lt;code&gt;ember-page-title&lt;/code&gt; documentation&lt;/a&gt;. (&lt;a href="https://github.com/emberjs/ember.js/pull/19224"&gt;#19224&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;The interface of &lt;code&gt;DeprecationOptions&lt;/code&gt;, which can be passed to the &lt;code&gt;deprecate()&lt;/code&gt; function, requires the keys &lt;code&gt;for&lt;/code&gt; and &lt;code&gt;since&lt;/code&gt; to exist. For more information, please see the &lt;a href="https://github.com/emberjs/rfcs/blob/master/text/0649-deprecation-staging.md#deprecate"&gt;Deprecation Staging RFC&lt;/a&gt;. (&lt;a href="https://github.com/emberjs/ember.js/pull/19133"&gt;#19133&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Glimmer VM, the rendering engine, has been upgraded to version 0.65.0. The upgrade includes a bug fix and a few upstreams. (&lt;a href="https://github.com/emberjs/ember.js/pull/19258"&gt;#19258&lt;/a&gt;, &lt;a href="https://github.com/emberjs/ember.js/pull/19261"&gt;#19261&lt;/a&gt;, &lt;a href="https://github.com/emberjs/ember.js/pull/19267"&gt;#19267&lt;/a&gt;)&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Deprecations
&lt;/h4&gt;

&lt;p&gt;Ember.js 3.24 introduced 4 deprecations.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Going back to the interface of &lt;code&gt;DeprecationOptions&lt;/code&gt; (see Features above), forgetting to pass &lt;code&gt;for&lt;/code&gt; or &lt;code&gt;since&lt;/code&gt; will trigger a deprecation message. (&lt;a href="https://github.com/emberjs/ember.js/pull/19133"&gt;#19133&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Ember.String.loc&lt;/code&gt; function, &lt;code&gt;@ember/string#loc&lt;/code&gt; function, and &lt;code&gt;{{loc}}&lt;/code&gt; helper have been deprecated in favor of a dedicated localization solution like &lt;a href="https://github.com/ember-intl/ember-intl"&gt;ember-intl&lt;/a&gt;. For more information, please see the &lt;a href="https://deprecations.emberjs.com/v3.x/#toc_ember-string-loc"&gt;Deprecations Guide&lt;/a&gt;. (&lt;a href="https://github.com/emberjs/ember.js/pull/19211"&gt;#19211&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Calling &lt;code&gt;camelize&lt;/code&gt;, &lt;code&gt;capitalize&lt;/code&gt;, &lt;code&gt;classify&lt;/code&gt;, &lt;code&gt;dasherize&lt;/code&gt;, &lt;code&gt;decamelize&lt;/code&gt;, &lt;code&gt;underscore&lt;/code&gt;, or &lt;code&gt;w&lt;/code&gt;—these are &lt;a href="https://api.emberjs.com/ember/3.23/classes/String"&gt;&lt;code&gt;Ember.String&lt;/code&gt; methods&lt;/a&gt;—on a string is deprecated. Instead of calling the method on the string, you can import the function from &lt;code&gt;@ember/string&lt;/code&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Before&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;mascot&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Empress Zoey&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;mascot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;camelize&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;  &lt;span class="c1"&gt;// empressZoey&lt;/span&gt;

&lt;span class="c1"&gt;// After&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;camelize&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@ember/string&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;mascot&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Empress Zoey&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;camelize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;mascot&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;  &lt;span class="c1"&gt;// empressZoey&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For more information, please see the &lt;a href="https://deprecations.emberjs.com/v3.x/#toc_ember-string-prototype-extensions"&gt;Deprecations Guide&lt;/a&gt;. (&lt;a href="https://github.com/emberjs/ember.js/pull/19234"&gt;#19234&lt;/a&gt;)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;tryInvoke&lt;/code&gt; from &lt;code&gt;@ember/utils&lt;/code&gt; module has been deprecated in favor of JavaScript's optional chaining &lt;code&gt;?.&lt;/code&gt;.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Before&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;tryInvoke&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@ember/utils&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;today&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;01/07/2021&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;tryInvoke&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;today&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;getTime&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;              &lt;span class="c1"&gt;// 1609974000000&lt;/span&gt;
&lt;span class="nx"&gt;tryInvoke&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;today&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;setFullYear&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2014&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;  &lt;span class="c1"&gt;// 1389049200000&lt;/span&gt;
&lt;span class="nx"&gt;tryInvoke&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;today&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;noSuchMethod&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2014&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt; &lt;span class="c1"&gt;// undefined&lt;/span&gt;

&lt;span class="c1"&gt;// After&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;today&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;01/07/2021&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;today&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getTime&lt;/span&gt;&lt;span class="p"&gt;?.();&lt;/span&gt;          &lt;span class="c1"&gt;// 1609974000000&lt;/span&gt;
&lt;span class="nx"&gt;today&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;setFullYear&lt;/span&gt;&lt;span class="p"&gt;?.(&lt;/span&gt;&lt;span class="mi"&gt;2014&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  &lt;span class="c1"&gt;// 1389049200000&lt;/span&gt;
&lt;span class="nx"&gt;today&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;noSuchMethod&lt;/span&gt;&lt;span class="p"&gt;?.(&lt;/span&gt;&lt;span class="mi"&gt;2014&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// undefined&lt;/span&gt;

&lt;span class="cm"&gt;/*
  Note, `today` is used in the context of `tryInvoke`.
  As a result, we can assume that `today` is an object
  and write `today.getTime` instead of `today?.getTime`.

  The examples exist only to illustrate how to refactor
  `tryInvoke`. Please don't write `today.getTime?.()`
  in practice. :)
*/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For more information, please see the &lt;a href="https://deprecations.emberjs.com/v3.x#toc_ember-utils-try-invoke"&gt;Deprecations Guide&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Consider using the &lt;a href="https://github.com/mixonic/ember-cli-deprecation-workflow"&gt;ember-cli-deprecation-workflow&lt;/a&gt; addon if you would like to upgrade your application without immediately addressing deprecations.&lt;/p&gt;

&lt;p&gt;Last but not least, Ember.js 3.24 removed a few feature flags and an experimental API called &lt;code&gt;expandLocalLookup&lt;/code&gt;. For more details on changes in Ember.js 3.24, please review the &lt;a href="https://github.com/emberjs/ember.js/releases/tag/v3.24.0"&gt;Ember.js 3.24.0 release page&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Ember Data
&lt;/h2&gt;

&lt;p&gt;Ember Data is the official data persistence library for Ember.js applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Changes in Ember Data 3.24
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Bug Fixes
&lt;/h4&gt;

&lt;p&gt;Ember Data 3.24 introduced 1 bug fix.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In a production environment, an attempt to set something on a deleted record no longer shows the value in the error message. This was done to prevent leaking sensitive data. (&lt;a href="https://github.com/emberjs/data/pull/7370"&gt;#7370&lt;/a&gt;)&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Features
&lt;/h4&gt;

&lt;p&gt;Ember Data 3.24 introduced 0 features.&lt;/p&gt;

&lt;h4&gt;
  
  
  Deprecations
&lt;/h4&gt;

&lt;p&gt;Ember Data 3.24 introduced 0 deprecations.&lt;/p&gt;

&lt;p&gt;For more details on changes in Ember Data 3.24, please review the&lt;br&gt;
&lt;a href="https://github.com/emberjs/data/releases/tag/v3.24.0"&gt;Ember Data 3.24.0 release page&lt;/a&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  Ember CLI
&lt;/h2&gt;

&lt;p&gt;Ember CLI is the command line interface for managing and packaging Ember.js applications.&lt;/p&gt;
&lt;h3&gt;
  
  
  Upgrading Ember CLI
&lt;/h3&gt;

&lt;p&gt;You may upgrade Ember CLI using the &lt;code&gt;ember-cli-update&lt;/code&gt; project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx ember-cli-update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This utility will help you to update your app or addon to the latest Ember CLI version. You will probably encounter merge conflicts, in which the default behavior is to let you resolve conflicts on your own. For more information on the &lt;code&gt;ember-cli-update&lt;/code&gt; project, see &lt;a href="https://github.com/ember-cli/ember-cli-update"&gt;the GitHub README&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;While it is recommended to keep Ember CLI versions in sync with Ember and Ember Data, this is not required. After updating ember-cli, you can keep your current version(s) of Ember or Ember Data by editing &lt;code&gt;package.json&lt;/code&gt; to revert the changes to the lines containing &lt;code&gt;ember-source&lt;/code&gt; and &lt;code&gt;ember-data&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Changes in Ember CLI 3.24
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Bug Fixes
&lt;/h4&gt;

&lt;p&gt;Ember CLI 3.24 introduced 1 bug fix.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;When Embroider v2 addons are present, prevent forming a cycle in the build process. (&lt;a href="https://github.com/ember-cli/ember-cli/pull/9402"&gt;#9402&lt;/a&gt;)&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Features
&lt;/h4&gt;

&lt;p&gt;Ember CLI 3.24 upgraded the packages that are present in the &lt;code&gt;package.json&lt;/code&gt; blueprint to their latest version. There are 4 notable changes to the &lt;code&gt;package.json&lt;/code&gt; blueprint:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;ember-page-title&lt;/code&gt; has been added to the blueprint. For more information, please see &lt;a href="https://github.com/emberjs/rfcs/blob/master/text/0645-add-ember-page-title-addon.md"&gt;RFC #645&lt;/a&gt; and &lt;a href="https://ember-cli.github.io/ember-page-title/"&gt;&lt;code&gt;ember-page-title&lt;/code&gt; documentation&lt;/a&gt;. (&lt;a href="https://github.com/ember-cli/ember-cli/pull/9372"&gt;#9372&lt;/a&gt;, &lt;a href="https://github.com/ember-cli/ember-cli/pull/9382"&gt;#9382&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ember-qunit&lt;/code&gt; has been upgraded to &lt;a href="https://github.com/emberjs/ember-qunit/releases/tag/v5.0.0"&gt;v5&lt;/a&gt; (a major version change). Following the &lt;a href="https://github.com/emberjs/ember-qunit/blob/master/docs/migration.md"&gt;migration guide&lt;/a&gt;, the &lt;code&gt;package.json&lt;/code&gt; blueprint includes &lt;code&gt;@ember/test-helpers&lt;/code&gt; and &lt;code&gt;qunit&lt;/code&gt;. The blueprints for &lt;code&gt;tests/index.html&lt;/code&gt; and &lt;code&gt;tests/test-helper.js&lt;/code&gt; have been updated as well. (&lt;a href="https://github.com/ember-cli/ember-cli/pull/9340"&gt;#9340&lt;/a&gt;, &lt;a href="https://github.com/ember-cli/ember-cli/pull/9371"&gt;#9371&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;eslint-plugin-ember&lt;/code&gt; has been upgraded to &lt;a href="https://github.com/ember-cli/eslint-plugin-ember/releases/tag/v10.0.0"&gt;v10&lt;/a&gt; (a major version change), which promoted &lt;code&gt;octane&lt;/code&gt; rules to &lt;code&gt;recommended&lt;/code&gt; and enabled several additional rules as &lt;code&gt;recommended&lt;/code&gt;. To learn more about these linting rules, please check the &lt;a href="https://github.com/ember-cli/eslint-plugin-ember/tree/v10.0.0#-rules"&gt;&lt;code&gt;eslint-plugin-ember&lt;/code&gt; documentation&lt;/a&gt;. (&lt;a href="https://github.com/ember-cli/ember-cli/pull/9403"&gt;#9403&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;prettier&lt;/code&gt; (along with &lt;code&gt;eslint-config-prettier&lt;/code&gt; and &lt;code&gt;eslint-plugin-prettier&lt;/code&gt;) has been added to the blueprint. To learn more, please see &lt;a href="https://github.com/emberjs/rfcs/blob/master/text/0628-prettier.md"&gt;RFC #628&lt;/a&gt; and &lt;a href="https://prettier.io/docs/en/index.html"&gt;Prettier documentation&lt;/a&gt;. (&lt;a href="https://github.com/ember-cli/ember-cli/pull/9391"&gt;#9391&lt;/a&gt;, &lt;a href="https://github.com/ember-cli/ember-cli/pull/9407"&gt;#9407&lt;/a&gt;, &lt;a href="https://github.com/ember-cli/ember-cli/pull/9410"&gt;#9410&lt;/a&gt;)&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Deprecations
&lt;/h4&gt;

&lt;p&gt;Ember CLI 3.24 introduced 0 deprecations.&lt;/p&gt;

&lt;p&gt;For more details on the changes in Ember CLI 3.24 and detailed upgrade&lt;br&gt;
instructions, please review the &lt;a href="https://github.com/ember-cli/ember-cli/releases/tag/v3.24.0"&gt;Ember CLI 3.24.0 release page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thank You!
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

</description>
      <category>ember</category>
      <category>javascript</category>
      <category>news</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Ember 3.23 Released</title>
      <dc:creator>Ember.js</dc:creator>
      <pubDate>Tue, 15 Dec 2020 03:33:11 +0000</pubDate>
      <link>https://dev.to/emberjs/ember-3-23-released-479m</link>
      <guid>https://dev.to/emberjs/ember-3-23-released-479m</guid>
      <description>&lt;p&gt;Today the Ember project is releasing version 3.23 of Ember.js, Ember Data, and Ember CLI.&lt;/p&gt;

&lt;p&gt;This release kicks off the 3.24 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 &lt;a href="https://github.com/ember-cli/ember-try"&gt;ember-try&lt;/a&gt; addon is a great way to continuously test your projects against the latest Ember releases.&lt;/p&gt;

&lt;p&gt;You can read more about our general release process here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://emberjs.com/releases/"&gt;Release Dashboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://emberjs.com/blog/2013/09/06/new-ember-release-process.html"&gt;The Ember Release Cycle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://emberjs.com/blog/2015/06/16/ember-project-at-2-0.html"&gt;The Ember Project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://emberjs.com/blog/2016/02/25/announcing-embers-first-lts.html"&gt;Ember LTS Releases&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Ember.js
&lt;/h2&gt;

&lt;p&gt;Ember.js is the core framework for building ambitious web applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Changes in Ember.js 3.23
&lt;/h3&gt;

&lt;p&gt;Ember.js 3.23 is an incremental, backwards compatible release of Ember with bugfixes, performance improvements, and minor deprecations.&lt;/p&gt;

&lt;p&gt;Ember.js 3.23 introduced several bug fixes, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Updated Glimmer (rendering engine) to improve developer experience with debugging (&lt;a href="https://github.com/emberjs/ember.js/pull/19213"&gt;#19213&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Ensured that &lt;code&gt;(fn (mut ...))&lt;/code&gt; works with falsy values (&lt;a href="https://github.com/emberjs/ember.js/pull/19221"&gt;#19221&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fixed bugs in query parameters with intermediate transitions (&lt;a href="https://github.com/emberjs/ember.js/pull/19249"&gt;#19249&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Prevented multiple serialization of query parameters on &lt;code&gt;activeTransition&lt;/code&gt; (&lt;a href="https://github.com/emberjs/ember.js/pull/19236"&gt;#19236&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Prevented dynamic invocation of string value when referenced directly in angle brackets (&lt;a href="https://github.com/emberjs/ember.js/pull/19122"&gt;#19122&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Issued a deprecation for tracked mutation in &lt;code&gt;constructor&lt;/code&gt; during rendering (&lt;a href="https://github.com/emberjs/ember.js/pull/19282"&gt;#19282&lt;/a&gt;) ⚠️&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  New Features
&lt;/h4&gt;

&lt;p&gt;Ember.js 3.23 introduced 2 features.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Implemented and enabled &lt;code&gt;invokeHelper&lt;/code&gt; from &lt;a href="https://github.com/emberjs/rfcs/blob/master/text/0626-invoke-helper.md"&gt;JavaScript Helper Invocation API RFC&lt;/a&gt;. The &lt;code&gt;invokeHelper&lt;/code&gt; can be used to create and call an instance of the helper in a component. (&lt;a href="https://github.com/emberjs/ember.js/pull/19171"&gt;#19171&lt;/a&gt;, &lt;a href="https://github.com/emberjs/ember.js/pull/19182"&gt;#19182&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Implemented and enabled helper manager from &lt;a href="https://github.com/emberjs/rfcs/blob/master/text/0625-helper-managers.md"&gt;Helper Managers RFC&lt;/a&gt;. It provides a low-level primitive for defining helpers. (&lt;a href="https://github.com/emberjs/ember.js/pull/19160"&gt;#19160&lt;/a&gt;, &lt;a href="https://github.com/emberjs/ember.js/pull/19182"&gt;#19182&lt;/a&gt;)&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Deprecations
&lt;/h4&gt;

&lt;p&gt;Ember.js 3.23 introduced 0 deprecations.&lt;/p&gt;

&lt;p&gt;For more details on changes in Ember.js 3.23, please review the &lt;a href="https://github.com/emberjs/ember.js/releases/tag/v3.23.0"&gt;Ember.js 3.23.0 release page&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Ember Data
&lt;/h2&gt;

&lt;p&gt;Ember Data is the official data persistence library for Ember.js applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Changes in Ember Data 3.23
&lt;/h3&gt;

&lt;p&gt;This release included several bug fixes and improvements, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Improved debug message (&lt;a href="https://github.com/emberjs/data/pull/7337"&gt;#7337&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Polymorphic relation type changes on first load (&lt;a href="https://github.com/emberjs/data/pull/7363/files"&gt;#7363&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Deprecations (1)
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;najax when ember-fetch is also a dependency&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Building on the deprecation of the previous minor version, &lt;a href="https://github.com/emberjs/data/pull/7230"&gt;#7230&lt;/a&gt; also triggers a deprecation warning when &lt;code&gt;ember-fetch&lt;/code&gt; is installed to better guide users on how to update their app.&lt;br&gt;
You can consult the &lt;a href="https://deprecations.emberjs.com/ember-data/v3.x/#toc_ember-data-najax-fallback"&gt;Deprecate &lt;code&gt;najax&lt;/code&gt; request&lt;/a&gt; deprecation guide for more information.&lt;/p&gt;

&lt;p&gt;For more details on changes in Ember Data 3.23, please review the&lt;br&gt;
&lt;a href="https://github.com/emberjs/data/releases/tag/v3.23.0"&gt;Ember Data 3.23.0 release page&lt;/a&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  Ember CLI
&lt;/h2&gt;

&lt;p&gt;Ember CLI is the command line interface for managing and packaging Ember.js applications.&lt;/p&gt;
&lt;h3&gt;
  
  
  Upgrading Ember CLI
&lt;/h3&gt;

&lt;p&gt;You may upgrade Ember CLI easily using the ember-cli-update project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx ember-cli-update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This utility will help you to update your app or addon to the latest Ember CLI version. You will probably encounter merge conflicts, in which the default behavior is to let you resolve conflicts on your own. For more information on the &lt;code&gt;ember-cli-update&lt;/code&gt; project, see &lt;a href="https://github.com/ember-cli/ember-cli-update"&gt;the GitHub README&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;While it is recommended to keep Ember CLI versions in sync with Ember and Ember Data, this is not required. After updating ember-cli, you can keep your current version(s) of Ember or Ember Data by editing &lt;code&gt;package.json&lt;/code&gt; to revert the changes to the lines containing &lt;code&gt;ember-source&lt;/code&gt; and &lt;code&gt;ember-data&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Changes in Ember CLI 3.23
&lt;/h3&gt;

&lt;p&gt;No significant changes were introduced in this version of Ember CLI.&lt;br&gt;
Upcoming changes to how the blueprint for new applications sets up testing were delayed to next minor version due to regressions.&lt;/p&gt;




&lt;p&gt;For more details on the changes in Ember CLI 3.23 and detailed upgrade&lt;br&gt;
instructions, please review the &lt;a href="https://github.com/ember-cli/ember-cli/releases/tag/v3.23.0"&gt;Ember CLI 3.23.0 release page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thank You!
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

</description>
      <category>ember</category>
      <category>javascript</category>
      <category>news</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Ember 3.22 Released</title>
      <dc:creator>Ember.js</dc:creator>
      <pubDate>Tue, 20 Oct 2020 14:19:34 +0000</pubDate>
      <link>https://dev.to/emberjs/ember-3-22-released-57el</link>
      <guid>https://dev.to/emberjs/ember-3-22-released-57el</guid>
      <description>&lt;p&gt;Today the Ember project is releasing version 3.22 of Ember.js, Ember Data, and Ember CLI.&lt;/p&gt;

&lt;p&gt;This release kicks off the 3.23 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 &lt;a href="https://github.com/ember-cli/ember-try"&gt;ember-try&lt;/a&gt; addon is a great way to continuously test your projects against the latest Ember releases.&lt;/p&gt;

&lt;p&gt;You can read more about our general release process here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://emberjs.com/releases/"&gt;Release Dashboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://emberjs.com/blog/2013/09/06/new-ember-release-process.html"&gt;The Ember Release Cycle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://emberjs.com/blog/2015/06/16/ember-project-at-2-0.html"&gt;The Ember Project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://emberjs.com/blog/2016/02/25/announcing-embers-first-lts.html"&gt;Ember LTS Releases&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Ember.js
&lt;/h2&gt;

&lt;p&gt;Ember.js is the core framework for building ambitious web applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Changes in Ember.js 3.22
&lt;/h3&gt;

&lt;p&gt;Ember.js 3.22 is an incremental, backwards compatible release of Ember with bugfixes, performance improvements, and minor deprecations.&lt;/p&gt;

&lt;p&gt;Ember.js 3.22 introduced several bug fixes, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;RouterService#isActive&lt;/code&gt; updates correctly when the route changes. (&lt;a href="https://github.com/emberjs/ember.js/pull/19094"&gt;#19094&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;A custom modifier manager only consumes arguments that it actually uses. (Previously, the manager would eagerly consume all arguments.) In order for specific modifiers to take advantage of this change, they need to call &lt;code&gt;modifierCapabilities('3.22')&lt;/code&gt; (instead of &lt;code&gt;'3.13'&lt;/code&gt;). (&lt;a href="https://github.com/emberjs/ember.js/pull/19163"&gt;#19163&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Modifier manager accepts the resolved value of &lt;code&gt;owner.factoryFor&lt;/code&gt; directly. This approach aligns with how helpers and component managers work. (&lt;a href="https://github.com/emberjs/ember.js/pull/19170"&gt;#19170&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Changes made to &lt;code&gt;protocolForUrl&lt;/code&gt; (in &lt;code&gt;3.22.0-beta.2+&lt;/code&gt;) work in &lt;code&gt;fastboot@3.1.0&lt;/code&gt; environment by leveraging the native JavaScript &lt;code&gt;URL&lt;/code&gt; global. (&lt;a href="https://github.com/emberjs/ember.js/pull/19124"&gt;#19124&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  New Features
&lt;/h4&gt;

&lt;p&gt;Ember.js 3.22 introduced 3 features.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Enabled &lt;code&gt;@ember/destroyable&lt;/code&gt; API, which allows you to create and manage your own destroyables. For more information, please see the &lt;a href="https://emberjs.github.io/rfcs/0580-destroyables.html"&gt;Destroyables RFC&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Enabled Cache API, a low-level primitive for memoizing the result of a function based on autotracking. (You can install a &lt;a href="https://github.com/ember-polyfills/ember-cache-primitive-polyfill"&gt;polyfill&lt;/a&gt; for apps between versions 3.13 and 3.21.) For more information, please check the &lt;a href="https://guides.emberjs.com/release/in-depth-topics/autotracking-in-depth/#toc_caching-of-tracked-properties"&gt;Ember Guides&lt;/a&gt; and &lt;a href="https://emberjs.github.io/rfcs/0615-autotracking-memoization.html"&gt;Autotracking Memoization RFC&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Allowed passing the &lt;code&gt;transition&lt;/code&gt; object to 2 route hooks, &lt;code&gt;activate&lt;/code&gt; and &lt;code&gt;deactivate&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Deprecations
&lt;/h4&gt;

&lt;p&gt;Ember.js 3.22 introduced 0 deprecations.&lt;/p&gt;




&lt;h2&gt;
  
  
  Ember Data
&lt;/h2&gt;

&lt;p&gt;Ember Data is the official data persistence library for Ember.js applications. &lt;/p&gt;

&lt;h3&gt;
  
  
  Changes in Ember Data 3.22
&lt;/h3&gt;

&lt;p&gt;Ember Data 3.22 included several bug fixes of note, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;several fixes ensuring that the &lt;code&gt;Errors.errorsFor&lt;/code&gt; array and subarray are properly updated and that autotracking works &lt;a href="https://github.com/emberjs/data/pull/7273"&gt;#7273&lt;/a&gt;, &lt;a href="https://github.com/emberjs/data/pull/7330"&gt;#7330&lt;/a&gt;, and &lt;a href="https://github.com/emberjs/data/pull/7331"&gt;#7331&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/emberjs/data/pull/7322"&gt;#7322&lt;/a&gt; disables the esm cache to solve build time errors some applications were experiencing; and&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/emberjs/data/pull/7126"&gt;#7126&lt;/a&gt; addresses relationship state when sideposting with &lt;code&gt;lid&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  New Features
&lt;/h4&gt;

&lt;p&gt;Ember Data 3.22 introduced 0 features.&lt;/p&gt;

&lt;h4&gt;
  
  
  Deprecations
&lt;/h4&gt;

&lt;p&gt;Ember Data 3.22 introduced 1 deprecation.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Use of &lt;code&gt;najax&lt;/code&gt; has been &lt;a href="https://github.com/emberjs/data/pull/7230"&gt;deprecated&lt;/a&gt; in favor of &lt;code&gt;ember-fetch&lt;/code&gt; when FastBoot is installed. To learn how to migrate your app, please see the &lt;a href="https://deprecations.emberjs.com/ember-data/v3.x/#toc_ember-data-najax-fallback"&gt;Deprecations Guide&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For more details on changes in Ember Data 3.22, please review the&lt;br&gt;
&lt;a href="https://github.com/emberjs/data/releases/tag/v3.22.0"&gt;Ember Data 3.22.0 release page&lt;/a&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  Ember CLI
&lt;/h2&gt;

&lt;p&gt;Ember CLI is the command line interface for managing and packaging Ember.js applications.&lt;/p&gt;
&lt;h3&gt;
  
  
  Upgrading Ember CLI
&lt;/h3&gt;

&lt;p&gt;You may upgrade Ember CLI easily using the ember-cli-update project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx ember-cli-update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This utility will help you to update your app or addon to the latest Ember CLI version. You will probably encounter merge conflicts, in which the default behavior is to let you resolve conflicts on your own. For more information on the &lt;code&gt;ember-cli-update&lt;/code&gt; project, see &lt;a href="https://github.com/ember-cli/ember-cli-update"&gt;the GitHub README&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;While it is recommended to keep Ember CLI versions in sync with Ember and Ember Data, this is not required. After updating ember-cli, you can keep your current version(s) of Ember or Ember Data by editing &lt;code&gt;package.json&lt;/code&gt; to revert the changes to the lines containing &lt;code&gt;ember-source&lt;/code&gt; and &lt;code&gt;ember-data&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Changes in Ember CLI 3.22
&lt;/h3&gt;

&lt;p&gt;Ember CLI 3.22 includes only internal changes. However, please note that &lt;a href="https://github.com/ember-cli/eslint-plugin-ember"&gt;eslint-plugin-ember&lt;/a&gt; released a new major version, &lt;code&gt;v9.x&lt;/code&gt;. The new version introduces 6 recommended rules and removes support of Node &lt;code&gt;v13&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;New Ember apps will install &lt;code&gt;v9&lt;/code&gt; or higher of &lt;code&gt;eslint-plugin-ember&lt;/code&gt;, which may limit the version of Node that you use. To learn more, please &lt;a href="https://github.com/ember-cli/eslint-plugin-ember/releases/tag/v9.0.0"&gt;check out the changelog for &lt;code&gt;eslint-plugin-ember&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  New Features
&lt;/h4&gt;

&lt;p&gt;Ember CLI 3.22 introduced 0 features.&lt;/p&gt;

&lt;h4&gt;
  
  
  Deprecations
&lt;/h4&gt;

&lt;p&gt;Ember CLI 3.22 introduced 0 deprecations.&lt;/p&gt;




&lt;p&gt;For more details on the changes in Ember CLI 3.22 and detailed upgrade&lt;br&gt;
instructions, please review the &lt;a href="https://github.com/ember-cli/ember-cli/releases/tag/v3.22.0"&gt;Ember CLI 3.22.0 release page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thank You!
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

</description>
      <category>ember</category>
      <category>javascript</category>
      <category>news</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Hacktoberfest 2020</title>
      <dc:creator>Ember.js</dc:creator>
      <pubDate>Thu, 01 Oct 2020 16:41:58 +0000</pubDate>
      <link>https://dev.to/emberjs/hacktoberfest-2020-1dno</link>
      <guid>https://dev.to/emberjs/hacktoberfest-2020-1dno</guid>
      <description>&lt;p&gt;Have you ever spotted something in Ember code or documentation that needed fixing? Did you want to get involved in contributing to open source, but you have no idea where to start?&lt;/p&gt;

&lt;p&gt;Good news! It's Hacktoberfest 2020, and you are invited to participate in Ember-focused special events and mentorship opportunities through the month of October. You can make some commits, meet some new people, and maybe get some free stuff!&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Hacktoberfest?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://hacktoberfest.digitalocean.com/"&gt;Hacktoberfest&lt;/a&gt; is an annual, worldwide celebration organized by DigitalOcean and sponsored by many companies that use open source software.&lt;/p&gt;

&lt;p&gt;The premise is simple: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sign up anytime between October 1 and October 31&lt;/li&gt;
&lt;li&gt;Make 4 valid Pull Requests to &lt;em&gt;any&lt;/em&gt; public repositories on GitHub&lt;/li&gt;
&lt;li&gt;If you are among the first 70,000 developers who complete the challenge, you get a prize. This year, you can select between a T-shirt and a tree planted in your name.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Many open source project maintainers put in some extra effort during Hacktoberfest to make it easy and fun to participate in open source.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is happening in the Ember community?
&lt;/h2&gt;

&lt;p&gt;Here's what you can expect this year!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;On Saturday, October 10th,&lt;/strong&gt; past contributors will be available to pair with anyone who wants to help out! If you have questions or need some help finding an issue to work on, this is a great place to start. Specific times will be announced soon.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;On Friday, October 16th,&lt;/strong&gt; there will be an Ember Contributors Workshop! Tickets are sold out but you can read more about the event on the &lt;a href="http://emberfest.eu/"&gt;EmberFest website&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;At any time,&lt;/strong&gt; join the &lt;code&gt;#hacktoberfest&lt;/code&gt; channel in the &lt;a href="https://discord.gg/emberjs"&gt;Ember Community Discord&lt;/a&gt; to connect with other developers. You can find a buddy to pair with, a mentor to guide you, or toss around ideas.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are someone who is willing to help mentor new contributors, please let us know in &lt;code&gt;#hacktoberfest&lt;/code&gt; on Discord. Addon maintainers are welcome to post issues they need help with too!&lt;/p&gt;

&lt;p&gt;Additionally, there are several more groups within the Ember Community Discord where you can find others to collaborate with. There are Discord channels for women, LGBTQ+, and people of color. If you belong to one of those groups, you can ask to join in the &lt;code&gt;#discord-server-admin&lt;/code&gt; channel.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do I choose what to work on?
&lt;/h2&gt;

&lt;p&gt;It all depends on your interests! One of the best ways to get involved in open source is to pick up a teeny tiny issue so you can learn the flow and what to expect. Then, consider making an improvement to something you regularly use; for example, a feature, test, or fix to API documentation.&lt;/p&gt;

&lt;p&gt;For ideas, you can visit &lt;a href="https://help-wanted.emberjs.com/"&gt;Ember's Help Wanted&lt;/a&gt;. The Ember Learning Team and others are curating some super beginner-friendly issues. In Help Wanted, you can find these issues, along with more intermediate and advanced issues. If you want to help, comment on an issue to let others know that you are working on it. If the issue you want to work on is taken, try asking if the other volunteers would like to collaborate!&lt;/p&gt;

&lt;h2&gt;
  
  
  Can I participate if I am not working on Ember things?
&lt;/h2&gt;

&lt;p&gt;Absolutely! Hacktoberfest is a celebration for all open source projects. Ember is just one of many.&lt;/p&gt;

</description>
      <category>ember</category>
      <category>javascript</category>
      <category>hacktoberfest</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Ember 3.21 Released</title>
      <dc:creator>Ember.js</dc:creator>
      <pubDate>Wed, 02 Sep 2020 16:21:51 +0000</pubDate>
      <link>https://dev.to/emberjs/ember-3-21-released-44bp</link>
      <guid>https://dev.to/emberjs/ember-3-21-released-44bp</guid>
      <description>&lt;p&gt;Today the Ember project is releasing version 3.21 of Ember.js, Ember Data, and Ember CLI.&lt;/p&gt;

&lt;p&gt;Version 3.20 of Ember is now promoted to LTS (Long Term Support). An LTS version of Ember continues to receive security updates for 9 release cycles (54 weeks) and bugfixes for 6 cycles (36 weeks). LTS releases typically occur every four minor versions. The previous LTS version of Ember was 3.16.&lt;/p&gt;

&lt;p&gt;This release kicks off the 3.22 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 &lt;a href="https://github.com/ember-cli/ember-try"&gt;ember-try&lt;/a&gt; addon is a great way to continuously test your projects against the latest Ember releases.&lt;/p&gt;

&lt;p&gt;You can read more about our general release process here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://emberjs.com/releases/"&gt;Release Dashboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://emberjs.com/blog/2013/09/06/new-ember-release-process.html"&gt;The Ember Release Cycle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://emberjs.com/blog/2015/06/16/ember-project-at-2-0.html"&gt;The Ember Project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://emberjs.com/blog/2016/02/25/announcing-embers-first-lts.html"&gt;Ember LTS Releases&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Ember.js
&lt;/h2&gt;

&lt;p&gt;Ember.js is the core framework for building ambitious web applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Changes in Ember.js 3.21
&lt;/h3&gt;

&lt;p&gt;Ember.js 3.21 is an incremental, backwards compatible release of Ember with bugfixes, performance improvements, and minor deprecations.&lt;/p&gt;

&lt;h4&gt;
  
  
  New Features
&lt;/h4&gt;

&lt;p&gt;Ember.js 3.21 introduced no new features.&lt;/p&gt;

&lt;h4&gt;
  
  
  Deprecations
&lt;/h4&gt;

&lt;p&gt;Ember.js 3.21 introduced 1 deprecation.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;getWithDefault&lt;/code&gt; (both the function and class method) has been &lt;a href="https://github.com/emberjs/ember.js/pull/18993"&gt;deprecated&lt;/a&gt; per &lt;a href="https://github.com/emberjs/rfcs/blob/master/text/0554-deprecate-getwithdefault.md"&gt;RFC #554&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Consider using the &lt;a href="https://github.com/mixonic/ember-cli-deprecation-workflow"&gt;ember-cli-deprecation-workflow&lt;/a&gt; addon if you would like to upgrade your application without immediately addressing deprecations.&lt;/p&gt;

&lt;p&gt;For more details on changes in Ember.js 3.21, please review the &lt;a href="https://github.com/emberjs/ember.js/releases/tag/v3.21.0"&gt;Ember.js 3.21.0 release page&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Ember Data
&lt;/h2&gt;

&lt;p&gt;Ember Data is the official data persistence library for Ember.js applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Changes in Ember Data 3.21
&lt;/h3&gt;

&lt;p&gt;Ember Data 3.21 release saw a few improvements to documentation and continuous integration.&lt;/p&gt;

&lt;h4&gt;
  
  
  New Features
&lt;/h4&gt;

&lt;p&gt;Ember Data 3.21 introduced no new features.&lt;/p&gt;

&lt;h4&gt;
  
  
  Deprecations
&lt;/h4&gt;

&lt;p&gt;Ember Data 3.21 introduced no deprecations.&lt;/p&gt;

&lt;p&gt;For more details on changes in Ember Data 3.21, please review the&lt;br&gt;
&lt;a href="https://github.com/emberjs/data/releases/tag/v3.21.0"&gt;Ember Data 3.21.0 release page&lt;/a&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  Ember CLI
&lt;/h2&gt;

&lt;p&gt;Ember CLI is the command line interface for managing and packaging Ember.js applications.&lt;/p&gt;
&lt;h3&gt;
  
  
  Upgrading Ember CLI
&lt;/h3&gt;



&lt;p&gt;You may upgrade Ember CLI easily using the ember-cli-update project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;npx ember-cli-update
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;This utility will help you to update your app or addon to the latest Ember CLI version. You will probably encounter merge conflicts, in which the default behavior is to let you resolve conflicts on your own. For more information on the &lt;code&gt;ember-cli-update&lt;/code&gt; project, see &lt;a href="https://github.com/ember-cli/ember-cli-update"&gt;the GitHub README&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;While it is recommended to keep Ember CLI versions in sync with Ember and Ember Data, this is not required. After updating ember-cli, you can keep your current version(s) of Ember or Ember Data by editing &lt;code&gt;package.json&lt;/code&gt; to revert the changes to the lines containing &lt;code&gt;ember-source&lt;/code&gt; and &lt;code&gt;ember-data&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Changes in Ember CLI 3.21
&lt;/h3&gt;

&lt;h4&gt;
  
  
  New Features
&lt;/h4&gt;

&lt;p&gt;Ember CLI 3.21 introduced 2 new features.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;ember new --lang&lt;/code&gt; support has &lt;a href="https://github.com/ember-cli/ember-cli/pull/9259"&gt;landed&lt;/a&gt; per &lt;a href="https://github.com/emberjs/rfcs/blob/master/text/0635-ember-new-lang.md"&gt;RFC #635&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/ember-cli/ember-try"&gt;ember-try&lt;/a&gt; configuration for addons has been updated. &lt;a href="https://github.com/ember-cli/ember-cli/pull/9310"&gt;&lt;code&gt;ember-lts-3.12&lt;/code&gt; has been dropped&lt;/a&gt; from the default testing matrix. (Existing addons should consider this as a breaking change.) In addition, &lt;a href="https://github.com/ember-cli/ember-cli/pull/9308"&gt;&lt;code&gt;ember-lts-3.20&lt;/code&gt; has been added&lt;/a&gt; to the default testing matrix.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Deprecations
&lt;/h4&gt;

&lt;p&gt;Ember CLI 3.21 introduced no deprecations.&lt;/p&gt;




&lt;p&gt;For more details on the changes in Ember CLI 3.21 and detailed upgrade&lt;br&gt;
instructions, please review the &lt;a href="https://github.com/ember-cli/ember-cli/releases/tag/v3.21.0"&gt;Ember CLI 3.21.0 release page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thank You!
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

</description>
      <category>ember</category>
      <category>javascript</category>
      <category>news</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Accessibility Working Group Update</title>
      <dc:creator>Ember.js</dc:creator>
      <pubDate>Wed, 26 Aug 2020 00:09:00 +0000</pubDate>
      <link>https://dev.to/emberjs/accessibility-working-group-update-38m3</link>
      <guid>https://dev.to/emberjs/accessibility-working-group-update-38m3</guid>
      <description>&lt;p&gt;Back in March, an Accessibility (A11y) Strike Team was formed to address the issues outlined in &lt;a href="https://github.com/emberjs/rfcs/issues/595"&gt;Ember RFC Issue 595 - Technical Accessibility Issues in New Ember Apps&lt;/a&gt;. This blog post is to update the community on that group's work.&lt;/p&gt;

&lt;p&gt;The Strike Team met weekly between &lt;a href="https://github.com/ember-a11y/core-notes/blob/ember-a11y/ember-a11y/2020-03/march-25.md"&gt;March 25&lt;/a&gt; and &lt;a href="https://github.com/ember-a11y/core-notes/blob/ember-a11y/ember-a11y/2020-06/june-24.md"&gt;June 24&lt;/a&gt;. We even managed to celebrate &lt;a href="https://blog.emberjs.com/2020/05/21/global-accessibility-awareness-day.html"&gt;Global Accessibility Awareness Day&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;There were five items listed in &lt;a href="https://github.com/emberjs/rfcs/issues/595"&gt;Issue 595&lt;/a&gt;: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Application Language Support&lt;/li&gt;
&lt;li&gt;Label/Input Support&lt;/li&gt;
&lt;li&gt;Page Title Support&lt;/li&gt;
&lt;li&gt;Support for &lt;code&gt;...attributes&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Accessible Routing Support&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Active Work
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Application Language Support
&lt;/h3&gt;

&lt;p&gt;The goal of application language support was to provide a mechanism for new Ember apps to pass &lt;a href="https://www.w3.org/TR/WCAG21/#language-of-page"&gt;WCAG Success Criteria 3.1.1 - Language of Page&lt;/a&gt;. To meet that goal, &lt;a href="https://github.com/josephdsumner"&gt;Joseph Sumner&lt;/a&gt;, &lt;a href="https://github.com/jgwhite"&gt;Jamie White&lt;/a&gt;, &lt;a href="https://github.com/hergaiety"&gt;Ava Wroten&lt;/a&gt; and &lt;a href="https://github.com/melsumner"&gt;Melanie Sumner&lt;/a&gt; authored &lt;a href="https://emberjs.github.io/rfcs/0635-ember-new-lang.html"&gt;RFC 635&lt;/a&gt;, which proposed a &lt;code&gt;--lang&lt;/code&gt; flag for &lt;code&gt;ember-cli&lt;/code&gt;. This flag would enable developers to declare the application's language while they were creating the app, allowing them to more easily meet this particular success criteria. This RFC was merged on June 12th; the feature itself, authored by &lt;a href="https://github.com/josephdsumner"&gt;Joseph Sumner&lt;/a&gt; with help from &lt;a href="https://github.com/rwjblue"&gt;Rob Jackson&lt;/a&gt;, was merged on August 24th.&lt;/p&gt;

&lt;p&gt;To add another layer of support and enhance the overall developer experience, the team also decided that it would be useful to have an interactive way to create new Ember apps. After some discussion, &lt;a href="https://github.com/melsumner"&gt;Melanie Sumner&lt;/a&gt; authored &lt;a href="https://emberjs.github.io/rfcs/0638-interactive-app-creation.html"&gt;RFC 638&lt;/a&gt;. The RFC was accepted and merged on August 10th. Implementation is still pending.&lt;/p&gt;

&lt;p&gt;Additional support came from &lt;a href="https://guides.emberjs.com/release/accessibility/application-considerations/#toc_lang-attribute"&gt;update to the Ember Guides&lt;/a&gt;, in both prose and art, thanks to team members &lt;a href="https://github.com/hergaiety"&gt;Ava Wroten&lt;/a&gt; and &lt;a href="https://github.com/lenoraporter"&gt;Lenora Porter&lt;/a&gt;. &lt;a href="https://github.com/melsumner"&gt;Melanie Sumner&lt;/a&gt; also &lt;a href="https://github.com/ember-template-lint/ember-template-lint/pull/1386"&gt;added a new rule&lt;/a&gt; to the &lt;a href="https://github.com/ember-template-lint/ember-template-lint"&gt;Ember Template Lint addon&lt;/a&gt; called &lt;code&gt;require-lang&lt;/code&gt;. It checks to make sure that the &lt;code&gt;lang&lt;/code&gt; attribute is present on the &lt;code&gt;&amp;lt;html&amp;gt;&lt;/code&gt; attribute. This rule will be effective in v3.0 of the addon, thanks to &lt;a href="https://github.com/lifeart"&gt;Alex Kanunnikov&lt;/a&gt; adding the ability to lint &lt;code&gt;.html&lt;/code&gt; files in &lt;a href="https://github.com/ember-template-lint/ember-template-lint/pull/1232"&gt;PR 1232&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Label and Input Support
&lt;/h3&gt;

&lt;p&gt;There were 3 things the team decided to do in this area:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Update the guides to provide more explicit guidance&lt;/li&gt;
&lt;li&gt;Provide an addon that would help provide &lt;code&gt;id&lt;/code&gt;s within a specific context&lt;/li&gt;
&lt;li&gt;Write an RFC to propose a more permanent solution&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://github.com/kamikillerto"&gt;Benjamin Jegard&lt;/a&gt; created the &lt;a href="https://github.com/KamiKillertO/ember-context-id-helper"&gt;Ember Context Id Helper addon&lt;/a&gt;. The &lt;code&gt;{{context-id}}&lt;/code&gt; generates a unique &lt;code&gt;id&lt;/code&gt; for a given context. Because it uses Ember's &lt;code&gt;guidFor&lt;/code&gt; function under the hood, it will always return the same &lt;code&gt;id&lt;/code&gt; for the same context. A use case for &lt;code&gt;context-id&lt;/code&gt; helper is to programmatically associate &lt;code&gt;&amp;lt;label&amp;gt;&lt;/code&gt;s and &lt;code&gt;&amp;lt;input&amp;gt;&lt;/code&gt; element using the &lt;code&gt;&amp;lt;label&amp;gt;&lt;/code&gt; &lt;code&gt;for&lt;/code&gt; attribute and the &lt;code&gt;&amp;lt;input&amp;gt;&lt;/code&gt;s &lt;code&gt;id&lt;/code&gt; attribute. &lt;/p&gt;

&lt;p&gt;This addon took inspiration from the pre-RFC for the &lt;code&gt;guid-for&lt;/code&gt; helper, which resulted in &lt;a href="https://github.com/emberjs/rfcs/pull/659"&gt;RFC 659, which proposes a new built-in template helper&lt;/a&gt;, authored by &lt;a href="https://github.com/steveszc"&gt;Steve Szczecina&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/rajasegar"&gt;Rajasegar Chandran&lt;/a&gt; and &lt;a href="https://github.com/jenweber"&gt;Jen Weber&lt;/a&gt; updated the &lt;a href="https://guides.emberjs.com/release/components/built-in-components/#toc_ways-to-associate-labels-and-inputs"&gt;Official Ember Guides&lt;/a&gt; with more explicit information for how to associate &lt;code&gt;&amp;lt;label&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;input&amp;gt;&lt;/code&gt; elements. &lt;a href="https://github.com/melsumner"&gt;Melanie Sumner&lt;/a&gt; also authored &lt;a href="https://emberjs-1.gitbook.io/ember-component-patterns/form-components/input"&gt;ember-component-patterns&lt;/a&gt; that reflect best practices for &lt;code&gt;&amp;lt;input&amp;gt;&lt;/code&gt; fields.&lt;/p&gt;

&lt;p&gt;Finally, support has been added to the &lt;a href="https://github.com/ember-template-lint/ember-template-lint"&gt;Ember Template Lint addon&lt;/a&gt; with rules that require &lt;code&gt;&amp;lt;input&amp;gt;&lt;/code&gt; elements to have &lt;a href="https://github.com/ember-template-lint/ember-template-lint/pull/1105"&gt;valid labels&lt;/a&gt; and that there are &lt;a href="https://github.com/ember-template-lint/ember-template-lint/pull/1439"&gt;no duplicate labels&lt;/a&gt;. Additional work is now being done to check that there are &lt;a href="https://github.com/ember-template-lint/ember-template-lint/pull/1187"&gt;no duplicate ids&lt;/a&gt; as well as &lt;a href="https://github.com/ember-template-lint/ember-template-lint/pull/1367"&gt;valid use of form groups&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Page Title Support
&lt;/h3&gt;

&lt;p&gt;In our &lt;a href="https://github.com/ember-a11y/core-notes/blob/ember-a11y/ember-a11y/2020-04/april-08.md"&gt;April 8th meeting&lt;/a&gt;, the team discussed how we thought we should approach page title support. More discussion throughout the month led us to support the template-driven support for page titles in Ember apps.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/kamikillerto"&gt;Benjamin Jegard&lt;/a&gt;, &lt;a href="https://github.com/melsumner"&gt;Melanie Sumner&lt;/a&gt; and &lt;a href="https://github.com/locks"&gt;Ricardo Mendes&lt;/a&gt; authored &lt;a href="https://github.com/emberjs/rfcs/pull/645"&gt;RFC 645&lt;/a&gt;, which proposes that the Ember Page Title addon be added to the blueprints for new Ember apps. After Framework Core Team discussion, it was decided that the addon needed some work before the RFC could be accepted. That work was outlined &lt;a href="https://github.com/adopted-ember-addons/ember-page-title/issues/167"&gt;in an issue&lt;/a&gt; and is &lt;a href="https://github.com/adopted-ember-addons/ember-page-title/pull/168"&gt;currently underway&lt;/a&gt;, thanks to community member &lt;a href="https://github.com/raido"&gt;Raido Kuli&lt;/a&gt;!&lt;/p&gt;

&lt;h2&gt;
  
  
  Back to the Drawing Board
&lt;/h2&gt;

&lt;p&gt;After discussion and some analysis, it was determined that some issues required the attention of the &lt;a href="https://emberjs.com/teams/"&gt;Framework Core Team&lt;/a&gt; to resolve. These issues will likely require re-thinking of significant Ember features, so some workarounds should be expected until they are resolved. &lt;/p&gt;

&lt;h3&gt;
  
  
  Support for &lt;code&gt;...attributes&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;As outlined in &lt;a href="https://github.com/emberjs/ember.js/issues/19026"&gt;Ember Issue 19026&lt;/a&gt;, &lt;code&gt;...attributes&lt;/code&gt; does not have a guaranteed merge order. This is problematic for 5 ARIA attributes because they can have multiple values in the form of an ID reference list and the order of these values matters.&lt;/p&gt;

&lt;p&gt;This is likely to lead to some additional discussion about how Ember handles properties and attributes, and rethinking that approach to better support attributes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Accessible Routing
&lt;/h3&gt;

&lt;p&gt;There is an ongoing discussion for how to best resolve this issue in a permanent way. Despite a significant amount of &lt;a href="https://github.com/MelSumner/ember-a11y-roadmap/tree/master/rfc-research/router"&gt;research into the issue&lt;/a&gt; and &lt;a href="https://github.com/emberjs/rfcs/pull/433"&gt;an RFC&lt;/a&gt; that attempts to solve the issue, no resolution has been agreed upon yet. However, the Framework Core Team has accepted that accessibility is a design constraint for any new router work.&lt;/p&gt;

&lt;p&gt;Until then, developers are encouraged to review the &lt;a href="https://guides.emberjs.com/release/accessibility/application-considerations/"&gt;accessibility section of the Ember guides&lt;/a&gt;, and consider one of the routing-related addons for use. Options include &lt;a href="https://github.com/linkedin/self-focused/tree/master/packages/ember-self-focused"&gt;ember-self-focused&lt;/a&gt;, &lt;a href="https://github.com/ember-a11y/a11y-announcer"&gt;a11y-announcer&lt;/a&gt;, &lt;a href="https://github.com/ember-a11y/ember-a11y"&gt;ember-a11y&lt;/a&gt;, and &lt;a href="https://github.com/ember-a11y/ember-a11y-refocus"&gt;ember-a11y-refocus&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  A11y Working Group
&lt;/h2&gt;

&lt;p&gt;At the final Strike Team meeting, we decided to continue the accessibility work in Ember and became the Ember A11y Working Group. We coordinate in the #dev-ember-a11y channel on &lt;a href="https://discord.gg/emberjs"&gt;Ember's Discord server&lt;/a&gt; and meet as needed. Anyone who is interested is welcome to join in!&lt;/p&gt;

&lt;p&gt;Work is also underway to upscale the addons in the &lt;a href="https://github.com/ember-a11y"&gt;Ember-A11y GitHub org&lt;/a&gt;! We are also continuing to add first-class accessibility support to ember-template-lint; coming soon is support for users to be able to &lt;a href="https://github.com/ember-template-lint/ember-template-lint/pull/1443"&gt;specifically only run the accessibility-related linting rules&lt;/a&gt; on a codebase.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thank You
&lt;/h2&gt;

&lt;p&gt;A huge thank you to all of the community members who participated in the Ember A11y Strike Team: &lt;a href="https://github.com/abhilashlr"&gt;Abhilash Ramesh&lt;/a&gt;, &lt;a href="https://github.com/amyrlam"&gt;Amy Lam&lt;/a&gt;, &lt;a href="https://github.com/hergaiety"&gt;Ava Wroten&lt;/a&gt;, &lt;a href="https://github.com/kamikillerto"&gt;Benjamin Jegard&lt;/a&gt;, &lt;a href="https://github.com/the-bionic"&gt;Emmanuel Patrick&lt;/a&gt;, &lt;a href="https://github.com/HeroicEric"&gt;Eric Kelly&lt;/a&gt;, &lt;a href="https://github.com/hakilebara"&gt;Frédéric Soumaré&lt;/a&gt;, &lt;a href="https://github.com/jgwhite"&gt;Jamie White&lt;/a&gt;, &lt;a href="https://github.com/jenweber"&gt;Jen Weber&lt;/a&gt;, &lt;a href="https://github.com/jrock2004"&gt;John Costanzo&lt;/a&gt;, &lt;a href="https://github.com/josephdsumner"&gt;Joseph Sumner&lt;/a&gt;, &lt;a href="https://github.com/zinyando"&gt;Lennex Zinyando&lt;/a&gt;, &lt;a href="https://github.com/lenoraporter"&gt;Lenora Porter&lt;/a&gt;, &lt;a href="https://github.com/melsumner"&gt;Melanie Sumner&lt;/a&gt;, &lt;a href="https://github.com/praskovia-root"&gt;Praskovia Root&lt;/a&gt;, &lt;a href="https://github.com/rajasegar"&gt;Rajasegar Chandran&lt;/a&gt;, &lt;a href="https://github.com/rwjblue"&gt;Robert Jackson&lt;/a&gt;, &lt;a href="https://github.com/steveszc"&gt;Steve Szczecina&lt;/a&gt;, and &lt;a href="https://github.com/seemajune"&gt;Seema Shariat&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ember</category>
      <category>javascript</category>
      <category>news</category>
      <category>a11y</category>
    </item>
    <item>
      <title>Ember 3.20 Released</title>
      <dc:creator>Ember.js</dc:creator>
      <pubDate>Thu, 30 Jul 2020 15:23:31 +0000</pubDate>
      <link>https://dev.to/emberjs/ember-3-20-released-545l</link>
      <guid>https://dev.to/emberjs/ember-3-20-released-545l</guid>
      <description>&lt;p&gt;Today the Ember project is releasing version 3.20 of Ember.js, Ember Data, and Ember CLI. 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.&lt;/p&gt;

&lt;p&gt;This release kicks off the 3.21 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 &lt;a href="https://github.com/ember-cli/ember-try"&gt;ember-try&lt;/a&gt; addon is a great way to continuously test your projects against the latest Ember releases.&lt;/p&gt;

&lt;p&gt;You can read more about our general release process here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://emberjs.com/releases/"&gt;Release Dashboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://emberjs.com/blog/2013/09/06/new-ember-release-process.html"&gt;The Ember Release Cycle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://emberjs.com/blog/2015/06/16/ember-project-at-2-0.html"&gt;The Ember Project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://emberjs.com/blog/2016/02/25/announcing-embers-first-lts.html"&gt;Ember LTS Releases&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Ember.js
&lt;/h2&gt;

&lt;p&gt;Ember.js is the core framework for building ambitious web applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Changes in Ember.js 3.20
&lt;/h3&gt;

&lt;p&gt;Ember.js 3.20 is an incremental, backwards compatible release of Ember with bugfixes, performance improvements, and minor deprecations.&lt;/p&gt;

&lt;p&gt;Developers who upgrade their Ember apps to &lt;code&gt;v3.20&lt;/code&gt; should also update &lt;code&gt;@glimmer/component&lt;/code&gt; to &lt;code&gt;v1.0.1&lt;/code&gt; to avoid a deprecation warning that comes from the &lt;code&gt;@glimmer/component&lt;/code&gt; package's use of a private API.&lt;/p&gt;

&lt;h4&gt;
  
  
  New Features (1)
&lt;/h4&gt;

&lt;h5&gt;
  
  
  &lt;code&gt;{{in-element}}&lt;/code&gt;
&lt;/h5&gt;

&lt;p&gt;Have you ever wished you could render a component somewhere outside of the usual HTML flow? To help with this, Ember.js now provides the &lt;code&gt;{{in-element}}&lt;/code&gt; helper as public API. If you have used community addons like &lt;a href="https://github.com/yapplabs/ember-wormhole"&gt;ember-wormhole&lt;/a&gt; or &lt;a href="https://github.com/ef4/ember-elsewhere"&gt;ember-elsewhere&lt;/a&gt;, you are probably familiar with the challenge that &lt;code&gt;{{in-element}}&lt;/code&gt; aims to solve.&lt;/p&gt;

&lt;p&gt;To use the helper, pass in a DOM element to target (&lt;code&gt;this.myDestinationElement&lt;/code&gt; in the example below) and a block to render:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight handlebars"&gt;&lt;code&gt;&lt;span class="k"&gt;{{#&lt;/span&gt;&lt;span class="nn"&gt;in-element&lt;/span&gt; &lt;span class="nv"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;myDestinationElement&lt;/span&gt;&lt;span class="k"&gt;}}&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;Some content&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="k"&gt;{{/&lt;/span&gt;&lt;span class="nn"&gt;in-element&lt;/span&gt;&lt;span class="k"&gt;}}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;This new public API behaves a little differently from the private API:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For the public API &lt;code&gt;{{in-element}}&lt;/code&gt;, by default, the rendered content will replace all the content of the destination, effectively becoming its &lt;code&gt;innerHTML&lt;/code&gt;. If you want it to be appended instead of replacing the content, you can pass in &lt;code&gt;insertBefore=null&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;In the private API &lt;code&gt;{{-in-element}}&lt;/code&gt;, the rendered content was appended to any existing content in the destination.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Developers should use the public API, &lt;code&gt;{{in-element}}&lt;/code&gt;, and discontinue using &lt;code&gt;{{-in-element}}&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;See &lt;a href="https://emberjs.github.io/rfcs/0287-promote-in-element-to-public-api.html"&gt;RFC 287&lt;/a&gt; for more information about the motivation for this new feature.&lt;/p&gt;

&lt;h4&gt;
  
  
  Deprecations (1)
&lt;/h4&gt;

&lt;h5&gt;
  
  
  &lt;code&gt;Meta.prototype.setSourceDestroyed&lt;/code&gt; and &lt;code&gt;Meta.prototype.setSourceDestroying&lt;/code&gt;
&lt;/h5&gt;

&lt;p&gt;Previous versions of the &lt;code&gt;@glimmer/component&lt;/code&gt; package relied on this intimate API, which is now deprecated.&lt;br&gt;
To resolve deprecation warnings in your own apps and addons, update your version of &lt;code&gt;@glimmer/component&lt;/code&gt; to at least &lt;a href="https://github.com/glimmerjs/glimmer.js/releases/tag/v1.0.1"&gt;&lt;code&gt;v1.0.1&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Deprecations are added to Ember.js when an API will be removed at a later date. Each public API 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.&lt;/p&gt;

&lt;p&gt;Consider using the &lt;a href="https://github.com/mixonic/ember-cli-deprecation-workflow"&gt;ember-cli-deprecation-workflow&lt;/a&gt; addon if you would like to upgrade your application without immediately addressing deprecations.&lt;/p&gt;

&lt;p&gt;For more details on changes in Ember.js 3.20, please review the &lt;a href="https://github.com/emberjs/ember.js/releases/tag/v3.20.0"&gt;Ember.js 3.20.0 release page&lt;/a&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  Ember Data
&lt;/h2&gt;

&lt;p&gt;Ember Data is the official data persistence library for Ember.js applications.&lt;/p&gt;
&lt;h3&gt;
  
  
  Changes in Ember Data 3.20
&lt;/h3&gt;

&lt;p&gt;In addition to a new feature, this release also includes some performance optimizations for visiting relating records and updating has-many relationships.&lt;/p&gt;
&lt;h4&gt;
  
  
  New Features (1)
&lt;/h4&gt;
&lt;h5&gt;
  
  
  &lt;code&gt;isEmbeddedRecordsMixinCompatible&lt;/code&gt;
&lt;/h5&gt;

&lt;p&gt;Previously, if you used the &lt;code&gt;EmbeddedRecordsMixin&lt;/code&gt; and &lt;code&gt;JSONAPISerializer&lt;/code&gt; together, the app would show a warning that this combination did not work.&lt;br&gt;
However, some developers may have APIs that would have theoretically been compatible.&lt;br&gt;
For those use cases, you can now set &lt;code&gt;this.isEmbeddedRecordsMixinCompatible = true&lt;/code&gt; in the serializer, and you will no longer see the warning.&lt;/p&gt;

&lt;p&gt;For apps that mistakenly use the &lt;code&gt;EmbeddedRecordsMixin&lt;/code&gt; and &lt;code&gt;JSONAPISerializer&lt;/code&gt; together, without setting the boolean, the app will now assert instead of warn.&lt;/p&gt;
&lt;h4&gt;
  
  
  Deprecations (0)
&lt;/h4&gt;

&lt;p&gt;No new deprecations introduced in Ember Data 3.20.&lt;/p&gt;

&lt;p&gt;For more details on changes in Ember Data 3.20, please review the&lt;br&gt;
&lt;a href="https://github.com/emberjs/data/blob/v3.20.0/CHANGELOG.md#release-3200-july-16-2020"&gt;Ember Data 3.20.0 release page&lt;/a&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  Ember CLI
&lt;/h2&gt;

&lt;p&gt;Ember CLI is the command line interface for managing and packaging Ember.js applications.&lt;/p&gt;
&lt;h3&gt;
  
  
  Upgrading Ember CLI
&lt;/h3&gt;



&lt;p&gt;You may upgrade Ember CLI easily using the ember-cli-update project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;npx ember-cli-update
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;This utility will help you to update your app or addon to the latest Ember CLI version. You will probably encounter merge conflicts, in which the default behavior is to let you resolve conflicts on your own. For more information on the &lt;code&gt;ember-cli-update&lt;/code&gt; project, see &lt;a href="https://github.com/ember-cli/ember-cli-update"&gt;the GitHub README&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;While it is recommended to keep Ember CLI versions in sync with Ember and Ember Data, this is not required. After updating ember-cli, you can keep your current version(s) of Ember or Ember Data by editing &lt;code&gt;package.json&lt;/code&gt; to revert the changes to the lines containing &lt;code&gt;ember-source&lt;/code&gt; and &lt;code&gt;ember-data&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Changes in Ember CLI 3.20
&lt;/h3&gt;

&lt;h4&gt;
  
  
  New Features (1)
&lt;/h4&gt;

&lt;h5&gt;
  
  
  Syncing Blueprints
&lt;/h5&gt;

&lt;p&gt;Apps and addons can update the &lt;code&gt;ember-cli&lt;/code&gt; version in their app without impacting future &lt;a href="https://github.com/ember-cli/ember-cli-update"&gt;&lt;code&gt;ember-cli-update&lt;/code&gt;&lt;/a&gt; runs. &lt;/p&gt;

&lt;p&gt;Before this new feature, &lt;code&gt;ember-cli-update&lt;/code&gt; used the current version of &lt;code&gt;ember-cli&lt;/code&gt; in the &lt;code&gt;package.json&lt;/code&gt; to determine which version to attempt to update from. Unfortunately, that meant that if you were to update your &lt;code&gt;ember-cli&lt;/code&gt; version without also running the full blueprint update, you would have a much harder time updating your general project structure in the future.&lt;/p&gt;

&lt;p&gt;See the &lt;a href="https://emberjs.github.io/rfcs/0477-blueprints-update.html"&gt;Syncing Blueprints RFC&lt;/a&gt; to learn more about the motivation and design of this feature!&lt;/p&gt;

&lt;h4&gt;
  
  
  Deprecations (2)
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Usage on Node 13 will now issue a warning &lt;/li&gt;
&lt;li&gt;Usage of the &lt;code&gt;PACKAGER&lt;/code&gt; experiment is deprecated. This only affects apps that opted into setting the &lt;code&gt;EMBER_CLI_PACKAGER&lt;/code&gt; environment variable.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;For more details on the changes in Ember CLI 3.20 and detailed upgrade&lt;br&gt;
instructions, please review the &lt;a href="https://github.com/ember-cli/ember-cli/releases/tag/v3.20.0"&gt;Ember CLI 3.20.0 release page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thank You!
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

</description>
      <category>ember</category>
      <category>javascript</category>
      <category>news</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
