fate combines view composition, normalized caching, data masking, Async React features, and type-safe data fetching.
ViewRefs are intentionally small: a typename, an id, and enough metadata for fate to resolve masked data against a view. Passing refs through the tree keeps component props light and lets each component declare the fields it reads. This post walks through how a PostCard can select title and author while a detail route adds comments, tags, and counts without creating another hand-written data shape.
- Ari
Sora
Passing ViewRefs through components made the example easier to read than a stack of custom DTO types.
Christoph
Optimistic likes are simple, but they make the rollback behavior easy to test in front of someone.
Hana
The Void example deserves a walkthrough because it proves the framework integration boundary is small.
useLiveView has the same shape as useView, but it subscribes to updates for the selected object through the native live transport. The client keeps one SSE stream open, sends subscribe and unsubscribe control messages, and merges returned records into the same normalized cache used by requests and mutations. Components keep their view definitions and just opt into live data.
- Mika
Christoph
The single SSE connection model is reassuring; we were worried live views would create one stream per card.
Dina
The search route feels more convincing when it can find live views, adapters, and migration content.
Lena
Connection identity following Relay semantics is a strong choice for teams that already know that model.
The safest adoption path is incremental. Add byId and list procedures or source adapters next to existing server routes, generate a client, and move one screen to views. The first win is usually removing loading branches and manual cache patches from a feed or detail page. From there, optimistic actions and live views can be introduced without rewriting the whole app.
- Noah
Hana
I appreciate that the examples still work with existing server routes while adding the fate procedures.
Jamal
The comments list is long enough now to exercise load-more behavior without creating fake lorem ipsum.
Prisma, Drizzle, native HTTP, tRPC, and source adapter notes.
Async React, Suspense, Actions, and the react-fate hooks.
Core ideas behind views, ViewRefs, strict selection, and data masking.
Live views, live lists, SSE streams, and update events.
Practical migration notes for teams moving away from request-centric state.
Progress reports from the alpha releases and example applications.
A guided tour of the current alpha covering views, normalized caching, native HTTP, and the updated example apps.
Hands-on workshop for replacing request hooks with co-located views, root requests, and Suspense boundaries.
Live demo of object updates, connection events, visible inserts, deletion pruning, and one SSE stream per client.
Server-focused session on data views, source adapters, Prisma, Drizzle, and the native fate HTTP handler.
Launch review for the Void example, including routing, auth, seed data, live comments, and fate client generation.