Інтеграція Supabase у мобільний додаток: PostgreSQL, Auth, Realtime

Реалізація Supabase в мобільному додатку Ви інтегруєте сторонні сервіси в мобільний додаток, і раптом усвідомлюєте: Firebase — це vendor lock-in з пропрієтарною NoSQL-базою. Перехід на Supabase дає повноцінний PostgreSQL з SQL, реляційними зв'язками та **Row Level Security**. Але без правильного

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Інтеграція Supabase у мобільний додаток: PostgreSQL, Auth, Realtime
Середній
~3-5 днів

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

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    894
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Реалізація Supabase в мобільному додатку

Ви інтегруєте сторонні сервіси в мобільний додаток, і раптом усвідомлюєте: Firebase — це vendor lock-in з пропрієтарною NoSQL-базою. Перехід на Supabase дає повноцінний PostgreSQL з SQL, реляційними зв'язками та Row Level Security. Але без правильного налаштування ви ризикуєте: сесії втрачаються в фоні, Realtime не приходить, а анонімний ключ відкриває доступ до даних. Помилки в конфігурації можуть коштувати до 40% часу на налагодження на production. Ми реалізуємо інтеграцію Supabase під ключ за 3–5 тижнів. Оцінимо ваш проект безкоштовно — просто напишіть нам. За 5 років роботи ми виконали 20+ проектів з Supabase, включаючи високонавантажені додатки для iOS та Android. Гарантуємо відповідність App Store Review Guidelines (Section 5.1) та Google Play Store політикам.

Чому Supabase краще Firebase для мобільних додатків?

Критерій Supabase Firebase
Тип БД PostgreSQL (реляційна) NoSQL (Firestore)
SQL Повноцінний SQL Обмежені запити
Self-hosted Так (open-source) Ні
Realtime WebSocket (Phoenix Channels) Firestore realtime
Ціна Безкоштовний tier + PAYG Безкоштовний tier + PAYG
Lock-in Ні Високий

Supabase виграє при роботі з реляційними даними: зовнішні ключі, JOIN, транзакції. Для додатків з аналітикою, фінансами або складними звітами Supabase в 2–3 рази дешевше Firebase за витратами на запити. Крім того, PostgreSQL — зріла СУБД з 30+ роками розвитку, що забезпечує передбачувану продуктивність.

Ініціалізація в React Native

import { createClient } from '@supabase/supabase-js'; import AsyncStorage from '@react-native-async-storage/async-storage'; import 'react-native-url-polyfill/auto'; // обов'язково для RN export const supabase = createClient( process.env.SUPABASE_URL!, process.env.SUPABASE_ANON_KEY!, { auth: { storage: AsyncStorage, autoRefreshToken: true, persistSession: true, detectSessionInUrl: false, }, } ); 

react-native-url-polyfill — обов'язковий: Supabase використовує URL API, якого немає в Hermes/JSC без поліфіла. Без нього — тиха помилка при першому запиті.

Як захистити дані на клієнті за допомогою RLS?

Row Level Security — політики доступу на рівні PostgreSQL. Навіть якщо клієнт має anon key — без відповідної політики дані недоступні. Важливо: RLS працює на рівні сервера, не обходиться при прямому SQL-запиті. Це принципово для mobile, де anon key знаходиться в коді додатку і може бути вилучений reverse engineering'ом. PostgreSQL RLS Documentation

-- Вмикаємо RLS для таблиці ALTER TABLE posts ENABLE ROW LEVEL SECURITY; -- Користувач бачить лише свої пости CREATE POLICY "user_can_read_own_posts" ON posts FOR SELECT USING (auth.uid() = user_id); -- Користувач створює лише свої пости CREATE POLICY "user_can_insert_own_posts" ON posts FOR INSERT WITH CHECK (auth.uid() = user_id); 

Аутентифікація та AppState

Supabase GoTrue рефрешить JWT автоматично. Але на iOS при тривалому перебуванні в фоні refresh-запит може не виконатися. При поверненні в foreground потрібно явно перевірити сесію:

