Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions text/1117-deprecate-classic-classes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
---
stage: accepted
start-date: 2025-06-20T00:00:00.000Z
release-date:
release-versions:
teams: # delete teams that aren't relevant
- cli
- data
- framework
- learning
- steering
- typescript
prs:
accepted: https://github.com/emberjs/rfcs/pull/1117
project-link:
---

# Deprecate Classic Classes

## Summary

Deprecate the Classic Class system.

## Motivation

For quite a while now, Ember has recommended the use of Native Classes over the Classic Class
system. The one remaining sticking point has been Mixins. If we
[Deprecate Mixins](https://github.com/emberjs/rfcs/pull/1116), then we can deprecate the Classic Class system.

## Transition Path

All uses of Classic Classes should be converted to Native Classes. Anything that cannot be converted will be deprecated first, such as [Mixins](https://github.com/emberjs/rfcs/pull/1116) and the [`observer` helper function](https://github.com/emberjs/rfcs/pull/1115).

The `@classic` decorator (and any other APIs or patterns used to enable classic class interop) will also be deprecated as part of this transition. All code should migrate to native class syntax and patterns.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The @classic decorator pretty much does not work at this point. I recommend people remove it because it only had dev-time behavior, anyway.


## Exploration

To validate this deprecation, I've tried removing all of the Classic Class system in this PR:
https://github.com/emberjs/ember.js/pull/20923

## How We Teach This

We should remove all references from the guides.

## Drawbacks

Other than it being a lot of work, there are no drawbacks.

## Alternatives

None

## Unresolved questions

Should we keep `EmberObject` around as a home for some utility methods and sugar or remove it entirely?