Post

Until now, nx affected worked at the project level. Change one spec file in a shared library and every project depending on it is affected too. 23.3 selects tasks by what they read, so that change only runs the test task of the project the spec file lives in.

Task-based affected is opt-in in 23.3 and we plan to make it the default in Nx 24: NX_LEGACY_AFFECTED=false nx affected -t test If a task shows up (or doesn't) and you're not sure why, add --explain. It lists the affected tasks and exits without running anything.

The Oxlint plugin we shipped in 23.2 now runs in batch mode by default. Nx starts a single Oxlint process for all projects, and each project still keeps its own result, logs and cache entry. On a workspace with 50 libraries, linting went from 16.5s to 3.0s.

When an AI agent runs Nx, it now gets the new summary output style by default. Nx prints the task counts and, for each failed task, the path to its full log. The agent reads a log file only when it needs the details, which keeps the token usage low.

Project graph creation got up to 60% faster on cold runs and up to 80% faster on warm runs in a large enterprise workspace. How much you gain depends on your repo and the machine it runs on.