Оптимизация загрузки пейволов в React Native SDK

Надёжная загрузка пейвола в React Native решает три задачи: быстрый рендеринг, возврат пейвола с учётом аудитории и корректный фолбэк при медленном интернете. Правила ниже охватывают подходы к тайммингу, кэшированию и резервным сценариям.

Предполагается, что adapty.activate() и adapty.identify() уже выполнились. См. Порядок вызовов в React Native SDK.

Правила и подводные камни

Делайте такНе делайте такПочему
Загружайте только тот плейсмент, который собираетесь показать.Предзагружайте все плейсменты одновременно при запуске.Массовая предзагрузка блокирует JS-поток и приводит к чёрному экрану во время всплеска.
Вызывайте getPaywall после того, как атрибуция успела разрешиться — например, через 1–2 секунды после activate или после срабатывания onProfileUpdate.Вызывайте getPaywall при монтировании корневого компонента.Атрибуция ещё не применилась. Пейвол разрешается для аудитории по умолчанию и незаметно обходит сегменты и персонализацию ASA.
Задайте loadTimeoutMs и настройте резервный пейвол для каждого плейсмента.Ждите ответа getPaywall бесконечно.Без таймаута пользователи с плохим соединением видят пустой экран до тех пор, пока сеть не ответит — или закрывают приложение.
Подробнее о параметрах fetchPolicy и loadTimeoutMs — в разделе Получение пейволов и продуктов, а о выборе подходящего плейсмента — в разделе Плейсменты.

Настройка для нестабильного соединения

Для рынков с постоянно плохим качеством связи (сельская местность, транспорт, регионы с проблемами маршрутизации):

  • Устанавливайте fetchPolicy: .returnCacheDataElseLoad для каждого запроса, кроме самого первого.
  • Настройте резервный пейвол для каждого плейсмента в дашборде Adapty.
  • Задайте loadTimeoutMs равным 3–5 секундам и используйте резервный пейвол при срабатывании таймаута.
  • Не блокируйте отображение пейвола на getProfile(). Вызывайте getPaywall независимо, чтобы медленный запрос профиля не задерживал интерфейс.