There are two major approaches you can take to converting to Octane.

The first (and officially recommended) path is to upgrade to a version supporting Octane and then begin converting your apps and add-ons to using Octane idioms and features.

The second path is to progressively adopt Octane features as incremental upgrades unlock them. This requires more work in scheduling and keeping everyone in sync on what features they can and cannot use, but even so it works better for some teams—especially teams with very large apps where waiting for the full availability could delay Octane adoption by months or quarters.

You can choose whichever works well for your team!

Upgrade First, Octane Second

Phase 1 - Upgrade Ember

The first phase of the Octane upgrade is to update to an Ember version that supports Octane. This may be a large effort, which is why it's contained in its own phase.

  1. Upgrade to Ember 3.16

Phase 2 - Enable Octane Mode

The second phase

  1. Install @glimmer/component and @glimmer/tracking if they weren't already installed:

    ember install @glimmer/component@^1.0.0
    ember install @glimmer/tracking@^1.0.0
  2. Toggle all of the Octane Mode features:

    1. Implicit application wrapper
    2. jQuery integration
    3. Template-only Glimmer components
    4. Async observers (Optional pre-3.13, some apps may need tracked properties to fully migrate)
    ember install @ember/optional-features
    ember feature:disable jquery-integration
    ember feature:disable application-template-wrapper
    ember feature:enable template-only-glimmer-components
    ember feature:enable default-async-observers
  3. Enable the Octane Edition by setting it in package.json:

      "ember": {
        "edition": "octane"

Phase 3 - Run Codemods

You can run these codemods to jump start converting your codebase to the new idioms introduced in Octane.

  1. (WIP) ember-component-template-colocation-migrator
  2. (WIP) ember-angle-brackets-codemod
  3. (WIP) ember-no-implicit-this-codemod
  4. es5-getter-ember-codemod (note: must be run before ember-native-class-codemod)