Guide for migrating to version 8.0.0 (beta)
Several callbacks and APIs incompatible with the new native SDK version were removed in plugin version 8.0.0. This guide will help you make the necessary updates to your app's code.
1. Removing BannerView callbacks
The following properties of the BannerView component were removed and are no longer supported:
| Properties | Platform |
|---|---|
onLeftApplication |
iOS, Android |
onWillPresentScreen |
iOS |
onDidDismissScreen |
iOS |
onReturnToApplication |
Android |
onAdClose |
iOS, Android |
What to do: Remove these properties from all BannerView instances.
Before
<BannerView
adRequest={{ adUnitId: 'R-M-XXXXX-YY' }}
size={adSize}
onAdLoaded={() => console.log('loaded')}
onAdClicked={() => console.log('clicked')}
onLeftApplication={() => console.log('left app')}
onWillPresentScreen={() => console.log('will present')}
onDidDismissScreen={() => console.log('did dismiss')}
onReturnToApplication={() => console.log('returned')}
onAdClose={() => console.log('closed')}
onAdImpression={(e) => console.log('impression', e)}
onAdFailedToLoad={(e) => console.log('failed', e)}
/>
After
<BannerView
adRequest={{ adUnitId: 'R-M-XXXXX-YY' }}
size={adSize}
onAdLoaded={() => console.log('loaded')}
onAdClicked={() => console.log('clicked')}
onAdImpression={(e) => console.log('impression', e)}
onAdFailedToLoad={(e) => console.log('failed', e)}
/>
2. Replacing AdRequestConfiguration with AdRequest
The AdRequestConfiguration class has been removed. Request parameters, including adUnitId, are now passed directly to the loadAd method via an AdRequestParams object.
What to do:
- Remove any imports or instances of
AdRequestConfiguration. - Pass the
adUnitIddirectly toloadAdalong with the rest of the parameters.
Before
import { InterstitialAdLoader, AdRequestConfiguration, Gender } from '@yandex-ads/react-native-yandex-ads';
const loader = await InterstitialAdLoader.create();
const config = new AdRequestConfiguration({
adUnitId: 'R-M-XXXXX-YY',
age: '25',
gender: Gender.Male,
});
const ad = await loader.loadAd(config);
After
import { InterstitialAdLoader, Gender } from '@yandex-ads/react-native-yandex-ads';
const loader = await InterstitialAdLoader.create();
const ad = await loader.loadAd({
adUnitId: 'R-M-XXXXX-YY',
targeting: {
age: '25',
gender: Gender.Male,
},
});
These changes apply to RewardedAdLoader and AppOpenAdLoader.
3. Moving the adUnitId property from BannerView to adRequest
The adUnitId property has been removed from BannerView. The ad unit ID is now passed as a required field of the adRequest object.
What to do: Remove the adUnitId property from BannerView and move it to adRequest.adUnitId.
Before
<BannerView
adUnitId="R-M-XXXXX-YY"
size={adSize}
/>
After
<BannerView
size={adSize}
adRequest={{ adUnitId: 'R-M-XXXXX-YY' }}
/>
4. Moving the targeting fields to the targeting object
age, gender, location, contextQuery, and contextTags fields have been moved to the nested targeting object. This applies to both fullscreen formats as well as BannerView.
What to do: Wrap the targeting fields in targeting: { ... }.
Fullscreen ads (Interstitial, Rewarded, AppOpen)
Before
loader.loadAd({
adUnitId: 'R-M-XXXXX-YY',
age: '25',
gender: Gender.Male,
contextTags: ['sport', 'news'],
});
After
loader.loadAd({
adUnitId: 'R-M-XXXXX-YY',
targeting: {
age: '25',
gender: Gender.Male,
contextTags: ['sport', 'news'],
},
});
BannerView
Before
import { Gender } from '@yandex-ads/react-native-yandex-ads';
<BannerView
adUnitId="R-M-XXXXX-YY"
size={adSize}
adRequest={{ age: '25', gender: Gender.Male }}
/>
After
import { Gender } from '@yandex-ads/react-native-yandex-ads';
<BannerView
size={adSize}
adRequest={{ adUnitId: 'R-M-XXXXX-YY', targeting: { age: '25', gender: Gender.Male } }}
/>
5. New AdInfo interface
Version 8.0.0 adds the AdInfo interface, which contains metadata about loaded ads.
interface AdInfo {
adUnitId: string;
extraData?: string;
partnerText?: string;
creatives: Creative[];
}
interface Creative {
creativeId?: string;
campaignId?: string;
placeId?: string;
offerId?: string;
}
Getting AdInfo for fullscreen formats
The InterstitialAd, RewardedAd, and AppOpenAd objects now contain the adInfo getter:
const ad = await loader.loadAd({ adUnitId: 'R-M-XXXXX-YY' });
console.log(ad.adInfo?.adUnitId);
console.log(ad.adInfo?.creatives);
Getting AdInfo in BannerView
The onAdLoaded callback now accepts an event containing the adInfo field:
<BannerView
size={adSize}
adRequest={{ adUnitId: 'R-M-XXXXX-YY' }}
onAdLoaded={(event) => {
const adInfo = event.nativeEvent.adInfo;
console.log(adInfo?.adUnitId);
}}
/>
6. Version requirements
iOS
- Xcode: 26.0 or higher.
- AppMetricaCore: 6.0.0 or higher.
- AppMetricaLibraryAdapter: 6.0.0 or higher.
- AppMetricaAdSupport: 6.0.0 or higher.
- AppMetricaIDSync: 6.0.0 or higher.
Android
- Gradle: 7.0 or higher.
- Android gradle plugin: 8.3.2 or higher.
- Android SDK: 21 (Android 5.0) or higher.
- Kotlin: 1.9.0 or higher.
- Java: 8 or higher.