Реализация Shorebird для обновлений Flutter-приложения

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1735 услуг
Реализация Shorebird для обновлений Flutter-приложения
Средний
~2-3 дня
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    495

Реализация Shorebird для обновлений Flutter-приложения

Flutter не имеет аналога React Native CodePush — до появления Shorebird. Dart-код компилируется в нативные инструкции, которые нельзя просто заменить JS-бандлом. Shorebird решил это через собственный Dart runtime с поддержкой патчей: изменения в Dart-коде упаковываются в компактный diff и загружаются на устройство без прохождения Store Review.

Принцип работы

Shorebird встраивает модифицированный Dart VM в приложение. При запуске VM проверяет наличие патча на серверах Shorebird. Если есть — загружает и применяет. Патч содержит только изменённые Dart-объекты, не весь бандл. Это принципиально отличается от CodePush: здесь меняется скомпилированный Dart-код, а не интерпретируемый JS.

Что можно обновить через Shorebird:

  • Весь Dart/Flutter код
  • Dart-зависимости (pub packages), если они pure Dart

Что нельзя:

  • Нативные плагины (platform channels с Kotlin/Swift кодом)
  • Assets (изображения, шрифты) — пока не поддерживается
  • Изменения в AndroidManifest.xml / Info.plist

Установка и первый релиз

# Установка CLI
curl --proto '=https' --tlsv1.2 https://raw.githubusercontent.com/shorebirdtech/shorebird/main/install.sh -sSf | bash

# Инициализация в проекте
shorebird init

# Первый релиз (полная сборка + загрузка в Shorebird)
shorebird release android
shorebird release ios

После shorebird init в проекте появляется shorebird.yaml с app_id. Этот файл коммитится в репозиторий.

Релиз через Shorebird — это полноценная сборка приложения. Загружать в Play Store / App Store нужно именно этот артефакт — он содержит Shorebird runtime.

Создание патча

# Патч для Android
shorebird patch android --release-version 1.2.3+42

# Патч для iOS
shorebird patch ios --release-version 1.2.3+42

--release-version — версия, к которой применяется патч. Пользователи с версией 1.2.3+42 получат патч автоматически при следующем запуске.

CI/CD интеграция

# .github/workflows/shorebird-patch.yml
name: Shorebird Patch

on:
  push:
    branches: [hotfix/*]

jobs:
  patch:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: subosito/flutter-action@v2
        with:
          flutter-version: '3.x'
      - uses: shorebirdtech/setup-shorebird@v1
        with:
          cache: true
      - name: Create patch
        run: |
          shorebird patch android \
            --release-version ${{ inputs.release_version }}
        env:
          SHOREBIRD_TOKEN: ${{ secrets.SHOREBIRD_TOKEN }}

SHOREBIRD_TOKEN создаётся через shorebird login:ci аналогично Fastlane firebase login:ci.

Мониторинг и rollback

Shorebird Console показывает статистику патчей: процент устройств, получивших патч, crash rate после применения. Откат: shorebird patch rollback android --patch-number 5 — Shorebird перестаёт отдавать патч новым устройствам, уже обновлённые устройства получат предыдущую версию при следующем запуске.

Ценовая модель и ограничения

Shorebird — платный сервис (free tier: 5000 MAU). Это нужно учитывать в архитектуре: зависимость от стороннего сервиса критична для production-приложения. Self-hosted вариант недоступен — код runtime закрытый.

Для приложений с очень строгими требованиями к безопасности (финансовые, медицинские) нужно проверить политику платформы: App Store Review Guidelines 3.3.2 запрещает загрузку исполняемого кода через интерпретатор, но Shorebird апеллирует к тому, что патчи — это не новый код, а изменение существующего.

Процесс

Аудит Flutter-зависимостей на нативные компоненты → интеграция Shorebird SDK → первый релиз через Shorebird (взамен стандартного flutter build) → настройка CI для патчей → тест patch delivery → настройка мониторинга → документация.

Срок: 2–3 дня. Стоимость рассчитывается индивидуально.