---
title: watch
description: API reference for the `watch` command
product: turborepo
type: reference
summary: All flags and options for the `turbo watch` command that re-runs tasks on code changes.
prerequisites:
  - /docs/reference/configuration
related:
  - /docs/reference/run
---

# watch

Re-run tasks in your repository, based on code changes.

```bash title="Terminal"
turbo watch [tasks]
```

`turbo watch` is dependency-aware, meaning tasks will re-run in the order [configured in `turbo.json`](/docs/reference/configuration).

If no tasks are provided, `turbo` will display what tasks are available for the packages in the repository.

```bash title="Terminal"
turbo watch
```

Using turbo watch with persistent tasks [#using-turbo-watch-with-persistent-tasks]

Persistent tasks are marked with [`"persistent": true`](/docs/reference/configuration#persistent), meaning they won't exit. Because of this, they cannot be depended on in your task graph.

This means that persistent tasks will be ignored when using `turbo watch`, working the same way they do with [`turbo run`](/docs/reference/run), allowing persistent and non-persistent tasks to be run at the same time.

Dependency-aware persistent tasks [#dependency-aware-persistent-tasks]

When your script has a built-in watcher (like `next dev`) capable of detecting changes in dependencies, you don't need to use `turbo watch`. Instead, use your script's built-in watcher and mark the task as long-running using [`"persistent": true`](/docs/reference/configuration#persistent).

Persistent tasks without dependency awareness [#persistent-tasks-without-dependency-awareness]

Some tools aren't monorepo-friendly, and do not hot-reload modules in dependencies. In those cases, you should
mark the task as [`interruptible: true`](/docs/reference/configuration#interruptible) to have `turbo watch`
restart the task when relevant changes are detected.

Limitations [#limitations]

Caching [#caching]

Caching tasks with Watch Mode is currently experimental, under the `--experimental-write-cache` flag.

```bash title="Terminal"
turbo watch your-tasks --experimental-write-cache
```

Task outputs [#task-outputs]

If you have tasks that write to files checked into source control, there is a possibility that Watch Mode will run in an infinite loop. This is because Watch Mode watches your
files for changes and will re-run tasks in packages that have changed. If a task creates a change, then that will trigger the task again.

Watch Mode has some logic to prevent this from happening using file hashes, but it isn't foolproof. To avoid this issue, we recommend removing any task outputs from git.

---

[View full sitemap](/sitemap.md)