diff --git a/content/ember-5-0-released.md b/content/ember-5-0-released.md new file mode 100644 index 000000000..9e8ad8465 --- /dev/null +++ b/content/ember-5-0-released.md @@ -0,0 +1,273 @@ +--- +title: Ember 5.0 Released +image: +imageMeta: + attribution: + attributionLink: +featured: true +authors: + - jen-weber + - chris-krycho + - katie-gengler + - jared-galanis +date: 2023-06-22T20:00:00.000Z +tags: + - releases + - '2023' + - version-5-x +--- + +![Ember 5 is here! Ember mascots Tomster and Zoey have their party gear.](/images/blog/ember-5-is-here.png) + +EmberJS 5.0 embodies the commitment to stability and reliability that developers have come to expect from the Ember ecosystem. The Ember team has worked hard to remove all the deprecations and make us move towards Polaris. Get up-to-date with the latest in Ember and enjoy! + +This post will cover our release strategy, how to upgrade, what to expect, and deprecated APIs that were removed. + +This is the first major release under the new release strategy and goals proposed in [RFC 830, Evolving Ember's Major Version Process](https://rfcs.emberjs.com/id/0830-evolving-embers-major-version-process). +To summarize, every 12 minor releases, Ember will ship a new major release, which removes any +deprecated code targeted for that major version. +When it comes to introducing new features, Ember generally aims to ship new features in minor releases, offering backwards compatibility for existing code at the same time as giving developers the chance to try out new capabilities. +This approach reduces the challenges that teams face for major upgrades, compared to producing big, breaking, splashy major versions with lots of new features. + + +In Ember 4.x minor releases, we landed a bunch of features (along with various bug fixes, of course): + +- In [Ember 4.1](https://blog.emberjs.com/ember-4-1-released/), we shipped a bunch of quality-of-life improvements: + - the `@cached` decorator for caching expensive getters + - the `@service` decorator so you don't have to `import { inject as service }` anymore + - the `refresh` method on the Ember router, making it easier to refresh the data for the whole current route tree + +- In [Ember 4.4](https://blog.emberjs.com/ember-released-4-4/), we shipped a `{{unique-id}}` helper to make it easier to write accessible forms and made it easier to customize tests with improved blueprints for `setupTest`. + +- In [Ember 4.5](https://blog.emberjs.com/ember-4-5-released/), we made it possible to use plain old JavaScript functions as helpers: no need to wrap them with `helper()` any more! + + We also shipped a new testing primitive, `renderSettled`, which lets you wait for when Ember has re-rendered but *other* promises are still in flight—handy for testing your loading spinners, for example. + +- In [Ember 4.8](https://blog.emberjs.com/ember-4-8-released/), we shipped a preview of our native TypeScript support, starting out with hand-authored types. + +- In [Ember 4.9](https://blog.emberjs.com/ember-4-9-released/), we did a *ton* of internal polish work on our types and started testing Ember itself against our supported range of TypeScript versions. + +- In [Ember 4.10](https://blog.emberjs.com/ember-released-4-10/), we introduced a new, carefully-designed API for Ember's Dependency Injection system: `Owner` is a subset of the `ApplicationInstance` type which covers all of its APIs with less duplication and confusion about what to use. + +- In [Ember 4.11](https://blog.emberjs.com/ember-released-4-11/), we published the first TypeScript types in Ember generated from Ember's own source code. + +- In [Ember 4.12](https://blog.emberjs.com/ember-released-4-12/), we enabled generating TypeScript blueprints with `ember generate`. + +We also made significant strides in key parts of the ecosystem outside the core framework itself over the past 18 months: + +- We committed to shipping a new component format using `