> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kontext.so/llms.txt
> Use this file to discover all available pages before exploring further.

# Best practices

> The pre-launch checklist for a video app: moments, prefetching, consent, attribution and the things that raise fill.

Work through this list before going live. Each item links to the page that explains it.

1. **Use the latest SDK version** and update minors regularly. See [Changelog](https://docs.kontext.so/video/resources/changelog.md).
2. **Send what you know about the content.** Title, genre, keywords, categories and the series raise fill and price. See [Targeting](https://docs.kontext.so/video/concepts/targeting.md).
3. **Tell us when you don't use an ad.** If you compare our ad with another network and decide against it, call `reject(.outbid(winningPrice:winner:))` with the winning price and the network. It lets us see what we lost and optimize our bids for your traffic. See [Running your own auction](https://docs.kontext.so/video/sdk/swift/guides.md#running-your-own-auction).
4. **Collect the IFA.** Request App Tracking Transparency at a moment that fits your onboarding; the SDK reads the identifier once the viewer allowed it. See [IFA & ATT](https://docs.kontext.so/video/guides/ifa.md).
5. **Integrate a TCF 2.2 consent platform** for EU and UK traffic. Most advertisers won't bid without a valid consent string. See [TCF & CMP](https://docs.kontext.so/video/guides/tcf-cmp.md).
6. **Configure SKAdNetwork.** App-install campaigns need it to measure, and bid more where they can. See [SKAdNetwork](https://docs.kontext.so/video/guides/skadnetwork.md).
7. **Host `app-ads.txt`** with our authorization line, and keep it updated when we send a new one. See [app-ads.txt](https://docs.kontext.so/video/guides/ads-txt.md).
8. **Prefetch at episode start, show at the moment.** `format()` and `load()` take a moment; `show()` is instant. Ask for the pause ad when the episode opens and keep it loaded; the viewer's pause is not the time to start a request. See [Ad lifecycle](https://docs.kontext.so/video/concepts/lifecycle.md).
9. **Prepare the next one in `didEnd`.** The callback that ends one ad is the right place to ask for the next, so there is always one ready.
10. **Resume in `didEnd` and nowhere else.** It fires exactly once per shown ad, whoever ended it: synchronously for an overlay or pause ad, even from your own `dismiss()` or `destroy()`, and after the dismissal animation for a linear ad. One place for the resume logic means no ad ever leaves the player paused.
11. **Call `destroy()` when the viewer leaves the video.** It settles every held ad with the advertiser and releases the WebViews. Prefetch the next episode's ads before that, in its own `VideoAds`.
12. **Work with us on moments and creatives.** Where the pause ad sits, how long an overlay stays, which episodes get a linear ad: we have seen what works across video apps and tune it per publisher. Reach out via [Support](https://docs.kontext.so/video/resources/support.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.