Valdi — это кроссплатформенный UI фреймворк, обеспечивающий нативную производительность без ущерба для скорости разработки. Один раз напишите свой пользовательский интерфейс на декларативном TypeScript, и он сразу же скомпилируется в нативные (Kotlin, Objective-C и Swift ) представления на iOS, Android и macOS — без веб-представлений и JavaScript-бриджей.
Пример:
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>;
}
}
Настоящая нативная производительность
В отличие от фреймворков, использующих веб-представления или JavaScript-мосты, Valdi компилирует декларативно отрисованные компоненты TypeScript в платформенно-зависимые представления. Valdi также обладает рядом других преимуществ в плане производительности:
- Автоматическое переиспользование представлений — глобальная система пула представлений повторно использует нативные представления на всех экранах, значительно сокращая задержки.
- Оптимизированный рендеринг компонентов — компоненты перерисовываются независимо, не запуская повторную визуализацию родительских элементов, что обеспечивает быстрые инкрементальные обновления.
- Оптимизированный движок компоновки — движок компоновки C++ работает в основном потоке с минимальными затратами на маршалинг.
- Рендеринг с учётом области просмотра — он выполняется только видимых представлений, что делает бесконечную прокрутку производительной по умолчанию.
Опыт для разработчиков
Valdi устраняет традиционный цикл компиляция-тестирование-отладка, замедляющий разработку нативных приложений:
- Мгновенная горячая перезагрузка — отслеживайте изменения за миллисекунды на iOS, Android или настольных компьютерах без перекомпиляции.
- Полноценная отладка VSCode — устанавливайте точки останова, проверяйте переменные, профилируйте производительность и создавайте дампы кучи прямо в VSCode.
- Привычный синтаксис — компоненты TSX с TypeScript для обеспечения типобезопасности.
Глубокая нативная интеграция
Valdi генерирует типобезопасные биндинги между TypeScript и нативными платформами:
- Автоматическая генерация кода — интерфейсы TypeScript компилируются в биндинги Kotlin, Objective-C и Swift.
- Доступ к нативному API — прямой доступ к API платформы и сторонним нативным библиотекам через многоязычные модули.
- Двунаправленная связь — безопасная передача сложных структур данных и колбеков между TypeScript и нативным кодом.
- Встроенная поддержка Protobuf — бесшовная интеграция с Protobuf для эффективной сериализации данных.
- Поддерживает продвинутую анимацию, рендеринг в реальном времени и сложные системы жестов.
Valdi широко используется в приложениях Snap уже 8 лет. В компании называют это бета-версией, поскольку инструменты и документация требуют более тщательного тестирования в среде открытого исходного кода. Valdi выйдет из стадии бета-тестирования, когда в компании будут довольны опытом разработчиков.

