suiss/ui · Component
Bottom Bar
A bar pinned to the bottom of a screen for primary actions, which rises above the keyboard.
Bottom Bar is an open-source component from suiss/ui for React Native, SwiftUI and Jetpack Compose. The @esuiss/ui CLI copies its source into your project, so you own the code.

BottomBar is an animated View that adds bottom padding equal to the safe-area inset, or to the keyboard height while the keyboard is open, and animates between them with the keyboard's own timing. BottomBarContent adds the standard padding and spacing for the buttons inside.
Use it for the main call to action of a screen, such as checkout or a form submit button.
Installation
The CLI also adds what it builds on: Screen. On React Native it also adds the animated view components/ui/animated-view.tsx.
Manual
- Install the dependencies:
-
Add the pieces it builds on: Screen, and the primitives
components/primitives/keyboard.tsx, and the animated viewcomponents/ui/animated-view.tsxfrom the next step. -
Copy the animated view into
components/ui/animated-view.tsx:
- Copy the source into
components/ui/bottom-bar.tsx:
- Update the import paths to match your project.
- Install the dependencies:
-
Add the pieces it builds on: Screen, and the primitives
components/primitives/keyboard.tsx, and the animated viewcomponents/ui/animated-view.tsxfrom the next step. -
Copy the animated view into
components/ui/animated-view.tsx:
- Copy the source into
components/ui/bottom-bar.tsx:
- Update the import paths to match your project.
- Install the dependencies:
-
Add the pieces it builds on: Screen, and the primitives
components/primitives/keyboard.tsx, and the animated viewcomponents/ui/animated-view.tsxfrom the next step. -
Copy the animated view into
components/ui/animated-view.tsx:
- Copy the source into
components/ui/bottom-bar.tsx:
- Update the import paths to match your project.
-
Target iOS 17 or later.
-
Copy the theme files every view uses:
- Copy the source and every file it uses:
- Add the files to your app target.
- Set
minSdkto 24 or higher and add the dependencies:
- Copy the theme files every view uses:
- Copy the source and every file it uses:
- Update the
com.esuiss.uipackage names to match your project.
Usage
Place BottomBar as the last child of the screen so it sits below the scrolling content. Stack buttons in BottomBarContent, or add flex-row to place them side by side.
Set separator to draw a hairline above the bar. Inside a Screen that already handles the bottom safe-area edge, the inset is not added twice.
Examples
With separator
A hairline above the bar with separator.

Two actions
A primary and a plain button stacked.

Side by side
Back and Next buttons in a row.

Above keyboard
The bar moving up with the keyboard while an input is focused.

API Reference
BottomBar
Bottom container that follows the safe area and keyboard.
| Prop | Type | Default | Description |
|---|---|---|---|
separator | boolean | false | Draws a top border. Defaults to false. |
Also accepts the props of ViewProps.
BottomBarContent
Padded area for the actions.
Also accepts the props of ViewProps.
Accessibility
- The bar adds no role; each action inside provides its own.
Notes
- The padding animation respects the system Reduce Motion setting.
- Uses
bg-backgroundandborder-bordertokens; light and dark follow the system appearance.




