# Why did uv originally use Hatch as a build backend?


> [!NOTE]
> Since July 2025, `uv init` defaults to `uv_build`, uv's own build backend. Hatchling still works and existing projects using it need no changes.

When [uv](https://pydevtools.com/handbook/reference/uv.md) first launched, it didn't implement its own [build backend](https://pydevtools.com/handbook/explanation/what-is-a-build-backend.md) for creating Python packages. Instead, it used existing backends when packaging projects.

Running `uv init` with the `--package` flag originally set up Hatchling ([hatch](https://pydevtools.com/handbook/reference/hatch.md)'s build backend) as the default backend in the generated `pyproject.toml`:

```toml
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
```

This was purely a configuration choice: uv needed to select some backend for packaged projects, and Hatchling provided a modern, standards-compliant option with minimal dependencies. Now that `uv_build` is the default, new projects use uv's own backend, but the rationale for choosing Hatchling originally still explains why so many existing uv projects use it.
