iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
In Fitz, the same .fitzv component source can target server-side rendering (SSR) or client-side WebAssembly (WASM). Martin Palopoli’s 2026 implementation report describes how that approach was extended across a companion UI library, including components that render data, build lists, and handle events in a browser mount. It is a project report—not an independent compatibility, performance, security, or accessibility evaluation.
How Fitz targets both the server and the browser
Fitz components are written as .fitzv single-file components. Palopoli describes an SSR backend that produces an HTML string and a client-WASM backend invoked with fitz build --target wasm-client. The browser target compiles Rust to WebAssembly and constructs DOM elements with web-sys. The template, state, and events are shared inputs to both outputs; the backends handle rendering differently.
This is a shared-source approach rather than a claim that server and browser runtimes behave identically in every respect. The implementation report focuses on making the companion components work on both targets, not on measuring runtime speed or comparing the approach with separate server and client implementations. Read Martin Palopoli’s implementation report on DEV Community.
What had to change for the browser target
Insert raw HTML and SVG as markup
Components that include SVG or other raw markup cannot treat it like ordinary text: escaping it would display markup characters rather than render an icon or element. Palopoli says the WASM implementation of raw_html(x) uses set_inner_html so the browser inserts the supplied string as markup. The Html type also needed a small generated struct shim for helper compatibility. The SSR emitter strips the marker because its existing interpolation already handles the value as raw markup.
#1 Best Overall
This explains how raw markup is rendered; it is not a security assessment. The report does not provide an independent review of how HTML passed to this helper is validated or made safe.
Preserve typed list data and defaults
Several components rely on typed data rather than only static markup. The WASM support was extended to clone non-nullable state fields such as Vec<FieldOption> and lower nominal struct literals used in defaults. Palopoli names Select, RadioGroup, and BarChart as components that could then render with data in the browser.
Rank #2
- HTML CSS Design and Build Web Sites
- Comes with secure packaging
- It can be a gift option
Build lists inside helper bodies
The pager helper needed to create and populate a local list. The browser target was extended to support range iteration and .push within helper bodies, enabling that construction pattern.
Route events for standalone browser mounts
Pager and ConfirmDialog use controlled events that, in the server-side LiveViews pattern described by the author, bubble to a parent. A standalone browser mount does not automatically have that parent loop. The reported solution routes a bound callback slot when a composing parent binds the event and uses an inert no-op when no callback is bound.
Rank #3
What the reported component counts mean
In his 2026 article, Palopoli reports that 38 of 38 companion components compile to WASM, and that 22 components run in the live gallery. The totals describe different milestones: compilation across the library and execution of a subset in the gallery. They are the author’s project figures, not independently audited results or a benchmark.
Palopoli describes the gallery as running components compiled to WebAssembly from their server source, including badges, cards, alerts, inputs, an SVG-icon button, data-fed select and radio group components, a bar chart, and the controlled pager and confirmation dialog. The article page displays “Posted on Sep 24” without a year; the search result associates it with 2026, so the year should be treated as qualified rather than as a date printed on the page.
Rank #4
- Brand: Wiley
- Set of 2 Volumes
- A handy two-book set that uniquely combines related technologies Highly visual format and accessible language makes these books highly effective learning tools Perfect for beginning web designers and front-end developers
What the report does not establish
- Performance: No controlled speed comparison or runtime benchmark is provided.
- Bundle size: The article does not report generated WASM or application bundle measurements.
- Security: It describes raw HTML insertion but supplies no independent security review.
- Accessibility: The compilation and gallery counts do not establish accessibility conformance or testing.
- Production readiness: A component compiling or appearing in a live gallery does not, by itself, establish suitability for every production use.
The author identifies fine-grained reactivity as a next step. In particular, live text inputs would need patch-in-place updates that preserve the caret. The article gives no delivery date for that work.
Quick Recap
Best Value
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