useEffect(() => { const subscription = AppState.addEventListener('change', async (nextState) => { if (nextState === 'active') { await supabase.auth.getSession(); } }); const { data: authListener } = supabase.auth.onAuthStateChange((event, session) => { if (event === 'TOKEN_REFRESHED') { updateGlobalSession(session); } if (event === 'SIGNED_OUT') { clearLocalData(); navigateToLogin(); } }); return () => { subscription.remove(); authListener.subscription.unsubscribe(); }; }, []); 

Завантаження файлів у Storage

import * as FileSystem from 'expo-file-system'; const uploadFile = async (localUri: string, path: string) => { const base64 = await FileSystem.readAsStringAsync(localUri, { encoding: FileSystem.EncodingType.Base64, }); const { data, error } = await supabase.storage .from('avatars') .upload(path, decode(base64), { contentType: 'image/jpeg', upsert: true, }); if (error) throw error; const { data: { publicUrl } } = supabase.storage .from('avatars') .getPublicUrl(path); return publicUrl; }; 

decode з пакету base64-arraybuffer. Supabase Storage приймає ArrayBuffer, не рядок. На великих файлах використовуйте FormData з fetch напряму — base64 збільшує розмір на 33%.

Що важливо знати про продуктивність Supabase на мобільних пристроях?

Realtime-підписки через WebSocket споживають трафік і батарею. На Android при згорнутому додатку WebSocket може відключитися — використовуйте FCM для «товстих» сповіщень. Оптимальна стратегія: підписуватися лише на активні екрани, відписуватися при переході в фон. Це знижує навантаження на 50%.

Платформенні клієнти: supabase-swift та supabase-kt

Для нативних додатків Supabase пропонує офіційні SDK. На iOS використовуємо supabase-swift (SwiftUI + Combine), на Android — supabase-kt (Kotlin Coroutines). Обидва підтримують всі функції: Auth, Realtime, Storage, RLS. У React Native та Flutter застосовуємо supabase-js.

Типові задачі інтеграції та оцінка часу

Задача Середній час
Налаштування Auth (email + OAuth) 3–5 днів
Проектування RLS політик 2–4 дні
Інтеграція Realtime 2–3 дні
Налаштування Storage з bucket-правилами 1–2 дні
Міграція даних з Firebase 5–7 днів

Часті помилки при інтеграції Supabase

  • Не вмикати RLS на таблицях. Анонімний ключ отримує повний доступ. Завжди явно вмикайте RLS після створення таблиці.
  • Зберігати сесію в непостійному сховищі. При згортанні додатку токен втрачається. Використовуйте AsyncStorage (React Native) або UserDefaults (native).
  • Ігнорувати react-native-url-polyfill. Призводить до помилки при першому запиті. Встановіть пакет та імпортуйте в корені.
  • Не обробляти AppState. На iOS сесія може не оновитися після довгого фону. Додайте обробник foreground.

Що входить у роботу

  • Аудит поточної архітектури та схеми БД
  • Проектування політик RLS та міграцій
  • Налаштування Auth (email, OAuth, magic link) з обробкою AppState
  • Інтеграція Realtime підписок для миттєвих оновлень
  • Конфігурація Storage з bucket-політиками
  • Написання TypeScript-типів зі схеми БД (supabase gen types)
  • Збірка та публікація в TestFlight / Google Play Console
  • Документація з розгортання та експлуатації

Процес роботи

  1. Аналітика — рев'ю вашого коду, схеми даних, вимог
  2. Проектування — RLS політики, індекси, реплікація
  3. Реалізація — інтеграція SDK, міграції, тести
  4. Тестування — навантажувальне тестування, перевірка безпеки
  5. Деплой — налаштування CI/CD, моніторинг у Supabase Dashboard

Терміни та вартість

Орієнтовні терміни: від 3 до 7 тижнів залежно від складності. Конкретна вартість розраховується індивідуально після аудиту. Отримайте консультацію з інтеграції Supabase — зв'яжіться з нами, і ми проведемо безкоштовний аудит вашої архітектури.