mrkeyoor.com_
Tue 01 Sept 16:20 UTC
Dev Toolsevaluationupdated 27 Aug 2026

nx review

Nx is a build system and workspace manager for monorepos, especially TypeScript codebases that have grown into many applications and packages. It discovers project relationships, caches task output, runs affected work, and adds generators and CI coordination around the tools a team already uses.

+19stars / 7d
Verdict

Our Nx checkout installed 4,313 packages, used 3,120 MB, then failed both build and tests because dotnet was absent, so contributing to Nx requires a genuinely polyglot toolchain. Using Nx inside an application repo is much lighter and worthwhile once task graphs, affected runs, or CI caching save measurable time. Skip it for a small workspace whose existing scripts are already quick and obvious.

We ran it

Lab card: what happened when we ran nxScreenshot of nx (nx.dev)
Install✓ · 89s4313 packages · 3120 MB
Build✗ · 119s
Tests✗ · 40sran, no count parsed
Repo10541 files~1,127,026 lines of source · 114.7 MB · 13 CI workflows

Answers from our run

Does nx build from source?

Dependencies installed in 89 seconds (4313 packages), and the build failed. We cloned commit 9064aa9 into a clean Debian container with 3 CPUs and no project-specific setup.

Do nx's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Who should not use nx?

Small repositories with a few fast scripts: Nx adds a project graph, configuration, plugins, and upgrade work that may cost more than it saves.

What are the alternatives to nx?

Turborepo, Bazel, Rush Stack. Our Nx checkout installed 4,313 packages, used 3,120 MB, then failed both build and tests because dotnet was absent, so contributing to Nx requires a genuinely polyglot toolchain.

Setup3/5Easy workspace adoption, but the source tree needs a broad toolchain
Docs4/5Clear entry points and extensive docs beyond the brief README
Community5/5Frequent releases, recent pushes, and broad framework support
Maturity5/5Established task graph, plugins, migrations, and CI products

Discussed on

  1. hnMalicious versions of Nx and some supporting plugins were published443 points
  2. hnExtensible Web Dev Tools for Monorepos5 points
  3. hnNX VS Code extension compromised again4 points
  4. hnCritical: Compromised Nx Console version 18.95.03 points
  5. hnCompromised Nx Console3 points

Who it’s for

JavaScript and TypeScript teams whose shared packages and applications need one task graph.
Polyglot monorepos using tools such as Gradle, Maven, .NET, Go, Vite, Jest, or Vitest through plugins.
CI-heavy teams that can benefit from affected-only tasks, remote caching, task distribution, and split end-to-end tests.
Existing npm, pnpm, or Yarn workspaces that want to adopt caching through npx nx init instead of moving every package.

Who it’s NOT for

Small repositories with a few fast scripts: Nx adds a project graph, configuration, plugins, and upgrade work that may cost more than it saves.
Teams expecting the Nx source checkout to be Node-only: our build and test commands both stopped while creating the project graph because dotnet was missing.
Organizations that need all advanced CI features to remain local and free: the README presents integrated CI, remote caching, task distribution, and self-healing through Nx Cloud.
Developers who want a tiny dependency footprint: our pnpm install pulled 4,313 packages and occupied 3,120 MB before the build began.

Setup reality

Our pnpm install at commit 9064aa9 succeeded in 89 seconds, adding 4,313 packages and using 3,120 MB on disk. The build then failed after 119 seconds, and the test command failed after 40 seconds. Both logs stopped during project-graph processing because dotnet could not be spawned.

Adopting Nx in an existing workspace can start with npx nx init; useful caching then depends on declaring inputs and outputs correctly. Nx Cloud features require connecting a workspace and deciding what build metadata and cache artifacts can leave the CI environment.

The Nx repository is a polyglot monorepo of 10,541 files and about 1,127,026 source lines. Its own checkout exercises .NET and Rust integrations as well as Node tooling, so contributors need more system tools than an ordinary Nx user installing the CLI in an application repository.

Nx pays off when scripts become a graph

Nx turns a workspace full of package scripts into a model of projects, targets, inputs, outputs, and dependencies. It can then cache completed work and run only tasks affected by a change. That is a practical improvement once a repository contains several applications and shared libraries. Developers keep familiar tools such as Vite, Webpack, Jest, or Vitest, while Nx decides which command needs to run and in what order.

The project also reaches beyond JavaScript. Its plugin list includes Gradle, Maven, .NET, and Go, and the implementation mixes TypeScript with performance-sensitive Rust. That breadth explains both its appeal and its weight. Our checkout at commit 9064aa9 contained 10,541 files and about 1,127,026 lines of source. Nx can coordinate a mixed company repository, but teams must maintain the project model and plugin versions that make that coordination accurate.

