• Creates a computed value that lazily evaluates and caches based on dependencies.

    Computed values automatically track signals they read and only re-compute when those dependencies change. They cache their result for efficient repeated access.

    Isomorphic: Works identically across all JavaScript runtimes. Performance: Lazy evaluation - only computes when needed and dependencies change. Memory: Automatic cleanup when all computed values are disposed.

    Type Parameters

    • T

    Parameters

    • fn: (() => T)

      Function that computes the value

        • (): T
        • Returns T

    Returns (() => T)

    Computed accessor that returns cached value

      • (): T
      • Returns T

    // Basic computed value
    const count = signal(1);
    const doubled = computed(() => count() * 2);

    console.log(doubled()); // 2 (computes)
    console.log(doubled()); // 2 (cached)

    count.set(3);
    console.log(doubled()); // 6 (re-computes)
    // Complex computed with multiple dependencies
    const firstName = signal("John");
    const lastName = signal("Doe");
    const age = signal(30);

    const profile = computed(() => ({
    fullName: `${firstName()} ${lastName()}`,
    isAdult: age() >= 18,
    initials: `${firstName()[0]}${lastName()[0]}`
    }));

    console.log(profile().fullName); // "John Doe"
    firstName.set("Jane");
    console.log(profile().fullName); // "Jane Doe" (re-computed)