Google's open-source SDK for building natively compiled mobile, web, and desktop apps from a single Dart codebase.
Snapchat/Valdi
A cross-platform UI framework that compiles declarative TypeScript components into native iOS, Android and macOS views, without web views or JS bridges.
- Stars
- 16,382
- Forks
- 538
- Open issues
- 22
- Last commit
- 24 hours ago
What is it?
Valdi is a UI framework from Snap for building mobile and desktop interfaces. You write components in declarative TSX with TypeScript, and Valdi compiles them into platform-native views on iOS, Android and macOS rather than rendering through web views or a JavaScript bridge.
The framework includes view recycling across screens, independent component re-rendering, a C++ layout engine using Flexbox with RTL support, and viewport-aware rendering that only inflates visible views. It also offers hot reload, VSCode debugging with breakpoints and heap dumps, and a component-level testing framework.
Valdi supports embedding its components inside existing UIKit or Android hierarchies, using native views inside Valdi layouts, and writing performance-critical modules in C++, Swift, Kotlin or Objective-C with generated TypeScript bindings. The project is in beta and is MIT licensed.
Key features
- 01Compiles declarative TSX components to native iOS, Android and macOS views
- 02Hot reload and VSCode debugging with breakpoints and heap dumps
- 03Global view recycling and viewport-aware rendering for smoother scrolling
- 04Flexbox layout engine in C++ with automatic RTL support
- 05Generated type-safe bindings between TypeScript and Kotlin, Swift or Objective-C
- 06Embed Valdi components in existing native view hierarchies
Use cases
- Building cross-platform mobile screens without web views
- Adding Valdi components incrementally to an existing iOS or Android app
- Writing performance-sensitive modules in C++ or Swift with TypeScript bindings
- Building feature-rich, scrolling-heavy interfaces such as feeds
Quick start
- 1
Install the Valdi CLI from npm
npm install -g @snap/valdi - 2
Run the one-command dependency setup
valdi dev_setup - 3
Create a project folder and bootstrap it
mkdir my_project && cd my_project valdi bootstrap - 4
Install the app on iOS or Android
valdi install ios
Things to know
- Status is beta, and the README says tooling and documentation are still being battle-tested in open source.
- Building for iOS or macOS requires Xcode 26.5 or 27, so it needs a Mac.
In collections
Topics
FAQ
- What is Valdi?
- A cross-platform UI framework that compiles declarative TypeScript components into native iOS, Android and macOS views, without web views or JS bridges. Valdi is a UI framework from Snap for building mobile and desktop interfaces. You write components in declarative TSX with TypeScript, and Valdi compiles them into platform-native views on iOS, Android and macOS rather than rendering through web views or a JavaScript bridge.
- Is Valdi free to use? What license does it have?
- Valdi is open source under the MIT license. Check the license terms before using it in commercial products.
- Is Valdi still maintained?
- Actively maintained. The last commit to Valdi was on Nov 5, 2026.
- What can I use Valdi for?
- Building cross-platform mobile screens without web views Adding Valdi components incrementally to an existing iOS or Android app Writing performance-sensitive modules in C++ or Swift with TypeScript bindings Building feature-rich, scrolling-heavy interfaces such as feeds
- How do I install Valdi?
- Install the Valdi CLI from npm: npm install -g @snap/valdi Run the one-command dependency setup: valdi dev_setup Create a project folder and bootstrap it: mkdir my_project && cd my_project valdi bootstrap Install the app on iOS or Android: valdi install ios
- Where can I get Valdi?
- The source code and installation instructions are on GitHub: https://github.com/Snapchat/Valdi
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
Open-source Python framework for building GUI apps that run on desktop, mobile and embedded platforms from one codebase.
Lottie and dotLottie splash screens for React Native that play natively from app launch, before the JavaScript bundle loads.
A Flutter chat UI package with customizable message widgets, providing a chat screen you can connect to any backend.
An open-source framework for building universal native apps with React that run on Android, iOS, and the web.
A Vue.js-based cross-platform framework that lets developers write one codebase for iOS, Android, HarmonyOS, Web and many mini-program platforms.