<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/nx-24-task-based-affected-waitfor-fine-grained-e2e-caching-and-agent-ready-migrations-k1ov8dowe" -->

---
title: Nx 24: Task-Based Affected, waitFor, Fine-Grained E2E...
description: Nx 24 makes task-based affected the default, running only the tasks a change actually touches instead of every task in a project. It adds two directives,...
canonical: https://daily.dev/posts/nx-24-task-based-affected-waitfor-fine-grained-e2e-caching-and-agent-ready-migrations-k1ov8dowe
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Nx 24: Task-Based Affected, waitFor, Fine-Grained E2E Caching and Agent-Ready Migrations | daily.dev
og:description: Nx 24 makes task-based affected the default, running only the tasks a change actually touches instead of every task in a project. It adds two directives,...
og:url: https://daily.dev/posts/nx-24-task-based-affected-waitfor-fine-grained-e2e-caching-and-agent-ready-migrations-k1ov8dowe
og:image: https://api.daily.dev/og/posts/k1ov8dowe.png
og:image:alt: Nx 24: Task-Based Affected, waitFor, Fine-Grained E2E Caching and Agent-Ready Migrations
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.

# Nx 24: Task-Based Affected, waitFor, Fine-Grained E2E Caching and Agent-Ready Migrations

**[Nx](https://daily.dev/sources/nx)** · 16 min read · 0 upvotes · 0 comments

## Summary

Nx 24 makes task-based affected the default, running only the tasks a change actually touches instead of every task in a project. It adds two directives, '@nx-ignore-server-inputs' and '@nx-depends-on', so each e2e spec is cached by the code it tests rather than the whole app. A new 'waitFor: "ready"' option on dependsOn lets tasks wait for a dev server to actually accept requests. Migrations now run as resumable, agent-followable steps, and 35 deprecated executors across 14 plugins are removed. Combined with dynamic task packing and Ultracache, a 511-project benchmark ran CI 9.2x faster using 52% less compute.

## Full article

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

## Questions this post answers

### How does Nx 24's task-based affected change CI run times compared to project-level affected?

Task-based affected in Nx 24 decides per task, using each task's inputs and outputs, whether a change affects it, instead of running every task in a changed project. A PR editing only a spec file now reruns just that project's 'test' task and skips 'build'. It shipped opt-in in Nx 23.3 and becomes the default in Nx 24.

_Monorepo teams chasing faster CI pipelines track changes like this one on daily.dev._

### How do I stop Nx from rerunning every e2e spec when only one file changes?

Add the '@nx-ignore-server-inputs' directive at the top of a spec file and import the page or component it tests, so Nx drops the app server from the spec's hash and caches it based only on the code it exercises. For code a spec can't import, such as external templates, use '@nx-depends-on: projectname' instead to rerun only when that project changes.

_Teams fighting slow, over-triggered e2e suites follow fixes like this one through daily.dev._

### How do I make an Nx task wait until a dev server is actually ready before running e2e tests?

Set 'waitFor: "ready"' on the dependsOn entry for the continuous task, such as serve, so dependent tasks wait until the server is ready rather than just started. Readiness can be defined with 'readyWhen' using a url, port, command, logMatches, or signal check; inferred Cypress and Playwright e2e tasks wait by default in Nx 24.

_Developers debugging flaky e2e runs against slow-starting servers can follow config changes like this via daily.dev._

## 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
- [Introducing dynamic task packing and Ultracache](https://daily.dev/posts/introducing-dynamic-task-packing-and-ultracache-bmmz9ccos) · Nx · 0 upvotes · 0 comments
- [Look Mum, No Executors](https://daily.dev/posts/look-mum-no-executors-ms35yggcg) · Nx · 9 upvotes · 2 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

---

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

[View this post on daily.dev](https://daily.dev/posts/nx-24-task-based-affected-waitfor-fine-grained-e2e-caching-and-agent-ready-migrations-k1ov8dowe)

```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":"Nx 24: Task-Based Affected, waitFor, Fine-Grained E2E Caching and Agent-Ready Migrations","url":"https://daily.dev/posts/nx-24-task-based-affected-waitfor-fine-grained-e2e-caching-and-agent-ready-migrations-k1ov8dowe","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/nx-24-task-based-affected-waitfor-fine-grained-e2e-caching-and-agent-ready-migrations-k1ov8dowe"},"datePublished":"2026-10-29T21:08:01.340Z","dateModified":"2026-10-29T21:08:31.722Z","description":"Nx 24 makes task-based affected the default, running only the tasks a change actually touches instead of every task in a project. It adds two directives,...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/8077be5be592b1a95b77a5fb5805455a?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/8077be5be592b1a95b77a5fb5805455a?_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":0,"discussionUrl":"https://daily.dev/posts/nx-24-task-based-affected-waitfor-fine-grained-e2e-caching-and-agent-ready-migrations-k1ov8dowe","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"webdev,general-programming,testing,cicd","timeRequired":"PT16M"}
{"@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":"Nx 24: Task-Based Affected, waitFor, Fine-Grained E2E Caching and Agent-Ready Migrations"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/nx-24-task-based-affected-waitfor-fine-grained-e2e-caching-and-agent-ready-migrations-k1ov8dowe#faq","mainEntity":[{"@type":"Question","name":"How does Nx 24's task-based affected change CI run times compared to project-level affected?","acceptedAnswer":{"@type":"Answer","text":"Task-based affected in Nx 24 decides per task, using each task's inputs and outputs, whether a change affects it, instead of running every task in a changed project. A PR editing only a spec file now reruns just that project's 'test' task and skips 'build'. It shipped opt-in in Nx 23.3 and becomes the default in Nx 24. Monorepo teams chasing faster CI pipelines track changes like this one on daily.dev."}},{"@type":"Question","name":"How do I stop Nx from rerunning every e2e spec when only one file changes?","acceptedAnswer":{"@type":"Answer","text":"Add the '@nx-ignore-server-inputs' directive at the top of a spec file and import the page or component it tests, so Nx drops the app server from the spec's hash and caches it based only on the code it exercises. For code a spec can't import, such as external templates, use '@nx-depends-on: projectname' instead to rerun only when that project changes. Teams fighting slow, over-triggered e2e suites follow fixes like this one through daily.dev."}},{"@type":"Question","name":"How do I make an Nx task wait until a dev server is actually ready before running e2e tests?","acceptedAnswer":{"@type":"Answer","text":"Set 'waitFor: \"ready\"' on the dependsOn entry for the continuous task, such as serve, so dependent tasks wait until the server is ready rather than just started. Readiness can be defined with 'readyWhen' using a url, port, command, logMatches, or signal check; inferred Cypress and Playwright e2e tasks wait by default in Nx 24. Developers debugging flaky e2e runs against slow-starting servers can follow config changes like this via daily.dev."}}]}
```

