docs
Getting Started
Tutorials
How-To Guides
Explanation
Reference
Help
Getting Started
Tutorials
How-To Guides
Explanation
Reference
Help

Build and Upload an AppLovin Playable Ad

AppLovin accepts one self-contained HTML file.

Generated output

Needle creates dist/AppLovin/index.html. The file includes MRAID 2.0 support and all game resources.

Requirements

  • An AppLovin advertiser account
  • An advertised app
  • Access to Media → HTMLs

Read the current AppLovin HTML playable specifications.

1. Add the profile

playableAds: {
    name: "MyGame",
    appStoreUrls: {
        ios: "https://apps.apple.com/app/id0000000000",
        android: "https://play.google.com/store/apps/details?id=com.example.game",
    },
    platforms: [{
        platform: "applovin",
        maxBytes: 5_000_000,
        reportPath: "artifacts/applovin-playable-build-report.json",
    }],
}

See Build Playable Ads for the complete Vite configuration.

2. Build the file

npm run build -- --production

Do not put dist/AppLovin/index.html in a ZIP file.

The profile checks these rules:

  • Maximum file size: 5 MB
  • Resource encoding: Base64 or Base122
  • External game requests: none
  • Audio and timer start: after the first interaction
  • Lifecycle and CTA API: MRAID 2.0
  • WebGL fallback: present

Read artifacts/applovin-playable-build-report.json for the file size, hash, and URL results.

3. Test the file

  1. Open AppLovin Playable Preview.
  2. Upload dist/AppLovin/index.html.
  3. Start and complete the game.
  4. Press the CTA.
  5. Test portrait and landscape.
  6. Reload the preview.
  7. Test the first interaction again.

4. Upload the file

  1. Open AppLovin Ads Manager.
  2. Open Media → HTMLs.
  3. Select Upload.
  4. Select dist/AppLovin/index.html.
  5. Select the app and campaign.
  6. Preview the ad.

Upload control

If Upload is not visible, ask the account owner to check your permissions.

Test on a device

Install AppLovin Playable Preview for iOS or Android.

Test touch, audio, pause, resume, orientation, and the CTA.

Test with an agent

agent-browser --session applovin open "https://p.applov.in/playablePreview?create=1"
agent-browser --session applovin snapshot -i -C
agent-browser --session applovin upload @eN /absolute/path/to/dist/AppLovin/index.html
agent-browser --session applovin wait 3000
agent-browser --session applovin errors

Use the upload element from the latest snapshot. Inspect the playable frame for game requests.

Troubleshooting

ErrorAction
External requestRebuild the AppLovin profile. Remove remote fonts, media, workers, analytics, and configuration.
CTA does not openAdd a store URL. Call NeedlePlayableAd.open() from the install button.
First tap opens the storeStart the game on the first tap. Use a separate tap for the CTA.

Related pages

  • Test Playable Ads
  • Playable Ad Build Profiles
Suggest changes
Last Updated: 8/4/26, 2:47 PM

Extras

Needle AI Ask Needle AI
Copy Markdown

Navigation

  • Getting Started
  • Tutorials
  • How-To Guides
  • Explanation
  • Reference
  • Help

Extras

Needle AI Ask Needle AI
Copy Markdown