Skip to main content
  1. Posts/

uv Is Fantastic, But Its Package Management UX Is a Mess

··233 words·2 mins·

🐍 uv: blazing speed, but a disappointing package management UX

Astral’s uv has taken the Python world by storm with its speed and ability to replace multiple tools. But once you enter the maintenance phase of a project, the user experience starts to crack.

🔍 The concrete problems:

  • No uv outdated command: you must use uv tree --outdated --depth 1, which shows all dependencies, not just outdated ones
  • ⚠️ No upper version bound by default: uv add pydantic generates pydantic>=2.13.4 with no maximum cap, which can silently pull in breaking changes
  • 🔁 Upgrading specific packages is tedious: you must repeat --upgrade-package for every package instead of listing them together
  • 🔧 The upgrade command is uv lock --upgrade, not the intuitive uv update or uv upgrade

There is hope: the new --bounds major flag in uv add allows adding safe version constraints… but it is opt-in and still experimental.

💡 Explanation in a nutshell
#

uv is a tool for installing packages and managing Python versions. It is extremely fast, but its commands for checking which packages are outdated and updating them safely are cumbersome and can cause problems if not used carefully. Compared to tools like pnpm or Poetry, the experience is less intuitive.

More information at the link 👇

Also published on LinkedIn.
Juan Pedro Bretti Mandarano
Author
Juan Pedro Bretti Mandarano