Liveblocks для мобільного застосунку: real-time співпраця

Два користувачі одночасно редагують список завдань: один на iPhone, інший на Android. Дані швидко розходяться, конфлікти накопичуються, і підсумковий стан непередбачуваний. REST API не забезпечує real-time, а створення власного WebSocket-сервера з CRDT вимагає місяців розробки та налагодження. Втрат

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Liveblocks для мобільного застосунку: real-time співпраця
Складний
від 1 тижня до 3 місяців

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

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

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

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    895
  • 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
    1003
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Два користувачі одночасно редагують список завдань: один на iPhone, інший на Android. Дані швидко розходяться, конфлікти накопичуються, і підсумковий стан непередбачуваний. REST API не забезпечує real-time, а створення власного WebSocket-сервера з CRDT вимагає місяців розробки та налагодження. Втрати даних через конфлікти можуть сягати 15% від усіх змін.

Ми використовуємо Liveblocks — керовану інфраструктуру для спільного редагування. Вона надає готовий WebSocket-сервер, CRDT-сховище (на базі Liveblocks Storage), presence, коментарі та нотифікації через хмарне API. У браузері інтеграція займає один день, у мобільному застосунку на React Native — від тижня. Це прискорює вихід на ринок у 3–6 разів порівняно з самостійною реалізацією. Економія на інфраструктурі може бути значною.

Що дає Liveblocks з коробки?

  • Storage — CRDT-сховище на базі власної реалізації з LiveObject, LiveList, LiveMap. Зміни реплікуються між клієнтами за <100 мс в одному регіоні.
  • Presence — ефемерний стан користувача: позиція курсора, виділення, статус. Не персистується, тільки онлайн.
  • Yjs-інтеграція — через @liveblocks/yjs можна використовувати Yjs документи спільно з веб-редакторами (Tiptap, Slate).

Згідно з Wikipedia, CRDT гарантує консистентність у розподілених системах.

Як підключити Liveblocks у React Native?

  1. Встановіть пакети: npm install @liveblocks/client @liveblocks/react
  2. Створіть клієнт за допомогою createClient та налаштуйте аутентифікацію.
  3. Визначте типи Presence та Storage для вашого застосунку.
  4. Експортуйте хуки через createRoomContext.
  5. Оберніть екран редактора в RoomProvider.
import { createClient } from '@liveblocks/client'; import { createRoomContext } from '@liveblocks/react'; const client = createClient({ authEndpoint: '/api/liveblocks-auth', // або publicApiKey для прототипів }); type Presence = { cursor: { x: number; y: number } | null; selectedItemId: string | null; }; type Storage = { items: LiveList<{ id: string; text: string; done: boolean }>; }; export const { RoomProvider, useMyPresence, useStorage, useMutation } = createRoomContext<Presence, Storage>(client); 

RoomProvider обертає екран-редактор. Всередині useStorage дає імутабельний снапшот, useMutation — транзакційні мутації.

Проблема в RN: @liveblocks/client використовує fetch і WebSocket, які є, але EventSource (SSE для нотифікацій) відсутній без поліфіла. Встановіть react-native-event-source та глобальний поліфіл:

import EventSource from 'react-native-event-source'; global.EventSource = EventSource; 

Отримайте консультацію щодо налаштування клієнта та поліфілів — це зекономить вам до 40% часу на інтеграцію.

Що таке Presence у мобільному контексті?

У браузері presence — координати миші. У мобільному застосунку — інші кейси:

  • Спільне редагування списку завдань: presence = { focusedItemId: string | null } — підсвічуємо редагований елемент.
  • Спільна дошка: presence = { x, y, tool: 'pen'|'eraser' } — показуємо стилус.
  • Документний редактор: presence = { selection: { anchor, focus } | null } — виділення тексту.

Використовуйте useOthersConnectionIds та useOther для реактивних даних про присутніх. Для оптимізації — useOthersMapped вибирає тільки потрібні поля.

Чому варто обрати Liveblocks для мобільного застосунку?

Критерій Liveblocks Самостійна реалізація
Час до продакшену 2–8 тижнів 3–6 місяців
Підтримка офлайну Вимагає доопрацювання Повний контроль
Вартість інфраструктури Підписка Значні витрати
SLA 99.9% (Pro) Залежить від вас
Data residency Тільки хмара Повний контроль

Порівняння показує: Liveblocks виграє за швидкістю інтеграції, але поступається в офлайн-режимі та контролі даних. Для більшості MVP та середніх проєктів цього достатньо.

Офлайн-режим: чого немає з коробки

Liveblocks не надає офлайн-персистентність. При відсутності мережі зміни втрачаються. Ми вирішуємо це буфером мутацій в AsyncStorage:

Приклад реалізації офлайн-буфера
const [pendingMutations, setPendingMutations] = useAtom(pendingMutationsAtom); NetInfo.addEventListener(state => { if (!state.isConnected) { const snapshot = storage.toObject(); AsyncStorage.setItem('offline_snapshot', JSON.stringify(snapshot)); } else { pendingMutations.forEach(mutation => mutation()); setPendingMutations([]); } }); 

Це не справжній CRDT-офлайн — merge не гарантований при одночасних змінах офлайн. Для повного рішення комбінуємо з Yjs через @liveblocks/yjs та кастомним локальним провайдером. Складніше, але правильніше.

Стратегія офлайну Складність Гарантія консистентності Час впровадження
Буфер мутацій Низька Ні, можлива втрата 1–2 тижні
Локальна копія + merge Середня Часткова (last-write-wins) 2–4 тижні
Yjs з локальним провайдером Висока Повна CRDT 4–8 тижнів

AppState та реконект

iOS вбиває WebSocket при фоні. SDK перепідключається автоматично, але room.getStatus() проходить через reconnecting. Якщо UI не реагує, користувач бачить застарілий стан. Обробляйте явно:

const status = useStatus(); if (status === 'reconnecting') { return <ReconnectingBanner />; } 

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

  • Налаштування клієнта Liveblocks та провайдера аутентифікації.
  • Інтеграція Storage та Presence для вашого use-case.
  • Реалізація офлайн-буфера (опціонально).
  • Yjs-інтеграція для сумісності з веб-редакторами.
  • Тестування реконекту та обробки appState.
  • Документація та навчання команди.
  • Підтримка 2 тижні після деплою.

Замовте демо-проєкт з базовою інтеграцією — ми покажемо, як Liveblocks працює у вашому контексті. Зв'яжіться з нами для оцінки проєкту за 1–2 робочі дні.

Як ми оцінюємо проєкт

Орієнтовні строки:

  • Базова інтеграція (Storage + Presence, без офлайну): 2–4 тижні.
  • З офлайн-буфером: 3–6 тижнів.
  • З Yjs та повним офлайном: 6–10 тижнів.

Вартість розраховується індивідуально після аналізу вашого MVP. Отримайте консультацію — оцінимо проєкт за 1–2 робочі дні.

Наш досвід: понад 5 років у мобільній розробці, 15+ проєктів з real-time синхронізацією. Працюємо з Liveblocks з моменту його публічного релізу.