
Valdi
A UI framework that writes your app's screens once in TypeScript and compiles them to native iOS, Android, and
- Stars
- 16.4k
- Forks
- 537
- Licence
- MIT
- Language
- C++
- Last update
- 6 days ago
- Type
- Library
What it is
Valdi is a cross-platform UI framework from Snap. You write declarative TypeScript (TSX) components, and Valdi compiles them into native platform views instead of web views or a JavaScript bridge. The README says it has been used in Snap's production apps for about 8 years and is currently labeled beta.
- Build a screen with a flexbox layout in TypeScript and run it on iOS or Android
- Embed Valdi components inside an existing UIKit or Android view hierarchy
- Call C++, Swift, Kotlin, or Objective-C code from TypeScript through polyglot modules
- Explore the example apps such as navigation_example and valdi_gpt
Great for
- Mobile teams who want one UI codebase for iOS and Android
- Developers comfortable with TypeScript who want native-looking views
- Teams already working in a large native app who want to embed Valdi components gradually
- Developers interested in Bazel-based builds and in-editor debugging
Not ideal for
- Projects that need a stable, fully supported release: the README says it is in beta and will exit beta once the developer experience is ready
- Teams who need a mature open-source community yet: the README notes the tools and docs still need more testing outside Snap
- Beginners with no mobile or build tooling experience, since setup requires Node.js and, on macOS, Xcode
How to get it
- 1
Install with a package manager
You'll need: Node.js 18 or later (22 recommended) · On macOS: Xcode 26.5 or 27
Install Valdi CLI
npm install -g @snap/valdiOne-command setup (installs all dependencies)
valdi dev_setupCreate your first project
mkdir my_project && cd my_projectBootstrap project
valdi bootstrap - 2
Run it
- Install the Valdi CLI with npm
- Run valdi dev_setup to install the remaining dependencies
- Create a project folder and run valdi bootstrap inside it
- Run valdi install ios or valdi install android to launch on a device or simulator
- 3
Get the most out of it
- Start from the helloworld example in the apps/ directory
- Use the Valdi_Widgets component library linked in the README
- Set up VSCode/Cursor to point at the workspace TypeScript version, as the README describes
- Use the built-in testing framework for component-level unit tests
- Use Bazel integration for reproducible, incremental builds
Downloads
Strengths
- Compiles to native views rather than web views or JavaScript bridges, per the README
- Supports hot reload and VSCode debugging, including breakpoints and heap dumps
- Has a flexible adoption path: embed Valdi in native apps or native views in Valdi
Trade-offs
- Labeled beta; the README says tools and docs need more open-source testing
- Setup requires specific tooling, such as Node.js 18+ and Xcode 26.5 or 27 on macOS
- The latest release is beta-0.2.1 and has no binaries attached, so you build from source
How it compares
| Project | Stars | Type | Level | Updated | Best for |
|---|---|---|---|---|---|
| Valdi (this) | 16.4k | Library | advanced | 6 days ago | Mobile teams who want one UI codebase for iOS and Android |
| react-native | 127k | Framework | intermediate | 4 days ago | Web developers who already know React and want to build mobile apps |
| react-native-elements | 25.9k | Library | intermediate | 6 months ago | React Native developers who want ready-made UI components |
| NativeScript | 25.7k | Framework | intermediate | 4 days ago | JavaScript or TypeScript developers who want to build native iOS or Android apps |
| capacitor | 17k | Dev tool | intermediate | 7 days ago | Web developers who already have a modern web app and want it in the app stores |
| NativeBase | 20.4k | Library | intermediate | 9 months ago | Teams maintaining an existing app already built on NativeBase |
Stats synced from GitHub. The assessment above was drafted with AI from the project's README on 2026-10-29 and may miss recent changes — check the README before relying on a command. MIT licence: free to use, modify and distribute, including commercially, as long as you keep the copyright notice.