Valdi README

The project's README from github.com/Snapchat/Valdi. As one markdown file: README.md.

Valdi

License: MIT Platforms Status TypeScript Documentation PRs Welcome

[!NOTE] Beta Status: Valdi has been widely used in Snap's production apps for the last 8 years. We're calling this a beta because our tools and documentation need more battle testing in the open source world. Valdi will exit beta when we're happy with the developer experience.

Valdi is a cross-platform UI framework that delivers native performance without sacrificing developer velocity. Write your UI once in declarative TypeScript, and it compiles directly to native views on iOS, Android, and macOS—no web views, no JavaScript bridges.

Quick Example

A basic Valdi component:

import { Component } from 'valdi_core/src/Component';

class HelloWorld extends Component {
  onRender() {
    const message = 'Hello World! 👻';
    <view backgroundColor='#FFFC00' padding={30}>
      <label color='black' value={message} />
    </view>;
  }
}

Hello World example running on iOS

Quick Start

Prerequisites: Xcode (macOS only) - everything else is automatic!

# 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
valdi bootstrap
valdi install ios  # or android

[!TIP] Editor Extensions: For the best development experience, install the Valdi VSCode/Cursor extensions for syntax highlighting, debugging, and device logs during hot reload.

Example Apps

The apps/ directory contains runnable examples:

App What it shows
helloworld Minimal component — the fastest way to get something on screen
navigation_example Screen navigation patterns
managed_context_example Sharing state across components with managed context
valdi_gpt AI-driven dynamic UI — Valdi rendering UI described at runtime
cli_example Building a Valdi CLI application
benchmark Performance benchmarks

Why Choose Valdi?

Valdi is a cross-platform UI framework designed to solve the fundamental problem of cross-platform development: velocity vs. runtime performance. For 8 years, it has powered a large portion of Snap's production apps.

True Native Performance

Unlike frameworks that rely on web views or JavaScript bridges, Valdi compiles declaratively rendered TypeScript components into platform-native views. Valdi also includes several other performance advantages:

Learn more in our Performance Optimization Guide.

Developer Experience Built for Speed

Valdi eliminates the traditional compile-test-debug cycle that slows native development:

Flexible Adoption Model

Valdi integrates easily into existing apps - start small and scale as needed:

Deep Native Integration

Valdi generates type-safe bindings between TypeScript and native platforms:

Proven at Scale

Feature Highlights

Need Help?

Contributing

Please follow the contributing guidelines.

License

Valdi is made available under the MIT License.

Valdi (Snapchat/Valdi)

Searching Database…

16.4K ·GitHub
Что это такое?Valdi — это кроссплатформенный UI-фреймворк от Snap: вы один раз описываете интерфейс декларативно на TypeScript, а он компилируется прямо в нативные элементы на iOS, Android и macOS.
То есть он рендерится не через web view и не через JavaScript-мост?Верно — декларативные TypeScript-компоненты компилируются в нативные элементы платформы, без web view и без JavaScript-мостов на пути отрисовки.
Что нужно установить, чтобы собрать и запустить что-нибудь?Единственное требование — Xcode, и он доступен только на macOS — всё остальное настраивается автоматически. Рекомендуется установить расширения Valdi для VSCode/Cursor: они дают подсветку синтаксиса, отладку и логи с устройства во время hot reload.
Я пишу всё на TypeScript или всё-таки трогаю нативный код?Вы пишете TSX-компоненты на TypeScript со строгой типизацией. Valdi автоматически генерирует типобезопасные биндинги к Kotlin, Objective-C и Swift, а полиглот-модули позволяют писать критичный по производительности код на C++, Swift, Kotlin или Objective-C.
Как на самом деле ощущается повседневная разработка?Мгновенный hot reload за миллисекунды на iOS, Android или десктопе без перекомпиляции, плюс полноценная отладка в VSCode: точки останова, просмотр переменных, профилирование производительности и дампы кучи.
Придётся переписывать всё приложение целиком, чтобы его внедрить?Нет — внедрение постепенное: можно добавить компоненты Valdi в существующие иерархии представлений UIKit или Android, встроить нативные элементы в разметку Valdi или написать на Valdi отдельные фичи целиком.
А под Windows или веб он умеет собирать?Нет — в README перечислены только нативные элементы на iOS, Android и macOS; целей для веба и Windows нет.
Почему Snap сделала свой фреймворк, а не взяла готовый?Согласно README, Valdi нацелен на главное противоречие кроссплатформенной разработки — скорость разработки против производительности в рантайме. Он уже 8 лет работает в критичных фичах продакшн-приложений Snap, включая сложные анимации, рендеринг в реальном времени и комплексную обработку жестов.
Что можно запустить, чтобы увидеть его в деле?В каталоге apps/ есть шесть запускаемых примеров: helloworld (минимальный компонент), navigationexample (навигация между экранами), managedcontextexample (общее состояние через managed context), valdigpt (UI, управляемый ИИ), cliexample (приложение через Valdi CLI) и benchmark.
Что такое valdigpt?Пример приложения, показывающего UI, управляемый ИИ, — Valdi отрисовывает интерфейс, который описывается во время работы программы, а не зафиксирован на этапе компиляции.
Creator
Snapchat
Size
89.7 MB
Stars
16.4K
Age
11mo
Commits · 90 Days