Five years ago I wrote a tutorial about handling images in React Native — loading, caching, viewing, and pinch-to-zoom. I recently went back to it, and it aged the way milk ages. Not because the advice was wrong at the time, but because every single library I built on is now dead.

So instead of updating the old post, I archived it and rebuilt the whole demo from scratch, the way I would write it in 2026. This is the story of what died, what replaced it, and the one part that's still genuinely worth building yourself.

What the 2021 version was

The original demo was a small gallery app: a reusable image component with a loading spinner, avatar and card variants built on top of it, and a full-screen viewer with pinch-to-zoom. The stack: bare React Native 0.64, react-native-fast-image for caching, react-native-image-pan-zoom for the viewer, and an Ignite boilerplate around it.

The autopsy