nextjs - 💡(How to fix) Fix Turbopack file watcher broken in Podman on macOS [3 comments, 3 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#90825Fetched 2026-04-08 00:19:29
View on GitHub
Comments
3
Participants
3
Timeline
8
Reactions
0
Author
Timeline (top)
commented ×3labeled ×2issue_type_added ×1renamed ×1

Fix Action

Fix / Workaround

Confirmed workaround: Falling back to --webpack with WATCHPACK_POLLING=true fully 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):/usr/src/app:Z" \
  -w /usr/src/app \
  -p 3000:3000 \
  node:20-slim sh -c "npm install && npm run dev"

---

# In a second terminal while the container is running:
podman exec -it nextjs-repro cat /usr/src/app/app/page.tsx
# Edit the file on the host, re-run — the change IS visible inside the container
# This confirms the issue is Turbopack's watcher, not the volume mount

---

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"

---

Operating System:
  Platform: linux (Podman AppleHV VM)
  Arch: arm64
  Version: #1 SMP PREEMPT_DYNAMIC Sun Jan 11 17:13:10 UTC 2026
  Available memory (MB): 1945
  Available CPU cores: 4
Binaries:
  Node: 20.20.0
  npm: 10.8.2
  Yarn: 1.22.22
  pnpm: N/A
Relevant Packages:
  next: 16.2.0-canary.73
  react: 19.2.4
  react-dom: 19.2.4
  typescript: 5.9.3
Next.js Config:
  output: N/A

Host machine:
  Platform: darwin (macOS, Apple Silicon arm64)
  Podman: 5.8.0 (brew)
  VM type: AppleHV
  Mount type: virtiofs
RAW_BUFFERClick to expand / collapse

Link to the code that reproduces this issue

https://github.com/tapeo/nextjs-podman-turbopack-repro

To Reproduce

  1. Install Podman on macOS Apple Silicon (brew install podman)
  2. Initialize the Podman machine: podman machine init && podman machine start
  3. Clone the reproduction repo and cd into it
  4. Run the dev server inside a Podman container:
podman run -it --rm \
  --name nextjs-repro \
  -v "$(pwd):/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
  2. Edit src/app/page.tsx on the macOS host
  3. Observe: no hot reload, no recompile triggered
  4. Manually reload the browser — still shows stale content

To confirm the volume mount works fine:

# In a second terminal while the container is running:
podman exec -it nextjs-repro cat /usr/src/app/app/page.tsx
# Edit the file on the host, re-run — the change IS visible inside the container
# This confirms the issue is Turbopack's watcher, not the volume mount

Current vs. Expected behavior

Current: Turbopack does not detect file changes made on the macOS host. No hot reload occurs and a manual browser refresh still shows the old content. The dev server console shows zero recompilation activity after saving a file.

Expected: Turbopack should detect file changes and trigger a rebuild

Confirmed workaround: Falling back to --webpack with WATCHPACK_POLLING=true fully 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"

Note: Docker Desktop works, Podman does not

Provide environment information

Operating System:
  Platform: linux (Podman AppleHV VM)
  Arch: arm64
  Version: #1 SMP PREEMPT_DYNAMIC Sun Jan 11 17:13:10 UTC 2026
  Available memory (MB): 1945
  Available CPU cores: 4
Binaries:
  Node: 20.20.0
  npm: 10.8.2
  Yarn: 1.22.22
  pnpm: N/A
Relevant Packages:
  next: 16.2.0-canary.73
  react: 19.2.4
  react-dom: 19.2.4
  typescript: 5.9.3
Next.js Config:
  output: N/A

Host machine:
  Platform: darwin (macOS, Apple Silicon arm64)
  Podman: 5.8.0 (brew)
  VM type: AppleHV
  Mount type: virtiofs

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

Quick Fix – Enable Turbopack polling watcher

The problem is that virtiofs mounts used by Podman on macOS do not generate inotify events, so Turbopack’s default native watcher never sees a change.
Force Turbopack to use a

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