Секретный убийца React Native от Snapchat

В течение 8 лет Snapchat тайно разрабатывал фреймворк для замены React Native. Теперь, когда он стал доступен публично, самый главный вопрос заключается в том, не устарел ли он уже.

Stork.AI
Hero image for: Секретный убийца React Native от Snapchat
💡

TL;DR / Key Takeaways

В течение 8 лет Snapchat тайно разрабатывал фреймворк для замены React Native. Теперь, когда он стал доступен публично, самый главный вопрос заключается в том, не устарел ли он уже.

Сенсация, восемь лет в пути

Восемь лет после того, как код был тихо отправлен сотням миллионов пользователей, Valdi наконец вышел на свет. Внутренний кросс-платформенный фреймворк Snapchat, который когда-то был лишь экспериментом для поддержания плавности Stories на устаревших Android-устройствах, теперь стал проектом с открытым исходным кодом, обещающим изменить подход к созданию «родных» приложений.

В своей основе Valdi предлагает простую, но агрессивную идею: напишите свое приложение на TypeScript, выпустите его как по-настоящему родной код для iOS, Android и macOS. Никаких WebView, никакого движка JavaScript во время выполнения, никакого JSON между потоками. Ваш пользовательский интерфейс с JSX-стилем компилируется в нативные представления платформы, при этом макеты формируются с помощью Yoga, а пиксели обрабатываются Skia.

Традиционные кросс-платформенные стеки, такие как ранний React Native, зависели от JavaScript-моста, который передавал сообщения между JS-потоком и нативным слоем, часто сотни раз за кадр. Каждое обновление пропов, жест или изменение макета должны были пересекать эту границу, что вызывало задержки, заикания и нагрузку на память. Valdi обходит всю эту архитектуру, устраняя мост на этапе сборки.

Вместо долгоживущего JS-окружения Valdi использует Bazel для организации компиляции TypeScript непосредственно в нативные модули. Макеты используют C++ движок Yoga для обеспечения согласованного поведения Flexbox, в то время как Skia рендерит высокопроизводительную 2D графику на различных платформах. В результате приложение ведет себя как полноценно нативное: UIKit и AppKit на платформах Apple, настоящие Android-вью на стороне Google.

Опыт разработчика нацелен на то, чтобы соответствовать или превосходить современные настройки React Native и Flutter. Valdi поддерживает мгновенную горячую перезагрузку, благодаря чему изменения в интерфейсе появляются за миллисекунды, и интегрируется с VS Code для полноценной отладки, включая точки останова и профилирование производительности. Собственные команды Snapchat использовали этот цикл в течение многих лет для выпуска функций камеры, чата и Discover, не прибегая к Swift или Kotlin для каждого изменения.

Открытое программное обеспечение вызвало именно ту реакцию, которую можно ожидать в 2025 году: восхищение, смягченное подозрением. Ранние последователи хвалят «React, но на самом деле нативный» подход и обещание одной кодовой базы на TypeScript для телефонов и настольных ПК. Скептики указывают на шероховатости в установщике, непрозрачность дорожной карты, контролируемой Snapchat, и резкий вопрос, который повисает над каждой проблемой на GitHub: зачем делать ставку на Valdi, когда React Native и Flutter уже доминируют?

Призрак в машине: почему появился Вальди

Иллюстрация: Призрак в машине: почему появился Вальди
Иллюстрация: Призрак в машине: почему появился Вальди

React Native в 2017 году выглядел скорее как многообещающий эксперимент, чем основа для социальной сети с фокусом на камере и 400+ миллионами активных пользователей в день. Фреймворк Facebook не поддерживал десктоп, имел незрелые инструменты и модель выполнения, которая передавала каждое обновление пользовательского интерфейса через мост JavaScript, работающий в отдельном потоке. Для компаний, ставящих на плавные взаимодействия на уровне 60 кадров в секунду, этот мост был недостатком, а не преимуществом.

Каждый жест, пролистывание и анимация в раннем React Native должны были сериализовать свойства и события в подобные JSON полезные нагрузки, отправлять их через мост и затем десериализовать на стороне нативного кода. Эта операция мэшинга приводила к задержкам, потерянным кадрам и трудным для отладки гонкам состояний. Если добавить ресурсозатратный JS-движок поверх нативных представлений, получалась ситуация, когда два мира постоянно синхронизировали состояние вместо того, чтобы иметь одно согласованное приложение.

Направление продукта Snapchat сделало такие компромиссы неприемлемыми. Приложение полагалось на полноэкранное видео, сложную жестикуляционную навигацию и эфемерные переходы интерфейса, которые штрафовали за любые всплески задержки. Инженерам были необходимы предсказуемые временные рамки кадров, жесткие лимиты по памяти на бюджетных Android-устройствах и код пользовательского интерфейса, который вел бы себя как родной Swift или Kotlin, но при этом позволял бы командам по разработке функций работать на скорости JavaScript.

В ту эпоху React Native также пропустил целые классы платформ, которые интересовали Snapchat. Не было достойной истории для macOS, не было компиляции в AppKit-вью и не было пути для повторного использования одного и того же пользовательского интерфейса на iOS, Android и внутреннем десктопном клиенте. Истинная конкуренция оставалась теоретической; фоновая работа все еще проходила через единственный JS-цикл событий, который уже был перегружен бизнес-логикой и макетом.

Итак, Snap приняла стратегическое решение: перестать ждать, пока экосистема развьётся. Вместо того чтобы полагаться на дорожную карту React Native, компания инвестировала в Valdi, фреймворк с приоритетом на TypeScript, который компилировался напрямую в нативный код и взаимодействовал с ОС без прослойки. Bazel организовывал многоплатформенные сборки, Yoga стандартизировала разметку, а Skia занималась рендерингом, но архитектурные решения исходили из собственных проблем производительности Snap.

Этот внутренний подход позволил Snapchat оптимизировать свои специфические требования — быстрое время реакции камеры, бесконечные ленты новостей и сложные анимации — за годы до появления Fabric в React Native, архитектур без мостов или серьезных амбиций в области десктопа.

Под капотом: Деконструкция двигателя Valdi

Новая структура Snapchat скрывает удивительно мощный движок. Под пастельным интерфейсом и призрачной иконкой находится система, построенная на Bazel, Yoga и Skia — той же самой тяжелой машинерии macOS, которая поддерживает бэкенды на уровне Google и графический стек Chrome. Valdi превращает этот стек в конвейер для фронтенда для iOS, Android и macOS.

Bazel находится в центре в качестве оркестратора сборки. Он обрабатывает TypeScript, пакетированные ресурсы и нативный код, а затем выдает бинарные файлы для конкретных платформ с воспроизводимыми сборками и агрессивным кэшированием. Этот выбор позволяет Valdi масштабироваться от прототипа выбора линз до приложения с миллионами строк кода, не тонув в хрупких конфигурациях Xcode или Gradle.

Макет реализован с помощью Yoga, проверенного на практике Flexbox-движка Facebook. Вместо повторной реализации макета трижды, Valdi передает Yoga платформо-независимое дерево, которое описывает свойства флекс, отступы и выравнивание. Та же самая математика макета управляет UIKit, Android Views и AppKit, что обеспечивает пиксельную консистентность интерфейса Snapchat на телефонах, планшетах и настольных компьютерах.

Отрисовка основана на Skia, 2D графическом движке, который используется в Chrome и Android. Valdi может сопоставлять высокоуровневые компоненты с нативными представлениями или рисовать напрямую на поверхностях Skia для создания пользовательских элементов управления, шейдеров и анимаций. Эта гибридная стратегия позволяет сочетать стандартные кнопки с высоко индивидуализированным интерфейсом AR-эры, не возвращаясь к веб-представлениям.

С точки зрения разработчика, всё начинается с классов TypeScript с JSX. Вы пишете что-то, что подозрительно похоже на компонент React — методы, такие как onCreate и onRender, возвращают теги JSX. Затем Bazel компилирует TypeScript в промежуточное представление, преобразует JSX в древо представлений и соединяет это древо с иерархиями представлений, специфичными для платформы.

