{"record":{"id":"a65daf0e1a1bb374","repo":"emberjs/ember.js","slug":"invalid-helper-manager-compatibility-specified-yo","errorCode":null,"errorMessage":"Invalid helper manager compatibility specified; you specified ${managerAPI}, but only '3.23' is supported.","messagePattern":"Invalid helper manager compatibility specified; you specified (.+?), but only '3\\.23' is supported\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/@glimmer/manager/lib/public/helper.ts","lineNumber":33,"sourceCode":"import {\n  createComputeRef,\n  createConstRef,\n  UNDEFINED_REFERENCE,\n} from '@glimmer/reference/lib/reference';\n\nimport type { ManagerFactory } from './index';\n\nimport { argsProxyFor } from '../util/args-proxy';\nimport { buildCapabilities, FROM_CAPABILITIES } from '../util/capabilities';\n\nexport function helperCapabilities<Version extends keyof HelperCapabilitiesVersions>(\n  managerAPI: Version,\n  options: Partial<HelperCapabilities> = {}\n): HelperCapabilities {\n  debugAssert(\n    managerAPI === '3.23',\n    () =>\n      `Invalid helper manager compatibility specified; you specified ${managerAPI}, but only '3.23' is supported.`\n  );\n\n  if (\n    DEBUG &&\n    (!(options.hasValue || options.hasScheduledEffect) ||\n      (options.hasValue && options.hasScheduledEffect))\n  ) {\n    throw new Error(\n      'You must pass either the `hasValue` OR the `hasScheduledEffect` capability when defining a helper manager. Passing neither, or both, is not permitted.'\n    );\n  }\n\n  if (DEBUG && options.hasScheduledEffect) {\n    throw new Error(\n      'The `hasScheduledEffect` capability has not yet been implemented for helper managers. Please pass `hasValue` instead'\n    );\n  }\n","sourceCodeStart":15,"sourceCodeEnd":51,"githubUrl":"https://github.com/emberjs/ember.js/blob/26f97246a8bf2e28edf26ac3093da2e86c04ffc5/packages/@glimmer/manager/lib/public/helper.ts#L15-L51","documentation":"`helperCapabilities()` validates the manager API version. Unlike components (which accept '3.13'), helper managers only support '3.23', and a debugAssert throws with the version you actually passed. This ensures helper managers are built against the supported capability set.","triggerScenarios":"Calling `capabilities('3.13')` (copying the component-manager form) or any other version string when defining a helper manager's capabilities; passing a non-literal or undefined version.","commonSituations":"Copy-pasting capabilities from a component manager into a helper manager; helper manager examples from outdated blog posts; typos like '3.32'.","solutions":["Change the version argument to exactly '3.23' in the helper manager's capabilities call","Import `capabilities` from @glimmer/manager (or Ember's re-export) to avoid mixing component/helper capability producers","Review helper manager docs for the supported version","Add a unit test that constructs the manager so the assert fires at build/test time"],"exampleFix":"// before\nclass MyHelperManager {\n  capabilities = capabilities('3.13');\n}\n// after\nclass MyHelperManager {\n  capabilities = capabilities('3.23', { hasValue: true });\n}","handlingStrategy":"validation","validationCode":"import { capabilities } from '@glimmer/manager';\nconst version = '3.23';\nif (version !== '3.23') throw new Error('helper managers only support 3.23');\nconst CAPS = capabilities('3.23', { hasValue: true });","typeGuard":"const isHelperCapsVersion = (v: string): v is '3.23' => v === '3.23';","tryCatchPattern":"try { caps = helperCapabilities(version, opts); } catch (e) { if (/Invalid helper manager compatibility/.test(e.message)) caps = helperCapabilities('3.23', opts); else throw e; }","preventionTips":["Use '3.23' (not '3.13') for helper capabilities","Keep component and helper capability calls in separate, clearly named files","Add a construction test for every custom helper manager"],"tags":["helper-manager","capabilities","version"],"backgroundTag":"invalid-manager-capabilities-version","analyzedSha":"26f97246a8bf2e28edf26ac3093da2e86c04ffc5","analyzedAt":"2026-09-01T05:01:28.182Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}