Why does uv Use Hatch as a backend?
Note
As of July 2025, uv has a stable build backend. Hatch remains the default backend, but it will be changed to uv in a future version.
Initially, uv didn’t implement its own build backend for creating Python packages. Instead, it used existing backends when packaging projects.
When running uv init
with the --package
flag, uv sets up Hatchling (hatch’s build backend) as the default backend in the generated pyproject.toml
:
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
This is purely a configuration choice – uv needs to select some backend for packaged projects, and Hatchling provides a modern, standards-compliant option with minimal dependencies. For most projects, the specific backend won’t meaningfully impact development.
Last updated on