Repolode
Snapchat

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. 1

    Install the Valdi CLI from npm

    npm install -g @snap/valdi
  2. 2

    Run the one-command dependency setup

    valdi dev_setup
  3. 3

    Create a project folder and bootstrap it

    mkdir my_project && cd my_project valdi bootstrap
  4. 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