Yesterday and today I worked on an ImageViewer component with reordering. The reordering was important so we can define the media order on our listings in our application. The ImageViewer is built with Tamagui and supports adding, deleting, viewing, and reordering photos. It’s pretty generic and could fit into any app. If this gets 100 likes, I’ll drop the full component for free after the Ship-a-ton Hackathon. I included an architecture breakdown below. #shipaton #buildinpublic

Aug 22, 2025 · 4:58 PM UTC

1
1
6
434
The base building block of the ImageViewer is the ImageCard. The ImageCard supports several states: selected, disabled, uploading, and error.
1
4
The ImageCard is used within a generic SortableList powered by dnd-kit. Hopefully this will work on mobile as well. I couldn’t find details in the dnd-kit docs or repo about mobile support, but we’ll find out next week once we port the app to mobile and make the fully cross‑platform dream come true. If it doesn’t, we still have a SortableList with generic props and handlers that we can reimplement on mobile as a drop‑in replacement to power this component.
1
7
Next, we have a Carousel component. On mobile, you can swipe left/right to change photos, and it simply displays a photo or video.
1
31
Put it all together and we’ve got a cross‑platform ImageViewer. 😎 I’ll probably need to do a bit more work to make it fully cross‑platform, but Tamagui got us most of the way there—there may be some remaining work around the sortables.
27
Sort replies: Relevant Recent Liked