Existing workspaces can adopt it incrementally

The README recommends npx nx init for an npm, pnpm, or Yarn workspace. Nx can discover package scripts and begin caching their outputs without forcing a full repository conversion. A useful trial starts with one expensive, deterministic task: declare its inputs and outputs, then compare local and CI behavior. A migration that begins with every plugin and generator at once makes it difficult to tell which layer helped.

Release 23.1.2 arrived on August 26, 2026, with fixes across Angular, core graph handling, pnpm and Bun lockfiles, daemon security, Gradle, Maven, .NET, Expo, Next.js, and other plugins. That breadth also marks the upgrade surface. An Nx version can interact with your package manager, TypeScript, test runner, framework plugin, and CI configuration. Pin versions and use the supplied migrations instead of treating the CLI as an isolated development dependency.

What happened when we ran it

Our pnpm install succeeded in 89 seconds and pulled 4,313 packages, which occupied 3,120 MB on disk. The build ran for 119 seconds before Nx failed to process its project graph. The log first reported that the MSBuild analyzer could not run because spawning dotnet returned ENOENT, then the lifecycle command exited with status 1. We did not get a completed build from this environment.

The test command reached the same boundary after 40 seconds. It invoked nx run-many -t test, then project-graph processing failed because the MSBuild analyzer could not spawn dotnet. The suite did not produce a trustworthy passed or failed test count, so we are not turning a graph-construction failure into a claim about code quality. Both failures show that the Nx repository itself expects system tooling beyond Node 22 and pnpm.

Caching needs correct boundaries to be trustworthy

Nx's local value comes from remembering task output and calculating affected projects. A cache hit is only safe when the declared inputs include everything that can change the result, and outputs identify what can be restored. Generated files, environment-dependent configuration, and hidden external inputs can make a fast cache misleading. Teams should begin with tasks whose behavior they understand, inspect the graph, and keep nondeterministic work out of the cache until its inputs are explicit.

Nx Cloud adds remote caching, task distribution, automatic end-to-end test splitting, flaky-task handling, and a self-healing CI feature described in the README. These can reduce repeated CI work across machines, but they introduce a service decision alongside the open-source tool. Decide what data and artifacts may be stored remotely, how access is controlled, and whether the paid service remains acceptable at your build volume. The local CLI is useful without buying the entire hosted layer.

Plugin coverage is both strength and maintenance cost

Framework-aware plugins can discover tasks, set cache defaults, scaffold code, and understand project relationships better than a generic script runner. This helps in a large React, Angular, or mixed frontend repository. The same knowledge couples the workspace to plugin migrations and each framework's release cadence. A team needs an owner for upgrades and graph correctness, especially when generators modify shared configuration.

GitHub showed 471 open issues and pull requests on August 27, 2026, split into 296 issues and 175 pull requests by search. The number is a combined work queue, not a defect total. The repository was pushed on the same day. Search that queue for your exact plugin combination before a major migration because Nx's behavior depends heavily on the tools it is coordinating.

Pick Nx after the repository has earned it

Nx fits when slow CI, repeated work, and unclear project relationships are already observable problems. Its incremental adoption path lets a team prove value without rebuilding the repository. Polyglot support and framework-aware generators distinguish it from a thin task runner, while established migration tooling makes continued use plausible.

Turborepo is easier to explain when a JavaScript workspace mainly needs task caching. Bazel gives cross-language builds stricter, lower-level rules but asks for more explicit configuration. Rush fits organizations focused on dependency policy and package publishing. Nx occupies the middle: more workspace knowledge than a script cache, and more JavaScript ergonomics than a general build system. Our failed source run should not deter application users, but it should reset expectations for anyone planning to contribute upstream.

Alternatives

ProjectWhat it isPick it when
Turborepo gh↗A task runner and cache for JavaScript and TypeScript monorepos with a narrower surface.pick this instead when your workspace is mostly package scripts and you want less project-model machinery.
Bazel gh↗A language-neutral build system built around explicit targets and reproducible actions.pick this instead when strict cross-language builds matter more than JavaScript framework integrations.
Rush StackA collection of tools for large TypeScript monorepos, including Rush for package orchestration.pick this instead when package publishing policy and large-team dependency governance are the main needs.

What people are saying

  1. [velocity-scout] nrwl/nx

Sources

  1. Nx README
  2. Nx repository
  3. Nx 23.1.2 release
  4. Nx quickstart

More dev tools reviews

v2rayNG · SecLists · hashcat · eslint · fastfetch · composer · the whole board →