Fast CI starts with three layers: fast individual tasks, less unnecessary work, and enough compute to run independent tasks concurrently. Nx plugins, the project graph, task orchestration, and Nx Cloud address those layers together.
Use fast tools
Section titled “Use fast tools”A CI pipeline runs tasks such as build, test, lint, and e2e. The tools behind those tasks set the minimum execution time for a cache miss. Use current tools and configuration before adding more CI machines.
Nx can run tasks for any technology. Plugins provide deeper integrations for build tools such as Vite and Rspack, along with frameworks and test tools. Plugin migrations can update tool configuration when recommended settings change. The common plugin interface also makes it practical to compare tools without replacing Nx task orchestration.
Browse the plugin registry for prebuilt integrations.
Reduce unnecessary work
Section titled “Reduce unnecessary work”Most pull requests in a monorepo don't affect every project. Use nx affected to run tasks only for projects affected by a change and projects that depend on them.
Some affected tasks may have already run with the same inputs. Remote caching lets developer machines and CI jobs share those results, so Nx can restore terminal output and artifacts instead of repeating the task.
Affected calculations reduce the task graph before execution. Caching removes repeated work from the remaining graph. For a scenario-by-scenario explanation, see reduce waste in CI.
Parallelize and distribute tasks
Section titled “Parallelize and distribute tasks”Nx runs independent tasks in parallel while respecting task pipeline dependencies. Set a workspace-wide concurrency limit with parallel in nx.json, or use a command-line option such as nx affected -t test --parallel=4 for one run.
A single machine eventually becomes the bottleneck. Nx Agents distribute the task graph across multiple machines and dynamically assign ready tasks to available agents. Remote caching transfers task artifacts between machines, including back to the main job.
For the tradeoffs between parallelization and distribution in CI, see parallelization and distribution.