Skip to content

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
Step-by-step guide: how to use ValdiInstall, first run, examples, tips and FAQs

How to get it

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

    One-command setup (installs all dependencies)

    valdi dev_setup

    Create your first project

    mkdir my_project && cd my_project

    Bootstrap project

    valdi bootstrap
  2. 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. 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

ProjectStarsTypeLevelUpdatedBest for
Valdi (this)16.4kLibraryadvanced6 days agoMobile teams who want one UI codebase for iOS and Android
react-native127kFrameworkintermediate4 days agoWeb developers who already know React and want to build mobile apps
react-native-elements25.9kLibraryintermediate6 months agoReact Native developers who want ready-made UI components
NativeScript25.7kFrameworkintermediate4 days agoJavaScript or TypeScript developers who want to build native iOS or Android apps
capacitor17kDev toolintermediate7 days agoWeb developers who already have a modern web app and want it in the app stores
NativeBase20.4kLibraryintermediate9 months agoTeams 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.