edge-to-edge

Migrates Jetpack Compose apps to adaptive edge-to-edge layouts with proper insets for bars and IME.

6.6k|388|Updated Mar 16, 2026
One-click install
npx skills add https://github.com/android/skills --skill edge-to-edge-android
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: edge-to-edge
Source: https://github.com/android/skills/tree/main/system/edge-to-edge
Command: npx skills add https://github.com/android/skills --skill edge-to-edge-android

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Edge-to-edge Jetpack Compose UIs can end up hidden behind the status bar, navigation bar, or the on-screen keyboard, making buttons, lists, and text input hard to use.

Core Features & Use Cases

  • Adaptive edge-to-edge migration: Adds enableEdgeToEdge and updates Activities so content can draw correctly into system bar areas.
  • System bar + IME inset correctness: Ensures IME insets are handled without overlap, and that input fields remain visible while typing.
  • Consistent component-safe layouts: Applies the right inset strategy for scaffolds, lists, FABs, dialogs, and system bar icon legibility.

Quick Start

Ask an AI to migrate your Jetpack Compose app to edge-to-edge by updating Activities to call enableEdgeToEdge, enabling adjustResize for keyboard scenarios, and wiring system bar/IME insets to the correct composable containers so content stays tappable and text fields remain visible.

Frequently Asked Questions about edge-to-edge

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
Why does my Jetpack Compose UI hide behind the status bar and navigation bar?

Your Jetpack Compose UI hides behind system bars because edge-to-edge mode is not enabled per Activity. You must call enableEdgeToEdge and apply correct window insets via Scaffold PaddingValues to prevent content overlap.

How do I handle the on-screen keyboard overlapping text fields in Jetpack Compose?

To handle the on-screen keyboard overlapping text fields in Jetpack Compose, enable adjustResize in the manifest for keyboard scenarios and apply IME insets to composable containers so input fields remain visible while typing.

How do I prevent double-padding when applying window insets to Compose scaffolds?

Prevent double-padding when applying window insets by routing system bar and IME insets through Scaffold PaddingValues or safe drawing rulers instead of manually padding nested components, avoiding duplicate inset applications.

Does edge-to-edge migration in Jetpack Compose support dialogs and floating action buttons?

Edge-to-edge migration in Jetpack Compose supports dialogs and floating action buttons by applying consistent component-safe inset strategies to prevent these elements from being obscured by system bars or the IME.

What is the best way to migrate an Android app to adaptive edge-to-edge layouts?

The best way to migrate an Android app to adaptive edge-to-edge layouts is updating Activities to call enableEdgeToEdge and wiring system bar and IME insets to the correct composable containers so content stays tappable and visible.

Why are my Compose lists and FABs obscured by system bars after enabling edge-to-edge?

Compose lists and FABs are obscured by system bars after enabling edge-to-edge because correct insets are not applied. Apply the right inset strategy for scaffolds and lists to ensure UI components remain tappable and unobscured.