Графический движок на Rust из 30 000 строк кода на Expo и 120 000 установок без рекламы

Источник: Expo Blog•

Графический движок на Rust из 30 000 строк кода на Expo и 120 000 установок без рекламы

Doodraw объединяет движок на Rust из 30 000 строк кода в едином приложении Expo для iPhone, iPad, Android и Windows, преодолев отметку в 120 000 установок в более чем 180 странах без затрат на рекламу.

Это гостевая статья от Алексиса Шана Гриделя (Alexis Chân Gridel) — сооснователя и генерального директора w, проекта, поданного на конкурс Expo App Award. Он также руководит дизайн- и инжиниринговой студией Écrin Digital, создающей премиальные веб-сайты и мобильные приложения.

Анимация рисунка обычно ассоциируется с таймлайнами, ключевыми кадрами и многократным перерисовыванием одного и того же кадра. Мы хотели добиться противоположного. В Doodraw вы проводите линию, и она сразу оживает. Эффект «кипящей линии» (boiling line), создаваемый аниматорами вручную кадр за кадром, возникает прямо в процессе рисования внутри кисти, поэтому 10-секундный скетч превращается в нечто, чем сразу хочется поделиться.

Мы начали разработку Doodraw в мае 2026 года, выпустили первую версию для iOS в августе и официально запустились в сентябре 2026 года. К 19 октября количество установок (по первому открытию приложения) превысило 120 000 при нулевых затратах на платную рекламу.

Кто мы

Я Алексис, сооснователь и генеральный директор. Я создаю Doodraw: движок на Rust, само приложение и каждый релиз. Мой сооснователь и директор по маркетингу Элоди Маяд (Elodie Mayade) — иллюстратор и контент-креатор. Она определяет визуальный стиль и ощущение от кистей, а также ведет весь наш контент в Shorts, Reels и TikTok, откуда приходит практически весь поток наших установок. Я также управляю Écrin Digital, дизайн- и инжиниринговой студией, создающей премиальные веб-сайты и мобильные приложения, поэтому кроссплатформенная разработка для меня не в новинку. А вот написание графического движка было новым опытом.

Отказ от генеративного ИИ был осознанным выбором. Наши пользователи — художники, и они хотят видеть свои собственные руки и свои собственные линии. Doodraw создан для иллюстраторов, художников-любителей, студентов и авторов контента, публикующих работы в Instagram и TikTok — людей, которые раньше пользовались инструментами анимации в Procreate, FlipaClip, After Effects или браузерными игрушками вроде WigglyPaint.

Почему выбор пал на Expo вокруг движка на Rust

Переписывание всего нативного кода дважды с нуля не было вариантом для команды из двух человек, к тому же движок в любом случае должен был быть общим, поэтому Rust стал основой с первого дня. Настоящим вопросом была оболочка вокруг него. Expo позволил нам использовать единую кодовую базу для iPhone, iPad и Android, в то время как всю тяжелую работу выполняет нативная часть.

Движок состоит примерно из 30 000 строк кода на Rust с использованием wgpu. Он компилируется в XCFramework для iOS и нативные библиотеки для Android. Холст представляет собой нативное представление, а Expo управляет инструментами, слоями и пользовательским интерфейсом, взаимодействуя с движком через нативные модули на Swift и Kotlin, включая нативный экспорт в MP4. Приложение работает на Expo SDK 57 и React Native 0.86 с Expo Router, Reanimated 4, Gesture Handler и React Native Skia.

Исключение нативных папок из git

Непрерывная генерация нативного кода (Continuous Native Generation) стала ключевым решением. Наши папки ios/ и android/ не хранятся в git. Плагин конфигурации с именем withRustEngine копирует скомпилированный движок и файлы наших связок Swift и Kotlin на этапе предварительной сборки (prebuild) и интегрирует их в нативные проекты. Если какой-то бинарный файл отсутствует, плагин немедленно прекращает сборку, вместо того чтобы позволить Xcode выдать ошибку полчаса спустя.

Обновление Expo сводится к изменению версий и повторному запуску prebuild. Мы не объединяем нативные проекты вручную.

Одна пайплайн-система, затем Android и Windows

EAS Build и EAS Submit собирают версии для обоих магазинов из одной пайплайн-системы. Скомпилированный движок включается в загрузку EAS. Версия для Android вышла в конце августа, спустя несколько недель после iOS, практически без дополнительных затрат времени на сборку.

Поскольку пользовательский интерфейс написан на обычном Expo, те же экраны работают и на Windows. Мы экспортируем приложение для веб и запускаем его в оболочке Tauri 2, используя то же ядро на Rust, скомпилированное в WebAssembly и выполняющее отрисовку через WebGPU. Приложение для Windows было запущено в конце сентября, и ни одна строка пользовательского интерфейса не переписывалась под десктоп.

OTA-обновления с политикой fingerprint

Мы используем EAS Update с политикой среды выполнения по отпечатку пальца (fingerprint). Обновление доставляет только изменения JavaScript, а отпечаток сообщает нам, когда изменение затрагивает нативный код и требует сборки для магазина приложений. Мы даже держим нашу конфигурацию, предназначенную исключительно для десктопа, вне app.json, чтобы отпечатки для iOS и Android оставались идентичными.

Наше первое продакшн-обновление доставило исправления и небольшие улучшения UX на 1 389 устройств под управлением iOS без единого сбоя при запуске. Теперь мы выпускаем сборку для магазинов каждые 2–4 недели (iOS 1.0, 1.1, 1.1.2) и OTA-обновления несколько раз в неделю для изменений, затрагивающих только JS, таких как новые параметры экспорта и карточка «продолжить последний рисунок» в октябре.

Цифры

  • Более 120 000 установок (первых открытий приложения) по состоянию на 19 октября 2026 года, примерно через два с половиной месяца после первого релиза на iOS, при нулевых затратах на платную рекламу
  • Пользователи более чем в 180 странах
  • Около двух третей наших загрузок на iOS приходятся на iPad
  • Наш самый успешный Short набрал более 4,6 млн просмотров, а общее количество просмотров наших видео превысило 14 млн на YouTube Shorts, Instagram Reels и TikTok за последние 90 дней

Вы можете посмотреть, что создают пользователи, на нашем канале YouTube и в Instagram по адресу @doodraw.app, включая Short с более чем 4,6 млн просмотров.

Что дальше

Улучшение производительности на большем числе устройств Android, обновление до Expo SDK 58, более быстрый первый запуск (начало рисования в одно касание и экспорт первой анимации), новые языки и новые кисти каждый сезон.

Мой список пожеланий к Expo: более простой способ доставки предварительно скомпилированных нативных бинарных файлов в EAS Builds без необходимости повторной загрузки каждый раз, а также более официальный путь для разработки под десктоп. Сегодня мы экспортируем проект для веб и самостоятельно оборачиваем его в Tauri.

Если у вас есть нативное ядро или ядро на Rust, и вы до сих пор считаете, что Expo его не потянет, прочитайте руководство по плагинам конфигурации и попробуйте перенести свой нативный клей в плагин, выполняемый на этапе prebuild. Скачайте Doodraw в App Store, Google Play или Windows.

О чём эта статья

Ещё в разделе «Разработка ПО»

Все →

Ещё от Expo