emberjs/ember.js · error · Error

The API deprecated by ${options.id} was removed in ember-sou

Error message

The API deprecated by ${options.id} was removed in ember-source ${options.until}. The message was: ${message}. Please see ${options.url} for more details.

What it means

deprecateUntil throws when the deprecation being reported has already passed its removal version (isRemoved true) in ember-source. Ember hard-errors instead of warning so that code relying on removed APIs is unmistakable.

Source

Thrown at packages/@ember/-internals/deprecations/index.ts:152

    url: 'https://deprecations.emberjs.com/id/deprecate-evented',
  }),
  DEPRECATE_MIXINS: deprecation({
    id: 'deprecate-mixins',
    for: 'ember-source',
    since: { available: '7.4.0' },
    until: '8.0.0',
    url: 'https://deprecations.emberjs.com/id/deprecate-mixins',
  }),
};

export function deprecateUntil(message: string, deprecation: DeprecationObject) {
  const { options } = deprecation;
  assert(
    'deprecateUntil must only be called for ember-source',
    Boolean(options.for === 'ember-source')
  );
  if (deprecation.isRemoved) {
    throw new Error(
      `The API deprecated by ${options.id} was removed in ember-source ${options.until}. The message was: ${message}. Please see ${options.url} for more details.`
    );
  }
  deprecate(message, deprecation.test, options);
}

View on GitHub (pinned to 26f97246a8)

Solutions

  1. Stop using the removed API named in the message (id + url explain the replacement)
  2. Update the addon producing the deprecation to a version compatible with your ember-source
  3. If you own the deprecateUntil call, bump/remove the deprecation entry since isRemoved is now true

Example fix

// before
Evented.extend({ didInsertElement() { this.trigger('initialized'); } });
// after
// use the replacement API from the deprecation url (e.g. modifiers/lifecycle hooks without Evented)
Defensive patterns

Strategy: try-catch

Validate before calling

// check your ember-source version against the deprecation's `until`
import { VERSION } from '@ember/version';
if (compare(VERSION, '5.0.0') >= 0) stopUsingRemovedApi();

Try / catch

try { eventedApi(); } catch (e) { if (String(e.message).startsWith('The API deprecated by') && e.message.includes('was removed')) migrateToReplacement(); else throw e; }

Prevention

When it happens

Trigger: Calling any still-live code path wired to a removed deprecation id — e.g. evented API calls (eventedOn/eventedOne/eventedTrigger/eventedOff) or addons calling deprecateUntil with an id/until that has been reached.

Common situations: Upgrading ember-source past an addon's supported version; pinning code that used a deprecated evented mixin API; addon not updated when the deprecation's until version arrived.

Related errors


AI-assisted analysis of emberjs/ember.js@26f97246a8 (2026-09-01). Data as JSON: /api/errors/c4fed32bfed5d65c. Report an issue: GitHub.