Mobile, State & Build
Cross-platform mobile, client state management, and build tooling. React Native + Expo for mobile; TanStack Query + Zustand for state; Vite for everything else.
React Native
Cross-platform mobile development with React. One codebase for iOS and Android, with access to native APIs when you need them.
Expo
My default for React Native projects. Managed workflow, OTA updates, and build services mean faster iteration without Xcode/Gradle headaches.
TanStack Query
Server state management for React. Handles caching, refetching, pagination, and optimistic updates — replaces most manual state management.
Zustand
My default for client state in React. Tiny, fast, no boilerplate. When TanStack Query handles server state, Zustand covers the rest.
Redux
I use Redux on large existing codebases that depend on it. For new projects, Zustand or TanStack Query cover most use cases more simply.
SWR
Stale-while-revalidate data fetching from Vercel. Lighter than TanStack Query — I use it for simpler data fetching needs.
Vite
My default build tool. Instant dev server, fast HMR, and optimized production builds. Replaced Webpack for most of my projects.
Webpack
I use Webpack on existing projects that depend on it, or when a specific loader or plugin isn't available in Vite yet.