# What changed in aiobotocore

> 11 changes in aiobotocore 3 from its official release notes, upgrade guides and advisories: 1 deprecations, 3 new APIs and options. Each one cited. Sources checked 2026-10-21. HTML: https://unstale.sh/pypi/aiobotocore/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## aiobotocore 3

### Deprecations

- The existing extra continues to work but installs the deprecated legacy httpx package and emits a DeprecationWarning when used. (3.9.0) — [release notes](https://github.com/aio-libs/aiobotocore/releases/tag/3.9.0)

### New APIs and options

- Streaming checksum bodies expose a new checksum property. (3.9.2) — [release notes](https://github.com/aio-libs/aiobotocore/releases/tag/3.9.2)
- A new optional extra installs httpx2, Pydantic's maintained, API-compatible fork, for the httpx backend. (3.9.0) — [release notes](https://github.com/aio-libs/aiobotocore/releases/tag/3.9.0)
- The optional httpx backend can run on trio as well as asyncio, making aiobotocore usable from trio-based projects. (3.9.0) — [release notes](https://github.com/aio-libs/aiobotocore/releases/tag/3.9.0)

### Fixes and other changes

- Calling close() on an already-closed session no longer raises AssertionError or masks the user's own exception. (3.9.2) — [release notes](https://github.com/aio-libs/aiobotocore/releases/tag/3.9.2)
- The user-agent feature ID is registered when AioS3RegionRedirectorv2 follows a region redirect. (3.9.2) — [release notes](https://github.com/aio-libs/aiobotocore/releases/tag/3.9.2)
- Checksum validation is skipped when no checksum is expected. (3.9.2) — [release notes](https://github.com/aio-libs/aiobotocore/releases/tag/3.9.2)
- The max token is now seeded on the initial request attempt rather than appearing only after a retry. (3.9.1) — [release notes](https://github.com/aio-libs/aiobotocore/releases/tag/3.9.1)
- Session management is now concurrency-safe. (3.9.1) — [release notes](https://github.com/aio-libs/aiobotocore/releases/tag/3.9.1)
- Login credential refreshes call the generated asynchronous-compatible method directly instead of botocore's sync-only compatibility alias. (3.9.1) — [release notes](https://github.com/aio-libs/aiobotocore/releases/tag/3.9.1)
- A per-request read_timeout override is now honored when computing retry timing. (3.9.1) — [release notes](https://github.com/aio-libs/aiobotocore/releases/tag/3.9.1)
