Computed accessor that returns cached value
// 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)
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.