---
title: "Миграция Adapty React Native SDK на v3.14"
description: "Мигрируйте на Adapty React Native SDK v3.14 для повышения производительности и новых функций монетизации."
---

Adapty React Native SDK 3.14.0 — это мажорный релиз, который содержит улучшения, требующие выполнения шагов миграции с вашей стороны:
- Метод `registerEventHandlers` заменён методом `setEventHandlers`.
- В `AdaptyOnboardingView` обработчики событий теперь передаются как отдельные пропсы вместо объекта `eventHandlers`
- Введён новый упрощённый стиль импорта UI-компонентов
- Метод `logShowOnboarding` удалён
- Минимальная версия React Native обновлена до 0.73.0
- Стиль презентации iOS по умолчанию для пейволов и онбордингов изменился с page sheet на полноэкранный
## Замените `registerEventHandlers` на `setEventHandlers` \{#replace-registereventhandlers-with-seteventhandlers\}

Метод `registerEventHandlers`, используемый для работы с Adapty Paywall Builder и Onboarding Builder, заменён методом `setEventHandlers`.
Если вы используете Adapty Paywall Builder и/или Adapty Onboarding Builder, найдите `registerEventHandlers` в коде своего приложения и замените на `setEventHandlers`.

Изменение внесено для большей ясности в поведении метода: обработчики теперь работают по одному, поскольку каждый возвращает `true`/`false`, а наличие нескольких обработчиков для одного события делало итоговое поведение непредсказуемым.
Обратите внимание: при использовании React-компонентов `AdaptyOnboardingView` или `AdaptyPaywallView` вам не нужно возвращать `true`/`false` из обработчиков событий, так как видимость компонента управляется через собственный state. Возвращаемые значения нужны только при модальном показе экранов, где SDK сам управляет жизненным циклом представления.

:::important
Каждый новый вызов `setEventHandlers` перезаписывает переданные обработчики, заменяя как стандартные, так и ранее заданные для указанных событий.
:::
```diff showLineNumbers 
- const unsubscribe = view.registerEventHandlers({
-    // your event handlers
- })

 const unsubscribe = view.setEventHandlers({
    // your event handlers
 })
``` 

## Обновление путей импорта для UI-компонентов \{#update-import-paths-for-ui-components\}

В Adapty SDK 3.14.0 появился упрощённый стиль импорта UI-компонентов. Теперь вместо импорта из `react-native-adapty/dist/ui` можно импортировать напрямую из `react-native-adapty`.

Новый стиль импорта лучше соответствует стандартным практикам React Native и делает строки импорта чище. Если вы используете UI-компоненты вроде `AdaptyPaywallView` или `AdaptyOnboardingView`, обновите импорты, как показано ниже:
```diff showLineNumbers
- import { AdaptyPaywallView } from 'react-native-adapty/dist/ui';
+ import { AdaptyPaywallView } from 'react-native-adapty';

- import { AdaptyOnboardingView } from 'react-native-adapty/dist/ui';
+ import { AdaptyOnboardingView } from 'react-native-adapty';

- import { createPaywallView } from 'react-native-adapty/dist/ui';
+ import { createPaywallView } from 'react-native-adapty';

- import { createOnboardingView } from 'react-native-adapty/dist/ui';
+ import { createOnboardingView } from 'react-native-adapty';
```

:::note
Для обратной совместимости старый стиль импорта (`react-native-adapty/dist/ui`) по-прежнему поддерживается. Однако мы рекомендуем использовать новый стиль импорта для единообразия и ясности.
:::
## Обновите обработчики событий онбординга в React-компоненте \{#update-onboarding-event-handlers-in-the-react-component\}

Обработчики событий для онбордингов перенесены за пределы объекта `eventHandlers` в `AdaptyOnboardingView`. Если вы отображаете онбординги с помощью `AdaptyOnboardingView`, обновите структуру обработки событий.

:::important
Обратите внимание на рекомендуемый способ реализации обработчиков событий. Чтобы избежать пересоздания объектов при каждом рендере, используйте `useCallback` для функций, которые обрабатывают события.
:::
```diff showLineNumbers
 import React, { useCallback } from 'react';
- import { AdaptyOnboardingView } from 'react-native-adapty/dist/ui';
+ import { AdaptyOnboardingView } from 'react-native-adapty';
+ import type { OnboardingEventHandlers } from 'react-native-adapty';
+
+ function MyOnboarding({ onboarding }) {
+   const onAnalytics = useCallback<OnboardingEventHandlers['onAnalytics']>((event, meta) => {}, []);
+   const onClose = useCallback<OnboardingEventHandlers['onClose']>((actionId, meta) => {}, []);
+   const onCustom = useCallback<OnboardingEventHandlers['onCustom']>((actionId, meta) => {}, []);
+   const onPaywall = useCallback<OnboardingEventHandlers['onPaywall']>((actionId, meta) => {}, []);
+   const onStateUpdated = useCallback<OnboardingEventHandlers['onStateUpdated']>((action, meta) => {}, []);
+   const onFinishedLoading = useCallback<OnboardingEventHandlers['onFinishedLoading']>((meta) => {}, []);
+   const onError = useCallback<OnboardingEventHandlers['onError']>((error) => {}, []);
+
   return (
     <AdaptyOnboardingView
       onboarding={onboarding}
       style={styles.container}
-       eventHandlers={{
-         onAnalytics(event, meta) { /* ... */ },
-         onClose(actionId, meta) { /* ... */ },
-         onCustom(actionId, meta) { /* ... */ },
-         onPaywall(actionId, meta) { /* ... */ },
-         onStateUpdated(action, meta) { /* ... */ },
-         onFinishedLoading(meta) { /* ... */ },
-         onError(error) { /* ... */ },
-       }}
+       onAnalytics={onAnalytics}
+       onClose={onClose}
+       onCustom={onCustom}
+       onPaywall={onPaywall}
+       onStateUpdated={onStateUpdated}
+       onFinishedLoading={onFinishedLoading}
+       onError={onError}
     />
   );
+ }
```

:::note
Для обратной совместимости проп `eventHandlers` по-прежнему поддерживается, но считается устаревшим. Рекомендуем перейти на отдельные пропы обработчиков событий, как показано выше.
:::
## Удалите `logShowOnboarding` \{#delete-logshowonboarding\}

В Adapty SDK 3.14.0 метод `logShowOnboarding` удалён из SDK.
Если вы использовали этот метод, после обновления SDK до версии 3.14 и выше он будет недоступен.

Вместо него вы можете [создавать онбординги в no-code конструкторе онбордингов Adapty](onboardings). Аналитика для таких онбордингов отслеживается автоматически, а возможностей для кастомизации достаточно много.

## Обновите React Native \{#update-react-native\}

Начиная с Adapty SDK 3.14.0, минимальная поддерживаемая версия React Native — 0.73.0. Если вы используете более раннюю версию, обновите React Native до 0.73.0 или выше, чтобы работа с Adapty SDK оставалась стабильной и предсказуемой.

## Обновите стиль представления iOS для модальных пейволов и онбордингов \{#update-ios-presentation-style-for-modal-paywalls-and-onboardings\}

В Adapty SDK 3.14.0 стиль представления по умолчанию для пейволов и онбордингов, отображаемых с помощью метода `view.present()`, изменился с page sheet на полный экран на iOS.

Если вы хотите сохранить прежний стиль представления page sheet, передайте параметр `iosPresentationStyle` в метод `present()`:

```typescript showLineNumbers title="React Native (TSX)"
try {
  await view.present({ iosPresentationStyle: 'page_sheet' });
} catch (error) {
  // handle the error
}
```