# Bottom Sheet release notes (/docs/native/releases/react-native-bottom-sheet)

Every version of `@delacour/react-native-bottom-sheet`. The headless bottom sheet engine `BottomSheet` is built on. It shares one version with the other Delacour packages — see [Release channels](/docs/native/releases/channels).

## 0.8.0 [#080]

[GitHub release](https://github.com/delacournz/delacour-ui/releases/tag/v0.8.0)

No changes to this package. It moved to keep the four versions in step.

## 0.7.0 [#070]

[GitHub release](https://github.com/delacournz/delacour-ui/releases/tag/v0.7.0)

### Patch changes [#patch-changes]

- [#323](https://github.com/delacournz/delacour-ui/pull/323) The sheet's Android back listener no longer re-subscribes when its methods change. An inline `onOpenChange` changed them on every parent render, and because `BackHandler` calls the newest listener first, the sheet's listener moved ahead of an overlay opened over it.

## 0.6.0 [#060]

[GitHub release](https://github.com/delacournz/delacour-ui/releases/tag/v0.6.0)

### Patch changes [#patch-changes-1]

- [#298](https://github.com/delacournz/delacour-ui/pull/298) `asChild` keeps the handler it donates when the child forwards an unset one. `<BottomSheet.Trigger asChild><Button onPress={maybe} /></BottomSheet.Trigger>` with `maybe` undefined now opens the sheet; before, the child's `undefined` replaced the trigger's `onPress`.

## 0.3.0 [#030]

[GitHub release](https://github.com/delacournz/delacour-ui/releases/tag/%40delacour%2Freact-native-bottom-sheet%400.3.0)

### Minor changes [#minor-changes]

- [#278](https://github.com/delacournz/delacour-ui/pull/278) `BottomSheet` takes `keyboardLiftLimit="highestSnapPoint"`: the keyboard lifts the sheet no higher than its highest snap point, so a sheet resting there holds still and its body shrinks by the keyboard instead. `Combobox` opens at its full height with it, so its sheet no longer opens half-height, jumps up when the search field's keyboard rises, and drops back as the keyboard leaves on close. `resolveComboboxSheetHeight` takes only `topInset` and `windowHeight` now.

- [#262](https://github.com/delacournz/delacour-ui/pull/262) `BottomSheet` takes `keyboardLiftLimit`. Set to `"maxDynamicContentSize"`, a sheet sized to its content is lifted by a keyboard only as far as its cap, decided on the UI thread from the keyboard's first frame. `Select` opts in, so a searchable select no longer shoots to the top of the screen when the keyboard opens and then settles back to its cap.

### Patch changes [#patch-changes-2]

- [#269](https://github.com/delacournz/delacour-ui/pull/269) `Combobox` keeps its keyboard up while the results scroll; only a drag that carries the sheet down, or a close, puts it away. The sheet's scrollables now take a caller's `keyboardDismissMode` instead of always using `interactive`.

- [#284](https://github.com/delacournz/delacour-ui/pull/284) Components no longer pass dependency arrays to Reanimated's `useAnimatedStyle`, `useDerivedValue`, `useAnimatedReaction` and `useAnimatedScrollHandler`. Reanimated ignores them on native and warned once per app in development: "Dependencies should only be used on the web and are always ignored on native". Nothing changes at runtime; the worklets still rebuild from their closures.

## 0.2.0 [#020]

[GitHub release](https://github.com/delacournz/delacour-ui/releases/tag/%40delacour%2Freact-native-bottom-sheet%400.2.0)

### Minor changes [#minor-changes-1]

- [#226](https://github.com/delacournz/delacour-ui/pull/226) Move to Expo SDK 58: React Native 0.88, React 19.3, Gesture Handler 3

  The peer floors are now `react-native >=0.88` and `react-native-gesture-handler >=3.3`. React Native
  0.88 types its components through the strict API by default, so every ref is typed as the host
  instance it receives — `ViewInstance`, `TextInputInstance`, `ScrollViewInstance` — rather than as
  the component, and `ScreenScrollViewRef` is now `ScrollViewInstance`. Those types do not exist
  before 0.88. The sheet's and the drawer's pans keep the builder API under Gesture Handler 3's
  `LegacyPanGesture` type. The CLI's
  `verify:expo` scaffolds against SDK 58.

## 0.1.0 [#010]

[GitHub release](https://github.com/delacournz/delacour-ui/releases/tag/%40delacour%2Freact-native-bottom-sheet%400.1.0)

### Minor changes [#minor-changes-2]

- [#116](https://github.com/delacournz/delacour-ui/pull/116) First alpha of `@delacour/react-native-bottom-sheet`, the headless bottom sheet engine `@delacour/react-native-ui`'s `BottomSheet` is built on. Snap points and dynamic sizing in height space, handle, content and scrollable pans, over-drag, pan-down-to-close, a backdrop, keyboard behaviours driven by `react-native-keyboard-controller`, a sticky footer counted in the dynamic snap point, `ScrollView` / `FlatList` / `SectionList` bodies, a teleport portal with `BottomSheetProvider` and `BottomSheet.Host`, detached sheets, a typed step machine (`defineSheetMachine`, `BottomSheet.Steps`), an imperative ref and worklet haptic callbacks. Pure geometry ships from `./core`. No `className`, no tokens; Fabric only.

- [#118](https://github.com/delacournz/delacour-ui/pull/118) Detents are snap points everywhere, matching the `snapPoints` prop. `DetentSpec` is `SnapPointSpec`, `onDetentHaptic` is `onSnapPointHaptic`, `useBottomSheetAnimated()`'s `detents` is `snapPoints`, the internal `detentCount` is `snapPointCount`, and the core helpers follow (`normalizeSnapPoints`, `parseSnapPoint`, `dynamicSnapPoint`, `crossedSnapPoint`, `snapPointUnder`). The handle's accessibility value reads "Snap point 1 of 2". The docs page moves to `/docs/bottom-sheet/snap-points`.

### Patch changes [#patch-changes-3]

- [#120](https://github.com/delacournz/delacour-ui/pull/120) Add `OverlayProvider`, the layer every overlay is drawn on

  `@delacour/react-native-ui/overlay` mounts the one teleport host that overlays and bottom sheets
  share, and a registry that orders them in bands — every overlay above every sheet, an anchored
  panel above the dialog that opened it, a toast above both — and gives Android's back button to the
  topmost overlay only. `Overlay.Portal`, `Overlay.Scrim`, `useOverlayPresence` (keeps an overlay
  mounted through its exit animation) and `useOverlayBackHandler` are exported for building more.
  `BottomSheetProvider` now detects an `OverlayProvider` above or below it and mounts teleport's
  provider only once; the engine's provider takes `hasPortalProvider` to make that possible.
  `bunx delacour add overlay` copies it into a project.
