The short answer
On August 10, 2026, Django's Steering Council accepted DEP 20, moving the framework to a single annual feature release starting January 2028. Version numbers will carry the release year (Django 2028, Django 2029). The "LTS" designation is retired: every release now gets three years of support — one year of mainstream bugfixes, then two years of security and data-loss patches. Three concurrent versions will always be actively supported.
For teams running Django backends today, the immediate action item is simple: nothing changes before 2028. Django 6.1 and 6.2 LTS maintain their existing support commitments in full.
What Django's Steering Council decided
Django has shipped on a roughly eight-month cadence since version 1.0, producing two non-LTS and one LTS release per year. DEP 20 replaces this with a single annual release, accepted by vote of the Steering Council and published on the official Django weblog on August 10, 2026.
The core change: one feature release per calendar year, each carrying the same three-year support window that LTS releases previously carried. "LTS" as a separate label disappears because the distinction no longer exists — every release is long-term supported by definition.
What happens to Django 6.1 and 6.2 LTS
Existing support commitments are unchanged:
| Release | Ships | End of Life | Notes |
|---|---|---|---|
| Django 6.1 | August 2026 | December 2027 | Standard release, unchanged |
| Django 6.2 LTS | April 2027 | April 2030 | Last release to carry the LTS label |
| Django 2028 | January 2028 | December 2030 | First annual release, 3-year support, no LTS tag |
| Django 2029 | January 2029 | December 2031 | Three concurrent versions always supported |
New version numbering: Django 2028, 2029
From 2028 onward, Django versions carry the release year instead of semantic version numbers. This removes an implicit ambiguity: when semantic versions increment, teams often ask "how large is this upgrade?" Year-based numbering makes the cadence explicit in the version string. A delta of Django 2028 to Django 2029 is unambiguously a one-year increment.
It also eliminates the practical question of whether a given version is LTS or not. The answer is always: yes, three years.
What the LTS retirement means for upgrade planning
Under the old model, teams faced a binary choice: track feature releases every eight months, or anchor on LTS and absorb a long gap between migrations. Teams on LTS often stayed on a version until expiry, then faced a multi-year migration in a compressed window.
Under the new model, three concurrent versions will always be supported. If your team runs Django 2028 and does not upgrade to Django 2029 the following year, you retain security patching through December 2030. There is no penalty for an annual skip. Upgrade decisions can be driven by features and team capacity rather than a support deadline on a calendar.
For organizations with compliance obligations — SOC 2, ISO 27001, GDPR, or HIPAA — the simplified support matrix removes a common ambiguity in vendor security reviews: every version in the support table carries the same class of security maintenance commitment.
Why Python alignment matters
The DEP 20 rationale centers on Python's own release cadence. Python ships a new version each October. Django's eight-month cycle "hasn't fit that well": LTS releases accumulated a wide Python version matrix that included Python releases past their own upstream end-of-life, creating maintenance overhead for both the Django team and downstream packagers.
Under the annual model, each Django release supports the three most recent Python versions at the time of release, and picks up the new Python version during its first year of support — without requiring a separate LTS build to carry the extended Python matrix.
What it means for US & EU software teams
For teams engaged in Python/Django development, the practical implications split cleanly into near-term and long-term:
Near-term (before 2028): no change. Django 6.1 ships in August 2026 and runs until December 2027. Django 6.2 LTS ships in April 2027 and runs until April 2030. Teams on either version continue under existing support terms. No migration pressure is introduced.
Long-term (from 2028): the upgrade cadence becomes simpler to reason about. One version per year, three years of security support per version, three concurrent supported versions at any time. Teams can define a straightforward policy — for example, "we stay within two versions of current" — without needing to distinguish LTS from non-LTS builds.
For EU organizations subject to NIS2 or DORA, which require documented software lifecycle management, the new model makes supplier lifecycle documentation more predictable: one support table, no label ambiguity, defined three-year windows.
For US FinTech and HealthTech teams with vendor security review requirements, the same applies: every version in the matrix carries identical security patching commitments, simplifying the answer to "is this dependency actively maintained?"
FAQ
When does Django's annual release cycle start?
The new annual cycle begins with Django 2028, expected in January 2028. Nothing changes before that date. Django 6.1 and 6.2 LTS maintain their existing support timelines.
What happens to Django LTS releases?
The LTS label is retired starting with Django 2028. Every feature release under the new cycle carries an identical three-year support window. Django 6.2 is the last release to carry the LTS designation because it predates the DEP 20 change.
Do teams need to upgrade Django more often now?
No — and in practice, less pressure. Three concurrent versions are always supported, so skipping an annual release is supported and carries no penalty. Teams can upgrade when features or business requirements justify it, not when a support deadline forces the issue.
Which Python versions will Django 2028 support?
Each annual Django release will support the three most recent Python versions at the time of release, and will pick up the new Python version (expected October 2027 for what will be at release) during its first year of support.
What is DEP 20?
DEP 20 is Django Enhancement Proposal 20, the formal specification for the annual release cycle change. It was accepted by Django's Steering Council and published on the official Django weblog on August 10, 2026. The full proposal is available in the django/deps repository on GitHub.
Sources
Building or maintaining a Python/Django backend for a US or EU product? Talk to our team about architecture, upgrade planning, or staff augmentation for your engineering sprint.