[Google Play Instant](https://developer.android.com/topic/google-play-instant/overview)allows users to interact with your app without needing to install APK(s) on their device. Instead, they can experience your app through the "Try Now" button on the Google Play Store or a URL that you create. This form of delivering content makes it easier for you to increase engagement with your app.

You can instant-enable a feature only if you also instant-enable your app's base module. That's because, if a user wants to experience one of your app's instant-enabled feature modules, their device must also download your app's base module for common code and resources. Keep in mind, to support Google Play Instant, the download for your base module and feature must satisfy several criteria:

- **Maximum size:** The combined size of your instant-enabled base module and your instant-enabled feature module must be at most 10 MB. To learn more, read[Enable instant experiences by reducing app or game size](https://developer.android.com/topic/google-play-instant/overview#reduce-size).
- **Background activity:** An instant-enabled module cannot use[background services](https://developer.android.com/training/run-background-service/create-service). Additionally, such a module cannot[send notifications](https://developer.android.com/training/notify-user/build-notification)when running in the background.

If you create an instant-enabled feature module using[Android Studio 3.5](https://developer.android.com/studio)or higher, as described in this section, the IDE automatically instant-enables both the base and feature module for you by including the following in each module's manifest:  

    <manifest xmlns:dist="http://schemas.android.com/apk/distribution"
        ... >
        <dist:module dist:instant="true" />
        ...

Additionally, when downloading and*installing*your app, instant-enabled feature modules are automatically downloaded and installed with your app's base APK. So, the IDE also includes the following in the instant-enabled feature module.  

        <dist:module ...>
            <dist:delivery>
                <dist:install-time />
            </dist:delivery>
        </dist:module>

This behavior means that when you set`dist:instant="true"`, you cannot also include`<dist:on-demand />`. However, you can request instant-enabled modules on demand*within your instant experience* [using the Play Feature Delivery Library](https://developer.android.com/guide/playcore#java-kotlin-asset-delivery).

### Configure a new module for instant delivery

To add an instant-enabled feature module to your app project using Android Studio, proceed as follows:

1. If you haven't already done so, open your app project in the IDE.
2. Select**File \> New \> New Module**from the menu bar.
3. In the**Create New Module** dialog, select**Instant Dynamic Feature Module** and click**Next**.
4. In the**Configure your new module**section, complete the following:

   1. Select the**Base application module**for your app project from the dropdown menu.
   2. Specify a**Module name** . The IDE uses this name to identify the module as a Gradle subproject in your[Gradle settings file](https://developer.android.com/studio/build#settings-file). When you build your app bundle, Gradle uses the last element of the subproject name to inject the`<manifest split>`attribute in the[feature module's manifest](https://developer.android.com/guide/playcore/feature-delivery/instant#dynamic_feature_manifest).
   3. Specify the module's**package name**. By default, Android Studio suggests a package name that combines the root package name of the base module and the module name you specified in the previous step.
   4. Select the**Minimum API level**you want the module to support. This value should match that of the base module.
   5. Specify the**Module title** using up to 50 characters. The platform uses this title to identify the module to users. For this reason, your app's base module must include the module title as a[string resource](https://developer.android.com/guide/topics/resources/string-resource), which you can translate. When creating the module using Android Studio, the IDE adds the string resource to the base module for you and injects the following entry in the feature module's manifest:

          <dist:module
              ...
              dist:title="@string/feature_title">
          </dist:module>

      | **Note:** If you enable resource shrinking, such as for your release builds, the shrinker may remove the module title string resource if code in your base module does not reference it. To make sure the string resource remains in the build output, include the resource in a[custom resource keep file](https://developer.android.com/studio/build/shrink-code#keep-resources).
   6. Check the box next to**Fusing**if you want this module to be available to devices running Android 4.4 (API level 20) and lower and included in multi-APKs. Android Studio injects the following in the module's manifest to reflect your choice.

          <dist:module>
              <dist:fusing dist:include="true" />
          </dist:module>

5. Click**Finish**.

After Android Studio finishes creating your module, inspect its contents yourself from the**Project** pane (select**View \> Tool Windows \> Project**from the menu bar). The default code, resources, and organization should be similar to those of the standard app module.

After you implement a feature that you want to download on demand, learn how to request it[using the Play Feature Delivery Library](https://developer.android.com/guide/playcore#java-kotlin-asset-delivery).

## Deploy your app

While you're developing your app with support for feature modules, you can deploy your app to a connected device like you normally would by selecting**Run \> Run** from the menu bar (or by clicking**Run** ![](https://developer.android.com/static/studio/images/buttons/toolbar-run.png)in the toolbar).

If your app project includes one or more feature modules, you can choose which features to include when deploying your app by modifying your existing[run/debug configuration](https://developer.android.com/studio/run/rundebugconfig)as follows:

1. Select**Run \> Edit Configurations**from the menu bar.
2. From the left panel of the**Run/Debug Configurations** dialog, select your desired**Android App**configuration.
3. Under**Dynamic features to deploy** in the**General**tab, check the box next to each feature module you want to include when deploying your app.
4. Click**OK**.

By default, Android Studio doesn't deploy your instant-enabled modules as an instant experience or use app bundles to deploy your app. Instead, the IDE builds and installs APKs to your device that are optimized for deployment speed, rather than APK size. To configure Android Studio to instead build and deploy APKs and instant experiences from an app bundle,[modify your run/debug configuration](https://developer.android.com/studio/run/rundebugconfig#android-application).