@cached

Memoizes a getter so it only recomputes when its tracked dependencies change.

Since Ember 4/5 (Octane) Spec ↗

Syntax

@cached get computed() {}

Returns

MethodDecorator — A decorator applied to a getter.

Examples

import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { cached } from '@glimmer/tracking';

export default class ListComponent extends Component {
  @tracked items = [];

  @cached
  get sorted() {
    return [...this.items].sort((a, b) => a.name.localeCompare(b.name));
  }
}

Notes

Plain getters already re-run lazily; add @cached only when the computation is expensive or must return a stable reference across reads within the same tracking frame.