finds.dev

EvanBacon/expo-ai

AI chat app built with Expo Router

View on GitHubHomepage ↗

★ 859TypeScriptupdated Dec 2025

// the take

A demo app from Evan Bacon's React Conf talk showing universal React Server Components in Expo Router — AI chat that streams native UI components (maps, weather, movie cards) down from the server as tool call results. It runs on iOS, Android, and web from a single codebase. This is a proof-of-concept, not a production template.

The core idea is genuinely interesting: instead of streaming text and rendering UI client-side, tool calls return actual RSC payloads — so a 'show me the weather' response streams a real native weather component. The file-based routing with `.native.tsx` / `.web.tsx` platform splits is clean and idiomatic Expo Router. Fixtures for weather, movies, and locations mean you can poke at the UI without burning API quota. Coming from Evan Bacon (Expo core team) means the Expo-specific patterns here are authoritative, not cargo-culted.

This is explicitly developer preview with multiple known broken edges: deterministic module IDs differ across machines so local publishes break EAS builds, Hermes doesn't handle promises correctly so `react-server-dom-webpack` needs a patch, and the `ai` package requires a manual `package.json` patch for SSR. Six API keys are required just to run it fully (OpenAI, Weather, TMDB x2, Google Maps, Apple Maps), which is a steep setup tax for a demo. No persistence — chat history lives in memory, gone on refresh. The last push was December 2025 against an experimental RSC API that's still moving, so there's a real chance the main branch already requires a bleeding-edge Expo CLI build to work at all.

We read the README, the directory tree and a key source file in July 2026. Nobody pays to be listed. How we judge →

// at a glance

Stars
859
Forks
127
Language
TypeScript
Last commit
9 Dec 2025

// nearby

If expo-ai isn't quite it.

All repos →