Rekindle provides project templates for GPUI, egui/eframe, and Slint. An integration selects the Rust dependencies, platform bootstrap code, browser host element, and graphics backend expected by the generated client.
For a production Phoenix page, obtain that host element with
Rekindle.Phoenix.web_host/1 and load
Rekindle.Phoenix.web_entry_path/1 after it. The
Production Builds guide contains a
complete HEEx example.
GPUI
mix igniter.install rekindle --integration gpui --targets web,desktop
GPUI uses its Web platform for the browser target and its native platform for
desktop. The browser target requires WebGPU and no host element;
Rekindle.Phoenix.web_host(:gpui) returns an empty string.
egui/eframe
mix igniter.install rekindle --integration egui --targets web,desktop
The generated Web entry mounts eframe into a canvas and uses WebGL2. The desktop
entry uses eframe's native runtime. The shared TemplateApp lives in
client/src/app.rs, following the official eframe template layout.
Rekindle.Phoenix.web_host(:egui) returns
<canvas id="the_canvas_id"></canvas>.
Slint
mix igniter.install rekindle --integration slint --targets web,desktop
The generated Web entry mounts Slint into a canvas and uses WebGL2. The desktop
entry uses Slint's native runtime. The generated build.rs compiles
client/ui/app-window.slint, while client/src/lib.rs connects the component's
callbacks for both targets. Rekindle.Phoenix.web_host(:slint) returns
<canvas id="canvas"></canvas>.
Shared UI code
Every integration keeps one shared application implementation for Web and
desktop. GPUI uses client/src/lib.rs; eframe follows its official
client/src/app.rs plus client/src/lib.rs layout; Slint keeps its UI in
client/ui/app-window.slint with shared Rust bindings in client/src/lib.rs.
The web and desktop binaries contain platform startup code only.
Target-specific behavior can be selected with the generated Cargo features.
Re-running the installer does not replace an existing Cargo client. Adoption validates an isolated copy, so the existing crate and its lockfile state remain unchanged. See Getting Started for the required target entries.