Реалізація Shorebird для оновлень Flutter-застосунку
Уявіть: ви випустили критичний баг у Flutter-застосунку. App Store review триває 48 годин. Користувачі падають із крашами, а ви не можете швидко випустити фікс. Shorebird вирішує цю проблему за хвилини — без повторного рев'ю. Ми впровадили Shorebird у 15+ проєктах, деякі з яких обробляють понад 50 000 MAU, і гарантуємо стабільність.
Flutter не має аналога React Native CodePush — до появи Shorebird. Dart-код компілюється в нативні інструкції, які не можна просто замінити JS-бандлом. Shorebird вирішив це через власний Dart runtime з підтримкою патчів: зміни в Dart-коді упаковуються в компактний diff (10–100 КБ) і завантажуються на пристрій без проходження Store Review.
Як Shorebird оновлює Dart-код без re-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
Чому Shorebird кращий за CodePush?
Shorebird перевершує CodePush за розміром патча в 10 разів — замість цілого JS-бандла (1–5 MB) ви відправляєте diff (10–100 KB). Крім того, Shorebird працює на рівні Dart VM, що дає більш глибоку інтеграцію з Flutter-екосистемою. На відміну від CodePush, Shorebird не потребує підтримки інтерпретатора — патчі накладаються на скомпільований код.
| Критерій | Shorebird | CodePush | Стандартне оновлення через Store |
|---|---|---|---|
| Розмір патча | 10–100 KB | 1–5 MB | Весь бандл (30–100 MB) |
| Час доставки | Секунди | Хвилини | Години (review) |
| Підтримка Flutter | Так | Ні | Так |
| Необхідність рев'ю | Ні | Ні | Так |
Додаткова таблиця часу та витрат:
| Метод | Час до користувачів | Вартість підтримки |
|---|---|---|
| Shorebird | 1–2 секунди | Мінімальна (патчі) |
| CodePush | 1–5 хвилин | Середня (бандли) |
| Store update | 24–72 години | Висока (повний реліз) |
Встановлення та перший реліз
# Встановлення 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:
- Аудит Flutter-залежностей на сумісність (нативні компоненти, assets)
- Інтеграція Shorebird SDK та налаштування
shorebird.yaml - Перший реліз через Shorebird (замість стандартного
flutter build) - Налаштування CI/CD для автоматичних патчів
- Тестування доставки патча на пристроях
- Моніторинг та rollback-процедури
- Документація та навчання команди
Наш досвід: 5 років на ринку Flutter-розробки, 50+ реалізованих проєктів, сертифіковані Flutter-розробники. Гарантуємо стабільну роботу Shorebird у production.
Терміни та вартість
Термін впровадження — від 2 до 3 днів залежно від складності проєкту. Вартість розраховується індивідуально після аудиту — зв'яжіться з нами для оцінки. Ми також пропонуємо пост-релізну підтримку та консультації з оптимізації патчів.
Для застосунків із дуже суворими вимогами до безпеки (фінансові, медичні) потрібно перевірити політику платформи: згідно з App Store Review Guidelines Section 3.3.2, завантаження виконуваного коду через інтерпретатор заборонено, але Shorebird апелює до того, що патчі — це не новий код, а зміна існуючого. Ми допомагаємо узгодити це питання з рев'юерами.
Отримайте консультацію щодо Shorebird — пишіть, ми оцінимо ваш проєкт і запропонуємо оптимальне рішення.







