emberjs/ember.js · error · Error
Custom modifier managers must have a `capabilities` property
Error message
Custom modifier managers must have a `capabilities` property that is the result of calling the `capabilities('3.22')` (imported via `import { capabilities } from '@ember/modifier';`). Received: `${JSON.stringify(delegate.capabilities)}` for: `${delegate}` What it means
Error "Custom modifier managers must have a `capabilities` property that is the result of calling the `capabilities('3.22')` (imported via `import { capabilities } from '@ember/modifier';`). Received: `${JSON.stringify(delegate.capabilities)}` for: `${delegate}`" thrown in emberjs/ember.js.
Source
Thrown at packages/@glimmer/manager/lib/public/modifier.ts:93
O extends Owner,
ModifierInstance,
> implements InternalModifierManager<CustomModifierState<ModifierInstance>> {
private componentManagerDelegates = new WeakMap<O, ModifierManager<ModifierInstance>>();
constructor(private factory: ManagerFactory<O, ModifierManager<ModifierInstance>>) {}
private getDelegateFor(owner: O) {
let { componentManagerDelegates } = this;
let delegate = componentManagerDelegates.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 modifier managers must have a \`capabilities\` property that is the result of calling the \`capabilities('3.22')\` (imported via \`import { capabilities } from '@ember/modifier';\`). Received: \`${JSON.stringify(
delegate.capabilities
// eslint-disable-next-line @typescript-eslint/no-base-to-string
)}\` for: \`${delegate}\``
);
}
componentManagerDelegates.set(owner, delegate);
}
return delegate;
}
create(owner: O, element: SimpleElement, definition: object, capturedArgs: CapturedArguments) {
let delegate = this.getDelegateFor(owner);
let args = argsProxyFor(capturedArgs, 'modifier');
let instance: ModifierInstance = delegate.createModifier(definition, args);View on GitHub (pinned to 26f97246a8)
When it happens
Trigger: Thrown at packages/@glimmer/manager/lib/public/modifier.ts:93 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/dd1eee8bdd4140fb.
Report an issue: GitHub.