nextjs - 💡(How to fix) Fix Turbopack file watcher broken in Podman on macOS (AppleHV VM — no FSEvents→inotify bridge) [1 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
vercel/next.js#90824Fetched 2026-04-08 00:19:30
View on GitHub
Comments
1
Participants
2
Timeline
6
Reactions
0
Author
Timeline (top)
labeled ×2closed ×1commented ×1issue_type_added ×1

Fix Action

Fix / Workaround

Workaround confirmed working: Falling back to --webpack with WATCHPACK_POLLING=true restores both hot reload and manual reload:

podman run -it --rm \
  -e WATCHPACK_POLLING=true \
  -v "$(pwd):/usr/src/app:Z" \
  -w /usr/src/app \
  -p 3000:3000 \
  node:20-slim sh -c "npm install && npx next dev --webpack"

Code Example

podman run -it --rm \
  --name nextjs-repro \
  -v "$(pwd)/my-repro:/usr/src/app:Z" \
  -w /usr/src/app \
  -p 3000:3000 \
  node:20-slim sh -c "npm install && npm run dev"

---

podman exec -it nextjs-repro cat /usr/src/app/app/page.tsx
# Edit the file on host, re-run — the change IS visible inside the container

---

podman run -it --rm \
  -e WATCHPACK_POLLING=true \
  -v "$(pwd):/usr/src/app:Z" \
  -w /usr/src/app \
  -p 3000:3000 \
  node:20-slim sh -c "npm install && npx next dev --webpack"

---

### Provide environment information
RAW_BUFFERClick to expand / collapse

Link to the code that reproduces this issue

https://github.com/vercel/next.js/tree/canary/examples/reproduction-template

To Reproduce

  1. Install Podman on macOS Apple Silicon (brew install podman)
  2. Initialize the Podman machine: podman machine init && podman machine start
  3. Create a new Next.js 16 project: npx create-next-app -e reproduction-template my-repro
  4. Run the dev server inside a Podman container with a bind mount:
podman run -it --rm \
  --name nextjs-repro \
  -v "$(pwd)/my-repro:/usr/src/app:Z" \
  -w /usr/src/app \
  -p 3000:3000 \
  node:20-slim sh -c "npm install && npm run dev"
  1. Open http://localhost:3000 in the browser
  2. Edit src/app/page.tsx on the host machine
  3. Observe the browser — no hot reload occurs
  4. Manually reload the page — still shows the old content

Verify the volume mount works (it does):

podman exec -it nextjs-repro cat /usr/src/app/app/page.tsx
# Edit the file on host, re-run — the change IS visible inside the container

This confirms the issue is not the volume mount but Turbopack's watcher not receiving filesystem events.

Current vs. Expected behavior

Current: Turbopack does not detect any file changes made on the macOS host. Neither hot reload nor a manual browser refresh reflects edits. The dev server console shows no recompilation activity after saving a file.

Expected: Turbopack should detect file changes and trigger a rebuild, either by receiving inotify events (if the container runtime bridges them) or via a polling fallback option — the same way webpack exposes watchOptions.poll.

Workaround confirmed working: Falling back to --webpack with WATCHPACK_POLLING=true restores both hot reload and manual reload:

podman run -it --rm \
  -e WATCHPACK_POLLING=true \
  -v "$(pwd):/usr/src/app:Z" \
  -w /usr/src/app \
  -p 3000:3000 \
  node:20-slim sh -c "npm install && npx next dev --webpack"

This is a regression introduced by Turbopack becoming the default in Next.js 16, since --webpack + polling was a known and documented solution for containerized dev environments.


### Provide environment information

```bash
Operating System:
  Platform: darwin
  Arch: arm64
  Version: Darwin Kernel Version 24.6.0: Wed Oct 15 21:12:06 PDT 2025; root:xnu-11417.140.69.703.14~1/RELEASE_ARM64_T6000
  Available memory (MB): 16384
  Available CPU cores: 8
Binaries:
  Node: 22.21.1
  npm: 10.9.4
  Yarn: N/A
  pnpm: N/A
Relevant Packages:
  next: 16.2.0-canary.73 // Latest available version is detected (16.2.0-canary.73).
  eslint-config-next: N/A
  react: 19.2.4
  react-dom: 19.2.4
  typescript: 5.9.3
Next.js Config:
  output: N/A

Which area(s) are affected? (Select all that apply)

Turbopack

Which stage(s) are affected? (Select all that apply)

next dev (local)

Additional context

No response

extent analysis

Fix: Enable Turbopack polling for file‑watch inside the Podman

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING