Розробка на Flutter: крос-платформні додатки без компромісів
Роками «крос-платформність» означала компроміс. Ви економили, пишучи один додаток для iOS і Android, і платили за це повільнішим, трохи «не таким» інтерфейсом, який користувачі відчували. Flutter змінив це рівняння для великої групи продуктів, і тому засновники дедалі частіше шукають компанію для розробки додатків на Flutter замість окремих команд під iOS і Android.
Flutter це інструментарій Google з відкритим кодом для створення додатків під iOS, Android, веб і десктоп з однієї кодової бази. Замість того щоб спиратися на платформні компоненти інтерфейсу, він сам малює кожен піксель власним рушієм рендерингу. У результаті інтерфейс виглядає однаково на кожному пристрої й працює плавно, близько до того, чого користувачі очікують від нативних додатків.
Нижче пояснюємо, як працює Flutter, що він дає бізнесу, де доречний, скільки коштує і як порівнюється з React Native. Якщо ви обираєте компанію для розробки на Flutter, останній розділ допоможе вирішити, чи Flutter взагалі правильний інструмент.
Що таке Flutter і чим він відрізняється від React Native
Dart. Додатки на Flutter пишуть мовою Dart, яку теж розробила Google. Для релізних збірок Dart компілюється заздалегідь у нативний машинний код, і це одна з причин, чому додатки на Flutter швидко стартують і плавно працюють. Під час розробки є hot reload: розробники бачать зміни в запущеному додатку приблизно за секунду. Dart легко освоїти тим, хто має досвід з Java, Kotlin, Swift чи TypeScript, але використовується він майже виключно для Flutter, тож ринок фахівців менший.
Єдина кодова база. Одна кодова база Flutter дає додатки для iOS і Android, а з тим самим кодом (з доопрацюваннями) і для вебу, Windows, macOS та Linux. На практиці більшість бізнес-проєктів використовують Flutter для мобільних додатків, інколи додаючи веб- чи десктоп-версію для адміністрування або внутрішнього користування.
Інтерфейс на віджетах. Усе в інтерфейсі Flutter є віджетом: текст, кнопки, макети, відступи, анімації, цілі екрани. Віджети комбінуються як будівельні блоки. Flutter постачається з двома великими наборами віджетів, Material (дизайн-мова Google) і Cupertino (стиль iOS), і дозволяє легко створювати власні.
Ключова відмінність від React Native. React Native використовує власні компоненти платформи: кнопка на iOS є справжньою кнопкою iOS. Flutter малює власні компоненти своїм рушієм рендерингу Impeller, який тепер використовується за замовчуванням і на iOS, і на Android. Тому:
Flutter дає інтерфейси, ідентичні до пікселя на всіх платформах, і повний контроль над кожною візуальною деталлю;
React Native за замовчуванням дає нативний для кожної платформи вигляд і тісніший зв’язок з екосистемою JavaScript і React.
Жоден підхід не кращий загалом. Вони пасують різним продуктам і командам, і до вибору ми повернемося наприкінці статті.
Ключові переваги для бізнесу
Продуктивність, близька до нативної. Оскільки Flutter компілюється в нативний код і рендерить через власний рушій, анімації та прокрутка плавні, зазвичай 60 кадрів на секунду і більше на пристроях, що це підтримують. У більшості бізнес-додатків користувачі не відрізнять добре зроблений додаток на Flutter від нативного.
Однаковий інтерфейс на всіх платформах. Ваш бренд виглядає абсолютно однаково на iPhone, бюджетному Android-смартфоні та планшеті. Немає сюрпризів, коли компонент поводиться інакше на одній з платформ. Для продуктів з сильною візуальною айдентикою це суттєва перевага. Це також спрощує дизайн і QA: один дизайн, один набір екранів для тестування.
Одна команда, один цикл релізів. Одна команда розробляє і підтримує додаток для обох платформ. Функції виходять на iOS і Android одночасно, що добре і для користувачів, і для маркетингових планів.
Нижча вартість розробки. Порівняно з двома нативними додатками, додаток на Flutter потребує менше розробників і менше часу на той самий обсяг. Економія залежить від проєкту, але для стандартних бізнес-додатків різниця суттєва.
Швидкі ітерації. Hot reload прискорює розробку і дозволяє легко пробувати зміни дизайну просто під час рев’ю з клієнтом. Команди менше чекають на збірки.
Підтримка Google і використання в масштабі. Google використовує Flutter у власних продуктах, зокрема в Google Pay. Його також використовують BMW, Alibaba і Nubank. Flutter не нішевий експеримент, і його дорожня карта публічна.
Сценарії використання Flutter
MVP-додатки. Flutter добре підходить стартапам, яким треба швидко і з обмеженим бюджетом перевірити ідею на обох платформах. Одна кодова база, швидка розробка, акуратний інтерфейс з першого дня. Якщо ви на цьому етапі, наша послуга MVP для стартапів охоплює весь шлях від визначення обсягу до запуску.
e‑commerce-додатки. Мобільні магазини з каталогами, фільтрами, картками товарів, кошиком, оплатою і програмами лояльності. Контроль Flutter над візуалом допомагає брендам створити впізнаваний досвід покупок, а продуктивність робить довгі списки товарів і сторінки з великою кількістю зображень плавними.
Внутрішні інструменти. Додатки для виїзних працівників, персоналу складу, водіїв, торгових представників чи інспекторів: форми, чек-листи, фото, офлайн-режим із синхронізацією, сканування штрихкодів. Тут цінна здатність Flutter працювати на Android-пристроях будь-якого цінового рівня, а також на планшетах і десктопі, а одна кодова база робить підтримку дешевою.
Брендовані споживчі додатки. Фітнес, освіта, медіа, подорожі та лайфстайл, де кастомний дизайн і анімації є частиною продукту.
Продукти, яким також потрібні веб і десктоп. Коли той самий інтерфейс має працювати в браузері або як десктопний застосунок, Flutter дозволяє розширити кодову базу. Ми рекомендували б це переважно для внутрішніх і адміністративних інструментів. Для публічних сайтів, що залежать від SEO, зазвичай краще підходить фреймворк, орієнтований на веб.
Flutter менш доречний, коли додаток сильно залежить від найновіших платформних функцій у день їх виходу, коли розмір додатка має бути мінімальним або коли ваша команда вже глибоко в React і хоче ділити код з вебпродуктом на React.
Вартість і терміни: чого очікувати
Бюджет додатка на Flutter залежить від тих самих чинників, що й будь-який мобільний проєкт. Ось основні.
Обсяг: кількість екранів, ролей користувачів і функцій.
Бекенд: чи потрібна нова серверна частина (акаунти, дані, сповіщення, адмін-панель), чи підключення до наявної.
Інтеграції: платежі, карти, чат, аналітика, CRM, ERP.
Функції пристрою: камера, Bluetooth, геолокація у фоні, офлайн-режим. Для деяких може знадобитися платформний код на Swift або Kotlin.
Дизайн: стандартні компоненти Material чи власна дизайн-система.
Локація команди: ставки у Східній Європі зазвичай помітно нижчі, ніж у США чи Великій Британії для подібного рівня.
Орієнтовно для роботи досвідченої східноєвропейської команди, включно з дизайном, бекендом і QA:
MVP-додаток з ключовими функціями: приблизно $25 000–50 000, 2–4 місяці;
Бізнес-додаток з платежами, кількома інтеграціями та адмін-панеллю: приблизно $50 000–120 000, 4–7 місяців;
Складний продукт, наприклад маркетплейс або додаток з функціями реального часу: від $120 000, зазвичай поетапно.
Після запуску закладіть бюджет на підтримку: оновлення під нові версії iOS і Android, оновлення Flutter, виправлення помилок і невеликі покращення. Як стартове припущення плануйте приблизно 15–20 % від початкової вартості розробки на рік, а потім коригуйте залежно від того, наскільки активно розвиваєте продукт.
Ці діапазони для планування, а не комерційна пропозиція. Збираючи пропозиції, попросіть кожну компанію з розробки додатків на Flutter показати, як її оцінка розподіляється між дизайном, мобільною розробкою, бекендом і QA. Discovery дає обсяг робіт і оцінку, на які можна покластися.
Flutter чи React Native: що обрати
Обидва фреймворки зрілі, і обидва використовують великі компанії. Вибір залежить від трьох речей.
Ваш продукт. Якщо інтерфейс дуже кастомний, анімований і має виглядати однаково на кожному пристрої, перевага за Flutter. Якщо додаток має відчуватися нативним на кожній платформі й дотримуватися її конвенцій, React Native часто простіший.
Експертиза команди. Якщо у вашій компанії вже є React-розробники або вебзастосунок на React, React Native дозволить використати навички, інструменти і частину коду. Якщо ви починаєте з нуля і будуєте продукт, орієнтований на мобільні, Flutter такий самий хороший старт за умови, що ви можете найняти Dart-розробників або знайти партнера з ними.
Довгострокова підтримка. Подумайте, хто підтримуватиме додаток через три роки. Ринок фахівців з JavaScript і React значно більший, тож замінити чи розширити команду React Native простіше. Менша, але сфокусована спільнота Flutter усе одно достатньо велика на більшості ринків, а в додатках на Flutter зазвичай менше платформних багів, бо все малює один і той самий рушій.
Просте правило, яким ми користуємося з клієнтами:
вебпродукт на React або команда на JavaScript: схиляйтеся до React Native;
продукт з сильним дизайном і брендом, орієнтований на мобільні, або внутрішній інструмент на багатьох пристроях: схиляйтеся до Flutter;
жоден пункт не підходить: обирайте те, з чим у вашого підрядника найсильніший підтверджений досвід.
Другу сторону цього порівняння розкриває наш гайд про розробку додатків на React Native: переваги, вартість і сценарії використання React Native.
Як обрати компанію для розробки додатків на Flutter. Попросіть показати додатки на Flutter, що вже є в магазинах, і встановіть їх. Перевірте плавність, стани завантаження і поведінку на недорогому Android-смартфоні. Спитайте, як команда організовує керування станом, тестує додаток і працює з платформним кодом. Надійна компанія з розробки мобільних додатків на Flutter матиме також бекенд-розробників і дизайнерів, бо більшість додатків провалюються на бекенді чи UX, а не на фреймворку. А хороша компанія з розробки застосунків на Flutter відкрито скаже, якщо для вашої ідеї краще підходить React Native чи нативна розробка.
У Solar Digital Flutter одна з мобільних технологій, з якими ми працюємо, поряд з React Native і нативною розробкою під iOS. Стек обираємо після discovery, виходячи з вашого продукту, команди й довгострокових планів, а не з наших уподобань. Більше на нашій сторінці технології Flutter або в розділі послуги з розробки мобільних додатків. Запишіться на дзвінок з нашим бізнес-аналітиком, щоб обговорити ваш додаток.