App Bundles are now the only publishing format on Google Play, and dynamic delivery has matured into a genuine architecture tool: feature modules, asset packs and on-demand resources let an app ship what each device needs. Teams that understand the mechanics get smaller installs and better conversion; teams that do not fight mysterious delivery behavior.

Smaller installs, automatic splits

The bundle lets Google Play serve a device-specific APK containing only the code and resources that device needs. The size savings are automatic and significant, especially for apps with large camera, maps, or ML asset libraries.

Dynamic features have a cost

On-demand modules add build complexity, install-time edge cases, and class-loading subtleties. Reserve them for genuinely optional large features rather than splitting your app into modules for architectural tidiness alone.

Mobile illustration
Illustration: Mobile — photo via Unsplash

Test the delivery matrix

Dynamic delivery fails in ways that only appear on specific device configurations. Test install, on-demand download, and upgrade paths on low-storage devices and poor connections, because that is where users hit module delivery errors.

How delivery decisions are made

Play generates device-specific APKs from the bundle using configuration — screen density, ABI, language and feature requirements — then serves the optimal split. Feature modules marked install-time ship immediately; on-demand modules download when a feature is first invoked. The engineering implication: module boundaries must be real (no tangle of internal references), and deferred features need a loading and failure UX because downloads happen at runtime, possibly on poor networks.

Asset packs, testing and pitfalls

Fast-follow and install-time asset packs control when large assets arrive — critical for games and media apps that previously shipped 800MB to everyone. Test delivery with internal testing tracks across real device configurations: the common bugs are module dependency cycles, resources referenced across module boundaries, and on-demand installs failing silently behind a feature flag. Size budgets per module keep the bundle honest as the app grows.

Mobile illustration
Illustration: Mobile — photo via Unsplash

Key takeaways

  • Module boundaries must be real for delivery splits to work.
  • On-demand features need download, loading and failure UX.
  • Test across device configurations on internal tracks before rollout.

Final thoughts

App Bundles turned install size into an engineering variable that affects store conversion directly, and teams that treat modules and asset packs as delivery design — not just code organization — ship materially lighter apps.

Sources & further reading