Appendix C, page 379
You bump targetSdk to 36 and your app suddenly draws behind the status bar with content clipped under the camera cutout. What changed in Android 16, and what is the correct edge-to- edge migration for a Compose app: insets, scaffolds, and the IME?
Answer
Android 16 removes the edge-to-edge opt-out for apps targeting SDK 36: the window always draws behind the system bars, so any screen that assumed an inset content rectangle now slides under the status bar and camera cutout. The migration is insets discipline, not padding hacks: call `enableEdgeToEdge()`, let `Scaffold` consume `contentWindowInsets`, apply `windowInsetsPadding(WindowInsets.safeDrawing)` at the boundary that owns each screen, and handle `WindowInsets.ime` on input screens so the keyboard resizes content instead of covering it. Then audit every screen against cutouts and landscape, because insets are now a correctness surface.
Common mistakes and senior signal
Hardcoding a status-bar height as top padding: it is wrong across devices, breaks in landscape cutouts, and does nothing for the gesture area or IME. Senior signal: applying insets once at the screen boundary rather than sprinkling them per widget, testing with keyboard open near every edge, and naming which surfaces may draw behind bars versus which content must stay clear.
