Native SDK is a toolkit for building native desktop applications written primarily in Zig, developed by Vercel Labs. The project addresses a core tension in application development: developers often choose web-based runtimes for their expressiveness and control, but this choice typically comes with the overhead of a heavy runtime. Native SDK resolves this by keeping the expressive authoring model while replacing the runtime with native rendering, eliminating the need for browsers, WebViews, or JavaScript runtimes in the final binary.
The toolkit uses a three-part architecture. Views are written as declarative markup in .native files, application logic is authored in plain TypeScript that compiles to native code at build time, or alternatively in Zig as a first-class option. The Native SDK engine then draws every pixel directly into real OS windows. This approach means that release builds contain no parser or interpreter—the scaffolded counter example application builds to a single binary just a few megabytes in size.
The development experience emphasizes simplicity and immediate feedback. The CLI provides a quick-start command that creates a working counter app in three files: a view file, a logic file, and a manifest. The dev server supports hot reloading where edits to the view update the window in place while preserving state. Developers can run TypeScript cores under Node for instant logic checks, use native check to validate views and cores in milliseconds without building, and native build to produce optimized release binaries.
The component system ships with built-in elements including buttons, tabs, text fields, dialogs, charts, and virtual lists, all styled with considered typography, spacing, and color by default. Customization works through design tokens that resolve by name and can be replaced wholesale, allowing different visual identities while reusing the same underlying application logic. The examples directory demonstrates this with soundboard and deck applications that are functionally identical but visually distinct through token changes alone.
State management follows a deterministic pattern where events produce messages, messages update state through a pure update function, and state renders the interface. This predictability enables the native automate record feature to journal sessions and replay them headlessly, verified frame by frame against state fingerprints. The markup language supports bindings and expressions like selected="{f == filter}" with validation that native check performs against the app's actual Model and Msg types, providing file:line:column errors.
Platform support is mature on macOS with Metal presentation, OS scroll physics, native context menus, and tray integration. Linux runs the full showcase through a deterministic software renderer with pointer, keyboard, scroll, and IME composition support. Windows runs on Win32 with native context menus and IME composition, exercised in CI with real input injection. Mobile support on iOS and Android is experimental, with simulator and cross-compilation support respectively, though APIs and tooling are still evolving.
The repository shows active maintenance with a median issue and pull request response latency of 27.3 hours across 31 tracked items. The most active contributor tracked is ctate with 21 events, followed by liudonghua123 with 4 events and mvanhorn with 3 events. GitGenius identifies overlapping contributors with oven-sh/bun, ziglang/zig, and microsoft/vscode, indicating integration with the broader Zig ecosystem and developer tooling communities. The project is pre-1.0 with APIs still evolving, and the documentation at native-sdk.dev covers quick start, philosophy, the app model, TypeScript cores, UI markup, components, state management, testing, automation, capabilities, packaging, and platform support details.