emberjs/ember.js · error · Error

You attempted to set ${String(prop)} on the arguments of a c

Error message

You attempted to set ${String(prop)} on the arguments of a component, helper, or modifier. Arguments are immutable and cannot be updated directly; they always represent the values that are passed down. If you want to set default values, you should use a getter and local tracked state instead.

What it means

Error "You attempted to set ${String(prop)} on the arguments of a component, helper, or modifier. Arguments are immutable and cannot be updated directly; they always represent the values that are passed down. If you want to set default values, you should use a getter and local tracked state instead." thrown in emberjs/ember.js.

Source

Thrown at packages/@glimmer/manager/lib/util/args-proxy.ts:157

export const argsProxyFor = (
  capturedArgs: CapturedArguments,
  type: 'component' | 'helper' | 'modifier'
): Arguments => {
  const { named, positional } = capturedArgs;

  let getNamedTag = (_obj: object, key: string) => tagForNamedArg(named, key);
  let getPositionalTag = (_obj: object, key: string) => tagForPositionalArg(positional, key);

  const namedHandler = new NamedArgsProxy(named);
  const positionalHandler = new PositionalArgsProxy(positional);

  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
  const namedTarget = Object.create(null);
  const positionalTarget: unknown[] = [];

  if (DEBUG) {
    const setHandler = function (_target: unknown, prop: symbol | string | number): never {
      throw new Error(
        `You attempted to set ${String(
          prop
        )} on the arguments of a component, helper, or modifier. Arguments are immutable and cannot be updated directly; they always represent the values that are passed down. If you want to set default values, you should use a getter and local tracked state instead.`
      );
    };

    const forInDebugHandler = (): never => {
      throw new Error(
        `Object.keys() was called on the positional arguments array for a ${type}, which is not supported. This function is a low-level function that should not need to be called for positional argument arrays. You may be attempting to iterate over the array using for...in instead of for...of.`
      );
    };

    namedHandler.set = setHandler;
    positionalHandler.set = setHandler;
    positionalHandler.ownKeys = forInDebugHandler;
  }

  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment

View on GitHub (pinned to 26f97246a8)

When it happens

Trigger: Thrown at packages/@glimmer/manager/lib/util/args-proxy.ts:157 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/5fe75adda823869f. Report an issue: GitHub.