Packages

@expo/ui

58.0.21 · 19 Oct 2026MIT3.5M / weekRepositoryHomepagenpmAtom feed

96 stable releases, newest first, by release line. Notes are quoted as the maintainers published them.

  1. 58.x · latest line
  2. 58.0.21

    19 Oct 2026
    • [iOS] Fix List.ForEach with data and a children render function. With recycling, List ignored the moveDisabled and deleteDisabled modifiers on a row. With recycling={false}, dragging a row did not reorder it or call onMove, and onDelete received the wrong index.

    • [Web] Stop the community SegmentedControl from logging the useNativeDriver warning when it mounts.

  3. 58.0.20

    16 Oct 2026
    • [iOS] Add an alignment prop to the SwiftUI Host. It sets where the content sits in the host when their sizes differ. A matchContents host anchored to the trailing edge of its row can now keep that edge still while its content animates to a new width.

  4. 58.0.19

    16 Oct 2026
    • Add accessibilityLabel, accessibilityHint (iOS) and testID to the community Slider. The drop-in dropped them, so VoiceOver and TalkBack announced a slider by its value alone and end-to-end tools could not find it. iOS applies them as SwiftUI accessibility modifiers, Android as the semantics and testID modifiers, and web as aria-label and data-testid.

    • [iOS] Stop shipping a precompiled iOS framework. ArrangementView and onHingeChange now work on iOS 27.1 without buildFromSource when the app is built with Xcode 27.1 or later.

  5. 58.0.18

    15 Oct 2026
    • [iOS] Speed up app launch by naming the SwiftUI views without protocol conformance lookups.

    • Fix Android universal TextInput placeholders ignoring textStyle.

    • [iOS] Fix Form and List sections in a Host starting 20pt inside the large title beside the iPhone Duo's rail, where iOS drops its content margin. This works around a SwiftUI bug and applies only on an edge where the inset comes from a bar beside the content.

  6. 58.0.17

    14 Oct 2026
    • deprecated

      [Android] Bump Jetpack Compose UI and Foundation to 1.12.1 and Material3 to 1.5.0-beta01. Add preferredItemWidth to HorizontalCenteredHeroCarousel and deprecate maxItemWidth, matching the Material3 rename. Add TimePickerElementColors props without the Unselected infix (for example clockDialContentColor) and deprecate the old names.

    • [Android] Fix the universal ListItem ignoring testID. The prop was never passed to Compose, so end-to-end tools such as Maestro could not find list rows on Android. It is now applied as the testID modifier, like the universal Button and Checkbox do.

  7. 58.0.16

    13 Oct 2026
    • [Internal] Bump precompiled artifacts due to ABI breakage in expo-modules-jsi, which makes JavaScriptValue a non-copyable struct.

    • [iOS] Fix the community BottomSheet clipping its content when the sheet is narrower than the window, as on iPhone Duo. When the sheet sized itself to its content, the content was pinned to the window width and centered in the sheet, so its leading edge was cut off. The content now takes its width from the sheet and its height from the content. presentationSizing takes a fitted option ({ horizontal, vertical }) to fit a sheet to its content on one axis only.

    • [Android] Fix an RNHostView that ignores touches when a Compose button with a ripple in the same Host was pressed earlier. The ripple container that Compose adds was found first during React Native's touch-target search, so the touch went to the Host instead of the hosted view.

  8. 58.0.15

    9 Oct 2026
    • [iOS] Fix Chart ignoring lineStyle.width on line charts. The line mark applied .lineStyle twice (once for the dash pattern, once for the width), and the first one wins, so lines always rendered at 1 pt. The width and the dash pattern are now set in one StrokeStyle.

    • [Android] Add showTitle and showHeadline to the Jetpack Compose DateTimePicker, DatePickerDialog, DateRangePicker, and DateRangePickerDialog to hide Material 3's title and headline. The community DateTimePicker with presentation="inline" now hides both on Android, matching iOS. To keep the title and headline, use DateTimePicker from @expo/ui/jetpack-compose instead.

    • [Android] Fix a Pressable (or any JS responder) being cancelled when a MaskedView, or any other component that renders a Host, is laid over it. Once React Native grants the JS responder, the responder's view intercepts the touch stream and sends ACTION_CANCEL to its native children, including that Host. The Host reported this cancel as Compose claiming the gesture, which cancelled the press it belonged to. Holds longer than about 30 ms never fired onPress.

  9. 58.0.14

    6 Oct 2026
    • [Android] Fix the community DateTimePicker reading value as a UTC day while minimumDate/maximumDate use the device-local day. In non-UTC timezones the picker could select and return the wrong day — one before minimumDate. value's local calendar day is now sent to Material3 as a UTC day, and the picked day is returned as a local date that keeps value's time of day.

    • [Internal] Import React Native internals from react-native/unstable-internals-do-not-use.

  10. 58.0.13

    5 Oct 2026
    • [iOS] Add ArrangementView component and arrangementViewStyle, splitArrangementLayoutRatio, splitArrangementLayoutSize, splitArrangementFixedLayoutSize, and overlayArrangementEdge modifiers.

    • [Android] Fix TimePickerDialog ignoring elementColors.containerColor.

    • [iOS][tvOS] Fix the tvOS build failing to compile with 'inlineLarge' is unavailable in tvOS when @expo/ui is linked. ToolbarTitleDisplayMode.inlineLarge is unavailable on tvOS, but the inlineLarge case of the toolbarTitleDisplayMode modifier was only gated behind an OS version check that listed tvOS 18.0, so it was compiled into the tvOS slice. It is now guarded by platform and returns nil on tvOS. The same check also required iOS 18.0 / macOS 15.0, so inlineLarge silently fell back to automatic on iOS 17 and macOS 14 even though it is available there; it now applies on those versions.

  11. 58.0.12

    3 Oct 2026
    • [iOS] Added the smooth, snappy, and bouncy spring presets to Animation. Like their SwiftUI counterparts, they take an optional duration and extraBounce.

    • [iOS] Fixed delay() and repeat() modifying the animation they are called on. Chaining from a shared animation, such as Animation.default or one stored in a constant, no longer changes that animation everywhere else it is used.

    • [iOS] Added the navigationBarTitleDisplayMode and toolbarTitleDisplayMode modifiers for controlling navigation and toolbar title presentation.

  12. 58.0.11

    1 Oct 2026
    • [Android] Fix an intermittent performMeasureAndLayout called during measure layout crash that tore down the ReactHost when a Host with matchContents was measured while react-native-reanimated was active. The onLayoutContent event is now posted after the measure pass instead of emitted inside it.

  13. 58.0.10

    1 Oct 2026
    • [android] Fix community/picker Picker not updating its displayed label after a selection or a selectedValue change.

    • [web] Fix ListItem always showing a pointer cursor, even without an onPress, because React Native Web's Pressable applies one unconditionally. A ListItem with no onPress now shows the default cursor instead of misleadingly looking clickable.

    • [iOS][Android] RNHostView matchContents accepts { horizontal, vertical }, so hosted content can take its width from the parent and its height from the content.

  14. 58.0.9

    29 Sep 2026
    • Force-bump all packages, due to migration to changesets.

    • [iOS] Added LazyVStack.ForEach and LazyHStack.ForEach, which render rows from data and keyExtractor with a children function: {({ item, index }) => <Row item={item} />}. Rows are recycled from a small pool around the visible range, so large stacks only render the rows near the viewport. Set recycling={false} to render every row.

    • [android] Fix Switch label rendering one letter per line inside a Host with matchContents.

  15. 58.0.8

    28 Sep 2026
    • [iOS] Export the FrameAlignment type for the alignment parameter of frame().

    • [Android] Add contentDescription to the semantics modifier, so TalkBack can announce a label other than the visible content.

    • Added get() and set() to the universal ObservableState type and to the web implementation of useNativeState, as React Compiler-compliant alternatives to .value.

  16. 58.0.7

    25 Sep 2026
    • [iOS] Added presentationCornerRadius modifier.

    • [iOS] Fixed onPress on universal components such as Row and Column not firing when tapping empty space, such as a Spacer.

  17. 58.0.6

    23 Sep 2026
    • breaking

      [iOS] frame() now matches SwiftUI's two frame overloads, so one call accepts either width/height or min*/ideal*/max*, not both.

    • [iOS] List.ForEach recycles rows from a small pool around the visible range, so large lists only render the rows near the viewport. Deprecated element children in favor of this form.

    • [Android] Added LazyColumn.Items and LazyRow.Items, which render rows from data and keyExtractor with a children function: {({ item, index }) => <Row item={item} />}. Rows are recycled from a small pool around the visible range, so large lists only render the rows near the viewport. Set recycling={false} to render every row.

  18. 58.0.5

    22 Sep 2026
    • [Android] Added the widget-only cornerRadius modifier to jetpack-compose.

    • [iOS] Fixed <Host matchContents> centering its content, and so shifting it by half the height change for a frame, whenever the hosted view was not yet the size of its SwiftUI content.

    • [Android] Cache Material 3 palettes generated from an explicit scheme and seedColor, so getMaterialColors and useMaterialColors stop calling the synchronous native module on every render, and Host stops re-solving the same scheme on every recomposition.

  19. 58.0.4

    21 Sep 2026
    • [iOS] Added the SwiftUI ToolbarItem component with placement and visibilityPriority.

    • [iOS] Added the scrollEdgeEffectStyle modifier.

    • [Android] Fixed modifiers passed to RNHostView being ignored.

  20. 58.0.3

    16 Sep 2026
    • [iOS] Added the SwiftUI NavigationSplitView component, together with the navigationSplitViewStyle and navigationSplitViewColumnWidth modifiers.

  21. 58.0.2

    15 Sep 2026
    • [macOS] Added minimal macOS support.

  22. 58.0.1

    14 Sep 2026
    • Update the native tabs import path in the TabView API reference.

  23. 58.0.0

    10 Sep 2026
    • breaking

      [iOS] Fix <Host> centering its content instead of top-aligning it, so a flex: 1 host matches Android's top-leading layout.

    • breaking

      [iOS] Fix HStack, VStack and GlassEffectContainer collapsing an unset spacing to 0 instead of forwarding nil to SwiftUI, so they now use the system default spacing like Grid, LazyHStack and LazyVStack already do. Pass spacing={0} explicitly to keep the previous layout.

    • breaking

      [Android] Removed the style prop from RNHostView. It set a React Native style on a view that Jetpack Compose positions and sizes; use modifiers instead. Hosted views are now measured where Compose drew them, so a style is no longer needed to keep measure() and the drawn position in agreement.

  24. 57.x
  25. 57.0.9 – 57.0.2517 releases without a noteShow each
    • 57.0.2515 Oct 2026no note
    • 57.0.2414 Oct 2026no note
    • 57.0.2312 Oct 2026no note
    • 57.0.226 Oct 2026no note
    • 57.0.2129 Sep 2026no note
    • 57.0.2024 Sep 2026no note
    • 57.0.1918 Sep 2026no note
    • 57.0.1811 Sep 2026no note
    • 57.0.178 Sep 2026no note
    • 57.0.164 Sep 2026no note
    • 57.0.151 Sep 2026no note
    • 57.0.1426 Aug 2026no note
    • 57.0.1324 Aug 2026no note
    • 57.0.1220 Aug 2026no note
    • 57.0.1114 Aug 2026no note
    • 57.0.1010 Aug 2026no note
    • 57.0.94 Aug 2026no note
  26. 57.0.8

    29 Jul 2026
  27. 57.0.7

    17 Jul 2026

    Reading the note…

  28. 57.0.6

    15 Jul 2026

    Reading the note…

  29. 57.0.5

    15 Jul 2026

    Reading the note…

  30. 57.0.4

    7 Jul 2026

    Reading the note…

  31. 57.0.3

    3 Jul 2026

    Reading the note…

  32. 57.0.2

    1 Jul 2026

    Reading the note…

  33. 57.0.1

    27 Jun 2026

    Reading the note…

  34. 57.0.0

    25 Jun 2026

    Reading the note…

  35. 56.x
  36. 56.0.25 – 56.0.262 releases without a noteShow each
    • 56.0.2617 Aug 2026no note
    • 56.0.256 Aug 2026no note