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