Topcoat, a full-stack web framework built around Rust, has added server-push support in version 0.9 as its developers pursue a server-rendered model that can still deliver responsive browser interfaces. The update allows a browser to maintain a WebSocket connection and subscribe to interface changes from the server, including the repeated updates needed for applications such as chat.

The project was announced two months earlier as a batteries-included framework with views, components, mailers and an object-relational mapping layer called Toasty. Its stated goal is to make higher-level application development in Rust more productive while retaining the language's performance and type-safety advantages. Topcoat is associated with the ecosystem around Tokio, the asynchronous Rust runtime used for networking, scheduling, timers and input-output operations.

Topcoat's design begins with server-side rendering. Its developers argue that approach offers a straightforward path for data access and quick initial pages, while acknowledging that repeated network trips can limit interactivity. The framework therefore provides signals and runtime expressions that use a type-checked subset of Rust capable of being translated to JavaScript for execution in the browser. Those expressions can handle small immediate changes, such as revealing a loading indicator or changing style classes, without contacting the server.

For structural changes, Topcoat uses components called shards. When a relevant signal changes, the browser sends the current value to the server, which renders updated HTML for the affected component. In version 0.8, server-rendered interface code gained the ability to read signals directly. The framework then tracks those dependencies and fetches only the page areas tied to a changed value. Updated elements are morphed in an effort to preserve input state and focus.

The framework also supports live views that can issue multiple interface updates. One use is streaming server-side rendering: an application can return a loading skeleton promptly, then replace it when data arrives. Topcoat includes suspense and error-boundary components for this pattern. A live view can also emit a sequence of changes, such as a progress indicator during a longer operation.

Version 0.9 extends that model beyond initial page delivery through its WebSocket-based server push. Rather than ending the stream once a page loads, the browser can remain connected and receive later interface changes initiated by server-side state.

Toasty, the accompanying data layer, is also evolving. Its new update macro can change fields and increment a stored value in one database operation without loading the record first. The developers are additionally adding first-class handling for document data, including queries against PostgreSQL JSONB columns.

Topcoat remains a young framework whose exact shape is still being developed. The current releases nevertheless define its central approach: keep rendering and business logic on the server by default, then use targeted client execution, selective re-rendering and persistent connections where latency or interaction demands them.