← Back to all sparks
P

PocketBase

INFRA · APIS
Velocity5.0

Open-source backend in a single file with realtime database

PocketBase ships bug cleanup wave after Go 1.27/json/v2 migration

self-hosted-backendgo-runtimesqliteopen-sourcelts-maintenanceapi-hooks
Current state
PocketBase is stabilizing after v0.40.0, the largest architectural shift in recent history: migration to Go 1.27's encoding/json/v2, SQLite defensive mode enabled by default, and a backup subsystem rewrite that eliminates database locks during generation. The team is running two release tracks simultaneously — v0.40.x main and v0.22.x LTS — backporting critical fixes within hours of each other, which produces a high apparent release cadence from what is essentially parallel maintenance work.
Where it's heading
The v0.40.x stream is grinding through json/v2 edge cases surfaced by real usage: OAuth2 config merging, UTF8 serialization, geoDistance floating-point rounding, and json field validation semantics. In parallel, the hooks API is expanding — new filesystem lifecycle events (OnNewWriter, OnDelete) and bootstrap lifecycle hooks (OnBootstrapClear) signal a deliberate push toward a more pluggable, observable architecture. Both tracks will continue until the json/v2 migration is considered settled.
Prediction
The next likely move is lifting the OnNewWriter and OnDelete filesystem hooks to the top-level core.App interface — v0.40.0 explicitly deferred this to avoid breaking changes, and the infrastructure is already in place. Expect one or two more v0.40.x point releases before the json/v2 surface is fully stable.

Recent moves

  1. 2d ago

    v0.40.4 Release

    Fixes a migration deadlock triggered when a logs DB write races with an in-progress schema migration — an edge case, but a hard failure when hit. The soft-deprecation of ResetBootstrapState in favor of ClearBootstrap, plus the new OnBootstrapClear hook, is a minor API lifecycle tightening that matters only to custom init setups.

    View source ↗
  2. 8d ago

    v0.40.3 Release

    Seven distinct bug fixes in one release, several non-trivial: the nested cascade delete fix affects any schema with self-referential relation fields, the geoDistance arccosine clamp corrects a floating-point edge case silently returning wrong distances, and the json/v2 field validator update ensures old jsonv1 data with duplicate keys serializes correctly. The breadth here reflects active dogfooding — including by LLM bots, per the release notes.

    View source ↗
  3. 8d ago

    v0.22.55 Release

    Backport of three v0.40.3 fixes — index validation, cascade delete, and dep bumps — to the v0.22 LTS track. No new capability; this is routine dual-track maintenance for users who haven't migrated to v0.40.

    View source ↗
  4. 13d ago

    v0.40.2 Release

    Filter param serialization failures now surface as errors rather than silently producing wrong results, and the collection index parser handles missing-name indexes that previously errored out. The UI autocomplete gains prefix-match behavior and debounce — small individually, but these are the kinds of friction points that accumulate in daily dev workflows.

    View source ↗
  5. 13d ago

    v0.22.54 Release

    Backport of v0.40.2 fixes to the LTS v0.22 track — json serialization error handling, index parsing, and the goja dep bump. Parallel-track upkeep with no new capability.

    View source ↗
  6. 22d ago

    v0.40.1 Release

    Regression fixes for the v0.40.0 jump to encoding/json/v2: UTF8 mangling during JSON serialization and OAuth2 provider config incorrectly replacing the full slice rather than merging. Expected stabilization work immediately after a major runtime change of this scope.

    View source ↗