emberjs/ember.js · error · Error

Custom helper managers must have a `capabilities` property t

Error message

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}`

What it means

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.

Source

Thrown at packages/@glimmer/manager/lib/public/helper.ts:91

////////////

export class CustomHelperManager<O extends Owner = Owner> implements InternalHelperManager<O> {
  constructor(private factory: ManagerFactory<O | undefined, HelperManager<unknown>>) {}

  private helperManagerDelegates = new WeakMap<O, HelperManager<unknown>>();
  private undefinedDelegate: HelperManager<unknown> | null = null;

  private getDelegateForOwner(owner: O) {
    let delegate = this.helperManagerDelegates.get(owner);

    if (delegate === undefined) {
      let { factory } = this;
      delegate = factory(owner);

      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- @fixme
      if (DEBUG && !FROM_CAPABILITIES!.has(delegate.capabilities)) {
        // TODO: This error message should make sense in both Ember and Glimmer https://github.com/glimmerjs/glimmer-vm/issues/1200
        throw new 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
            // eslint-disable-next-line @typescript-eslint/no-base-to-string
          )}\` for: \`${delegate}\``
        );
      }

      this.helperManagerDelegates.set(owner, delegate);
    }

    return delegate;
  }

  getDelegateFor(owner: O | undefined) {
    if (owner === undefined) {
      let { undefinedDelegate } = this;

      if (undefinedDelegate === null) {

View on GitHub (pinned to 26f97246a8)

When it happens

Trigger: Thrown at packages/@glimmer/manager/lib/public/helper.ts:91 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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