Заранее Valdi генерирует нативные привязки для каждого свойства, события и стиля. Это означает отсутствие динамического отражения или передачи JSON во время выполнения. Информация о типах передается от TypeScript в заголовки Swift, Kotlin и C++, что позволяет компилятору инлайнить "горячие" пути и удалять мертвый код.

C++ находится в центре движка расположения и дифференциации. Критические пути — согласование дерева, вызовы Yoga, диспетчеризация рисования Skia — выполняются на C++ в основном потоке с минимальным управлением. Вместо сериализации свойств через мост, Valdi передает сырые указатели и компактно упакованные структуры, уменьшая накладные расходы на кадр до микросекунд.

Сравните это с основанными на JavaScript средами, такими как ранний React Native. Эти стеки отправляли макет и логику через JS-мост, платя за сериализацию каждый раз, когда кнопка перемещалась или список прокручивался. Модель Valdi, основывающаяся на предварительной компиляции, жертвует гибкостью времени выполнения ради детерминированной производительности и значительно меньшего давления на сборщик мусора.

Эта архитектура больше напоминает движок игр, чем оболочку для веб-представлений. Горячая перезагрузка по-прежнему работает — Bazel и среда выполнения заменяют обновленные модули TypeScript в родной оболочке, но окончательный артефакт не использует виртуальную машину JavaScript. Для тех, кто хочет изучить внутренности, Valdi - Официальный репозиторий на GitHub предоставляет полную графовую сборку, ядро на C++ и инструменты для TypeScript.

Реактивный Дуплет: Знакомое Лицо

Разработчики React могут открыть файл Valdi и почти забыть, что они переключились на другой фреймворк. Компоненты выглядят как старые классовые компоненты React, с методами в стиле жизненного цикла, такими как `onCreate` и `onRender`, вместо `componentDidMount` и `render`. Состояние живёт на `this`, методы расположены в классе, а пользовательский интерфейс возвращается из `onRender` в виде JSX.

JSX в Valdi не рендерит виртуальные узлы DOM. Он компилируется сразу в родные представления для iOS, Android и macOS с использованием Yoga для управления компоновкой. Разработчики используют свойства в стиле Flexbox, такие как `flexDirection`, `justifyContent` и `alignItems`, которые напоминают CSS, но процессинг преобразует их в низкоуровневые инструкции для компоновки.

Макет Valdi для элемента ленты может использовать JSX с такими свойствами, как `padding`, `margin` и `borderRadius` на компонентах, которые соответствуют нативным представлениям. Внутри Yoga рассчитывает позиции и размеры одинаково на всех платформах, в то время как Skia отображает 2D-графику, где требуется пользовательская отрисовка. В результате это ведет себя как дерево React, но работает как C++ движок пользовательского интерфейса.

Snapchat явно нацелился на веб-инженеров, которые уже знают TypeScript и JSX. Вместо того чтобы изучать UIKit, Jetpack Compose и AppKit, разработчики продолжают писать компоненты, пропсы и декораторы. Этот выбор дизайна снижает барьер для команд JavaScript и фронтенда, позволяя им выпускать нативные функции без необходимости переписывать свою ментальную модель.

Опыт разработчика находится в центре предложения Valdi. Мгновенная горячая перезагрузка отправляет изменения TypeScript в работающий симулятор или устройство за миллисекунды, избегая полной нативной сборки, которая может занимать от 30 до 90 секунд в Xcode или Android Studio. Состояние часто сохраняется после перезагрузки, поэтому изменение макета или поведения ощущается ближе к редактированию веб-приложения.

Полная поддержка отладки в VS Code завершает акт двойника React. Инженеры устанавливают точки останова в TypeScript, исследуют переменные и пошагово проходят логику компонентов Valdi, пока скомпилированное приложение работает на iOS, Android или macOS, размывая границу между веб-инструментами и нативным исполнением.

Нативная скорость без нативной боли

Иллюстрация: Нативная скорость без нативной боли
Иллюстрация: Нативная скорость без нативной боли

Нативные фреймворки уделяют большое внимание повторному использованию ячеек таблицы и компонуемым макетам; Valdi внедряет эту концепцию в каждый компонент. Вместо того чтобы оставлять повторное использование на усмотрение отдельных экранов, Valdi поддерживает глобальный пул нативных представлений, из которого может извлекать ресурсы любой список, сетка или карусель. Это означает меньшее количество аллокаций, меньшее количество изменений в аллокаторе и меньшее давление на сборщик мусора в Android.

Автоматическая переработка представлений происходит на уровне фреймворка, а не как шаблон, который нужно запомнить для внедрения. Когда компонент уходит с экрана, Valdi отсоединяет его, сбрасывает его свойства и возвращает обратно в пул. Новые элементы берутся из этого пула, поэтому даже лента из 10 000 элементов повторно использует небольшой фиксированный набор экземпляров нативных представлений.

Рендеринг с учетом видимой области экрана поднимает это на новый уровень. Valdi отслеживает, какие компоненты пересекают видимую область экрана, и только их монтирует, добавляя небольшую буферную область выше и ниже. Все, что находится за пределами этого окна, приостанавливает обновления и может даже перейти в легковесное представление.

Бесконечные ленты прокрутки становятся стандартом, а не проектом по оптимизации производительности. Лента «Discover» в стиле Snapchat или вертикальная лента в стиле Spotlight могут транслировать неограниченный контент, при этом касаясь всего лишь нескольких десятков активных просмотров в любое время. В сочетании с рендерингом Skia производительность прокрутки приближается к 60 кадров в секунду на среднеуровневом Android-оборудовании без специальной настройки.

Независимые циклы рендеринга компонентов предоставляют Valdi ещё одно преимущество. Каждый компонент имеет свой собственный цикл рендеринга, поэтому обновление дочернего компонента не вызывает автоматическое сравнение родительского, и наоборот. Это разрушает "водопад обновлений", который беспокоит плохо настроенные деревья React и React Native.

Диспетчер Valdi может приоритизировать обновления, основанные на вводе — такие как жест перетаскивания или ввод текста — над фоновой перерисовкой низкого приоритета. Анимация входящего сообщения в чате не требует переработки всего списка беседы. В результате: меньше проходов по макету, меньше вызовов измерений и более предсказуемый бюджет кадров.

В современном, оптимизированном нативном приложении, созданном на SwiftUI или Jetpack Compose, теоретические преимущества Valdi достигаются за счет трех уровней одновременно. Он сочетает в себе: - Глобальный пул представлений - Учет области видимости при монтировании - Разделенные циклы рендеринга компонентов

SwiftUI может лениво рендерить списки, а Compose может осуществлять переработку за кулисами, но команды разработчиков всё равно повторно реализуют такие паттерны, как повторное использование ячеек, окна постраничной разбивки и обновления с задержкой. Valdi централизует эти решения в рамках. На бумаге это позволяет небольшой команде выпустить кроссплатформенный фид, который ведет себя как тщательно настроенный нативный — без написания единого пользовательского рекурсора или алгоритма сравнения.

Мир двинулся вперед: Месть React Native

React Native в 2025 году едва ли напоминает тот фреймворк, который Snapchat оценивал восемь лет назад. Meta убрала infamous JavaScript bridge, заменив его унифицированным ядром на C++, которое напрямую взаимодействует с нативными представлениями. Задержка снизилась, использование памяти стабилизировалось, а «дребезжание» из закона возмездия превратилось в проблему производительности.

Fabric, современная архитектура рендеринга React Native, выполнила большую часть этой работы. Вместо группировки сообщений через мост, Fabric хранит одно дерево для React и нативных компонентов, что позволяет выполнять параллельный рендеринг и обеспечивать тонкую приоритезацию. Конкурентные функции React 18 теперь напрямую интегрируются в мобильные интерфейсы, благодаря чему фоновые обновления больше не замораживают прокрутку или ввод от касания.

