Breaking changes
Version 10 marks important changes in how we manage User models and their ID.
Before, we were relying only on Pydantic models to work with users. In particular the [`current_user` dependency](https://fastapi-users.github.io/fastapi-users/10.0/usage/current-user/) would return you an instance of `UserDB`, a Pydantic model. This proved to be quite problematic with some ORM if you ever needed to **retrieve relationship data** or make specific requests.
Now, FastAPI Users is designed to always return you a **native object for your ORM model**, whether it's an SQLAlchemy model or a Beanie document. Pydantic models are now only used for validation and serialization inside the API.
Before, we were forcing the use of UUID as primary key ID; a consequence of the design above. This proved to be quite problematic on some databases, like MongoDB which uses a special ObjectID format by default. Some SQL folks also prefer to use traditional auto-increment integers.
Now, FastAPI Users is designed to use **generic ID type**. It means that you can use any type you want for your user's ID. By default, SQLAlchemy adapter still use UUID; but you can quite easily switch to another thing, like an integer. Beanie adapter for MongoDB will use native ObjectID by default, but it also can be overriden.
[READ THE MIGRATION PATH](https://fastapi-users.github.io/fastapi-users/10.0/migration/9x_to_10x/)
Documentation improvements
* From this day, the documentation is **versioned**. It means that you'll be able read the documentation for older versions, starting at [v9.3](https://fastapi-users.github.io/fastapi-users/9.3/). There is a menu switch on top!