Analysis updated 2026-05-18
Add a ChatGPT-style morphing composer menu to a React Native chat app.
Build a keyboard-aware attachment picker with Camera, Photos, and Files panels.
Animate a tapped photo from a grid into an attachment thumbnail.
Give users a controllable menu state to prefetch content when it opens.
| rit3zh/expo-morphing-menu | metavault-fi/solana-pumpfun-bundler | openfi-dao/kalshi-trading-bot | |
|---|---|---|---|
| Stars | 114 | 114 | 114 |
| Language | TypeScript | TypeScript | TypeScript |
| Setup difficulty | moderate | hard | moderate |
| Complexity | 3/5 | 4/5 | 4/5 |
| Audience | developer | developer | developer |
Figures from each repo's GitHub metadata at analysis time.
Requires several peer dependencies (Reanimated, Gesture Handler, keyboard controller) and targets Expo SDK 57 specifically.
This project is a React Native component library that gives mobile apps a chat style message composer with a menu that morphs into different panels, similar to the attachment picker seen in apps like ChatGPT. Instead of a separate menu sheet sliding up over the text input, the input bar itself smoothly grows and reshapes into the menu surface, changing its width, height, and corner rounding together in one animated motion. The component follows the on screen keyboard as it opens and closes, using a companion library that reports live keyboard height so the composer always sits right above it. Developers can register multiple menu items, such as Camera, Photos, Files, or custom plugins, each paired with its own content panel. Tapping an item morphs the surface into that panel, and a back action returns to the list of items. There is also a feature for morphing a single tapped photo from a grid into an attachment thumbnail using a shared element style animation. Installation is done by cloning the repository and installing dependencies with the Bun package manager, plus a set of underlying libraries for animation, gestures, safe areas, keyboard handling, symbols, and file or image picking. The project targets Expo SDK 57 specifically and points developers to the matching Expo documentation before touching any native code. Usage involves wrapping the app in a keyboard provider, then composing a BottomInput component with nested Trigger, Items, Content, and Attachments pieces. The library exposes props for controlling the menu's open state from outside the component, forwarding props to the underlying text field, and rendering attachment thumbnails above the input. A useBottomInput hook gives any nested component access to the menu's open state and controls. The README documents each component's props in detail as a reference table.
A React Native component that morphs a chat-style text composer into a multi-panel attachment picker menu, keyboard-aware and animated.
Mainly TypeScript. The stack also includes TypeScript, React Native, Expo.
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.