В рамках Fabric верстка по-прежнему основывается на Yoga, но с более тесной интеграцией. Расчёты верстки выполняются на C++, что позволяет их использовать на iOS, Android и Windows, а React Native может предварительно вычислять или отбрасывать работу, когда компоненты выходят за пределы области видимости. Эта архитектура прямо отвечает на критику «отсутствия истинной параллельности», которая изначально подтолкнула Snapchat к Valdi.

Microsoft тихо закрыла одну из самых больших пропастей React Native: полноценная поддержка настольных ПК. React Native macOS и React Native Windows теперь поставляются как поддерживаемые продукты, а не побочные проекты. Приложения Office, Teams и Xbox Companion используют эти технологии, доказывая, что React Native может работать на настольных ПК без обращения к Electron или веб-просмотрам.

Паритет функций на разных платформах теперь выглядит удивительно полным. Один код может работать на iOS, Android, Windows и macOS, используя общие компоненты, родные меню и API доступности на уровне системы. Команды разработчиков, которые ранее поддерживали три или четыре стека пользовательского интерфейса, теперь обычно консолидируются в один, добавляя лишь тонкий слой платформенной связи.

Зрелость экосистемы может быть сильнейшим оружием React Native против Valdi. Expo превратился в платформу с полным набором возможностей, включающую: - Быстрое обновление для почти мгновенных изменений кода - Обновления по воздуху через EAS Update - Предварительно собранные SDK для работы с камерой, уведомлениями и сенсорами

Вокруг этого ядра разрастается обширный рынок библиотек — React Navigation, Reanimated, React Query, Lottie и многих других — которые покрывают большинство потребностей приложений. Документация улучшилась, поддержка TypeScript укрепилась, а компании, такие как Shopify, Coinbase и Walmart, теперь разрабатывают производственные приложения на React Native. Для всех, кто сравнивает варианты, Официальная документация Valdi теперь конкурирует с настоящим гигантом, а не с экспериментальным набором инструментов.

Непростое начало: Парадокс опыта разработчиков

Установка Valdi сегодня больше похожа на участие в пилотном проекте внутренних инструментов, чем на получение отполированного SDK. Официально находясь в статусе «бета», фреймворк поставляется с недостатками, которые проявляются сразу после запуска первой команды `valdi init`. На macOS вам предстоит управлять Bazel, Android SDK, инструментами Xcode и версиями Node, прежде чем вы увидите экран «Привет, мир».

Разработчики сообщают, что установщик Valdi с радостью неверно определяет или автоматически устанавливает неправильные версии зависимостей. Инструкция от Better Stack столкнулась с несовпадающими инструментами сборки Android и конфигурациями TypeScript еще до рендеринга первого представления. Для фреймворка, заявляющего о "родной скорости и веб-скорости", такая хрупкая настройка подрывает основное обещание.

Ранние последователи также сталкиваются с необычно специфическими подводными камнями. Названия проектов не могут содержать дефисы; `my-app` тихо ломается, тогда как `my_app` работает без проблем, что кажется скорее внутренней конвенцией, чем решением для публичного продукта. Предположения о путях и жестко зашитые значения по умолчанию просачиваются из монорепозитория Snapchat на ноутбуки остальных.

На бумаге Valdi предлагает премиум опыт разработчика: мгновенная горячая перезагрузка, полная отладка VS Code и кроссплатформенные сборки, которые «просто работают». На практике бета-версия больше напоминает процесс настройки собственного инструментального комплекта вокруг мощного, но капризного движка. Вы проводите столько же времени, угождая Bazel и Gradle, сколько и пишете JSX.

Документация выявляет ту же парадоксальную ситуацию. Официальные руководства охватывают счастливый путь — базовая настройка, простые представления, несколько хуков жизненного цикла — но быстро иссякают, как только вы отклоняетесь к пользовательским нативным модулям, продвинутому использованию Skia или интеграции CI. Многие крайние случаи существуют только в внутренней мифологии Snapchat или разбросаны по сообществу.

Валди явно нуждается в большем «полевом тестировании» за пределами стен Snap. Десятилетний опыт проблем GitHub, ответов Stack Overflow и рецептов Expo для React Native здесь пока отсутствует, и вы чувствуете это отсутствие каждый раз, когда непонятная ошибка Bazel блокирует вашу сборку.

Гигант без армии

Иллюстрация: Гигант без армии
Иллюстрация: Гигант без армии

Единой платформе, какой бы она ни была продвинутой, не удастся конкурировать с млн-разработчиков, которые уже опередили её. Valdi поставляется с впечатляющей внутренней архитектурой, но почти лишён экосистемы. Никакого разума стаи на Reddit, никаких проверенных образцов кода, никаких десятилетий странных крайних случаев, на которые кто-то в Бангалоре ответил в 3 часа ночи.

Самое мощное оружие React Native сейчас — это не Fabric, не Yoga и не Expo; это сила сообщества. Огромная глобальная сообщество создает бесконечные учебные видео на YouTube, курсы на Udemy и статьи на Medium, а также тысячи пакетов с открытым исходным кодом. Корпоративная поддержка от Meta, Microsoft, Shopify и других усиливает этот импульс с долгосрочными планами и оплачиваемыми командами, исправляющими ошибки, которые большинство людей никогда не увидит.

Поиск "React Native push notifications" затопит вас в море вариантов. Поиск "Valdi push notifications" сегодня в основном приводит к документации Snapchat и нескольким экспериментальным репозиториям. Для реальных команд эта разница определяет, будет ли спринт завершен вовремя или задержится, пока кто-то не начнет обратную разработку нативного моста.

Разработчики так же полагаются на Stack Overflow, как и на официальную документацию. С Valdi практически нет принятых ответов, никаких канонических фрагментов кода и никаких многолетних тем, объясняющих, почему интерфейс ломается на конкретном OEM-оболочке Android. Каждая проблема рискует превратиться в исследовательский проект с нуля, а не в быстрое копирование- вставку из зеленой галочки.

Библиотеки сторонних разработчиков формируют основу современного разработки приложений. Разработчики React Native ожидают: - Навигационные стеки с встроенной поддержкой глубоких ссылок - Обертки SDK аналитики для Amplitude, Segment, Mixpanel - Компоненты для платежей, аутентификации и карт от Stripe, Auth0, Google и других разработчиков

Valdi почти не предлагает этого сегодня, заставляя команды снова использовать кастомные нативные интеграции и привязки TypeScript для каждого сервиса, с которым они работают.

Однопользовательские фреймворки всегда связаны с экзистенциальным риском. Если приоритеты Snapchat изменятся — другой редизайн, другая ставка на платформу — Valdi может тихо остановиться, пока его проблемы на GitHub будут накапливаться. Для стартапа, выбирающего стек в 2025 году, ставка на фреймворк, у которого фактически есть лишь один основной пользователь в производственной среде, ощущается не как принятие инструмента, а скорее как привязка своей дорожной карты к стратегии продукта кого-то другого.

Почему сейчас? Разбираемся с риском Snapchat

Восемь лет внутреннего использования дарят Snapchat редкий люкс: инфраструктура, проверенная в боях, перед общественным вниманием. Valdi тихо обеспечивает основные функции Snapchat на iOS, Android и macOS, что предполагает, что одной из мотиваций является простота: структура наконец-то преодолела порог зрелости, при котором открытие исходного кода приносит больше преимуществ, чем рисков.

Выпуск сейчас также соответствует более широкому изменению в отрасли к инструментам, ориентированным на TypeScript. Valdi активно использует TypeScript, JSX, декораторы, Bazel, Yoga и Skia, стек, который теперь выглядит мейнстримным, а не экспериментальным, что облегчает понимание и расширение для внешних разработчиков без необходимости постоянной поддержки со стороны Snapchat.

