Lisbon
Walking4 days · April
12 saved places
react-morphcard is one React hook, useMorph. It works in desktop and mobile browsers, installed PWAs and WebViews. Every card on this site uses it.
Click a card. Esc, Back or a click outside shrinks it back.
4 days · April
12 saved places
5 days · November
18 saved places
6 days · February
9 saved places
5 days · October
21 saved places
3 days · January
6 saved places
4 days · March
14 saved places
What it does
Each tile opens the same way the cards above do.
The sheet is clipped to the card's shape and the clip opens. Nothing is scaled, so text stays sharp.
Give the card's title and the sheet's heading the same data-morph key and they travel between the two.
Back takes 300 ms against 400 ms to open, and the big heading hands over to the card text early.
Close while it opens and the same animations turn around from where they are.
If the card is off screen or the target is missing, the sheet fades instead of flying.
One React hook on the Web Animations API. Reduced motion becomes a fade.
Recordings
Recorded frame by frame from the demo app. A tile grows into a player, and Back shrinks it into the tile.







Usage
bun add react-morphcardReact 18 or 19. No other dependencies.A list of cards and one sheet. The card's route, company and status fly into the header.
The sheet and scrim are positioned over the list and hidden while closed.
The getting started guide walks through it step by step, and the playground lets you change the timing on this site.
Same hook, small screen
On a phone the sheet usually covers the whole screen under the app bar. This frame is a small deliveries app built with the same hook. Its list scrolls inside the frame, the tab bar stays put, and the action bar slides up from the bottom.
Slow it down to see the order: the surface opens, the route and company fly, the stops come in one after another. Reduced motion turns all of it into a fade.
It runs in any browser engine React DOM runs in, including installed PWAs and WebViews. It is not for React Native.
This week · 10 deliveries
closed