Create an instant-enabled app bundle  |  Other Play guides  |  Android Developers Skip to main content Essentials Build AI experiences Build AI-powered Android apps with Gemini APIs and more. Get started Get started Create your first app. Use Compose for UI and adaptive app development to support multiple device form factors. Hello, world! Developer Verification Adaptive apps Compose for UI AI-powered IDE Training Monetization with Play ↗️ Optimize by form factor Build apps that optimize the user experience on phones, tablets, foldables, cars, XR, and more. Phones, tablets, foldables Android for Cars Android TV Android XR Googlebook ChromeOS Wear OS Build by category Learn to build for your use case by following Google's prescriptive and opinionated guidance. Games Camera & media Social & messaging Health & fitness Productivity Enterprise apps Get the latest Stay in touch with the latest releases throughout the year, join our preview programs, and give us your feedback. Latest updates Experimental updates Android Studio preview Jetpack & Compose libraries Wear OS releases Privacy Sandbox ↗️ Design & Plan Excellent Experiences Build the best experiences for your best users. Learn more UI Design Design a beautiful user interface using Android best practices. Design for Android Mobile Desktop experiences XR Headsets & XR Glasses AI Glasses Widgets Wear OS Android TV Android for Cars Architecture Design robust, testable, and maintainable app logic and services. Introduction Libraries Navigation Modularization Testing Kotlin Multiplatform Quality Plan for app quality and align with Play store guidelines. Overview Core value User experience Accessibility Technical quality Excellent Experiences Security Safeguard users against threats and ensure a secure Android experience. Overview Privacy Permissions Identity Fraud prevention Develop Gemini in Android Studio Your AI development companion for Android development. Learn more Get Android Studio Core areas Get the samples and docs for the features you need. Samples Multidevice support User interfaces Background work Data and files Connectivity All core areas ⤵️ Tools and workflow Use the IDE to write and build your app, or create your own pipeline. Write and debug code Build projects Test your app Performance Command-line tools Gradle plugin API Android Bench Device tech Write code for form factors. Connect devices and share data. Phones, tablets, foldables ChromeOS Android for Cars Android TV Android XR Wear OS Android Health Better Together All devices ⤵️ Libraries Browse API reference documentation with all the details. Android platform Jetpack libraries Compose libraries Google Play services ↗️ Google Play SDK index ↗️ Google Play Play Console Publish your app or game and grow your business on Google Play. Go to Play Console Learn more ↗️ Fundamentals Learn how to engage users, monitize, and secure your app. Play Monetization Play Integrity Play Policies Play Programs ↗️ Games Dev Center Develop and deliver games. Get tools, downloads, and samples. Overview Play Asset Delivery Play Games Services Play Games on PC Level Up guidelines All Play guides ⤵️ Libraries Browse API reference documentation with all the details. Play Feature Delivery Play In-app Updates Play In-app Reviews Play Install Referrer Google Play services ↗️ Google Play SDK index ↗️ All Play libraries ⤵️ Tools & resources Tools for publishing, promoting, and managing your app. Android App Bundles Brand & marketing Play Console APIs ↗️ Blog the Android Developer's Blog Read the latest Explore the authors → Explore categories Case Studies Real-world results from real-world users. Explore how different teams use our tools to achieve their goals. Events & Programs Get the details on upcoming webinars, workshops, meetups, and special initiatives designed to help you grow. Product News Stay in the loop with the latest updates, feature releases, and behind-the-scenes looks at how we’re evolving. Community Discover stories from our users, spotlight features, and the collaborative projects that bring us all together. How-tos From quick tips to deep-dive tutorials, these step-by-step guides are designed to help you work smarter and faster. / English Deutsch Español – América Latina Français Indonesia Italiano Polski Português – Brasil Tiếng Việt Türkçe Русский עברית العربيّة فارسی हिंदी বাংলা ภาษาไทย 中文 – 简体 中文 – 繁體 日本語 한국어 Android Studio Sign in Google Play Other Play guides Essentials More Design & Plan More Develop More Google Play More Blog More Android Studio Android App Bundles About app bundles Configure the base module Build and test your app bundle Device targeting Add code transparency About the app bundle format Frequently asked questions APK expansion files Multiple APK support About multiple APKs Create multiple APKs for different API levels Create multiple APKs for different screen sizes Create multiple APKs for different GL textures ⍈ Create multiple APKs with several dimensions Engage SDK Engage SDK Developer Preview About Engage SDK Engage SDK Watch integration guide Engage SDK Listen integration guide Engage SDK Read integration guide Engage SDK TV integration guide About Engage SDK TV Publish continue watching data Overview Integrate on device Integrate with REST API Publish device entitlements Publish recommendations Publish to the featured carousel Engage SDK Shopping integration guide Engage SDK Food integration guide Engage SDK Social integration guide Engage SDK Travel integration guide Engage SDK Health & Fitness integration guide Engage SDK Other Verticals integration guide Engage SDK integration workflow Engage SDK Cluster publishing guidelines Engage SDK Frequently asked questions Engage SDK Release Notes Engage SDK Sample Apps Play app distribution How app updates work Filters on Google Play Release audience restriction Play as you Download About Play as you Download Best practices Play Instant About Google Play Instant Get started with instant apps Create an instant-enabled app bundle UX best practices for apps Get started with instant games About instant games Unity plugin UX best practices for games Migrate to Android App Bundles Implement cloud delivery of assets Support Google Play Games Services Instant Play games Instant Play games checklist Reduce the size of your instant app or game Add ads to your instant app or game Provide multiple entry points Integrate with Firebase Add Google Analytics for Firebase to your instant app Use Firebase Dynamic Links with instant apps Technical requirements checklist Google Play Instant policy Resources Reference Code samples SDK release notes Instant App Intents Support Known issues StackOverflow Application licensing About application licensing Licensing overview Setting up licensing Adding server-side verification Adding client-side verification Licensing reference Play Asset Delivery About Play Asset Delivery Integrate asset delivery (Kotlin and Java) Integrate asset delivery (Native) Integrate asset delivery (Unity) Device targeting for asset delivery Target texture compression formats Test asset delivery Play Core libraries Play Developer APIs Play Feature Delivery About Play Feature Delivery Configure install-time delivery Configure conditional delivery Configure on-demand delivery On-demand delivery best practices Configure instant delivery Additional resources Play for on-device AI Play Games ⍈ Play in-app reviews About in-app reviews Integrate in-app reviews (Kotlin or Java) Integrate in-app reviews (Native) Integrate in-app reviews (Unity) Integrate in-app reviews (Unreal Engine) Test in-app reviews Play in-app updates About in-app updates Support in-app updates (Kotlin or Java) Support in-app updates (Native) Support in-app updates (Unity) Support in-app updates (Unreal Engine) Test in-app updates Play in-app install prompts About in-app install prompts Integrate in-app install prompts (Kotlin or Java) Test in-app install prompts Play Install Referrer About Play Install Referrer Play Install Referrer Library Overview Reference Release notes Play Install Referrer API Play Points About Play Points In-app products Create in-app products and promotions Detect and deliver in-app products Test in-app products One-time products Create one-time products and promotions Detect and deliver one-time products Test one-time products Play requirements Target API level requirement Support 64-bit architectures Build AI experiences Get started Get started Hello, world! Developer Verification Adaptive apps Compose for UI AI-powered IDE Training Monetization with Play ↗️ Optimize by form factor Phones, tablets, foldables Android for Cars Android TV Android XR Googlebook ChromeOS Wear OS Build by category Games Camera & media Social & messaging Health & fitness Productivity Enterprise apps Get the latest Latest updates Experimental updates Android Studio preview Jetpack & Compose libraries Wear OS releases Privacy Sandbox ↗️ Excellent Experiences Learn more UI Design Design for Android Mobile Desktop experiences XR Headsets & XR Glasses AI Glasses Widgets Wear OS Android TV Android for Cars Architecture Introduction Libraries Navigation Modularization Testing Kotlin Multiplatform Quality Overview Core value User experience Accessibility Technical quality Excellent Experiences Security Overview Privacy Permissions Identity Fraud prevention Gemini in Android Studio Learn more Get Android Studio Core areas Samples Multidevice support User interfaces Background work Data and files Connectivity All core areas ⤵️ Tools and workflow Write and debug code Build projects Test your app Performance Command-line tools Gradle plugin API Android Bench Device tech Phones, tablets, foldables ChromeOS Android for Cars Android TV Android XR Wear OS Android Health Better Together All devices ⤵️ Libraries Android platform Jetpack libraries Compose libraries Google Play services ↗️ Google Play SDK index ↗️ Play Console Go to Play Console Learn more ↗️ Fundamentals Play Monetization Play Integrity Play Policies Play Programs ↗️ Games Dev Center Overview Play Asset Delivery Play Games Services Play Games on PC Level Up guidelines All Play guides ⤵️ Libraries Play Feature Delivery Play In-app Updates Play In-app Reviews Play Install Referrer Google Play services ↗️ Google Play SDK index ↗️ All Play libraries ⤵️ Tools & resources Android App Bundles Brand & marketing Play Console APIs ↗️ the Android Developer's Blog Read the latest Explore the authors → Explore categories Case Studies Events & Programs Product News Community How-tos Android Developers Google Play Other Play guides Create an instant-enabled app bundle Stay organized with collections Save and categorize content based on your preferences. Warning: Google Play Instant will no longer be available. Starting December 2025, Instant Apps cannot be published through Google Play, and all Google Play services Instant APIs will no longer work. Users will no longer be served Instant Apps by Play using any mechanism. We're making this change based on developer feedback and our continuous investments to improve the ecosystem since the introduction of Google Play Instant. To continue optimizing for user growth, we encourage developers to refer users to their regular app or game, using deeplinks to redirect them to specific journeys or features when relevant. You create a Google Play Instant experience by including it as part of an Android App Bundle. Such a bundle is known as an instant-enabled app bundle. This document shows you how to set up your development environment for instant-enabled app bundles, as well as how to configure, build, test, and publish an instant-enabled app bundle. If you have an existing instant app project that uses the deprecated feature plugin (com.android.feature), learn how to migrate your instant app to support Android App Bundles. Note: In order to publish an app bundle, you must opt into Play App Signing. Set up development environment To provide an instant experience within an app bundle, you need access to the Google Play Instant Development SDK. You can install the SDK using one of the following methods: Install Android Studio 3.6 or higher. After opening Android Studio, download the Google Play Instant Development SDK from the SDK Tools tab in the SDK Manager. Install from the command line: cd path/to/android/sdk/tools/bin && \ ./sdkmanager 'extras;google;instantapps' Additionally, if you want to test your instant experience locally, get access to either a physical or virtual device. Learn about the required execution conditions Google Play Instant runs instant-enabled app bundles in a special kind of SELinux sandbox for added security. This sandbox permits a subset of permissions, as well as limited types of interactions with other apps. The following sections explain the characteristics of this sandbox in more detail. Supported permissions and operations Instant-enabled app bundles can only use permissions from the following list: ACCESS_COARSE_LOCATION ACCESS_FINE_LOCATION ACCESS_NETWORK_STATE BILLING – Deprecated as of Play Billing Library 1.0. CAMERA INSTANT_APP_FOREGROUND_SERVICE – Only in Android 8.0 (API level 26) and higher. INTERNET READ_PHONE_NUMBERS – Only in Android 8.0 (API level 26) and higher. RECORD_AUDIO VIBRATE WAKE_LOCK Handling common unsupported permissions The following is a list of common, non-supported permissions that you must remove from your application and the recommended migration path for each: ACCESS_WIFI_STATE: Use ACCESS_NETWORK_STATE, which should provides information similar to ACCESS_WIFI_STATE. BILLING: This is a deprecated permission. Use the Google Play Billing Library, which no longer requires the com.android.vending.BILLING permission. READ/WRITE_EXTERNAL_STORAGE: Instant apps do not have access to external storage; use internal storage instead. com.google.android.c2dm.permission.RECEIVE and permission.C2D_MESSAGE: C2DM is deprecated. Migrate to Firebase Cloud Messaging (FCM). FCM does not need any additional permissions to work. In addition, instant-enabled app bundles cannot do the following: Use background services. Send notifications when running in the background. Access to installed apps When developing an instant experience, keep in mind that it cannot interact with installed apps on a device unless one of the following is true: One or more activities within an installed app has set its android:visibleToInstantApps element to true – This element is available to apps running Android 8.0 (API level 26) or higher. An installed app contains an intent filter that includes CATEGORY_BROWSABLE. The instant experience is sending an intent using either the ACTION_SEND, ACTION_SENDTO, or ACTION_SEND_MULTIPLE action. Configure your project for instant experiences To be compatible with Google Play Instant, you must configure several aspects of your instant-enabled app bundle carefully. The following sections describe these considerations. Declare project dependencies To use the Google Play Instant APIs in your app, include the following declaration in your app module's build.gradle configuration file: Groovy implementation "com.google.android.gms:play-services-instantapps:17.0.0" Kotlin implementation("com.google.android.gms:play-services-instantapps:17.0.0") Define the correct version codes The version code of your app's instant experience needs to be less than the version code of the installable app. The expectation is that users move from the Google Play Instant experience to downloading and installing the app onto their device. The Android framework considers this transition to be an app update. Note: If the user has the installed version of your app on their device, that installed version always runs instead of your instant experience. This is true even if the installed version is an older version of your app compared to your instant experience. To make sure that you follow the versioning scheme that users expect, follow one of these strategies: Restart the version codes for the Google Play Instant experience at 1. Increase the version code of the installable APK by a large number, such as 1000, to ensure that there is enough space for your instant experience's version number to increase. It's OK to develop your instant app and your installable app in two separate Android Studio projects. If you do so, however, you must do the following to publish your app on Google Play: Use the same package name in both Android Studio projects. In the Google Play Console, upload both variants to the same application. Note: The version code isn't a user-facing value and is primarily used by the system. The user-facing version name has no restrictions. For more details on setting your app's version, see Version your app. Update the target sandbox version Your instant app's AndroidManifest.xml file needs to be updated to target the sandbox environment that Google Play Instant supports. You can complete this update by adding the android:targetSandboxVersion attribute to your app's <manifest> element, as shown in the following code snippet: <manifest xmlns:android="http://schemas.android.com/apk/res/android" ... android:targetSandboxVersion="2" ...> For more information, see documentation on the targetSandboxVersion attribute. Declare instant-enabled app modules You can declare that your app bundle supports instant experiences using one of the following methods: If you have an existing app bundle that contains only a base module, you can instant-enable the app bundle as follows: Open the Project panel by selecting View > Tool Windows > Project from the menu bar. Right-click on your base module, typically named 'app', and select Refactor > Enable Instant Apps Support. In the dialog that appears, select your base module from the dropdown menu. Click OK. Android Studio adds the following declaration to the module's manifest: <manifest ... xmlns:dist="http://schemas.android.com/apk/distribution"> <dist:module dist:instant="true" /> ... </manifest> Note: By default, the base module of an app bundle is called app. If you have an existing app bundle that contains multiple modules, you can Create an instant-enabled feature module. This process also instant-enables your app's base module, giving you the option to support multiple instant entry points within your app. Note: A given module can contain multiple activities. For an app bundle to be instant-enabled, however, the combined download size of the code and resources within all instant-enabled modules must be at most 15 MB. Add support for sign-in If your instant experience allows users to sign in, your instant-enabled app bundle must support Smart Lock for Passwords on Android. If you are building an "Instant play" game, you should use Google Play Games Services sign-in instead. Support the execution environment To be compatible with the SELinux sandbox in which instant experiences run, keep the following in mind when creating your instant-enabled app bundle: Don't share the value of myUid(), which is your app process's kernel-assigned UID. If your app targets Android 8.1 (API level 27) or lower, create a Network Security Config file, and set cleartextTrafficPermitted to false. Instant experiences don't support HTTP traffic. For apps that target Android 9 or higher, cleartext traffic is disabled by default. Your instant experience remains downloaded on a user's device until the instant experience cache is cleared, which occurs in one of the following situations: The instant experience cache is garbage-collected because the device is running low on available memory. The user restarts their device. If either process occurs, the user must re-download your instant experience in order to interact with it. If the system is running very low on storage space, it's possible that your instant experience's user data is removed from internal storage. Therefore, it's recommended to periodically sync user data with your app's server so that the user's progress is preserved. Add logic for instant experience workflows After you configure your app bundle so that it supports instant experiences, add the logic that's shown in the following sections. Check whether app is running instant experience If some of your app's logic depends on whether the user is engaged in your instant experience, call the isInstantApp() method. This method returns true if the currently-running process is an instant experience. Display an install prompt If you are building a trial version of your app or game, Google Play Instant allows you to display a prompt within your instant experience, inviting users to install the full experience on their device. To display this prompt, use the InstantApps.showInstallPrompt() method, as shown in the following code snippet: Kotlin class MyInstantExperienceActivity : AppCompatActivity { // ... private fun showInstallPrompt() { val postInstall = Intent(Intent.ACTION_MAIN) .addCategory(Intent.CATEGORY_DEFAULT) .setPackage(your-installed-experience-package-name) // The request code is passed to startActivityForResult(). InstantApps.showInstallPrompt(this@MyInstantExperienceActivity, postInstall, request-code, /* referrer= */ null) } } Java public class MyInstantExperienceActivity extends AppCompatActivity { // ... private void showInstallPrompt() { Intent postInstall = new Intent(Intent.ACTION_MAIN) .addCategory(Intent.CATEGORY_DEFAULT) .setPackage(your-installed-experience-package-name); // The request code is passed to startActivityForResult(). InstantApps.showInstallPrompt(MyInstantExperienceActivity.this, postInstall, request-code, /* referrer= */ null); } } Transfer data to an installed experience If the user enjoys your instant experience, they might decide to install your app. To provide a good user experience, it's important that the user's data is transferred from your instant experience to the full version of your app. If the user is using a device that runs Android 8.0 (API level 26) or higher, and if your app specifies a targetSandboxVersion of 2, then the user's data is transferred automatically to the full version of your app. Otherwise, you must transfer the data manually. To do so, use one of the following APIs: For users who use devices that run Android 8.0 (API level 26) and higher, use the Cookie API - sample app If users can interact with your experience on devices that run Android 7.1 (API level 25) and lower, add support for the Storage API - sample app Build the app bundle You can use either Android Studio or the command-line interface to build your instant-enabled app bundle. Android Studio Using Android Studio, you can build your app bundle by selecting Build > Build Bundle(s) / APK(s) > Build Bundle(s). For more information about building your project, see Build your project. Command-line interface You can also build the app bundle from the command line using Gradle. Support 64-bit architectures Apps published on Google Play need to support 64-bit architectures. Adding a 64-bit version of your app provides performance improvements and sets you up for devices with 64-bit-only hardware. Learn more about 64-bit support. Test the instant experience Before publishing your instant-enabled app bundle, you can test the instant experience from one of the following locations to verify functionality: Install onto a local device using Android Studio. Install onto a local device using the command-line interface. Publish to the internal test track on the Google Play Console. Note: Instant experiences are available only on devices running Android 8.0 (API level 26) or higher. Android Studio To test your app's instant experience on a local machine using Android Studio, complete the following steps: If you have an installed version of your app on your test device, uninstall it. In Android Studio, from the installation options that appear on the General tab of the Run/Debug Configurations dialog, enable the Deploy as instant app checkbox. Select Run > Run in the menu bar, or click Run in the toolbar, then choose the device where you'd like to test your app's instant experiences. Your app's instant experience loads on the test device that you've chosen. Command-line interface To test your app's instant experience on a local machine using the command line, complete the following steps: If you have an installed version of your app on your test device, uninstall it. Sideload and run your instant app on your test device by entering the following command: ia run output-from-build-command Note: You can provide alternative information to ia run to launch an instant experience on a test device. For more information, execute the command: ia help run. Internal test track To test your app's instant experience from the Play Store or a banner on your website, publish the app to the internal test track on the Play Console. To publish your app to the internal test track, complete the following steps: Upload your app bundle by following the steps in the Upload your app bundle to the Play Console guide. Prepare the uploaded bundle for a release to the internal test track. For more information, see the support article on how to Prepare & roll out releases. Sign into an internal tester account on a device, then launch your instant experience from one of the following surfaces: The Try Now button from your app's Play Store listing. A link from a banner on your app's website. Note: When you use Google Play's internal test track, the Play Console doesn't apply the size limits discussed in the Google Play Instant overview. Therefore, you can test and internally showcase an instant experience, even if it's larger than 15 MB. Publish the app bundle to the production track Note: The Designed for Families program is not currently compatible with Google Play Instant. If your app or game is not designed for children you will need to disenroll from the Designed for Families program in order to publish an instant app or game.Note: From June 2023 on, only instant apps published using app bundles are available to users. Please ensure all APK based instant apps have been updated to instant enabled bundles. To publish your instant-enabled app bundle, complete the following steps: If you haven't already, sign your app bundle with a release key and upload the app bundle to the Play Console. In the Play Console, open Release management > Android Instant Apps, then navigate to the instant app production track. Select Update from Library, then select the instant-enabled app bundle that you've uploaded. Choose where to publish your instant experience It's possible to launch an instant experience of your app in a subset of the countries and regions where people can install your app. This capability is useful in cases where you want to promote your app's instant experience to users who reside in a specific set of countries and regions. Additional resources To learn more about creating instant experiences and Android App Bundles, see the following resources: Video: Bundling an App in an Instant Learn how to add an instant experience to an Android App Bundle in this session from Android Dev Summit '18. Video: Publish smaller apps with the Android App Bundle Learn how app bundles help you develop your app more quickly and create smaller APKs for your users. Codelab: Your First Android App Bundle A step-by-step guide for creating an Android App Bundle and adding features to it. The Android App Bundle Format Learn more about how the bundletool command-line program organizes an app bundle from your app's code and resources. Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates. Last updated 2026-06-24 UTC. [[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2026-06-24 UTC."],[],[]] X Follow @GooglePlayBiz for news and support Medium Read articles and industry thoughts from the Play team LinkedIn Connect with Google Play business community Developer Help Get help from the Google Play Developer Help Community More Android Android Android for Enterprise Security Source News Blog Podcasts Discover Gaming Machine Learning Health & Fitness Camera & Media Privacy 5G Android Devices Large screens Wear OS ChromeOS devices Android for cars Android TV Releases Android 17 Android 16 Android 15 Android 14 Android 13 Android 12 Android 11 Documentation and Downloads Android Studio guide Developers guides API reference Download Studio Android NDK Support Report platform bug Report documentation bug Google Play support Join research studies Android Chrome Firebase Google Cloud Platform All products Privacy License Brand guidelines Manage cookies Get news and tips by email Subscribe English Deutsch Español – América Latina Français Indonesia Italiano Polski Português – Brasil Tiếng Việt Türkçe Русский עברית العربيّة فارسی हिंदी বাংলা ภาษาไทย 中文 – 简体 中文 – 繁體 日本語 한국어