npm is the recommended and default package manager for Vaadin projects.
The main argument for using npm is compatibility. It’s the de facto standard, and since frontend tools and libraries are so varied, scripts and hooks might have hardcoded assumptions about the tooling. This can cause some setups to fail with pnpm. I think these issues used to be worse than nowadays, but it’s still something to be aware of.
https://vaadin.com/docs/latest/flow/configuration/development-mode/npm-pnpm-bun