Windows 11, WSL 2 and Vite integration nightmare

Q: DevKinsta Version
A: 2.13.4

Q: OS Version
A: Windows 11 Pro

Q: Docker Desktop Version
A: 4.29.0 (WSL 2 engine)

WSL distro
Ubuntu 22.04 LTS

So I’ve had nothing but problems with DevKinsta right from the start. I eventually got it to sort of work by switching to an old version of Docker and using Hyper-V (had to purchase a Windows 11 Pro license). Now I could actually work on my websites locally, but pulling and pushing websites would take an average of 1h, and would fail half the time for various unknown reasons. So I would end up just manually transfering my changes through FTP like a barbarian.

After having enough of this, I decided to try WSL 2 again and spent the last 6 hours trying to make DevKinsta usable on Windows, spoiler alert, I couldn’t do it. I feel like a local WordPress development tool should be able to work on Windows with standard WordPress sites, but looks like it wasn’t designed with that in mind for some odd reason.

Here’s a recap of all the problems I encountered.

:one: Pulling from Kinsta works, but…

  • File operations in VS Code (delete, search, rename) are unbearably slow when working directly inside the DevKinsta volumes (\\wsl$\docker-desktop-data).

:two: Cannot run npm install inside the DevKinsta volume on Windows

  • npm install fails with UNC path errors (EPERM: operation not permitted, symlink…).
  • Symlink creation is blocked by Windows when using the WSL2 Docker backend, even with Developer Mode enabled.

:three: Attempted workaround: WSL + Linux Node + metadata mount

  • Installed Ubuntu under WSL2.
  • Installed Node inside Ubuntu.
  • Created a mount point (/mnt/docker-data) with metadata and uid/gid flags.
  • Added /etc/fstab entry to mount \\wsl$\docker-desktop-data automatically.

:four: New problem: npm symlinks still fail

  • Windows refuses to allow symlinks on the UNC path (\\wsl$\docker-desktop-data), even when mounted with metadata.
  • Only workaround is running npm install --no-bin-links, which skips symlink creation but breaks package binaries like vite.
  • Result: I can’t run vite directly; I have to reference it manually via node node_modules/vite/bin/vite.js.

:five: Even with npm install --no-bin-links, file watching doesn’t work

  • Vite (and Gulp) don’t detect file changes because inotify events don’t propagate through the Docker/WSL bridge.
  • The only workaround is to use polling (CHOKIDAR_USEPOLLING=true), which is slow and inefficient.

So here we are, the simplest workflow I could come up with (that still does not fully work by the way), is:

  • Install Ubuntu
  • Install Node inside Ubuntu
  • Create a /mnt/docker-data mount point with metadata
  • Add the mount line to /etc/fstab
  • Run npm install --no-bin-links inside Ubuntu
  • Use polling for Vite (CHOKIDAR_USEPOLLING=true npm run dev)

For reference, here’s what I have to do with WP Local:

  • Pull the site - fin.

So is this game over? Do I just give up and buy a Mac? Is there an official, documented workflow for DevKinsta + Docker + WSL2 that supports npm install (with symlinks) and working file watchers for typical WordPress frontend builds? I refuse to believe that I’m the only one with this setup. And I don’t understand how such a good hosting platform can have such a bad local development tool.

Thanks for you help.

Hi @etienne_clerc

Thank you for your detailed feedback regarding your experience with our DevKinsta tool. I apologize for the difficulties you have encountered while using it.

Currently, the development of DevKinsta has been paused; however, our team is committed to providing critical fixes to keep DevKinsta SOC-2 compliant. We have plans to continue developing DevKinsta so that it will work seamlessly with the latest version of Docker Desktop out of the box with WSL, but we do not have an estimated timeframe for when this will be released. For now, the tool remains in maintenance mode only.

We understand that navigating the npm install process with symlinks and managing file watchers can be challenging, and we want to acknowledge that there isn’t an official guide available at this time. This has been brought up to our developer team. But at this time, we’re only relying on the valuable insights and experiences shared by fellow community members regarding this specific topic.

Thank you once again for your feedback.