Теория первая: Snapchat дождался момента, когда Valdi выглядел как готовый продукт, а не как исследовательский проект. Восемь лет оптимизаций — глобальное объединение представлений, автоматическая переработка представлений, горячая перезагрузка, измеряемая в миллисекундах — позволили компании представить Valdi как надежную альтернативу в мире, где официальный сайт React Native уже рекламирует Fabric, параллельный рендеринг и макеты на основе Yoga.

Теория вторая: Snapchat хочет получить бесплатную помощь в создании современного экосистемы компонентов. На данный момент Valdi поставляется с относительно скромным набором готовых к производству пользовательских интерфейсов по сравнению с океаном пакетами сообщества React Native, Expo SDK и комплектами дизайнерских систем от таких компаний, как Microsoft и Shopify.

Краудсорсинг этого пробела имеет стратегический смысл. Открывая исходный код, Snapchat может подтолкнуть агентства, стартапы и внутренние команды других компаний внести свой вклад в разработку всего, от базовых элементов управления формами до сложных виджетов доступности, в то время как Snapchat продолжает управлять основным движком выполнения и макетом.

Компонентные библиотеки также быстро устаревают. Новые версии операционных систем, тренды дизайна и правила доступности требуют постоянных обновлений на трех платформах. Перемещение этой нагрузки на участников открытого исходного кода позволяет Snapchat сосредоточиться на производительности и интеграции платформ, а не на бесконечном изменении внешнего вида кнопок и каруселей.

Теория третья: это игровой прием по набору кадров, замаскированный под альтруизм. Компании, занимающиеся высокооплачиваемыми потребительскими приложениями, борются за старших мобильных инженеров, и блестящая, технически амбициозная структура, которая компилирует TypeScript непосредственно в нативные виды, четко сигнализирует о культуре инженерии Snapchat.

Публикация внутренних данных Valdi — Bazel-пайплайны, использование Yoga, пути рендеринга Skia — функционирует как живой портфельный проект. Инженеры, заинтересованные в низкоуровневом рендеринге, параллелизме и цепочках инструментов, теперь имеют возможность ознакомиться с кодом Snapchat, сообщать о проблемах и, в конечном счете, отвечать на письма рекрутеров.

Вердикт: Является ли Valdi вашим следующим фреймворком?

Сырая скорость по-прежнему на стороне Valdi. Компиляция TypeScript прямо в нативные представления, полностью исключая мосты JavaScript, обеспечивает ленты и карусели историй уровня Snapchat, которые остаются плавными даже при интенсивной прокрутке, благодаря автоматической переработке представлений и глобальному пулу представлений. Рендерер Fabric и TurboModules в React Native закрыли большую часть этого разрыва, но всё же обрабатывают больше логики через управляемое время выполнения и обширный уровень абстракции.

React Native предлагает экосистему, которой просто нет у Valdi. Expo, React Navigation, React Query, Reanimated и тысячи пакетов охватывают все, от аутентификации до видеомонтажа, поддерживаемые миллионами разработчиков и продакшн-приложениями в Meta, Microsoft, Shopify и Coinbase. Valdi поставляется с минимальным набором компонентов, скудной документацией и бета-установщиком, который может неправильно определить зависимости или зависнуть на чем-то таком тривиальном, как дефис в имени проекта.

Команды, которые должны всерьез рассмотреть Valdi, находятся на крайнем уровне производительности и контроля. Если вы разрабатываете социальное приложение с высокой нагрузкой на ленты, клиент для высокочастотной торговли или графически насыщенный редактор, где каждая потерянная кадровая единица ощутима, рендеринг на основе Skia и нативные компоновки Valdi могут оправдать ту боль, которую это вызывает. Вам также потребуется команда, которая уже знакома с Bazel, знает внутренние структуры iOS/Android/macOS и может позволить себе модифицировать молодую инструментальную цепочку, а не просто подать вопрос на GitHub и ждать.

