Blinc

July 2, 2026 · View on GitHub

Build Status Rust Version Edition Crates.io License Blinc Book Live Demos Discord

Blinc UI

A GPU-accelerated, cross-platform UI framework for building desktop, mobile, and web applications from a single Rust codebase.

Highlights

  • GPU-Accelerated: SDF rendering, glassmorphism, spring physics, @flow custom shaders
  • Cross-Platform: Desktop (macOS/Windows/Linux), Android, iOS, Web (WebGPU)
  • Builder API: Declarative, chainable: div().flex_col().gap(16.0).child(text("Hello"))
  • 40+ Components: shadcn/ui-style library with CSS-overridable theming
  • 40+ Live Demos: Try them in your browser (WebGPU required)

Quick Start

use blinc_app::prelude::*;
use blinc_app::windowed::WindowedApp;

fn main() -> Result<()> {
    WindowedApp::run(WindowConfig::default(), |ctx| {
        div()
            .w(ctx.width).h(ctx.height)
            .bg(Color::rgb(0.1, 0.1, 0.15))
            .justify_center().items_center()
            .child(text("Hello Blinc!").size(48.0).color(Color::WHITE))
    })
}

The same build_ui function runs on desktop and web and no separate codebase.

Running the examples

A fresh clone builds every example with no extra setup — the sibling crates (blinc_canvas_kit, blinc_portal_ui, blinc_node_editor, blinc_game_kit) resolve from their published git pins:

cargo run -p blinc_app_examples --example cn_demo --features cn

Developing the sibling crates

Those four crates live in their own repositories. To edit them from local checkouts, opt in with:

./scripts/use-local-packages.sh   # clones them into packages/ (gitignored)
                                  # and redirects the workspace to those copies

This modifies Cargo.toml locally only — do not commit it (CI's check-no-local-patch.sh guard rejects it). Revert before committing:

./scripts/use-published-packages.sh

Building on low-resource machines

The debug profile is tuned so a workspace build fits comfortably on ~8 GB RAM / a small SSD: dependencies are compiled without debuginfo and workspace crates use line-table backtraces only (file:line still resolves). That is the single biggest lever for both target/ size and peak linker memory — no configuration needed.

If a full-workspace build still thrashes or OOMs on a constrained box (e.g. an 8 GB ASUS NUC), reach for these, in order of impact:

  • Build only what you need, not the whole workspace: cargo run -p blinc_app_examples --example cn_demo --features cn.
  • Cap parallelism so N rustc processes don't collectively exhaust RAM: CARGO_BUILD_JOBS=4 cargo build (or uncomment jobs in .cargo/config.toml). Start near half your core count.
  • Use a faster, lower-memory linker (mold on Linux, lld on macOS) — see the commented target blocks in .cargo/config.toml. Linking is the heaviest single step on low-RAM machines.
  • Reclaim SSD with CARGO_INCREMENTAL=0 (smaller target/, slower warm rebuilds), and cargo clean between large feature switches.

Platform Support

PlatformStatusBackend
macOSStablewgpu (Metal)
WindowsStablewgpu (DX12/Vulkan)
LinuxStablewgpu (Vulkan)
AndroidStablewgpu (Vulkan)
iOSStablewgpu (Metal)
Web (WASM)Previewwgpu (WebGPU) — Chrome 113+, Edge 113+, Firefox 141+, Safari 18+ (macOS Tahoe)
HarmonyOSIn progresswgpu (Vulkan/OpenGL ES)

Documentation

Blinc Book: comprehensive guide covering layout, styling, animation, widgets, routing, media, and more.

Live Example Gallery: 40+ interactive WebGPU demos running in your browser.

API Reference: rustdoc for all crates.

Skills.md: concise, example-driven reference for AI code agents.

Crates

CrateDescription
Coreblinc_appApp framework, windowed + web runners
blinc_coreSignals, state machines, types
blinc_layoutFlexbox layout, element builders, widgets
blinc_gpuSDF rendering, glass, shaders
Renderingblinc_textText shaping, glyph atlas
blinc_svgSVG parsing + rasterization
blinc_imageImage decoding, lazy loading
blinc_paintCanvas/paint API
Animationblinc_animationSprings, keyframes, timelines
blinc_themeDesign tokens, light/dark mode
Componentsblinc_cn40+ shadcn/ui-style components
blinc_iconsLucide icon set
Platformblinc_platformCross-platform traits
blinc_platform_desktopDesktop (winit)
blinc_platform_androidAndroid (NDK)
blinc_platform_iosiOS (UIKit/Metal)
blinc_platform_webWeb (WebGPU/WASM)

Roadmap

See ROADMAP.md for detailed milestones. Current focus:

  1. Missing widgets (date/time/color picker, data grid)
  2. Zyntax DSL: .blinc domain specific language for UI definitions, with support for live editing and hot reload in the future
  3. Accessibility (screen reader, keyboard navigation)
  4. Developer tooling (hot reload, visual inspector)

Community

Join us on Discord: questions, showcases, design discussion, and roadmap chatter. Also feel free to open a GitHub Discussion for longer-form conversations.

License

Apache License 2.0 - see LICENSE