{"slug": "native-shell-a-rust-runtime-for-dynamically-delivered-native-ui", "title": "Native Shell – a Rust runtime for dynamically delivered native UI", "summary": "Native Shell (NSH) has launched as a Rust runtime for cross-platform apps that renders dynamically delivered TSX screens with each platform's own native UI, including UIKit on iOS 15+, Android views on Android 9 (API 28)+, AppKit on macOS 14+, Win32/Direct2D on Windows 10 1809+, GTK 4 on Linux (GTK 4.14+), GPUI on macOS, Windows and Linux, and HTML on the web. Hosts can load TSX modules at run time as signed packages inside a sandbox the host configures, and developers build AI-generated screens with TSX and Tailwind using generated TypeScript declarations and model-readable documentation at nsh.dev/llms.txt. The `nsh` CLI, installable via install script, Homebrew (longbridge/tap/nsh) or PowerShell, handles building and packaging, with hot updates for TSX and a Rust template rooted in src/lib.rs.", "body_md": "**Native UI in Rust and TSX, embedded in your app or shipped on its own.** Native Shell is a Rust engine for\ncross-platform apps and AI-generated UI. Write your app in Rust, use TSX for dynamically delivered screens, or\ncombine both with shared Rust components. Each platform renders with its own UI: native views on iOS, Android,\nmacOS, Windows and Linux, GPUI in GPUI apps and HTML on the web.\n\nEmbed NSH in an existing app or package it as a standalone app. Hosts can load TSX modules at run time as plugins, delivered as signed packages and run in a sandbox the host configures.\n\nDocumentation, guides and live demos: **[nsh.dev](https://nsh.dev)**.\n\n- Write apps in Rust, TSX, or both, and render with each platform's own UI, sharing the same reactive engine, flexbox and grid layout, system text, input and accessibility.\n- Embed in existing native apps alongside components such as maps and web views, or package as standalone apps and static websites.\n- Deliver TSX screens at run time with signed packages and host-controlled sandbox capabilities.\n- Build AI-generated screens with TSX and Tailwind, generated TypeScript declarations and\n[model-readable documentation](https://nsh.dev/llms.txt) .\n- Iterate with TSX hot updates, headless tracing and a single Rust-built `nsh` CLI for building and packaging.\n\n| Platform | Drawn with | Embed with | Requires | \n|---|---|---|---|\n| iOS | UIKit, CoreText | `NshAppView` (Swift,`NativeShell.xcframework` ) | iOS 15+ | \n| Android | Android views, `StaticLayout` | `NshView` (Java / Kotlin,`nsh.aar` ) | Android 9 (API 28)+ | \n| macOS | AppKit, Core Animation, CoreText | `AppView` (Rust,`nsh-platform-macos` ) | macOS 14+ | \n| Windows | Win32, Direct2D, DirectWrite | `AppView` (Rust,`nsh-platform-windows` ) | Windows 10 1809+ | \n| Linux | GTK 4, Pango | `AppView` (Rust,`nsh-platform-linux` ) | GTK 4.14+ | \n| GPUI (macOS, Windows, Linux) | GPUI (GPUI Fast) | `AppView` (Rust, a GPUI view,`nsh-platform-gpui` ) | macOS, Windows; Linux with Vulkan | \n| Web | HTML, CSS | `createPlayer` (JavaScript) or an iframe | Modern browsers | \n\nThe GPUI backend (`nsh run --target gpui`, `nsh package --target gpui`) draws apps with GPUI on all three desktops and\nembeds in GPUI and GPUI Kit apps. The web platform (`nsh run --target web`, `nsh package --target web`) publishes apps\nas static sites and runs the website's live demos.\n\nInstall the `nsh` command ([other ways](https://nsh.dev/docs/installation)):\n\n## macOS / Linux\n\n```\ncurl -fsSL https://nsh.dev/install.sh | sh\n```\n\n## Homebrew\n\n```\nbrew install longbridge/tap/nsh\n```\n\n## Windows (PowerShell)\n\n```\nirm https://nsh.dev/install.ps1 | iex\n```\n\nChoose how to write your app:\n\n|  | Rust | TSX | \n|---|---|---|\n| Create | `nsh init my-app --rust` | `nsh init my-app` | \n| Write | Rust components, typed styles and signals | TSX components, Tailwind classes and signals | \n| Iterate | Rebuild and restart on Rust changes | Hot updates that preserve state | \n| Toolchain | `nsh` and[Rust](https://rustup.rs) | `nsh` | \n\nYou can also combine them: TSX screens import your Rust components and modules. See\n[Building with Rust](https://nsh.dev/docs/rust) for Rust apps and mixed projects.\n\nRun either app on your chosen platform:\n\n## iOS\n\n```\nnsh run my-app --target ios        # iOS simulator; requires Xcode\nnsh run my-app --target catalyst   # Mac Catalyst window on macOS\n```\n\n## Android\n\n```\nnsh run my-app --target android    # emulator or device; requires the Android SDK\n```\n\n## macOS\n\n```\nnsh run my-app --target macos      # AppKit window\n```\n\n## Windows\n\n```\nnsh run my-app --target windows    # Win32 window\n```\n\n## Linux\n\n```\nnsh run my-app --target linux      # GTK 4 window\n```\n\n## GPUI (macOS, Windows, Linux)\n\n```\nnsh run my-app --target gpui\n```\n\n## Web\n\n```\nnsh run my-app --target web        # open in the browser\n```\n\nThe Rust template includes a Cargo project with its root component in `src/lib.rs`. The TSX template includes\n`App.tsx`, `nsh.json` and `tsconfig.json`, with generated TypeScript declarations in `.nsh/types` for your editor.\nLogs and errors show in the terminal. What each platform needs:\n[Installation](https://nsh.dev/docs/installation#platform-tools).\n\n| Example | What it shows | \n|---|---|\n| [`examples/gallery`](https://github.com/longbridge/nsh/blob/main/examples/gallery) | A tour of what NSH supports: lists, navigation, forms, controls, gestures, animation, images, styles, text, web view and video, `fetch` | \n| [`examples/counter`](https://github.com/longbridge/nsh/blob/main/examples/counter) | The smallest app | \n| [`examples/hopper`](https://github.com/longbridge/nsh/blob/main/examples/hopper) | A dark, tabbed dashboard built only from primitives: interactive canvas charts, sliders, menus, animation | \n| [`examples/desktop`](https://github.com/longbridge/nsh/blob/main/examples/desktop) | A desktop app with a title bar and menus of its own ( `nsh/desktop` ) | \n| [`examples/gallery-rs`](https://github.com/longbridge/nsh/blob/main/examples/gallery-rs) | The gallery written in Rust, with a TSX entry for mixed development | \n| [`examples/embed-ios`](https://github.com/longbridge/nsh/blob/main/examples/embed-ios) ,[` examples/embed-android`](https://github.com/longbridge/nsh/blob/main/examples/embed-android) | NSH inside existing native apps, with a native component the app registers | \n| [`examples/bench`](https://github.com/longbridge/nsh/blob/main/examples/bench) | Rust components against the same components in TSX | \n\n```\ncargo run\n```\n\nLicensed under the [Apache License, Version 2.0](https://github.com/longbridge/nsh/blob/main/LICENSE-APACHE).\n\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be licensed under Apache-2.0, without any additional terms or conditions.", "url": "https://wpnews.pro/news/native-shell-a-rust-runtime-for-dynamically-delivered-native-ui", "canonical_source": "https://github.com/longbridge/nsh", "published_at": "2026-10-19 13:01:09+00:00", "updated_at": "2026-10-19 13:16:27.237607+00:00", "lang": "en", "topics": ["developer-tools", "ai-tools", "generative-ai", "ai-agents"], "entities": ["Native Shell", "NSH", "Rust", "TSX", "GPUI", "Tailwind", "nsh.dev", "Longbridge"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/native-shell-a-rust-runtime-for-dynamically-delivered-native-ui", "markdown": "https://wpnews.pro/news/native-shell-a-rust-runtime-for-dynamically-delivered-native-ui.md", "text": "https://wpnews.pro/news/native-shell-a-rust-runtime-for-dynamically-delivered-native-ui.txt", "jsonld": "https://wpnews.pro/news/native-shell-a-rust-runtime-for-dynamically-delivered-native-ui.jsonld"}}