Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni

🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!

25.03.2024

React Native чи Swift, чи ще щось: 2024

📱 Оскільки я трохи попрацював зі SwiftUI, хочу переосмислити свої бачення та рекомендації з приводу вибору мобільної технології для iOS.

Як RN, так і SwiftUI приблизно однаково зрілі. Вчити доведеться як те, так і інше; у RN багато відмінностей від вебу. Це далеко не просто “інший набір компонент”; рушій викладки та стилів абсолютно інший та працює за іншими правилами. Та й тулчейн інший. Можна взагалі сказати, що з RN у вас збережеться знайома мова та стано-логічний кінець застосунку.

А далі все залежить від того, скільки того стану та логіки. Якщо застосунок тільки показує дані з сервера, то це і на Swift зробити нескладно. Проте, якщо на фронтенді є складна бізнес-логіка, то переписувати її буде ризиковано — тоді RN дійсно дає велику перевагу.

Проте, зі складним фронтендом спливає інша проблема. Чемні мобільні застосунки повинні працювати офлайн. З RN у вас не буде готового рішення для збереження та синхронізації даних; тобто рішень є багато, але вони всі з компромісами. А у Swift локальний стан — це найпростіше, що буває.

Нарешті, хоч застосунки на React Native можна застилити без жодних обмежень та досягти будь-яких вимог дизайнера, в них залишається деякий ефект моторошної долини: невловні деталі поводяться не так, як ми від них очікуємо. Певно, через нерідний рушій викладки. Звісно, це не заважає багатьом популярним застосункам використовувати RN та не обовʼязково буде перешкодою для вас.

Одним словом, складно сказати, в яких обставинах RN має перевагу. На мою думку, варто вже взяти той Swift та робити нормально. Може, коли є велика команда, яка вся знає JavaScript, але раптом отримала задачу робити невеличкий мобільний застосунок-компаньйон до сайту - ось тоді RN має сенс. Якось так.

Додаток 1: Flutter: я ніколи не пробував і бажання мало, бо це і додаткова мова, і все одно не “рідне” середовище…

Додаток 2: NativeScript - дуже цікава мені платформа; вона обіцяє “рідні” оболонки для будь-якого фреймворку JavaScript (а конкретно, я б обрав Svelte.) Проте поки мене й Swift цілком влаштовує, тому не поспішаю.