Datasette 1.0a27 released with major security improvements (modern CSRF headers), new RenameTableEvent for plugin compatibility, and various API enhancements including improved upsert handling and database locking fixes.
# Release: datasette 1.0a27 Source: https://simonwillison.net/2026/Apr/15/datasette/ Release datasette 1.0a27 (https://github.com/simonw/datasette/releases/tag/1.0a27)— An open source multi-tool for exploring and publishing data Two major changes in this new Datasette alpha. I covered the first of those in detail yesterday (https://simonwillison.net/2026/Apr/14/replace-token-based-csrf/) - Datasette no longer uses Django-style CSRF form tokens, instead using modern browser headers as described by Filippo Valsorda (https://words.filippo.io/csrf). The second big change is that Datasette now fires a new RenameTableEvent (https://docs.datasette.io/en/latest/events.html#datasette.events.RenameTableEvent) any time a table is renamed during a SQLite transaction. This is useful because some plugins (like datasette-comments (https://github.com/datasette/datasette-comments)) attach additional data to table records by name, so a renamed table requires them to react in appropriate ways. Here are the rest of the changes in the alpha: > - New `actor=` parameter (https://docs.datasette.io/en/latest/internals.html#internals-datasette-client-actor) for `datasette.client` methods, allowing internal requests to be made as a specific actor. This is particularly useful for writing automated tests. (#2688 (https://github.com/simonw/datasette/pull/2688)) - New `Database(is_temp_disk=True)` option, used internally for the internal database. This helps resolve intermittent database locked errors caused by the internal database being in-memory as opposed to on-disk. (#2683 (https://github.com/simonw/datasette/issues/2683)) (#2684 (https://github.com/simonw/datasette/pull/2684)) - The `/-/upsert` API (docs (https://docs.datasette.io/en/latest/json_api.html#tableupsertview)) now rejects rows with `null` primary key values. (#1936 (https://github.com/simonw/datasette/issues/1936)) - Improved example in the API explorer for the `/-/upsert` endpoint (docs (https://docs.datasette.io/en/latest/json_api.html#tableupsertview)). (#1936 (https://github.com/simonw/datasette/issues/1936)) - The `/.json` endpoint now includes an `"ok": true` key, for consistency with other JSON API responses. - `call_with_supported_arguments()` (https://docs.datasette.io/en/latest/internals.html#internals-utils-call-with-supported-arguments) is now documented as a supported public API. (#2678 (https://github.com/simonw/datasette/pull/2678))
Datasette releases version 1.0a40 with security fixes, new background task features for plugins, migration to httpx2, and various bug fixes towards a stable 1.0 release.
Datasette 1.0a29 is released with new utility methods, UI improvements for empty tables, and bug fixes including a race condition resolved with help from Codex CLI.
Datasette 1.0a41 is released, a version update for the data exploration and publishing tool, announced by Simon Willison with details on integration and sponsorship.
Datasette 1.0a28 alpha release fixes compatibility bugs and resource management issues discovered in the previous alpha, including fixes for execute_write_fn() callbacks, database cleanup methods, and a new pytest plugin for automatic cleanup in tests.