Большинство других команд следует оставаться на React Native. Стартапы, независимые разработчики и продуктовые команды, стремящиеся к MVP, больше заботятся о выпуске функций, чем о сокращении времени рендеринга на 5–10 мс. Инструменты Expo для React Native, Fast Refresh, зрелые CI-шаблоны и проверенные библиотеки снижают риски и сложности найма таким образом, с которым не может соперничать ни один фреймворк эры 1.0.

Valdi появляется в 2025 году как захватывающий артефакт из другой эпохи кроссплатформенных переживаний. Его изначальная миссия — создание высокопроизводительного пользовательского интерфейса на TypeScript без использования мостов для iOS, Android и macOS — больше не является уникальной, поскольку React Native, Flutter и даже SwiftUI с Kotlin Multiplatform заполнили эту нишу. С технической точки зрения, Valdi демонстрирует, что небольшая специализированная команда может превзойти статус-кво; стратегически он может стать нишевым оружием для компаний, чьи бюджеты на производительность столь же агрессивны, как у Snapchat.

Часто задаваемые вопросы

Какова структура Valdi в Snapchat?

Valdi — это кроссплатформенный пользовательский интерфейс, разработанный Snapchat, который компилирует TypeScript и JSX напрямую в нативный код для iOS, Android и macOS, устраняя необходимость в JavaScript-мосте.

Почему Snapchat создал Valdi вместо использования React Native?

Snapchat создал Valdi 8 лет назад, потому что React Native в то время имел проблемы с производительностью из-за своего JavaScript моста, не обеспечивал настоящую конкуренцию и не имел полноценной поддержки для настольных платформ.

Какое основное техническое преимущество Valdi?

Основное преимущество Valdi — его производительность. Он компилируется напрямую в нативный код и использует передовые технологии, такие как автоматическая переработка представлений и рендеринг с учетом области просмотра, что может привести к более быстрому и эффективному приложению.

Каковы самые большие риски использования Valdi для нового проекта?

Главные риски заключаются в отсутствии большой сообщества, незрелой документации и неопределенности долгосрочной поддержки со стороны Snapchat. В отличие от этого, React Native представляет собой зрелую экосистему с обширной поддержкой сообщества.

Frequently Asked Questions

Вердикт: Является ли Valdi вашим следующим фреймворком?
Сырая скорость по-прежнему на стороне Valdi. Компиляция TypeScript прямо в нативные представления, полностью исключая мосты JavaScript, обеспечивает ленты и карусели историй уровня Snapchat, которые остаются плавными даже при интенсивной прокрутке, благодаря автоматической переработке представлений и глобальному пулу представлений. Рендерер Fabric и TurboModules в React Native закрыли большую часть этого разрыва, но всё же обрабатывают больше логики через управляемое время выполнения и обширный уровень абстракции.
Какова структура Valdi в Snapchat?
Valdi — это кроссплатформенный пользовательский интерфейс, разработанный Snapchat, который компилирует TypeScript и JSX напрямую в нативный код для iOS, Android и macOS, устраняя необходимость в JavaScript-мосте.
Почему Snapchat создал Valdi вместо использования React Native?
Snapchat создал Valdi 8 лет назад, потому что React Native в то время имел проблемы с производительностью из-за своего JavaScript моста, не обеспечивал настоящую конкуренцию и не имел полноценной поддержки для настольных платформ.
Какое основное техническое преимущество Valdi?
Основное преимущество Valdi — его производительность. Он компилируется напрямую в нативный код и использует передовые технологии, такие как автоматическая переработка представлений и рендеринг с учетом области просмотра, что может привести к более быстрому и эффективному приложению.
Каковы самые большие риски использования Valdi для нового проекта?
Главные риски заключаются в отсутствии большой сообщества, незрелой документации и неопределенности долгосрочной поддержки со стороны Snapchat. В отличие от этого, React Native представляет собой зрелую экосистему с обширной поддержкой сообщества.
🚀Discover More

Stay Ahead of the AI Curve

Discover the best AI tools, agents, and MCP servers curated by Stork.AI. Find the right solutions to supercharge your workflow.

Back to all posts