<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/look-mum-no-executors-ms35yggcg" -->

---
title: Look Mum, No Executors | daily.dev
description: Nx v24 removes the built-in executors deprecated in Nx v23, including @nx/jest:jest, @nx/webpack:webpack, @nx/vite:build, and many others. These are replaced...
canonical: https://daily.dev/posts/look-mum-no-executors-ms35yggcg
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Look Mum, No Executors | daily.dev
og:description: Nx v24 removes the built-in executors deprecated in Nx v23, including @nx/jest:jest, @nx/webpack:webpack, @nx/vite:build, and many others. These are replaced...
og:url: https://daily.dev/posts/look-mum-no-executors-ms35yggcg
og:image: https://api.daily.dev/og/posts/Ms35YgGcg.png
og:image:alt: Look Mum, No Executors
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Look Mum, No Executors

**[Nx](https://daily.dev/sources/nx)** · 9 min read · 10 upvotes · 2 comments

## Summary

Nx v24 removes the built-in executors deprecated in Nx v23, including @nx/jest:jest, @nx/webpack:webpack, @nx/vite:build, and many others. These are replaced by inferred targets, introduced in Nx v18 with Project Crystal, where plugins read existing tool config files (jest.config.ts, vite.config.ts, etc.) and derive targets automatically. This eliminates the wrapper overhead, removes dual sources of truth, and enables features like per-file test atomization and correct caching by default. Migration is a single command: run `npx nx migrate latest` to get on Nx v23, then `npx nx g infer-targets` to convert the workspace. The executor API itself is not removed — only the specific built-in executor implementations are. Manual attention is needed for package.json script targets and Webpack projects still using composePlugins.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://nx.dev/blog/look-mum-no-executors>

## Questions this post answers

### Which executors are being removed in Nx v24?

Nx v24 removes all built-in executors deprecated in Nx v23. The removed executors include @nx/cypress:cypress, @nx/eslint:lint, @nx/jest:jest, @nx/playwright:playwright, @nx/rollup:rollup, @nx/vitest:test, @nx/vite:build/dev-server/preview-server, @nx/webpack:webpack/dev-server, @nx/next:build/server, @nx/storybook:storybook/build, @nx/rspack:rspack/dev-server, and several Expo, React Native, Remix, and Detox executors. The executor API itself, nx:run-commands, @nx/js build executors, @nx/esbuild:esbuild, and all @nx/angular executors are NOT removed.

_Teams maintaining Nx monorepos track executor deprecations and migration timelines on daily.dev._

### How do I migrate my Nx workspace from executors to inferred targets before Nx v24?

Migration has three steps. First, update to the latest Nx v23 with `npx nx migrate latest && npx nx migrate --run-migrations` — v23.2+ handles more edge cases. Second, run `npx nx g infer-targets` to convert all plugins at once, or use per-plugin generators like `npx nx g @nx/eslint:convert-to-inferred --project my-app`. Third, verify with `npx nx show project my-app --web`. Note: if nx.json has `useInferencePlugins: false`, remove that flag first.

_Developers upgrading Nx workspaces find migration walkthroughs and community discussion on daily.dev._

### What are the advantages of Nx inferred targets over executors?

Inferred targets eliminate the executor wrapper between you and the tool, so CLI flags pass through directly and tool upgrades only require a package.json change rather than waiting for an Nx release. They also enable the Atomizer (one target per test file for distributed runs), correct caching derived from actual config rather than convention, zero project.json boilerplate for standard setups, and loose coupling so the plugin and tool can evolve independently.

_Nx monorepo architecture decisions like this one surface regularly for developers following build tooling on daily.dev._

## Community discussion

Top comments from developers on daily.dev.

**@janpolasek** · 0 upvotes

> "Migration is a single command". Yea, nah, the `@nx/cypress:convert-to-inferred` generator produces complete nonsense.

**@agustinbarrientos** · 0 upvotes

> The migration report should group skipped package.json targets separately so they're easy to find in a large workspace

## Similar posts on daily.dev

- [Nx 23.3 Is Here: Task-Based Affected, Faster Graph Creation and Agent-Friendly Output](https://daily.dev/posts/nx-23-3-is-here-task-based-affected-faster-graph-creation-and-agent-friendly-output-bp3st76bj) · Nx · 2 upvotes · 0 comments
- [Nx 22.7 Is Here: Task Sandboxing, 7x Less Memory, and Worktree-Aware Caching](https://daily.dev/posts/nx-22-7-is-here-task-sandboxing-7x-less-memory-and-worktree-aware-caching-gushrqdhz) · Nx · 0 upvotes · 0 comments
- [Nx 23.2 Is Here: Oxlint, Oxfmt, Leaner CLI Output and Better Caching](https://daily.dev/posts/nx-23-2-is-here-oxlint-oxfmt-leaner-cli-output-and-better-caching-y4qpshwax) · Nx · 1 upvotes · 0 comments
- [Nx 23.1 Is Here: Per-Run Performance Reports, TypeScript 6, and Angular 22](https://daily.dev/posts/nx-23-1-is-here-per-run-performance-reports-typescript-6-and-angular-22-s81tlfg13) · Nx · 2 upvotes · 0 comments

---

Tags: [#webdev](https://daily.dev/tags/webdev), [#general-programming](https://daily.dev/tags/general-programming), [#typescript](https://daily.dev/tags/typescript)

[View this post on daily.dev](https://daily.dev/posts/look-mum-no-executors-ms35yggcg)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Look Mum, No Executors","url":"https://daily.dev/posts/look-mum-no-executors-ms35yggcg","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/look-mum-no-executors-ms35yggcg"},"datePublished":"2026-09-29T13:28:07.837Z","dateModified":"2026-09-29T14:56:25.109Z","description":"Nx v24 removes the built-in executors deprecated in Nx v23, including @nx/jest:jest, @nx/webpack:webpack, @nx/vite:build, and many others. These are replaced...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/8041fdb9fce6f28efd1ab73d156a4c81?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/8041fdb9fce6f28efd1ab73d156a4c81?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Nx","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Nx","logo":"https://media.daily.dev/image/upload/s--09OCt--d--/f_auto/v1761722266/logos/nx","url":"https://daily.dev/sources/nx"},"commentCount":2,"discussionUrl":"https://daily.dev/posts/look-mum-no-executors-ms35yggcg","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":10},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":2}],"keywords":"webdev,general-programming,typescript","timeRequired":"PT9M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Nx","item":"https://daily.dev/sources/nx"},{"@type":"ListItem","position":3,"name":"Look Mum, No Executors"}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/look-mum-no-executors-ms35yggcg","comment":[{"@type":"Comment","text":"“Migration is a single command”. Yea, nah, the @nx/cypress:convert-to-inferred generator produces complete nonsense.","datePublished":"2026-09-30T14:16:52.942Z","url":"https://daily.dev/posts/Ms35YgGcg#c-hC2MpKZ5K","author":{"@type":"Person","name":"Jan Polášek","url":"https://daily.dev/janpolasek","image":"https://lh3.googleusercontent.com/a/ACg8ocIIqjjJV2oNsmf13VsrDfukH1txBIMu5WQ7e9q74z0EWIDIEg=s96-c"}},{"@type":"Comment","text":"The migration report should group skipped package.json targets separately so they’re easy to find in a large workspace","datePublished":"2026-10-01T22:18:07.521Z","url":"https://daily.dev/posts/Ms35YgGcg#c-64ILDz4SU","author":{"@type":"Person","name":"Agustin Barrientos","url":"https://daily.dev/agustinbarrientos","image":"https://media.daily.dev/image/upload/s--5ayxQnqn--/f_auto/v1788281802/avatars/avatar_wQYYVe5Tbj0NJ7C7qPoa8?_a=BAMAMicg0"}}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/look-mum-no-executors-ms35yggcg#faq","mainEntity":[{"@type":"Question","name":"Which executors are being removed in Nx v24?","acceptedAnswer":{"@type":"Answer","text":"Nx v24 removes all built-in executors deprecated in Nx v23. The removed executors include @nx/cypress:cypress, @nx/eslint:lint, @nx/jest:jest, @nx/playwright:playwright, @nx/rollup:rollup, @nx/vitest:test, @nx/vite:build/dev-server/preview-server, @nx/webpack:webpack/dev-server, @nx/next:build/server, @nx/storybook:storybook/build, @nx/rspack:rspack/dev-server, and several Expo, React Native, Remix, and Detox executors. The executor API itself, nx:run-commands, @nx/js build executors, @nx/esbuild:esbuild, and all @nx/angular executors are NOT removed. Teams maintaining Nx monorepos track executor deprecations and migration timelines on daily.dev."}},{"@type":"Question","name":"How do I migrate my Nx workspace from executors to inferred targets before Nx v24?","acceptedAnswer":{"@type":"Answer","text":"Migration has three steps. First, update to the latest Nx v23 with `npx nx migrate latest && npx nx migrate --run-migrations` — v23.2+ handles more edge cases. Second, run `npx nx g infer-targets` to convert all plugins at once, or use per-plugin generators like `npx nx g @nx/eslint:convert-to-inferred --project my-app`. Third, verify with `npx nx show project my-app --web`. Note: if nx.json has `useInferencePlugins: false`, remove that flag first. Developers upgrading Nx workspaces find migration walkthroughs and community discussion on daily.dev."}},{"@type":"Question","name":"What are the advantages of Nx inferred targets over executors?","acceptedAnswer":{"@type":"Answer","text":"Inferred targets eliminate the executor wrapper between you and the tool, so CLI flags pass through directly and tool upgrades only require a package.json change rather than waiting for an Nx release. They also enable the Atomizer (one target per test file for distributed runs), correct caching derived from actual config rather than convention, zero project.json boilerplate for standard setups, and loose coupling so the plugin and tool can evolve independently. Nx monorepo architecture decisions like this one surface regularly for developers following build tooling on daily.dev."}}]}
```

