Skip to content

Changelog

Version v0.7.0

What’s Changed

Features

  • Savepoint support for TransactionHooks — New withSavepoint(fn) and createSavepoint() methods enable partial rollback of buffered side effects (notifications, observability events) within a transaction without discarding the entire transaction’s work. Hook definitions can now provide a checkpoint callback via the new optional HookDef.checkpoint field.
  • HookDef and TransactionHooksSavepoint types are now exported from @queuert/core.

Bug Fixes

  • Lease renewal scoped to staged mode — Lease renewal after getJobBlockers no longer runs in atomic/deferred modes where the transaction stays open and renewal is unnecessary.
  • Error handler transaction rollback — When the error handler’s runInTransaction fails, prepare and complete transactions are now properly rejected (rolled back) instead of resolved, preventing jobs from being left in inconsistent state.
  • Default TJobId type corrected — PgStateAdapter and SqliteStateAdapter type defaults changed from string to UUID, matching actual runtime behavior.

Breaking Changes

  • StateAdapter.withSavepoint is now a required method (previously optional) with a simplified positional signature: withSavepoint(txCtx, fn). Custom state adapter implementations must add this method.
  • Default TJobId generic on PgStateAdapter and SqliteStateAdapter changed from string to UUID. Code relying on the previous string default may see new type errors.

Packages

All packages released at 0.7.0: queuert, @queuert/postgres, @queuert/sqlite, @queuert/redis, @queuert/nats, @queuert/otel, @queuert/dashboard.