Ember Octane switches to using native Javascript class syntax:

// before
const MyClass = EmberObject.extend({
  title: 'Hello, world!',

// after
class MyClass {
  title = 'Hello, world!'

Native Class Basics

The official **Ember Native Class Guide** is the best resource for learning the basics of native classes. It covers class syntax in depth, best practices, and class fields and decorators, which are not yet fully standardized and don't have as many guides or resources covering them just yet.

You can also use the official Cheatsheet to quickly reference differences between native and classic class syntax.


The Native Class Codemod can be used to quickly upgrade to native class syntax. You can use it on all of your files at once, or you can use it one directory or file at a time.

Upgrade Guides

@classic Decorator Flow Chart

@classic Decorator Workflow

Converting Services, Routes, Controllers, and Helpers

Converting Utility Classes

Converting Classes with Mixins

Other Guides

Using Native Class Syntax with Classic Components