Blog

Updates, guides, and announcements from comwit.

comwit v2.5.1 — React 19 Suspense fix

A stable patch that fixes repeated renders and frozen tabs when sibling query Suspense boundaries load on React 19.

comwit v2.5.0 — Streaming Suspense for Next.js

v2.5.0 promotes the 2.5 beta line to the stable @comwit/state release: a query resolved by .suspend() during the Next.js server render hydrates in the browser without a second request.

comwit v2.5.0-beta.0 — Streaming Suspense for Next.js

The 2.5 beta streams query results resolved by .suspend() during the Next.js server render into the browser cache, so a Suspense boundary hydrates without a second request.

comwit v2.5.0-beta.1 — Local queries survive a scope that resolves mid-request

A local.query whose collection scope comes from another model no longer stays loading forever when that scope resolves while its first request is in flight.

Comwit State and UI, together

One home for the libraries behind Comwit templates.

comwit v2.4.0 — URL state and slow initial loading

v2.4.0 promotes typed searchParam() model fields and declarative slow-loading query state from beta to the stable @comwit/state release.

comwit v2.3.0 — Render-safe server hydration

v2.3.0 adds typed domain-hook hydration for resolved Server Component data and makes external-store initialization safe under React 19.

comwit v2.2.0-beta.3 — Collection-scoped local data

The fourth 2.2 beta lets each local collection share public data or lazily derive a user/tenant scope from another model.

comwit v2.2.0 — Local-first resources

v2.2.0 adds standalone IndexedDB resources, normalized local query adapters, custom entity identity, and collection-scoped persistence.

comwit v2.2.1 — Stable local revalidation

v2.2.1 keeps canonical entity fields visible throughout ordinary and streamed local query revalidation.

comwit v2.2.0-beta.0 — Durable on-demand queries

The 2.2 beta adds local.collection() and local(query()) for normalized IndexedDB snapshots, instant exact-argument hydration, and background server revalidation.

comwit v2.2.0-beta.1 — Standalone local resources

The second 2.2 beta separates IndexedDB resources from queries, adds exact local restore for server-rendered details, and keeps query adapters optional.

comwit v2.2.0-beta.2 — Custom local entity identity

The third 2.2 beta adds collection getId support and verifies that local resources degrade cleanly when IndexedDB is unavailable on the server.

comwit v2.1.0 — Declare query loading in selectors

v2.1.0 adds type-inferred selector .load(arg), so a component can declare its query key during render and show loading state from the first frame without another hook.

comwit v2.0.0 — The package is now @comwit/state

v2.0.0 renames the npm package from comwit to @comwit/state. The API is unchanged — only the install name and import specifier change. The old comwit package is deprecated and re-exports the new one, so existing installs keep working.

comwit v0.2.0 — Suspense, Realtime, Persist, and Plugin Architecture

v0.2.0 release notes. Suspense support, real-time subscriptions, state persistence, plugin architecture — all built and shipped by Claude Code.

comwit v0.2.1 — Fix repeated query() TypeError

v0.2.1 patch release. Fixes TypeError on repeated query() calls when data contains arrays or nested objects.

comwit v0.2.2 — Stage 3 Decorators & Type Safety Improvements

v0.2.2 patch release. Migrates interceptors to TC39 Stage 3 decorators with legacy backward compatibility, fixes proxy type errors, and adds BoundResourceState typing for action state().

Why Domain-Driven Design Matters More in the AI Era

How domain-driven architecture makes vibe coding actually work — and why comwit was built this way.