whatisgithub

What is expo-morphing-menu?

rit3zh/expo-morphing-menu — explained in plain English

Analysis updated 2026-05-18

114TypeScriptAudience · developerComplexity · 3/5Setup · moderate

In one sentence

A React Native component that morphs a chat-style text composer into a multi-panel attachment picker menu, keyboard-aware and animated.

Mindmap

mindmap
  root((Morphing Menu))
    What it does
      Morphing composer menu
      Keyboard aware surface
      Multi panel navigation
      Photo attachment morph
    Tech stack
      TypeScript
      React Native
      Expo
    Use cases
      Chat style composer
      Attachment picker
      Animated photo morph
    Audience
      Mobile app developers
    Setup
      Bun install
      Peer dependencies
      Expo SDK 57

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Add a ChatGPT-style morphing composer menu to a React Native chat app.

USE CASE 2

Build a keyboard-aware attachment picker with Camera, Photos, and Files panels.

USE CASE 3

Animate a tapped photo from a grid into an attachment thumbnail.

USE CASE 4

Give users a controllable menu state to prefetch content when it opens.

What is it built with?

TypeScriptReact NativeExpoBun

How does it compare?

rit3zh/expo-morphing-menumetavault-fi/solana-pumpfun-bundleropenfi-dao/kalshi-trading-bot
Stars114114114
LanguageTypeScriptTypeScriptTypeScript
Setup difficultymoderatehardmoderate
Complexity3/54/54/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · moderate Time to first run · 30min

Requires several peer dependencies (Reanimated, Gesture Handler, keyboard controller) and targets Expo SDK 57 specifically.

So what is it?

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.

Copy-paste prompts

Prompt 1
Help me install expo-morphing-menu and its dependencies in my Expo SDK 57 app.
Prompt 2
Show me how to set up a BottomInput composer with Camera, Photos, and Files menu items.
Prompt 3
Explain how to control the menu's open state from outside the BottomInput component.
Prompt 4
Walk me through adding attachment thumbnails above the composer using BottomInput.Attachments.

Frequently asked questions

What is expo-morphing-menu?

A React Native component that morphs a chat-style text composer into a multi-panel attachment picker menu, keyboard-aware and animated.

What language is expo-morphing-menu written in?

Mainly TypeScript. The stack also includes TypeScript, React Native, Expo.

How hard is expo-morphing-menu to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is expo-morphing-menu for?

Mainly developer.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.