Django 5.2’s final release is scheduled for April 2025, weeks from now. But pre-releases are out already, and package maintainers are busy supporting the new release!
Packages already declaring support
There’s 23 released on PyPI, which were tested with the Django 5.2 alpha 1 release. That’s out of about 1394 packages that declare which versions their support (out of 17k packages in total).
- django-csp v4.0b3
- django-bird v0.14.2
- django-filter v25.1
- django-tailwind-cli v4.1.0
- django-appconf v1.1.0
- django-rich v1.14.0
- django-mysql v4.16.0
- django-perf-rec v4.28.0
- django-version-checks v1.14.0
- django-read-only v1.19.0
- django-permissions-policy v4.25.0
- django-linear-migrations v2.17.0
- django-watchfiles v1.1.0
- django-minify-html v1.12.0
- django-cors-headers v4.7.0
- django-htmx v1.22.0
- django-harlequin v1.5.0
- django-browser-reload v1.18.0
- django-auto-prefetch v1.12.0
- django-ditto v3.5.0
- django-syzygy v1.2.0
- django-extra-checks v0.17.0a1
- django-admin-groups v0.3
For a community-driven project like Django, community-driven testing efforts are essential. It’s excellent to see this work happening ahead of the final release. Benefits are clear:
- Potentially catching bugs in the new release ahead of it being generally available.
- Making it easier for users to upgrade to Django 5.2 when they start adopting the new version in April.
Django versions support overview
There’s more package releases with tentative Django 5.2 support everyday. As of today, here’s the numbers through the whole package ecosystem:
Version | 5.2 | 5.1 | 5.0 | 4.2 | Total |
---|---|---|---|---|---|
Packages | 23 🎉 (1.6%) | 240 (17%) | 409 (29%) | 570 (41%) | 1394 (100%) |
This is only packages that already explicitly declare support for specific versions. There are tons of packages that don’t use classifiers for this but would support those versions in any case. With Django having such a strong commitment to API stability, there are a ton of scenarios where new releases “just work”. So this won’t account for:
- Packages that don’t use trove classifiers to declare compatibility.
- Packages that do, but haven’t published a new release (maybe Django 5.2 works with no code changes).
I love how fellow Djangonaut Baptiste Mispelon put it when trying out Django 5.2 alpha 1 on djangoproject.com:
We just updated the dependency file and everything worked.
And for those interested in numbers crunching – this data is from the PyPI dataset on BigQuery. Here’s the query: package-ecosystem-latest.sql.
How you can help
Try out the pre-releases on your projects or packages! And if you find any issues, investigate and consider reporting them back. Even better if you:
- Configure your packages’ continuous integration to run with Django 5.2 pre-releases already
- Spend time to adopt specific features listed in the Django 5.2 release notes, to further stress test any additions.
And if you maintain packages – consider running your tests against Django’s main? My colleague Sage recently talked about how it helps catching issues and contributing to Django with pretty concrete bug reports: