Blog

CKAN 2.12: A Major Release That Changes How You Work With Your Data

If you run a CKAN portal, 2.12 is the release to pay attention to. Large downloads stop crawling, files become things you can manage in their own right, the interface gets a modern refresh, and older instances get critical security fixes. It's the last 2.x release — and the groundwork for everything 3.0 brings.

CKAN 2.12: A Major Release That Changes How You Work With Your Data

CKAN 2.12.0 is here. Released on 26 August 2026, it is the final release in the 2.x series and the deliberate groundwork for CKAN 3.0 — introducing files as first-class entities, a faster DataStore, richer APIs, scheduled background jobs, and the new opt-in Midnight Blue theme.

It also arrives alongside security patches for the 2.11.x and 2.10.x series — and it marks the end of the road for 2.10.x. If you run an older instance, upgrading is the most important thing you can do right now. Here is what changed, and why it matters.

2.12.0
Released 26 August 2026
8
Security advisories resolved
3.10+
Minimum Python version
01
Files as first-class entities

The biggest architectural change in 2.12 is how CKAN handles files. Until now, a file only existed as an attachment to a resource. In 2.12, files become independent entities — they can be uploaded and managed separately from resources, owned by a user, resource or organization, and tracked across their whole lifecycle.

Opt-in and backward compatible. The new system is off by default. Portal maintainers enable it explicitly through configuration, so upgrading will not disrupt an existing setup or existing cloud-storage extensions.

Multiple storages at once. Files can be routed to local disk, Amazon S3, Google Cloud Storage, Azure Blob Storage or a database — even simultaneously, depending on their purpose — via a companion cloud-storage extension with a consistent config syntax across providers.

Richer metadata and permissions. Each file carries its own extensible metadata, enabling filtering, duplicate detection via file hashes, and blocking of unwanted file types. Permissions are layered — access can be cascaded from file to owner, or split between file content and metadata. New file management API actions expose all of this programmatically. This is the foundation for later work like file-first dataset creation, multiple files per resource and resource versioning.

Opt-in & backward compatible S3 · GCS · Azure Extensible metadata File management API

For the first time, a file in CKAN is something you can own, describe and track on its own — not just an attachment to a resource.

02
A faster DataStore

Keyset pagination. Downloading very large tables used to slow down as the offset grew. 2.12 adds keyset pagination, which keeps a consistent speed at scale: the DataStore dump endpoint now uses it to stream large CSV and JSON exports more quickly, and datastore_search can return a next_page value for fast keyset paging when include_next_page is set and records are sorted by their _id field.

Advanced filtering. DataStore filters now accept range values and nested AND/OR operations, including comparison operators such as <, <=, > and >=. More of what once required a raw SQL query can now be expressed through structured filters.

Those same richer filters also apply to datastore_delete, so more complex sets of matching records can be targeted for deletion in a single request.

Keyset pagination Range values Nested AND / OR Faster CSV/JSON dumps
03
Midnight Blue — a modern UI

Midnight Blue is the first substantial refresh of CKAN's interface since version 2.0. In 2.12 it ships as opt-in — you enable it by pointing CKAN at the new templates and public folders in your config. In CKAN 3.0 it will become the default theme.

The highlights: a faster, more modern interface, HTMX-powered partial page updates so that actions like search, faceting and pagination no longer require full page reloads, and meaningful accessibility improvements throughout.

Opt-in in 2.12 Default in 3.0 HTMX partial updates Improved accessibility
04
More in 2.12

Scheduled background jobs. The ckan jobs worker command now runs a scheduler by default, letting CKAN enqueue jobs at defined intervals and skip duplicated metadata updates that used to slow down DataStore operations.

Richer APIs. Actions now report the actual changes they made. package_update and related actions return which entities really changed, and datastore_create, datastore_upsert and datastore_delete can return the exact records written back — enabling tighter integration with other systems.

Performance throughout. Search facets, sorting, pagination, activity views and API-token management all update without page reloads. Dataset metadata updates are significantly faster because unchanged resources are no longer revalidated, and package, group and organization extras are now stored as JSONB for faster updates and less storage.

Smaller touches. The latest Python versions are supported (3.10 and later). Saving a draft dataset is now called Publish, with an Unpublish button to move it back to draft. New reusable Bootstrap 5 toast and confirmation modules give extensions consistent notifications, and there are new resource-type icons for common machine-learning and geospatial formats — Parquet, GeoPackage, GeoTIFF, notebooks and more.

Python 3.10+ Scheduled jobs Reported changes Publish / Unpublish

2.12 closes the 2.x chapter. Everything in it is a foundation stone for 3.0.

05
Security fixes — and the end of 2.10.x

CKAN 2.12 resolves multiple security advisories in core. At the same time, the team has published patch releases for the 2.11.x and 2.10.x series with important security fixes.

The 2.10.x patch is the last one. The 2.10.x series has now reached end of life and will receive no further updates. If you are running 2.10.x or 2.11.x, please upgrade as soon as possible — start with the patch release for your series, then plan your move to 2.12.

A reminder on process: security issues should always be reported privately to security@ckan.org — never as a public GitHub issue. Full technical detail for every fix is in the changelog.

Get involved

2.12 is the work of the whole CKAN community — the contributors who built and reviewed these features, the maintainers who shepherded the release, and everyone who tested it along the way. Thank you to all of them.

The best way to help now is to put 2.12 to work: test it against your own environment and extensions, report or fix anything that breaks, contribute translations, and help upgrade the extensions you depend on. Start at GitHub issues or join the conversation on Gitter / Matrix.


Further reading
What's Coming in CKAN 2.12 — and the Road to CKAN 3.0
How the core team framed 2.12 as the last 2.x release and the stepping stone to 3.0, from CKAN Monthly Live #40.
Further reading
The full CKAN 2.12 changelog
Every feature, minor change, bugfix, migration note and security advisory — with upgrade instructions.