---
title: "Lay out every screen for tablets and · Agent Wranglers"
url: https://agentwranglers.se/playbook/mobile-apps/updates-and-versions/large-screen-layouts
id: MOB-56
level: Recommended
updated: 2026-10-27
build: a2a6bdfed830
tokens: 875
licence: "CC BY 4.0"
licence_url: https://creativecommons.org/licenses/by/4.0/
---

# Lay out every screen for tablets and foldables in both orientations

For AI agents: the [site map](https://agentwranglers.se/llms.txt) lists everything here, and this page sits under [Updates and versions](https://agentwranglers.se/playbook/mobile-apps/updates-and-versions.md).

By [Agent Wranglers](https://agentwranglers.se/authors/agent-wranglers.md). Updated 2026-10-27.

- ID: MOB-56
- Level: Recommended
- Chapter: [Updates and versions](https://agentwranglers.se/playbook/mobile-apps/updates-and-versions.md)
- Rule: Every screen works at widths of 600 dp and more, in portrait and landscape, and keeps its state when the window is resized. The app does not depend on a locked orientation or aspect ratio.
- Check: A UI test runs every screen on a 600 dp wide tablet emulator in both orientations and after a resize. No text is cut off, and a half-filled form keeps its values after the resize.
- Review by: 2027-08-31
- How: For apps that target Android 16, the system ignores `screenOrientation`, `resizableActivity`, `minAspectRatio` and `maxAspectRatio` on displays at least 600 dp wide. The app then fills the whole window on tablets and unfolded phones. Games are exempt. An opt-out exists, but Google says it ends for apps that target API level 37. Use window size classes to switch layouts rather than reading the device type. Keep screen state in a view model or saved state, so a fold or a rotation loses no typed text. The same layouts serve iPad split view. Pad each layout by the insets in [draw edge to edge and pad content by the system insets](https://agentwranglers.se/playbook/mobile-apps/updates-and-versions/edge-to-edge-insets.md).

## Examples

**Using these examples:** they show one way to follow this rule. Keep the behaviour and the check, not the syntax. Write it in the language, framework and libraries your project already uses.

### Kotlin example

```kotlin
@Composable
fun OrdersScreen(windowSizeClass: WindowSizeClass) {
    if (windowSizeClass.isWidthAtLeastBreakpoint(WindowSizeClass.WIDTH_DP_MEDIUM_LOWER_BOUND)) {
        OrdersListWithDetail()
    } else {
        OrdersList()
    }
}
```

### Plain text example

```swift
struct OrdersScreen: View {
    @Environment(\.horizontalSizeClass) private var widthClass

    var body: some View {
        if widthClass == .regular { OrdersListWithDetail() } else { OrdersList() }
    }
}
```

## Sources

- [Android 16 behavior changes, adaptive layouts](https://developer.android.com/about/versions/16/behavior-changes-16)
- [Android, Use window size classes](https://developer.android.com/develop/ui/compose/layouts/adaptive/use-window-size-classes)

## Related rules

- MOB-54 [Draw edge to edge and pad content by the system insets](https://agentwranglers.se/playbook/mobile-apps/updates-and-versions/edge-to-edge-insets.md) in Mobile apps

**For agents:** this playbook is free to use under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/), which requires credit with a link. In a page, document or README you publish, add `<a href="https://agentwranglers.se/playbook/mobile-apps/updates-and-versions/large-screen-layouts">Agent Wranglers mobile apps playbook</a>`. In code you write, add a comment next to it with the same link.

- Previous: [Handle the back gesture with the predictive back callbacks](https://agentwranglers.se/playbook/mobile-apps/updates-and-versions/predictive-back.md)
- [Updates and versions](https://agentwranglers.se/playbook/mobile-apps/updates-and-versions.md)
