The UI framework C deserves

Build cross-platform graphical applications in pure C.
No browser. No webview. No compromise.

$ curl -fsSL https://getstrata.sh/init | sh -s -- my-app

Why Strata

A native UI framework built from scratch for C developers.

No Webview Required

Your UI runs natively — no Chromium, no embedded browser, no Electron overhead. Just your app and the GPU.

Tiny Footprint

A Strata hello-world is under 2 MB. Compare that to 150+ MB for Electron. Startup is instant.

Pixel-Identical Everywhere

Same rendering engine on every platform. No OS-specific webview quirks. What you build is what your users see.

GPU-Accelerated

Hardware-accelerated rendering via SDL and WebGPU. Retained rendering with dirty tracking — only changed regions get re-rasterized.

Simple by design

Bootstrap a window in 20 lines of C. Build components with a declarative DSL that compiles to C.

#include <strata/runtime/runtime.h>
#include <sui/sui_app.h>
#include "my_app_sui.h"

typedef struct app_state {
  my_app_root *root;
} app_state;

STRATA_V2_SUI_DEFINE_ROOT(my_app, app_state, root, my_app_root);

int main(int argc, char **argv) {
  app_state state = {0};
  StrataV2Config cfg = STRATA_V2_CONFIG_INIT;
  cfg.window_title = "My App";
  cfg.window_width = 1280;
  cfg.window_height = 720;

  StrataV2SuiApp app = STRATA_V2_SUI_APP_INIT;
  app.app_context = &state;
  app.build_ui = my_app_build_ui;
  app.destroy_ui = my_app_destroy_ui;

  return strata_v2_run_sui_app_default(&cfg, &app);
}
export component Button {
    props {
        label: string;
        onPress: fn() -> void;
        disabled: bool = false;
    }

    Pressable
        .style {
            height: 36;
            paddingLeft: 16;
            paddingRight: 16;
            borderRadius: 6;
            alignItems: center;
            justifyContent: center;
            backgroundColor: theme.primary;
        }
        .hoverStyle { backgroundColor: theme.primaryHover; }
        .pressedStyle { opacity: 0.85; }
        .disabled(props.disabled)
        .onPress(props.onPress)
    {
        Text(props.label)
            .style { color: theme.onPrimary; fontWeight: 600; }
    }
}

How Strata compares

Strata fills a gap no existing framework covers.

StrataElectronTauriGTKDear ImGui
Language C / SUIJS/TSRust + JSCC++
No webview
Hello-world binary ~2 MB~150 MB~5 MB~20 MB*~3 MB
Pixel-identical cross-platform
Declarative UI Partial
GPU-accelerated VariesPartial
Retained rendering

* GTK size includes shared libraries. Static linking increases significantly.

What you can build

From developer tools to creative apps to game engines.

Code Editor Coming soon

Syntax highlighting, split panes, and GPU-accelerated text rendering.

Pixel Art Editor Coming soon

Layers, palettes, and real-time canvas with per-pixel control.

Game Engine UI Coming soon

In-engine editors, inspectors, and debug overlays at native speed.

Start building with Strata

One command. No dependencies beyond a C compiler and CMake.

$ curl -fsSL https://getstrata.sh/init | sh -s -- my-app
Read the docs