Engage
Case Study
Architecture & Design Deep Dive

Engage

4 feed types (home, regional, trending, saved) powered by TanStack Query's useInfiniteQuery. FlashList maintains 60 FPS even with thousands of posts. Cursor-based pagination means the feed doesn't slow down with 10K+ posts.

Chunked resumable video uploads. If a 90-second video fails at 60% (bus goes through a tunnel), it RESUMES from 60% when signal returns. Never starts over. 12MB camera photos auto-compressed to ~300KB before upload.

Firebase RTDB chat with sub-collection pattern. Inbox reads metadata ONLY (participants, last message) and loads instantly. Chat rooms paginate 20 messages at a time. Client UUID dedup prevents duplicate messages.

Trending hashtags scored by USAGE VELOCITY, not total count, but RATE of new posts in the last 4 hours. A niche hashtag getting 50 posts suddenly ranks higher than a generic one with 500/day consistent.

Optimistic UI for every interaction: like, comment, follow, share, echo. Heart fills immediately, count increments, animation plays before the API call finishes. Rolls back silently on failure.

16Technologies
4 monthsBuild Time
Live DemoSource CodeProject Details

Technologies Used

Tech Stack
React Native 0.81Expo SDK 54TypeScriptTanStack Query v5ZustandReact Navigation v7Shopify FlashListFirebase Realtime DatabaseFirebase Cloud MessagingFirebase Storageexpo-image-pickerexpo-secure-storeAsyncStoragereact-native-reanimatedexpo-locationJest + RN Testing Library

Technologies Used

Tech Stack
React Native 0.81Expo SDK 54TypeScriptTanStack Query v5ZustandReact Navigation v7Shopify FlashListFirebase Realtime DatabaseFirebase Cloud MessagingFirebase Storageexpo-image-pickerexpo-secure-storeAsyncStoragereact-native-reanimatedexpo-locationJest + RN Testing Library

Previous

Next