Deprecations Added in Ember 6.x
What follows is a list of deprecations introduced to Ember during the 6.x cycle.
For more information on deprecations in Ember, see the main deprecations page.
Deprecations Added in 6.3.0
Importing inject from @ember/service
Importing inject from @ember/service is deprecated. Please import service instead.
Example:
import { Route } from '@ember/routing/route';
import { inject as service } from '@ember/service';
import { service } from '@ember/service';
export default class MyRoute extends Route {
@service store;
}
You may ignore this deprecation via babel plugin (for both app and addon code), here: babel-plugin-undeprecate-inject-from-at-ember-service.
For violations within your own code, this deprecation can be dealt with one a single pass via the ember-codemod-remove-inject-as-service codemod.
If you're working on a library that needs to support ember-source prior to 4.1, you can support both styles of service via:
import * as emberService from '@ember/service';
const service = emberService.service ?? emberService.inject;
Deprecations Added in 6.5.0
Ember.__loader
Previously, __loader could be accessed via the Ember import:
import Ember from 'ember';
Ember.__loader
There is no replacement for this API.
Ember._action
Previously, _action could be accessed via the Ember import:
import Ember from 'ember';
Ember._action
If needed, _action can be imported:
import { action } from '@ember/object';
Ember._array
Previously, _array could be accessed via the Ember import:
import Ember from 'ember';
Ember._array
If needed, _array can be imported:
import { array } from '@ember/helper';
Ember._assertDestroyablesDestroyed
Previously, _assertDestroyablesDestroyed could be accessed via the Ember import:
import Ember from 'ember';
Ember._assertDestroyablesDestroyed
If needed, _assertDestroyablesDestroyed can be imported:
import { assertDestroyablesDestroyed } from '@ember/destroyable';
Ember._associateDestroyableChild
Previously, _associateDestroyableChild could be accessed via the Ember import:
import Ember from 'ember';
Ember._associateDestroyableChild
If needed, _associateDestroyableChild can be imported:
import { associateDestroyableChild } from '@ember/destroyable';
Ember._Backburner
Previously, _Backburner could be accessed via the Ember import:
import Ember from 'ember';
Ember._Backburner
_Backburner is also private.
There is no replacement for this API.
Ember._Cache
Previously, _Cache could be accessed via the Ember import:
import Ember from 'ember';
Ember._Cache
There is no replacement for this API.
Ember._cacheGetValue
Previously, _cacheGetValue could be accessed via the Ember import:
import Ember from 'ember';
Ember._cacheGetValue
If needed, _cacheGetValue can be imported:
import { getValue } from '@glimmer/tracking/primitives/cache';
Ember._cacheIsConst
Previously, _cacheIsConst could be accessed via the Ember import:
import Ember from 'ember';
Ember._cacheIsConst
If needed, _cacheIsConst can be imported:
import { isConst } from '@glimmer/tracking/primitives/cache';
Ember._captureRenderTree
Previously, _captureRenderTree could be accessed via the Ember import:
import Ember from 'ember';
Ember._captureRenderTree
_captureRenderTree is also private.
If needed, _captureRenderTree can be imported:
import { captureRenderTree } from '@ember/debug';
However, due to _captureRenderTree being private, it is not recommended, nor supported.
Ember._componentManagerCapabilities
Previously, _componentManagerCapabilities could be accessed via the Ember import:
import Ember from 'ember';
Ember._componentManagerCapabilities
If needed, _componentManagerCapabilities can be imported:
import { capabilities } from '@ember/component';
Ember._concat
Previously, _concat could be accessed via the Ember import:
import Ember from 'ember';
Ember._concat
If needed, _concat can be imported:
import { concat } from '@ember/helper';
Ember._ContainerProxyMixin
Previously, _ContainerProxyMixin could be accessed via the Ember import:
import Ember from 'ember';
Ember._ContainerProxyMixin
_ContainerProxyMixin is also private.
There is no replacement for this API.
Ember._createCache
Previously, _createCache could be accessed via the Ember import:
import Ember from 'ember';
Ember._createCache
If needed, _createCache can be imported:
import { createCache } from '@glimmer/tracking/primitives/cache';
Ember._dependentKeyCompat
Previously, _dependentKeyCompat could be accessed via the Ember import:
import Ember from 'ember';
Ember._dependentKeyCompat
If needed, _dependentKeyCompat can be imported:
import { dependentKeyCompat } from '@ember/object/compat';
Ember._descriptor
Previously, _descriptor could be accessed via the Ember import:
import Ember from 'ember';
Ember._descriptor
There is no replacement for this API.
Ember._enableDestroyableTracking
Previously, _enableDestroyableTracking could be accessed via the Ember import:
import Ember from 'ember';
Ember._enableDestroyableTracking
If needed, _enableDestroyableTracking can be imported:
import { enableDestroyableTracking } from '@ember/destroyable';
Ember._fn
Previously, _fn could be accessed via the Ember import:
import Ember from 'ember';
Ember._fn
If needed, _fn can be imported:
import { fn } from '@ember/helper';
Ember._getComponentTemplate
Previously, _getComponentTemplate could be accessed via the Ember import:
import Ember from 'ember';
Ember._getComponentTemplate
If needed, _getComponentTemplate can be imported:
import { getComponentTemplate } from '@ember/component';
Ember._get
Previously, _get could be accessed via the Ember import:
import Ember from 'ember';
Ember._get
If needed, _get can be imported:
import { get } from '@ember/helper';
Ember._getPath
Previously, _getPath could be accessed via the Ember import:
import Ember from 'ember';
Ember._getPath
There is no replacement for this API.
Ember._hash
Previously, _hash could be accessed via the Ember import:
import Ember from 'ember';
Ember._hash
If needed, _hash can be imported:
import { hash } from '@ember/helper';
Ember._helperManagerCapabilities
Previously, _helperManagerCapabilities could be accessed via the Ember import:
import Ember from 'ember';
Ember._helperManagerCapabilities
If needed, _helperManagerCapabilities can be imported:
import { capabilities } from '@ember/helper';
Ember._Input
Previously, _Input could be accessed via the Ember import:
import Ember from 'ember';
Ember._Input
If needed, _Input can be imported:
import { Input } from '@ember/component';
Ember._invokeHelper
Previously, _invokeHelper could be accessed via the Ember import:
import Ember from 'ember';
Ember._invokeHelper
If needed, _invokeHelper can be imported:
import { invokeHelper } from '@ember/helper';
Ember._isDestroyed
Previously, _isDestroyed could be accessed via the Ember import:
import Ember from 'ember';
Ember._isDestroyed
If needed, _isDestroyed can be imported:
import { isDestroyed } from '@ember/destroyable';
Ember._isDestroying
Previously, _isDestroying could be accessed via the Ember import:
import Ember from 'ember';
Ember._isDestroying
If needed, _isDestroying can be imported:
import { isDestroying } from '@ember/destroyable';
Ember._modifierManagerCapabilities
Previously, _modifierManagerCapabilities could be accessed via the Ember import:
import Ember from 'ember';
Ember._modifierManagerCapabilities
If needed, _modifierManagerCapabilities can be imported:
import { capabilities } from '@ember/modifier';
Ember._on
Previously, _on could be accessed via the Ember import:
import Ember from 'ember';
Ember._on
If needed, _on can be imported:
import { on } from '@ember/modifier';
Ember._ProxyMixin
Previously, _ProxyMixin could be accessed via the Ember import:
import Ember from 'ember';
Ember._ProxyMixin
_ProxyMixin is also private.
There is no replacement for this API.
Ember._registerDestructor
Previously, _registerDestructor could be accessed via the Ember import:
import Ember from 'ember';
Ember._registerDestructor
If needed, _registerDestructor can be imported:
import { registerDestructor } from '@ember/destroyable';
Ember._RegistryProxyMixin
Previously, _RegistryProxyMixin could be accessed via the Ember import:
import Ember from 'ember';
Ember._RegistryProxyMixin
_RegistryProxyMixin is also private.
There is no replacement for this API.
Ember._setClassicDecorator
Previously, _setClassicDecorator could be accessed via the Ember import:
import Ember from 'ember';
Ember._setClassicDecorator
_setClassicDecorator is also private.
There is no replacement for this API.
Ember._setComponentManager
Previously, _setComponentManager could be accessed via the Ember import:
import Ember from 'ember';
Ember._setComponentManager
If needed, _setComponentManager can be imported:
import { setComponentManager } from '@ember/component';
Ember._setComponentTemplate
Previously, _setComponentTemplate could be accessed via the Ember import:
import Ember from 'ember';
Ember._setComponentTemplate
If needed, _setComponentTemplate can be imported:
import { setComponentTemplate } from '@ember/component';
Ember._setHelperManager
Previously, _setHelperManager could be accessed via the Ember import:
import Ember from 'ember';
Ember._setHelperManager
If needed, _setHelperManager can be imported:
import { setHelperManager } from '@ember/helper';
Ember._setModifierManager
Previously, _setModifierManager could be accessed via the Ember import:
import Ember from 'ember';
Ember._setModifierManager
If needed, _setModifierManager can be imported:
import { setModifierManager } from '@ember/modifier';
Ember._templateOnlyComponent
Previously, _templateOnlyComponent could be accessed via the Ember import:
import Ember from 'ember';
Ember._templateOnlyComponent
If needed, _templateOnlyComponent can be imported:
import templateOnly from '@ember/component/template-only';
Ember._tracked
Previously, _tracked could be accessed via the Ember import:
import Ember from 'ember';
Ember._tracked
If needed, _tracked can be imported:
import { tracked } from '@glimmer/tracking';
Ember._unregisterDestructor
Previously, _unregisterDestructor could be accessed via the Ember import:
import Ember from 'ember';
Ember._unregisterDestructor
If needed, _unregisterDestructor can be imported:
import { unregisterDestructor } from '@ember/destroyable';
Ember.A
Previously, A could be accessed via the Ember import:
import Ember from 'ember';
Ember.A
If needed, A can be imported:
import { A } from '@ember/array';
Ember.ActionHandler
Previously, ActionHandler could be accessed via the Ember import:
import Ember from 'ember';
Ember.ActionHandler
ActionHandler is also private.
There is no replacement for this API.
Ember.addListener
Previously, addListener could be accessed via the Ember import:
import Ember from 'ember';
Ember.addListener
If needed, addListener can be imported:
import { addListener } from '@ember/object/events';
Ember.addObserver
Previously, addObserver could be accessed via the Ember import:
import Ember from 'ember';
Ember.addObserver
If needed, addObserver can be imported:
import { addObserver } from '@ember/object/observers';
Ember.Application
Previously, Application could be accessed via the Ember import:
import Ember from 'ember';
Ember.Application
If needed, Application can be imported:
import Application from '@ember/application';
Ember.ApplicationInstance
Previously, ApplicationInstance could be accessed via the Ember import:
import Ember from 'ember';
Ember.ApplicationInstance
If needed, ApplicationInstance can be imported:
import ApplicationInstance from '@ember/application/instance';
Ember.Array
Previously, Array could be accessed via the Ember import:
import Ember from 'ember';
Ember.Array
If needed, Array can be imported:
import Array from '@ember/array';
Ember.ArrayProxy
Previously, ArrayProxy could be accessed via the Ember import:
import Ember from 'ember';
Ember.ArrayProxy
If needed, ArrayProxy can be imported:
import ArrayProxy from '@ember/array/proxy';
Ember.assert
Previously, assert could be accessed via the Ember import:
import Ember from 'ember';
Ember.assert
If needed, assert can be imported:
import { assert } from '@ember/debug';
Ember.beginPropertyChanges
Previously, beginPropertyChanges could be accessed via the Ember import:
import Ember from 'ember';
Ember.beginPropertyChanges
beginPropertyChanges is also private.
There is no replacement for this API.
Ember.BOOTED
Previously, BOOTED could be accessed via the Ember import:
import Ember from 'ember';
Ember.BOOTED
BOOTED is also private.
There is no replacement for this API.
Ember.cacheFor
Previously, cacheFor could be accessed via the Ember import:
import Ember from 'ember';
Ember.cacheFor
There is no replacement for this API.
Ember.canInvoke
Previously, canInvoke could be accessed via the Ember import:
import Ember from 'ember';
Ember.canInvoke
canInvoke is also private.
There is no replacement for this API.
Ember.changeProperties
Previously, changeProperties could be accessed via the Ember import:
import Ember from 'ember';
Ember.changeProperties
changeProperties is also private.
There is no replacement for this API.
Ember.Comparable
Previously, Comparable could be accessed via the Ember import:
import Ember from 'ember';
Ember.Comparable
Comparable is also private.
There is no replacement for this API.
Ember.compare
Previously, compare could be accessed via the Ember import:
import Ember from 'ember';
Ember.compare
If needed, compare can be imported:
import { compare } from '@ember/utils';
Ember.Component
Previously, Component could be accessed via the Ember import:
import Ember from 'ember';
Ember.Component
If needed, Component can be imported:
import Component from '@ember/component';
Ember.computed
Previously, computed could be accessed via the Ember import:
import Ember from 'ember';
Ember.computed
If needed, computed can be imported:
import { computed } from '@ember/object';
Ember.ComputedProperty
Previously, ComputedProperty could be accessed via the Ember import:
import Ember from 'ember';
Ember.ComputedProperty
There is no replacement for this API.
Ember.ContainerDebugAdapter
Previously, ContainerDebugAdapter could be accessed via the Ember import:
import Ember from 'ember';
Ember.ContainerDebugAdapter
If needed, ContainerDebugAdapter can be imported:
import ContainerDebugAdapter from '@ember/debug/container-debug-adapter';
Ember.Container
Previously, Container could be accessed via the Ember import:
import Ember from 'ember';
Ember.Container
Container is also private.
There is no replacement for this API.
Ember.controllerFor
Previously, controllerFor could be accessed via the Ember import:
import Ember from 'ember';
Ember.controllerFor
controllerFor is also private.
There is no replacement for this API.
Ember.Controller
Previously, Controller could be accessed via the Ember import:
import Ember from 'ember';
Ember.Controller
If needed, Controller can be imported:
import Controller from '@ember/controller';
Ember.ControllerMixin
Previously, ControllerMixin could be accessed via the Ember import:
import Ember from 'ember';
Ember.ControllerMixin
ControllerMixin is also private.
If needed, ControllerMixin can be imported:
import { ControllerMixin } from '@ember/controller';
However, due to ControllerMixin being private, it is not recommended, nor supported.
Ember.CoreObject
Previously, CoreObject could be accessed via the Ember import:
import Ember from 'ember';
Ember.CoreObject
If needed, CoreObject can be imported:
import EmberObject from '@ember/object';
Ember.DataAdapter
Previously, DataAdapter could be accessed via the Ember import:
import Ember from 'ember';
Ember.DataAdapter
If needed, DataAdapter can be imported:
import DataAdapter from '@ember/debug/data-adapter';
Ember.debug
Previously, debug could be accessed via the Ember import:
import Ember from 'ember';
Ember.debug
If needed, debug can be imported:
import { debug } from '@ember/debug';
Ember.defineProperty
Previously, defineProperty could be accessed via the Ember import:
import Ember from 'ember';
Ember.defineProperty
If needed, defineProperty can be imported:
import { defineProperty } from '@ember/object';
Ember.deprecate
Previously, deprecate could be accessed via the Ember import:
import Ember from 'ember';
Ember.deprecate
If needed, deprecate can be imported:
import { deprecate } from '@ember/debug';
Ember.deprecateFunc
Previously, deprecateFunc could be accessed via the Ember import:
import Ember from 'ember';
Ember.deprecateFunc
If needed, deprecateFunc can be imported:
import { deprecateFunc } from '@ember/debug';
Ember.destroy
Previously, destroy could be accessed via the Ember import:
import Ember from 'ember';
Ember.destroy
If needed, destroy can be imported:
import { destroy } from '@ember/destroyable';
Ember.endPropertyChanges
Previously, endPropertyChanges could be accessed via the Ember import:
import Ember from 'ember';
Ember.endPropertyChanges
endPropertyChanges is also private.
There is no replacement for this API.
Ember.Engine
Previously, Engine could be accessed via the Ember import:
import Ember from 'ember';
Ember.Engine
If needed, Engine can be imported:
import Engine from '@ember/engine';
Ember.EngineInstance
Previously, EngineInstance could be accessed via the Ember import:
import Ember from 'ember';
Ember.EngineInstance
If needed, EngineInstance can be imported:
import Engine from '@ember/engine/instance';
Ember.Enumerable
Previously, Enumerable could be accessed via the Ember import:
import Ember from 'ember';
Ember.Enumerable
Enumerable is also private.
If needed, Enumerable can be imported:
import Enumerable from '@ember/enumerable';
However, due to Enumerable being private, it is not recommended, nor supported.
Ember.ENV
Previously, ENV could be accessed via the Ember import:
import Ember from 'ember';
Ember.ENV
If needed, ENV can be imported:
import MyEnv from '<my-app>/config/environment';
For addons, getting access to the environment requires having access to the owner:
import { getOwner } from '@ember/owner';
// ...
let env = getOwner(this).resolveRegistration('config:environment');
Ember.Evented
Previously, Evented could be accessed via the Ember import:
import Ember from 'ember';
Ember.Evented
If needed, Evented can be imported:
import Evented from '@ember/object/evented';
Ember.expandProperties
Previously, expandProperties could be accessed via the Ember import:
import Ember from 'ember';
Ember.expandProperties
If needed, expandProperties can be imported:
import { expandProperties } from '@ember/object/computed';
Ember.FEATURES
Previously, FEATURES could be accessed via the Ember import:
import Ember from 'ember';
Ember.FEATURES
If needed, FEATURES can be imported:
import { isEnabled, FEATURES } from '@ember/canary-features';
Ember.generateControllerFactory
Previously, generateControllerFactory could be accessed via the Ember import:
import Ember from 'ember';
Ember.generateControllerFactory
generateControllerFactory is also private.
There is no replacement for this API.
Ember.generateController
Previously, generateController could be accessed via the Ember import:
import Ember from 'ember';
Ember.generateController
generateController is also private.
There is no replacement for this API.
Ember.generateGuid
Previously, generateGuid could be accessed via the Ember import:
import Ember from 'ember';
Ember.generateGuid
generateGuid is also private.
There is no replacement for this API.
Ember.get
Previously, get could be accessed via the Ember import:
import Ember from 'ember';
Ember.get
If needed, get can be imported:
import { get } from '@ember/object';
Ember.getOwner
Previously, getOwner could be accessed via the Ember import:
import Ember from 'ember';
Ember.getOwner
If needed, getOwner can be imported:
import { getOwner } from '@ember/owner';
If you're working in a library and need to support earlier than ember-source@4.11, you may use @embroider/macros to selectively import from the old location
import {
macroCondition,
dependencySatisfies,
importSync,
} from '@embroider/macros';
let getOwner;
if (macroCondition(dependencySatisfies('ember-source', '>= 4.11'))) {
getOwner = importSync('@ember/owner').getOwner;
} else {
getOwner = importSync('@ember/application').getOwner;
}
Ember.getProperties
Previously, getProperties could be accessed via the Ember import:
import Ember from 'ember';
Ember.getProperties
If needed, getProperties can be imported:
import { getProperties } from '@ember/object';
Ember.guidFor
Previously, guidFor could be accessed via the Ember import:
import Ember from 'ember';
Ember.guidFor
If needed, guidFor can be imported:
import { guidFor } from '@ember/object/internals';
Ember.GUID_KEY
Previously, GUID_KEY could be accessed via the Ember import:
import Ember from 'ember';
Ember.GUID_KEY
GUID_KEY is also private.
There is no replacement for this API.
Ember.Handlebars
Previously, Handlebars could be accessed via the Ember import:
import Ember from 'ember';
Ember.Handlebars
There is no replacement for this API.
Ember.hasListeners
Previously, hasListeners could be accessed via the Ember import:
import Ember from 'ember';
Ember.hasListeners
There is no replacement for this API.
Ember.HashLocation
Previously, HashLocation could be accessed via the Ember import:
import Ember from 'ember';
Ember.HashLocation
If needed, HashLocation can be imported:
import HashLocation from '@ember/routing/hash-location';
Ember.Helper
Previously, Helper could be accessed via the Ember import:
import Ember from 'ember';
Ember.Helper
If needed, Helper can be imported:
import Helper from '@ember/component/helper';
Ember.HistoryLocation
Previously, HistoryLocation could be accessed via the Ember import:
import Ember from 'ember';
Ember.HistoryLocation
If needed, HistoryLocation can be imported:
import HistoryLocation from '@ember/routing/history-location';
Ember.HTMLBars
Previously, HTMLBars could be accessed via the Ember import:
import Ember from 'ember';
Ember.HTMLBars
There is no replacement for this API.
Ember.inject
Previously, inject could be accessed via the Ember import:
import Ember from 'ember';
Ember.inject
There is no replacement for this API.
Ember.inspect
Previously, inspect could be accessed via the Ember import:
import Ember from 'ember';
Ember.inspect
inspect is also private.
There is no replacement for this API.
Ember.instrument
Previously, instrument could be accessed via the Ember import:
import Ember from 'ember';
Ember.instrument
instrument is also private.
If needed, instrument can be imported:
import { instrument } from '@ember/instrumentation';
However, due to instrument being private, it is not recommended, nor supported.
Ember.Instrumentation
Previously, Instrumentation could be accessed via the Ember import:
import Ember from 'ember';
Ember.Instrumentation
Instrumentation is also private.
If needed, Instrumentation can be imported:
import { * } from '@ember/instrumentation';
However, due to Instrumentation being private, it is not recommended, nor supported.
Ember.isArray
Previously, isArray could be accessed via the Ember import:
import Ember from 'ember';
Ember.isArray
If needed, isArray can be imported:
import { isArray } from '@ember/array';
Ember.isBlank
Previously, isBlank could be accessed via the Ember import:
import Ember from 'ember';
Ember.isBlank
If needed, isBlank can be imported:
import { isBlank } from '@ember/utils';
Ember.isEmpty
Previously, isEmpty could be accessed via the Ember import:
import Ember from 'ember';
Ember.isEmpty
If needed, isEmpty can be imported:
import { isEmpty } from '@ember/utils';
Ember.isEqual
Previously, isEqual could be accessed via the Ember import:
import Ember from 'ember';
Ember.isEqual
If needed, isEqual can be imported:
import { isEqual } from '@ember/utils';
Ember.isNamespace
Previously, isNamespace could be accessed via the Ember import:
import Ember from 'ember';
Ember.isNamespace
There is no replacement for this API.
Ember.isPresent
Previously, isPresent could be accessed via the Ember import:
import Ember from 'ember';
Ember.isPresent
If needed, isPresent can be imported:
import { isPresent } from '@ember/utils';
Ember.libraries
Previously, libraries could be accessed via the Ember import:
import Ember from 'ember';
Ember.libraries
There is no replacement for this API.
If needed, libraries can be imported from a private module:
import { libraries } from '@ember/-internals/metal';
Instead of using this import, consider using a build plugin for your packager. Some options:
- https://github.com/ubilabs/webpack-node-modules-list
- https://github.com/yjl9903/unplugin-info
These are both more automatic than Ember's libraries utility.
Ember.lookup
Previously, lookup could be accessed via the Ember import:
import Ember from 'ember';
Ember.lookup
There is no replacement for this API.
Ember.makeArray
Previously, makeArray could be accessed via the Ember import:
import Ember from 'ember';
Ember.makeArray
makeArray is also private.
If needed, makeArray can be imported:
import { makeArray } from '@ember/array';
However, due to makeArray being private, it is not recommended, nor supported.
Ember.meta
Previously, meta could be accessed via the Ember import:
import Ember from 'ember';
Ember.meta
meta is also private.
If needed, meta can be imported:
import { meta } from '@ember/-internals/meta';
However, due to meta being private, it is not recommended, nor supported.
Ember.mixin
Previously, mixin could be accessed via the Ember import:
import Ember from 'ember';
Ember.mixin
mixin is also private.
If needed, mixin can be imported:
import { mixin } from '@ember/object/mixin';
However, due to mixin being private, it is not recommended, nor supported.
Ember.MutableArray
Previously, MutableArray could be accessed via the Ember import:
import Ember from 'ember';
Ember.MutableArray
If needed, MutableArray can be imported:
import MutableArray from '@ember/array/mutable';
Ember.MutableEnumerable
Previously, MutableEnumerable could be accessed via the Ember import:
import Ember from 'ember';
Ember.MutableEnumerable
MutableEnumerable is also private.
If needed, MutableEnumerable can be imported:
import MutableEnumerable from '@ember/enumerable/mutable';
However, due to MutableEnumerable being private, it is not recommended, nor supported.
Ember.Namespace
Previously, Namespace could be accessed via the Ember import:
import Ember from 'ember';
Ember.Namespace
If needed, Namespace can be imported:
import Namespace from '@ember/application/namespace';
Ember.NativeArray
Previously, NativeArray could be accessed via the Ember import:
import Ember from 'ember';
Ember.NativeArray
If needed, NativeArray can be imported:
import { NativeArray } from '@ember/array';
Ember.NoneLocation
Previously, NoneLocation could be accessed via the Ember import:
import Ember from 'ember';
Ember.NoneLocation
If needed, NoneLocation can be imported:
import NoneLocation from '@ember/routing/none-location';
Ember.notifyPropertyChange
Previously, notifyPropertyChange could be accessed via the Ember import:
import Ember from 'ember';
Ember.notifyPropertyChange
If needed, notifyPropertyChange can be imported:
import { notifyPropertyChange } from '@ember/object';
Ember.Object
Previously, Object could be accessed via the Ember import:
import Ember from 'ember';
Ember.Object
If needed, Object can be imported:
import Object from '@ember/object';
Ember.ObjectProxy
Previously, ObjectProxy could be accessed via the Ember import:
import Ember from 'ember';
Ember.ObjectProxy
If needed, ObjectProxy can be imported:
import ObjectProxy from '@ember/object/proxy';
Ember.Observable
Previously, Observable could be accessed via the Ember import:
import Ember from 'ember';
Ember.Observable
If needed, Observable can be imported:
import Observable from '@ember/object/observable';
Ember.observer
Previously, observer could be accessed via the Ember import:
import Ember from 'ember';
Ember.observer
If needed, observer can be imported:
import { observer } from '@ember/object';
Ember.on
Previously, on could be accessed via the Ember import:
import Ember from 'ember';
Ember.on
If needed, on can be imported:
import { on } from '@ember/object/evented';
Ember.onLoad
Previously, onLoad could be accessed via the Ember import:
import Ember from 'ember';
Ember.onLoad
If needed, onLoad can be imported:
import { onLoad } from '@ember/application';
Ember.onerror
Previously, onerror could be accessed via the Ember import:
import Ember from 'ember';
Ember.onerror
There is no replacement for this API.
Ember.PromiseProxyMixin
Previously, PromiseProxyMixin could be accessed via the Ember import:
import Ember from 'ember';
Ember.PromiseProxyMixin
If needed, PromiseProxyMixin can be imported:
import EmberPromiseProxyMixin from '@ember/object/promise-proxy-mixin';
Ember.Registry
Previously, Registry could be accessed via the Ember import:
import Ember from 'ember';
Ember.Registry
Registry is also private.
There is no replacement for this API.
Ember.removeListener
Previously, removeListener could be accessed via the Ember import:
import Ember from 'ember';
Ember.removeListener
If needed, removeListener can be imported:
import { removeListener } from '@ember/object/events';
Ember.removeObserver
Previously, removeObserver could be accessed via the Ember import:
import Ember from 'ember';
Ember.removeObserver
If needed, removeObserver can be imported:
import { removeObserver } from '@ember/object/observers';
Ember.Route
Previously, Route could be accessed via the Ember import:
import Ember from 'ember';
Ember.Route
If needed, Route can be imported:
import Route from '@ember/routing/route';
Ember.RouterDSL
Previously, RouterDSL could be accessed via the Ember import:
import Ember from 'ember';
Ember.RouterDSL
There is no replacement for this API.
Ember.RSVP
Previously, RSVP could be accessed via the Ember import:
import Ember from 'ember';
Ember.RSVP
If needed, RSVP can be imported:
import RSVP from 'rsvp';
Ember.run
Previously, run could be accessed via the Ember import:
import Ember from 'ember';
Ember.run
If needed, run can be imported:
import { run } from '@ember/runloop';
Ember.runInDebug
Previously, runInDebug could be accessed via the Ember import:
import Ember from 'ember';
Ember.runInDebug
If needed, runInDebug can be imported:
import { runInDebug } from '@ember/debug';
Ember.runLoadHooks
Previously, runLoadHooks could be accessed via the Ember import:
import Ember from 'ember';
Ember.runLoadHooks
If needed, runLoadHooks can be imported:
import { runLoadHooks } from '@ember/application';
Ember.sendEvent
Previously, sendEvent could be accessed via the Ember import:
import Ember from 'ember';
Ember.sendEvent
If needed, sendEvent can be imported:
import { sendEvent } from '@ember/object/events';
Ember.Service
Previously, Service could be accessed via the Ember import:
import Ember from 'ember';
Ember.Service
If needed, Service can be imported:
import Service from '@ember/service';
Ember.set
Previously, set could be accessed via the Ember import:
import Ember from 'ember';
Ember.set
If needed, set can be imported:
import { set } from '@ember/object';
Ember.setOwner
Previously, setOwner could be accessed via the Ember import:
import Ember from 'ember';
Ember.setOwner
If needed, setOwner can be imported:
import { setOwner } from '@ember/owner';
If you're working in a library and need to support earlier than ember-source@4.11, you may use @embroider/macros to selectively import from the old location
import {
macroCondition,
dependencySatisfies,
importSync,
} from '@embroider/macros';
let setOwner;
if (macroCondition(dependencySatisfies('ember-source', '>= 4.11'))) {
setOwner = importSync('@ember/owner').setOwner;
} else {
setOwner = importSync('@ember/application').setOwner;
}
Ember.setProperties
Previously, setProperties could be accessed via the Ember import:
import Ember from 'ember';
Ember.setProperties
If needed, setProperties can be imported:
import { setProperties } from '@ember/object';
Ember.setupForTesting
Previously, setupForTesting could be accessed via the Ember import:
import Ember from 'ember';
Ember.setupForTesting
There is no replacement for this API.
Ember.subscribe
Previously, subscribe could be accessed via the Ember import:
import Ember from 'ember';
Ember.subscribe
subscribe is also private.
If needed, subscribe can be imported:
import { subscribe } from '@ember/instrumentation';
However, due to subscribe being private, it is not recommended, nor supported.
Ember.TEMPLATES
Previously, TEMPLATES could be accessed via the Ember import:
import Ember from 'ember';
Ember.TEMPLATES
TEMPLATES is also private.
There is no replacement for this API.
Ember.Test
Previously, Test could be accessed via the Ember import:
import Ember from 'ember';
Ember.Test
There is no replacement for this API.
Ember.testing
Previously, testing could be accessed via the Ember import:
import Ember from 'ember';
Ember.testing
There is no replacement for this API.
Ember.toString
Previously, toString could be accessed via the Ember import:
import Ember from 'ember';
Ember.toString
There is no replacement for this API.
Ember.trySet
Previously, trySet could be accessed via the Ember import:
import Ember from 'ember';
Ember.trySet
If needed, trySet can be imported:
import { trySet } from '@ember/object';
Ember.typeOf
Previously, typeOf could be accessed via the Ember import:
import Ember from 'ember';
Ember.typeOf
If needed, typeOf can be imported:
import { typeOf } from '@ember/utils';
Ember.uuid
Previously, uuid could be accessed via the Ember import:
import Ember from 'ember';
Ember.uuid
There is no replacement for this API.
Ember.VERSION
Previously, VERSION could be accessed via the Ember import:
import Ember from 'ember';
Ember.VERSION
If needed, VERSION can be imported:
import { VERSION } from '@ember/version';
Ember.ViewUtils
Previously, ViewUtils could be accessed via the Ember import:
import Ember from 'ember';
Ember.ViewUtils
ViewUtils is also private.
If needed, ViewUtils can be imported:
import { isSerializationFirstNode } from '@ember/-internals/glimmer';
However, due to ViewUtils being private, it is not recommended, nor supported.
Ember.warn
Previously, warn could be accessed via the Ember import:
import Ember from 'ember';
Ember.warn
If needed, warn can be imported:
import { warn } from '@ember/debug';
Ember.wrap
Previously, wrap could be accessed via the Ember import:
import Ember from 'ember';
Ember.wrap
wrap is also private.
There is no replacement for this API.
Deprecations Added in 6.10.0
Using amd bundles
Ember will no longer publish legacy AMD-specific Ember builds. To opt-in to
consuming Ember as ES modules and clear this deprecation, enable the
ember-modules optional feature by running ember feature:enable ember-modules.
This applies only to the classic build system or to Embroider < 4.0 without the
staticEmberSource: true option. If you see this deprecation warning in these
setups, please open an issue.
Alternatively, you can also clear the deprecation by moving to Embroider v4 by running the Ember Vite Codemod, but this may require additional changes to your project.
The AMD-specific Ember builds will no longer be published in next Ember major release
and no longer be bundled into vendor.js, even on the classic build system. These files are:
ember.debug.jsember.prod.jsember-testing.jsember-template-compiler.jsIn rare cases, Addons were relying on accessing Ember from
vendor. If you have addons that do so they will need to be updated to consume Ember as ES modules.
A known addon that previously relied on accessing Ember from vendor is
ember-cli-deprecation-workflow.
Please ensure you are on the latest version of this addon as that reliance has
been removed.