Troubleshooting
Common problems and what causes them.
rememberFoldState() is always FoldState.None
Expected on JVM desktop, in a browser, on a phone, and in the preview tools. Wrap the content in ProvideFoldState to try a layout. On a real device, check which of the platforms below applies.
Nothing on an iPhone Duo
The device needs iOS 27.1 or later. Earlier systems have no hinge APIs, and Crease stays silent on them. See iPhone Duo.
The angle is null on Android
The device has no hinge angle sensor, or runs Android 10 or older (API below 30). Status and folds can still be there. Design for a missing angle: use the posture for layout and treat a missing angle as flat in effects.
The fold appears a moment after the angle on iOS
The division region lags the hinge. Crease waits for it to agree with the hinge for up to two seconds before it publishes a fold. See iPhone Duo.
FoldAwareTwoPane shows only the first pane
No separating fold crosses the layout, so the fallback applies. The default is FirstOnly. Use SideBySide or Stacked if you want both panes on every device.
A fold of zero width
Seamless panels do that. bounds is a line, not a box, and nothing is hidden. This is correct.
Preview shows the phone layout
A preview has no hinge unless you provide one. Use ProvideFoldState(FoldState.book(...)) and give the preview a size that matches the windowSize you pass, in pixels.
Fold coordinates look wrong
Fold.bounds and FoldState.cutouts are in window coordinates and pixels, not dp and not local to your composable. Convert with LocalDensity when you compare them with sizes in dp.