Skip to content

expo: use expo-hinge and ArrangementView for foldables when moving to SDK 58 #709

Open

Description

@erkamyaman

Expo SDK 58 (on npm as next, 58.0.6) ships first-party foldable support:

  • expo-hinge (expo/expo#50912, Android in #51201): getHinge(), addHingeListener(), isAvailable() and useHinge(). A hinge has an angle in degrees and a status of closed, partiallyOpen, fullyOpen or unknown, and is null on a device without one.
  • ArrangementView in @expo/ui (SwiftUI): a container that places a primary and a secondary view around the fold, for layout.
  • onHingeChange modifier for @expo/ui views, with worklet callbacks (#50909, #50910).

Foldable in @ng-native/expo/foldable wraps the community expo-foldables today, and npm's expo-hinge is still a placeholder ("Reserved name. Use expo-foldables."), so nothing can change on SDK 57.

When the workspace moves to SDK 58:

  1. Have Foldable read expo-hinge, keeping expo-foldables as a fallback so an app that has it keeps working. The posture maps directly (partially-open and partiallyOpen, and so on).
  2. Add <arrangement-view> alongside the other @expo/ui components, since Apple's guidance is that layout around the fold goes through the arrangement and reserved-region APIs, and the hinge is for interactions and effects.
  3. Add an (hingeChange) binding for @expo/ui views, matching onHingeChange.
  4. Update examples/foldbook and the foldable docs page.

Happy to take this on once SDK 58 is latest.

Activity

  1. erkamyaman commented on Oct 9, 2026

    @erkamyaman
    ContributorAuthor

    @ashley-hunter can you assign this to me please? I can't 😂

  2. ashley-hunter commented on Oct 9, 2026

    @ashley-hunter
    Contributor

    Done! Thank you, and thanks for all the fixes!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions