{"record":{"id":"c4fed32bfed5d65c","repo":"emberjs/ember.js","slug":"the-api-deprecated-by-options-id-was-removed-in","errorCode":null,"errorMessage":"The API deprecated by ${options.id} was removed in ember-source ${options.until}. The message was: ${message}. Please see ${options.url} for more details.","messagePattern":"The API deprecated by (.+?) was removed in ember-source (.+?)\\. The message was: (.+?)\\. Please see (.+?) for more details\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/@ember/-internals/deprecations/index.ts","lineNumber":152,"sourceCode":"    url: 'https://deprecations.emberjs.com/id/deprecate-evented',\n  }),\n  DEPRECATE_MIXINS: deprecation({\n    id: 'deprecate-mixins',\n    for: 'ember-source',\n    since: { available: '7.4.0' },\n    until: '8.0.0',\n    url: 'https://deprecations.emberjs.com/id/deprecate-mixins',\n  }),\n};\n\nexport function deprecateUntil(message: string, deprecation: DeprecationObject) {\n  const { options } = deprecation;\n  assert(\n    'deprecateUntil must only be called for ember-source',\n    Boolean(options.for === 'ember-source')\n  );\n  if (deprecation.isRemoved) {\n    throw new Error(\n      `The API deprecated by ${options.id} was removed in ember-source ${options.until}. The message was: ${message}. Please see ${options.url} for more details.`\n    );\n  }\n  deprecate(message, deprecation.test, options);\n}\n","sourceCodeStart":134,"sourceCodeEnd":158,"githubUrl":"https://github.com/emberjs/ember.js/blob/26f97246a8bf2e28edf26ac3093da2e86c04ffc5/packages/@ember/-internals/deprecations/index.ts#L134-L158","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","solutions":["Stop using the removed API named in the message (id + url explain the replacement)","Update the addon producing the deprecation to a version compatible with your ember-source","If you own the deprecateUntil call, bump/remove the deprecation entry since isRemoved is now true"],"exampleFix":"// before\nEvented.extend({ didInsertElement() { this.trigger('initialized'); } });\n// after\n// use the replacement API from the deprecation url (e.g. modifiers/lifecycle hooks without Evented)","handlingStrategy":"try-catch","validationCode":"// check your ember-source version against the deprecation's `until`\nimport { VERSION } from '@ember/version';\nif (compare(VERSION, '5.0.0') >= 0) stopUsingRemovedApi();","typeGuard":null,"tryCatchPattern":"try { eventedApi(); } catch (e) { if (String(e.message).startsWith('The API deprecated by') && e.message.includes('was removed')) migrateToReplacement(); else throw e; }","preventionTips":["Act on deprecation warnings before the until version","Keep addons updated in lockstep with ember-source","Audit deprecation ids in CI (silence none permanently)","Read the deprecation url for the documented replacement"],"tags":["ember","deprecation","removed-api","upgrade"],"backgroundTag":"deprecated-api-removed","analyzedSha":"26f97246a8bf2e28edf26ac3093da2e86c04ffc5","analyzedAt":"2026-09-01T05:01:28.182Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}