vercel-labs / native
git clone https://github.com/vercel-labs/native.git
v0.11.0 · 8d ago
🔥 on GitHub Trending today
Toolkit for building native desktop apps
+5
stars, 24h · #2,536
+23
stars, 7 days · #4,607
+124
stars, 30 days · #3,912
7.8k
★ total · +0% this week
328
forks · 179 open issues
Star history (as recorded here)
LanguageZig
LicenseApache-2.0
Created2026-05-08 (5mo ago)
Last push1d ago
Watchers21
OwnerOrganization
Seen on GitHub Trending
- 2026-10-22 — #8 daily in zig · +7 ★
- 2026-10-22 — #8 monthly in zig · +126 ★
- 2026-10-22 — #5 weekly in zig · +29 ★
- 2026-10-21 — #5 daily in zig · +4 ★
- 2026-10-21 — #11 monthly in zig · +123 ★
- 2026-10-21 — #7 weekly in zig · +23 ★
- 2026-10-20 — #5 daily in zig · +4 ★
- 2026-10-20 — #11 monthly in zig · +124 ★
- 2026-10-20 — #7 weekly in zig · +23 ★
Links
- GitHub: github.com/vercel-labs/native
- Homepage: https://native-sdk.dev
- Releases · Issues · Hacker News mentions
README excerpt
# Native SDK Native SDK is a toolkit for building native desktop applications with TypeScript and Native markup. The toolkit compiles app logic and views into a native executable and renders the interface in OS windows. Zig cores and optional embedded web content are also supported. Native SDK is experimental. Platform capabilities vary, and mobile support is still evolving. See the platform support matrix for current support. ## Quick start Install the CLI with Node.js 24 or later: [code] Create and run an app: [code] The generated project opens a counter app and includes: - `src/core.ts`: the app's model, messages, and update function. - `src/app.native`: the view, with layout, bindings, and message dispatch. - `app.json`: app identity, windows, permissions, and security settings. `native dev` watches markup changes and updates the view while preserving app state. TypeScript core changes rebuild and restart the app. Use `native dev --core` to exercise core logic under Node.js without opening a window, `native check` to validate the project, and `native build` to create a release binary. The CLI uses a compatible Zig toolchain from your `PATH` or offers to download the pinned version. See Quick Start for platform prerequisites and the complete workflow. ## App model Events dispatch typed messages to `update`, which returns the next model and any effects. The view derives its content from the model. Filesystem access, network requests, and other external work run through effects and TypeScript services. App cores use a checked TypeScript subset and compile to native code. To write a Zig core instead, create the project with `native init my_app --template zig-core`. See App Model and TypeScript Cores. ## Examples The Soundboard example rendered by the Native SDK engine. More apps are in examples/: - Chatbot: streaming responses, text editing, and TypeScript effects. - Soundboard: audio playback, search, assets, and context menus. - System monitor: subprocess effects, tables, charts, and timers. - Calculator: markup, keyboard input, and theming. See the example catalog for additional apps and their authoring languages. ## Documentation - Quick Start: installation and your first app. - Native UI: markup, layout, and bindings. - Components: the built-in component catalog. - TypeScript Services: external work outside the core. - Testing: headless app tests and runtime integration. - Automation: inspect and drive a running app. - Packaging: create distributable packages. ## Contributing See CONTRIBUTING.md for repository setup and local checks. For larger changes, open an issue to discuss the design first. ## License Apache-2.0