PWA, нативний застосунок, React Native чи Flutter: що обрати у 2026 році?
Ви вже вирішили, що бізнесу потрібна присутність у телефоні клієнта. Тепер розходяться пропозиції підрядників: один запевняє, що вистачить PWA, інший наполягає на нативній розробці, третій пропонує одну кодову базу на обидва магазини. Розповідаємо, що вміє і чого не вміє кожен варіант станом на листопад 2026 року, як магазини змінюють розрахунок, у що обходиться друга кодова база і як ухвалити рішення за тією єдиною функцією, без якої продукт не працює.
КОРОТКО
Що обрати
Обирайте за найскладнішим, що продукт має робити в телефоні. PWA підходить для контенту, каталогів і нечастих замовлень, якщо ви готові просити власників iPhone встановити її, перш ніж запрацюють сповіщення. React Native або Flutter підходять, коли потрібні обидва магазини, а більшість екранів на двох платформах збігається. Нативна розробка на Swift і Kotlin потрібна, коли основний сценарій залежить від геолокації у фоні, Bluetooth чи іншої глибокої роботи з пристроєм. А бюджет рахуйте на роки після запуску: саме там варіанти розходяться найбільше.
У статті Коли бізнесу реально потрібен мобільний застосунок? ми розбирали раніше питання: чи потрібен він узагалі, зважаючи на те, хто ним користується і як часто. Тут ми починаємо з того місця, де та стаття закінчується. Причина бути в телефоні у вас є, і залишилося зрозуміти, на якій технології це робити.
Ми розробляємо застосунки на Swift, Kotlin і React Native, а PWA працює на нашому власному сайті. Flutter-розробники теж є в нашому пулі, і на ньому ми робимо MVP, коли цього потребує продукт, але опублікованого кейсу на Flutter у нас немає, тому все сказане про нього взято з його документації.
Обирайте за найскладнішим, що має робити телефон.
ЧОТИРИ ВАРІАНТИ
Що є що насправді
PWA (прогресивний вебзастосунок) це ваш сайт із двома доповненнями: файл-маніфест, завдяки якому телефон встановлює його зі своєю іконкою та у своєму вікні, і зазвичай service worker, невеликий скрипт між сторінкою та мережею, який працює без зв'язку й отримує пуш-повідомлення. Магазину й перевірки немає, тому все, що ви виклали, доступне під час наступного візиту.
Нативний застосунок пишуть двічі: на Swift для iOS і на Kotlin для Android. Кожна версія першою отримує нові можливості системи, а вам доводиться узгоджувати дві кодові бази й два цикли релізів.
React Native це одна кодова база на JavaScript або TypeScript. Під час роботи він створює справжні подання Android та iOS для ваших компонентів, тож список чи поле введення належать самій платформі (документація React Native).
Flutter це одна кодова база на Dart, і шлях у нього зворотний. Він оминає системні бібліотеки інтерфейсу й малює екран власними віджетами через Impeller, рушій відмальовування, що постачається всередині застосунку (документація Flutter).
Ще в деяких пропозиціях «застосунком» називають ваш сайт у тонкій нативній оболонці. До цього ми повернемося в розділі про магазини.
PWA У 2026
Що PWA вміє зараз
Пуш на iPhone працює, але з умовами. Починаючи з iOS та iPadOS 16.4 вебзастосунок, доданий на початковий екран, може запитати дозвіл на сповіщення. Запит має йти за прямою дією, наприклад натисканням кнопки підписки, а сайт у звичайній вкладці Safari запитати не може взагалі. У тому самому релізі з'явилися цифри на іконці. Членство в Apple Developer Program для цього не потрібне, а доставка йде через той самий Apple Push Notification service, що й у нативних застосунків (WebKit, лютий 2023). На Android Chrome підтримує Push API просто в браузері, без встановлення (Can I use, листопад 2026).
Справжня перешкода в самому встановленні. iOS не підтримує beforeinstallprompt, подію, через яку сайт показує власну кнопку встановлення, тому людина сама шукає пункт «На початковий екран» у меню «Поділитися» (MDN). З iOS 26 кожен доданий так сайт за замовчуванням відкривається як вебзастосунок, навіть без маніфесту (WebKit, вересень 2025). Скільки ваших клієнтів пройде ці кроки, можна лише виміряти.
Тому важливо, яка частка iPhone на вашому ринку. В Україні в жовтні 2026 року на iOS припадало 39,36% мобільних операційних систем, на Android 60,62% (StatCounter). Отже, приблизно на двох телефонах із п'яти стратегія пушів через PWA починається з ручного встановлення. Ваша власна аналітика може показати іншу картину, тож перевірте і її.
На iPhone вебпуш починається лише після встановлення.
Сховище більше не слабке місце. Із Safari 17 сайт може займати в браузері до 60% диска, і вебзастосунки на початковому екрані мають таку саму квоту (WebKit, серпень 2023). Chrome теж дозволяє одному джерелу до 60%, Firefox до 2 ГБ на групу сайтів (web.dev). Ризик у видаленні даних. Safari стирає сховище, доступне скриптам, зокрема дані service worker, після семи днів використання Safari без взаємодії із сайтом, а вебзастосунки на початковому екрані мають власний лічильник днів використання (WebKit, березень 2020).
На практиці читання без зв'язку й збережений кошик у встановленій PWA працюють надійно. Але несинхронізовані складські замовлення ми б у ній не тримали: Background Sync, API, яке завершує надсилання після закриття сторінки, не підтримується в Safari на iOS і у Firefox (Can I use, листопад 2026).
Жорсткі обмеження станом на листопад 2026 року:
- Геолокація у фоні. У чернетці W3C Geolocation від 30 жовтня 2026 року сказано, що оновлення позиції призначені виключно для повністю активних видимих документів, тому відстеження зупиняється, коли сторінку приховано.
- Bluetooth і NFC. Web Bluetooth працює в Chrome на Android і на комп'ютері, Web NFC позначено як підтримуваний у Chrome для Android, і жоден із них не працює в Safari на iOS (Can I use).
- Камера. Зйомка фото й відео через getUserMedia широко доступна з 2017 року, а вбудований Barcode Detection API досі експериментальний (MDN), тому сканер зазвичай означає бібліотеку на JavaScript.
Для тих, хто продає в Європу, становище те саме. На початку 2024 року Apple збиралася прибрати вебзастосунки з початкового екрана в ЄС, а в березні заявила, що збереже цю можливість на рушії WebKit (TechCrunch із посиланням на Apple). Новішого рішення, яке б це змінювало, ми не знайшли.
НАША PWA
Чого нас навчила власна
Наш сайт встановлюється як PWA, тож механіку ми описуємо зсередини. Сторінки завжди надходять із мережі, тому текст свіжий; останні 30 відкритих сторінок зберігаються, і без зв'язку читач отримує збережену копію або невелику офлайн-сторінку.
Нові статті йдуть щотижневим пушем: одне сповіщення на пристрій, тією мовою, якою людина підписалася, про все, що вийшло після минулої розсилки. Якщо якоюсь мовою нових статей немає, цього тижня нею нічого не надсилається. На іконці встановленого застосунку видно, скільки статей вийшло, лічильник веде service worker, а будь-яка відкрита сторінка його скидає.
Блок підписки стоїть наприкінці статей і в блозі, ніколи не спливає вікном і показується лише там, де браузер підтримує сповіщення й не заблокував їх. На iPhone запит дозволу має пролунати всередині самого натискання, тому наша кнопка спершу запитує, а все інше робить потім.
Одну помилку варто переказати. Ми реєстрували service worker під час завантаження сторінки, як це зазвичай роблять. Потім PageSpeed почав падати на всіх сторінках із повідомленням «Browser tab has unexpectedly crashed». Ми перевіряли в PageSpeed статичні копії статті й прибирали з них частини, поки падіння не зникло. Наш хостинг відповідає 403 на user agent HeadlessChrome, а скрипт воркера запитується з власним user agent браузера, і тестовий браузер не міг його отримати. Тепер воркер реєструється під час першого дотику, кліку чи натискання клавіші відвідувача, а під час завантаження лише якщо воркер уже керує сторінкою. Відвідувачі різниці не помічають. Що ще показали нам перевірки швидкості на важкій сторінці, розказано в статті 3D на живому сайті: наш експеримент із three.js і що побачив Google.
У нас контентний сайт, замовлень у цій PWA немає. Він показує, що встановлення, читання без зв'язку й пуш можна додати до наявного сайту без магазину та другої кодової бази, але нічого не каже про те, чи замовлятимуть клієнти через таку PWA вечерю знову і знову.
МАГАЗИНИ
Що додають магазини
Магазин дає присутність і звичне встановлення, а разом із ними правила двох компаній. Цифри ми перевірили в листопаді 2026 року; вони часто змінюються, тож перечитайте їх перед розрахунком бюджету.
| Правило | Apple App Store | Google Play |
|---|---|---|
| Акаунт | $99 на рік | $25 один раз |
| Цифрові товари й підписки | Обов'язкова покупка всередині застосунку; комісія 15% у Small Business Program для нових розробників або з виторгом до $1 млн на рік | Для покупців в Україні та на інших ринках поза новою схемою: 15% на перший $1 млн на рік, 30% понад нього, підписки 15% |
| Фізичні товари й послуги | Покупку всередині застосунку використовувати не можна: Apple Pay або введення картки | Білінг Play використовувати не можна; серед прикладів доставка їжі й квитки на заходи |
| Строк перевірки | Щонайменше 50% заявок менш ніж за 24 години, 90% менш ніж за 48 | Ми закладаємо від кількох годин до кількох днів |
| Поріг входу | Компанія реєструється як юрособа з номером D-U-N-S | Особисті акаунти, створені після 13 листопада 2023 року, проходять закрите тестування: 12 тестувальників, 14 днів поспіль |
| Видалення акаунта | Обов'язкове всередині застосунку | Шлях у застосунку і вебпосилання |
Для покупців у ЄЕЗ, Британії, США, Японії та Австралії у Google вже діють нові ставки: 10% плюс 5% за білінг на перший $1 млн річного доходу. Нова схема пошириться й на інші ринки, дати для них Google на цій сторінці не називає.
Замовлення їжі, бронювання столика чи посилка взагалі не сплачують комісію магазину, лише комісію платіжного провайдера, тому бізнесу з фізичними товарами нема чого обирати PWA заради економії на комісіях. Apple Pay доступний і в Україні (Apple). Із цифровою підпискою чи платним контентом усе інакше: там канал впливає на вашу маржу. У вітрині США застосунок може вести на вашу власну оплату цифрових товарів, а в інших вітринах Apple це обмежено (Guidelines, п. 3.1.1).
Правило 4.2 Apple вимагає від застосунку більшого, ніж «перепакований сайт», тому оболонка на Capacitor має нести реальні функції пристрою або корисні нативні екрани, щоб пройти перевірку. На Android такий шлях підтримується офіційно: Trusted Web Activity відкриває вашу PWA на весь екран у Chrome, володіння підтверджується через Digital Asset Links, а Bubblewrap створює Android-проєкт (Chrome for Developers). Після публікації на неї діють платіжні правила Play.
У ЄС нотаризовані застосунки iOS можна також ставити з альтернативних магазинів або із сайту розробника. З 1 жовтня 2026 року така дистрибуція обкладається комісією Core Technology Commission у 5% із цифрових продажів (Apple). Це варто знати, якщо ваш цифровий продукт продається клієнтам у ЄС.
ОДНА БАЗА
Докуди вистачає однієї кодової бази
| Питання | React Native | Flutter |
|---|---|---|
| Мова | JavaScript або TypeScript | Dart |
| Що малює екран | Подання самої платформи | Власні віджети Flutter через рушій усередині застосунку |
| Ритм релізів | Нова мінорна версія приблизно раз на два місяці; підтримуються останні 3 серії | Стабільний реліз приблизно раз на три місяці |
| Коли потрібен код платформи | Для API, яких немає в React Native і бібліотеках: Turbo Native Module | Для API поза Dart: канали до Kotlin або Java і Swift або Objective-C |
| Найкраще підходить | Командам на JavaScript або TypeScript, наприклад поруч із сайтом на React | Командам, готовим вести Dart, та інтерфейсам, однаковим на обох платформах |
| У нас | Проєкти застосунків і фахівці | MVP і фахівці з пулу |
Одна кодова база знімає значну частину дублювання на екранах і в бізнес-логіці. Роботу з платформами вона не знімає: підпис і збірки для магазинів, дозволи, налаштування пуша й тестування на обох системах у будь-якому разі залишаються подвійними.
React Native 0.88 вийшов 15 жовтня 2026 року, 0.89 заплановано на грудень, і підтримуються лише три останні серії. За такого темпу версія виходить із підтримки приблизно через пів року після релізу. Проєкт, що пропустив оновлення за рік, потім стрибає одразу через кілька версій.
Ми радимо React Native, коли обидві платформи використовують ті самі екрани й логіку: каталог, замовлення, акаунти, бронювання. Наші проєкти застосунків ідуть на нативному коді або React Native, а Flutter ми використовуємо для MVP і для застосунків, які вже на ньому написані. Якщо він є в пропозиції, запитайте, хто підтримуватиме код через три роки і наскільки легко вам буде найняти розробників на Dart. Коли застосунок уже існує і вам потрібні лише люди для роботи над ним, це інший формат: Найняти мобільного розробника, від $45 до $65 на годину, під вашим керівництвом.
ТАБЛИЦЯ РІШЕННЯ
Вирішуйте за потребами продукту
| Продукту потрібно | PWA | React Native або Flutter | Натив на Swift і Kotlin |
|---|---|---|---|
| Пуш на iPhone | Лише після ручного встановлення | Так, після дозволу | Так, після дозволу |
| Камера й сканування | Фото й відео; сканування через бібліотеку на JavaScript | Так, через бібліотеки | Прямий доступ |
| Bluetooth або NFC | Лише Chrome на Android | Через бібліотеку або нативний модуль | Прямий доступ |
| Геолокація у фоні | Ні | Через нативний код | Прямий доступ |
| Читання без зв'язку й збережений кошик | Так, краще після встановлення | Так | Так |
| Робота без зв'язку з подальшою синхронізацією | Слабко на iPhone | Так, із локальною базою | Так, із локальною базою |
| Фізичні товари | Ваш платіжний провайдер, без збору магазину | Apple Pay або картки, без збору магазину | Apple Pay або картки, без збору магазину |
| Цифрові товари | Ваша оплата, без збору магазину | Покупка всередині застосунку та її комісія | Покупка всередині застосунку та її комісія |
| Присутність у магазинах | Google Play через оболонку; в App Store ні | Обидва | Обидва |
| Виправлення доходить до людей | Під час наступного візиту | Після перевірки й оновлення | Після перевірки й оновлення |
| Кодових баз підтримувати | Одну, спільну із сайтом | Одну плюс робота з платформами | Дві |
Читайте згори донизу й зупиніться на першому рядку, без якого продукт не обійдеться. Застосунок для співробітників, що відстежує маршрути у фоні, виключає PWA одним цим рядком. У каталогу з нечастими замовленнями такого рядка зазвичай немає, і йому найчастіше вистачає PWA або хорошого сайту.
Один випадок потребує уважнішого погляду: Apple Pay усередині встановленого вебзастосунку. Ми не знайшли ясної відповіді в документації Apple і WebKit, тому перевірте його на справжньому iPhone зі своїм платіжним провайдером, перш ніж обіцяти клієнтам.
ДРУГА БАЗА
У що обходиться підтримка
За п'ять років ці варіанти розрізняє передусім перелік обов'язків, який ніколи не закінчується:
| Постійний обов'язок | PWA | React Native або Flutter | Натив |
|---|---|---|---|
| Щорічна вимога магазинів до SDK | Немає | Один проєкт, два магазини | Два проєкти, два магазини |
| Оновлення фреймворків | Лише вашого сайту | Раз на кілька місяців, за графіком | Бібліотеки на кожній платформі |
| Ключі підпису й акаунти в магазинах | Немає | Обидва магазини | Обидва магазини |
| Старі версії на руках | Немає: у всіх поточна | API має їх обслуговувати | API має їх обслуговувати |
| Нова функція | Робиться один раз | Один раз плюс робота з платформами | Двічі, і два релізи |
Строки цілком конкретні. Від 28 квітня 2026 року все, що завантажується в App Store Connect, має бути зібране в Xcode 26 з iOS 26 SDK або новішим, а від 9 вересня 2026 року підтримувати iOS 13 або новішу як мінімальну (Apple). Від 31 серпня 2026 року нові застосунки й оновлення в Google Play мають бути націлені на Android 16, API level 36. Наявні застосунки мали досягти API level 35 до тієї самої дати, із відстрочкою до 1 листопада на запит, інакше користувачі нових версій Android їх не знаходять (Google). Застосунок, який ніхто не оновлює, рано чи пізно не зможе випустити навіть дрібне виправлення.
Готовий застосунок старіє, навіть коли до нього ніхто не торкається.
Найнаочніший наш приклад це LavShash. Ми побудували як одну систему сайт ресторану, гастромаркет і нативні застосунки доставки для iOS та Android. Потім плани клієнта змінилися, і запуск відклали. Через п'ять років перед новим запуском системі знадобиться серйозне доопрацювання, бо платформи, вимоги магазинів і звички клієнтів встигли змінитися. Застосунки були завершені, а роботу створив сам лише час.
Універсальний відсоток на підтримку ми не називаємо: надійного джерела для нього в нас немає, а робота відрізняється від продукту до продукту. Попросіть будь-якого підрядника внести перелічені обов'язки до пропозиції з годинами навпроти кожного. За ставки мобільного розробника від $45 до $65 на годину ви порахуєте цей список самі. Акаунтам у магазинах, ключам підпису й пошті для відновлення теж потрібен названий власник, про це стаття Чим ти реально володієш, а що орендуєш: Digital Ownership Audit; найчастіше акаунти належать клієнту, і ми публікуємо під ними.
ЯК МИ ВИРІШУЄМО
Як ми ухвалюємо рішення
Нативні застосунки ми пишемо на Swift і Kotlin, кросплатформні на React Native, і жоден із цих варіантів не обрано в нас за замовчуванням. Два наші проєкти показують, наскільки по-різному це може обернутися.
У LavShash доставка отримала нативні застосунки для iOS та Android, а ресторан і маркет залишилися у вебі: місце в телефоні заробляє дія, що повторюється, тобто чергове замовлення вечері. Логіку докладно розібрано в статті Ресторан, інтернет-магазин і доставка: одна система чи три продукти?. У MEDPRESSO, платформі безперервної медичної освіти, контент, логіка сертифікації й акаунти вже жили в платформі, тому застосунок, готовий до випуску, став зручнішим інтерфейсом для лікарів між змінами, без власних даних.
Порядок роботи, який ми пропонуємо:
- Запишіть найскладнішу вимогу одним реченням і знайдіть її рядок у таблиці вище.
- Перевірте поведінку раніше за платформу. Якщо сумнів у тому, чи повернуться клієнти, PWA або невелика перша версія відповість на нього дешевше. Про це стаття MVP, це не мінімальний продукт. Це вартість входу., а частка встановлень і підписок на сповіщення в PWA буде реальним доказом.
- Тримайте логіку за API. Каталог, замовлення, акаунти й адмінпанель залишаються на сервері, тому поруч із PWA згодом можна додати нативний застосунок без другої системи. Новий продукт такого роду належить до послуги Розробка вебзастосунків і SaaS, від $25 000; окремого рядка в прайсі для додавання PWA до наявного сайту немає, ціна залежить від сайту.
- Обирайте на discovery, із причинами на папері. Наша Discovery-фаза проєкту триває від двох до чотирьох тижнів, коштує від $4 000 і дає клікабельний прототип, вибір між нативом і React Native з обґрунтуванням та оцінку.
- Рахуйте бюджет на всю систему. Розробка додатків починається від $30 000, повний застосунок зазвичай займає від 10 до 20 тижнів; ціну рухають платформи, екрани, інтеграції та бекенд. Дизайн, бекенд, адмінпанель і застосунки ми робимо самі навколо логіки вашого бізнесу, а код передається вам за договором.
Найраніший крок це стратегічна сесія: від двох до трьох годин із засновником, із підготовкою заздалегідь, $500, які зараховуються в проєкт протягом 30 днів.
FAQ
Часті запитання
Чи може PWA надсилати пуш-сповіщення на iPhone?
Так, починаючи з iOS та iPadOS 16.4, але лише після того, як людина додасть її на початковий екран, і запит дозволу має йти за натисканням. Сайт у звичайній вкладці Safari запитати не може. На Android пуш працює в браузері без встановлення.
Чи можна розмістити PWA в App Store або Google Play?
У Google Play можна, через Trusted Web Activity, і тоді на неї діють платіжні правила Play. В App Store обгорнутий сайт має пройти правило 4.2, яке вимагає більшого, ніж перепакований сайт, тому потрібна реальна нативна цінність.
React Native чи Flutter: що обрати бізнесу?
Обидва дають одну кодову базу на дві платформи. React Native використовує подання самої платформи і JavaScript або TypeScript, Flutter малює власні віджети й використовує Dart. У проєктах застосунків ми використовуємо React Native, а Flutter-розробників підключаємо до MVP та наявних застосунків на Flutter; у будь-якому разі запитайте, хто підтримуватиме обраний варіант.
Чи беруть магазини комісію із замовлень їжі та фізичних товарів?
Ні. Apple вимагає для фізичних товарів і послуг, що споживаються поза застосунком, спосіб оплати, відмінний від покупки всередині застосунку, а білінг Google Play для них використовувати не можна. Ви платите лише платіжному провайдеру. Комісії стосуються цифрових товарів і підписок.
Чи можна почати з PWA, а нативний застосунок додати потім?
Так, якщо бізнес-логіка від самого початку перебуває за API. Каталог, акаунти, замовлення й адмінпанель залишаються на місці, а застосунок стає ще одним інтерфейсом. Заново ви робите шар інтерфейсу й отримуєте обов'язки перед магазинами.
Скільки коштує кожен варіант у Peretz Agency?
Нативні застосунки й застосунки на React Native починаються від $30 000 і зазвичай займають від 10 до 20 тижнів. Новий вебзастосунок починається від $25 000. Мобільний розробник у вашій команді коштує від $45 до $65 на годину. Усі ціни є на нашій сторінці цін.
Джерела
- WebKit: Web Push for Web Apps on iOS and iPadOS (лютий 2023)
- WebKit: Updates to Storage Policy (серпень 2023)
- Can I use: Push API, Background Sync, Web Bluetooth, Web NFC
- Apple: App Store Review Guidelines
- Google Play: Service fees
Підрядники сперечаються про PWA, натив і кросплатформу? Подивімося, що вашому продукту потрібно від телефона.
Раз на тиждень одне сповіщення з новими статтями PERETZ. Нічого зайвого.