Skip to main content
Task caching skips a native executor when a successful result exists for the same inputs. It is separate from workspace discovery and dependency analysis. Targets opt in with cache: true, locally or through workspace target defaults. The JS initializer and Vitest add generator register cache defaults when missing. All three native build, lint, and test plugins support terminal log caching through core. cache, inputs, and outputs belong on the target or its workspace defaults, not inside executor options. Lint and test targets do not need an artifact directory. If a test configuration writes coverage or reports that must be restored, explicitly declare those directories as outputs. Include shared ESLint/Vitest configuration, imported configuration helpers, and files outside the project that the tools read in inputs. Cache inputs are not inferred from tool configuration.

Enable a target

Configure the compiler’s outDir to match dist/web. Output declarations do not change executor options. After editing a project definition, run isox reset before using a single-project command.
For a single project, a hit reports Cache hit for web:build before replaying saved terminal output. Multi-project runs show ✔ isox run web:build [local cache] instead. The live display and ordinary static output hide successful tool output. GitHub Actions includes it inside each task’s collapsible log group; verbose execution streams it. Cached output contains tool diagnostics, without replaying old task start or completion messages. A miss is logged before execution only with --verbose. Replayed terminal output comes from the original execution, including any durations it printed. --skip-cache also works with run, run-many, and affected; workers apply it to all pre/main/post stages. Set ISOX_SKIP_CACHE=1 to bypass results throughout a process tree. Only enable caching for deterministic tasks whose complete observable result is the declared output directories and terminal logs. Publishing, deployment, release versioning, network services, and tasks with external side effects must remain uncached. Watch mode (watch: true), dry runs (dryRun: true), and Nx adapter execution bypass result caching. Continuous executor results are never stored, even when the executor does not use a watch option.

Inputs and the key

See Inputs and the key.

Named inputs

See Named inputs.

Output ownership and recovery

See Output ownership and recovery.

Cost and limits

See Cost and limits.

Cache poisoning and trust boundaries

See Cache poisoning and trust boundaries.