{"record":{"id":"65ffd004c6baa253","repo":"emberjs/ember.js","slug":"custom-helper-managers-must-have-a-capabilities","errorCode":null,"errorMessage":"Custom helper managers must have a `capabilities` property that is the result of calling the `capabilities('3.23')` (imported via `import { capabilities } from '@ember/helper';`). Received: `${JSON.stringify(delegate.capabilities)}` for: `${delegate}`","messagePattern":"Custom helper managers must have a `capabilities` property that is the result of calling the `capabilities\\('3\\.23'\\)` \\(imported via `import (.+?) from '@ember/helper';`\\)\\. Received: `(.+?)` for: `(.+?)`","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/@glimmer/manager/lib/public/helper.ts","lineNumber":91,"sourceCode":"////////////\n\nexport class CustomHelperManager<O extends Owner = Owner> implements InternalHelperManager<O> {\n  constructor(private factory: ManagerFactory<O | undefined, HelperManager<unknown>>) {}\n\n  private helperManagerDelegates = new WeakMap<O, HelperManager<unknown>>();\n  private undefinedDelegate: HelperManager<unknown> | null = null;\n\n  private getDelegateForOwner(owner: O) {\n    let delegate = this.helperManagerDelegates.get(owner);\n\n    if (delegate === undefined) {\n      let { factory } = this;\n      delegate = factory(owner);\n\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- @fixme\n      if (DEBUG && !FROM_CAPABILITIES!.has(delegate.capabilities)) {\n        // TODO: This error message should make sense in both Ember and Glimmer https://github.com/glimmerjs/glimmer-vm/issues/1200\n        throw new Error(\n          `Custom helper managers must have a \\`capabilities\\` property that is the result of calling the \\`capabilities('3.23')\\` (imported via \\`import { capabilities } from '@ember/helper';\\`). Received: \\`${JSON.stringify(\n            delegate.capabilities\n            // eslint-disable-next-line @typescript-eslint/no-base-to-string\n          )}\\` for: \\`${delegate}\\``\n        );\n      }\n\n      this.helperManagerDelegates.set(owner, delegate);\n    }\n\n    return delegate;\n  }\n\n  getDelegateFor(owner: O | undefined) {\n    if (owner === undefined) {\n      let { undefinedDelegate } = this;\n\n      if (undefinedDelegate === null) {","sourceCodeStart":73,"sourceCodeEnd":109,"githubUrl":"https://github.com/emberjs/ember.js/blob/26f97246a8bf2e28edf26ac3093da2e86c04ffc5/packages/@glimmer/manager/lib/public/helper.ts#L73-L109","documentation":"Error \"Custom helper managers must have a `capabilities` property that is the result of calling the `capabilities('3.23')` (imported via `import { capabilities } from '@ember/helper';`). Received: `${JSON.stringify(delegate.capabilities)}` for: `${delegate}`\" thrown in emberjs/ember.js.","triggerScenarios":"Thrown at packages/@glimmer/manager/lib/public/helper.ts:91 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"26f97246a8bf2e28edf26ac3093da2e86c04ffc5","analyzedAt":"2026-09-01T05:01:28.182Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}