Inspiration

It started with a crepe recipe on Youtube ! I saved it, told myself "I'll make this tomorrow," and obviously never did. A week later I found the video again in my bookmarks and realized i had dozens of similar videos in my "COOKING" youtube playlist..

Then, when I watched Eitan's video brief, I went through that same thinking process again ! It's not that people can't cook. It's that nobody's built the bridge between "ooh that looks good" and "dinner's on the table." As Eitan stated in the video !

As for Instant Crust - The name came from Daft Punk's "Instant Crush." Because finding a recipe should feel like a crush — that instant spark., like when you find...love !

What it does

Two main usages, heavily influenced by Eitan video brief !

Recipe import from social networks You see a recipe on TikTok, Instagram, YouTube, a blog — anywhere. Share the link to Instant Crust. AI extracts the full recipe: ingredients with real quantities, step-by-step instructions, timers. Works across platforms, translates from any language to English. One tap.

Scan it. Open your fridge, take a photo. AI identifies everything — "whole milk" not just "milk," "red bell pepper" not just "pepper." Then it generates 5 creative recipes from what you actually have, respecting your dietary preferences.

Swipe — Tinder for dinner. Right to save, left to skip. Because choosing what to eat should feel fun, not overwhelming. (This only occurs while scanning fridge and getting recipes ofc)

Grocery list — Saved recipes auto-populate your shopping list, organized by aisle.

Cook mode — Step-by-step instructions with built-in countdown timers. Screen stays awake, so take your time, don't ruin that sweet recipe !

Done — Celebration screen, snap a photo of your dish, generate a share card for your socials.

Pro users also get Remix — tap any recipe and say "make it vegan" or "make it spicy." AI generates a variant and both versions live side-by-side.

The whole thing is wrapped in a warm (forced) dark theme that feels like a cozy kitchen at night !

How we built it

React Native + Expo SDK with TypeScript. File-based routing with expo-router. The whole thing is local-first — recipes, grocery lists, preferences all live in expo-sqlite so the app works offline once you've got your data.

The AI backend is a Cloudflare Worker calling Claude Haiku 4.5 through the Anthropic SDK. Four endpoints: extract recipe from URL (with platform-specific scrapers for YouTube, TikTok, Instagram), scan fridge via Claude Vision, generate recipes from ingredients, and remix existing recipes. The URL extractor is smarter than it looks — it tries oEmbed, OG meta, JSON-LD, page scraping, and even video transcript extraction before feeding everything to Claude.

Monetization is RevenueCat with react-native-purchases. Three tiers (monthly, annual with free trial, lifetime). Free users get 10 AI actions per month, tracked locally with monthly auto-reset. The paywall surfaces naturally — after onboarding and when the limit hits.

The swipe mechanic uses react-native-reanimated v4 + react-native-gesture-handler for 60fps gesture-driven animations. Haptic feedback on every meaningful interaction via expo-haptics. The share intent integration uses expo-share-intent with native intent filters on both iOS and Android.

Design system is fully tokenized — colors, spacing, typography, border radii — all in one file. Dark theme only. Nunito font family. Every color has a purpose: orange for actions, coral for accents, gold for pro features.

Challenges we ran into

Share intent on Android. Spent way too long wondering why nothing happened when sharing to the app on Android. Turns out expo-share-intent needs explicit androidIntentFilters in app.json — the iOS activation rules don't carry over. And even after that, the +native-intent.ts redirect only works for iOS URL paths. On Android, share intents come through a native module event, so I had to add a separate handler component inside the ShareIntentProvider that watches for hasShareIntent changes and navigates manually.

Claude returning invalid JSON. The AI backend would occasionally return JSON with trailing commas or broken array elements, causing 500 errors. Had to build a two-pass parser — first try raw JSON.parse, then clean up common LLM quirks (trailing commas, control characters) and retry. Sounds simple, was annoying to debug in production on a Cloudflare Worker.

The "crypto.getRandomValues() not supported" error. The uuid package uses Web Crypto which doesn't exist in React Native's JS runtime. Took me longer than I'd like to admit to realize I should just use expo-crypto's randomUUID() instead. (This is 1000 times better and actually made for mobile)

Getting the Tinder swipe to feel right. The physics matter more than you'd think. Too fast and cards fly off screen before you read them. Too slow and it feels sluggish. The snap-back animation when you don't commit to a swipe needs to feel elastic, not robotic. Spent a lot of time tweaking spring configs, but still not feels wonderful (I should had installed Tinder to compare, but i'm married..)

RevenueCat + Expo. The setup itself is straightforward, but testing subscriptions in sandbox mode while also building a free tier gating system that doesn't accidentally block paying users or give free users unlimited access — that required very careful state management.

Accomplishments that we're proud of

The full pipeline actually works. Share a TikTok link → recipe appears with real ingredients and steps → add to grocery list → cook with timers → take a photo → share a card. End to end. On a real device. That's the brief, and we shipped it.

The fridge scanner is genuinely useful. Point your phone at your fridge, AI identifies real ingredients with proper names, generates 5 diverse recipes respecting your dietary preferences.

It feels good to use. The haptics, the swipe physics, the warm dark theme, the celebration screen when you finish cooking, the little Cruster Logo with gold version — it all adds up to something that feels crafted, not thrown together randomly, IMO.

Recipe remix as a Pro feature. The only paid feature ! You already love the recipe. Now make it vegan with one tap. It's the kind of feature that makes you want to upgrade. (Well. hopefully)

Cross-platform recipe extraction. YouTube (with transcript parsing + Innertube API), TikTok (embedded JSON + WebVTT captions), Instagram (oEmbed + OG scraping), plus any generic food blog. And automatic translation to English. From a single "share" tap.

What we learned

That the gap between "cool idea" and "shippable product" is 90% plumbing. The AI parts were actually the easy part. The hard parts were: making share intents work on both platforms, handling every edge case in JSON parsing, getting the paywall state machine right, making sure the free tier counter resets monthly, coordinating navigation between 15+ screens.

That design tokens save your life. Having one file with all colors, spacing, and typography meant I could tweak the entire feel of the app in minutes. Dark theme, warm tones, consistent spacing — it all came from that one constants file.

That RevenueCat makes monetization genuinely simple. The SDK handles trial periods, restore purchases, platform differences — all the stuff that would take weeks to build from scratch. The hardest part was deciding on pricing, not implementing it.

What's next for Instant Crust

Meal planning. Drag recipes onto a weekly calendar, auto-generate a consolidated grocery list for the whole week.

Smart pantry. Persistent ingredient tracking — "you scanned milk 3 days ago" — so recipe suggestions get smarter over time.

Creator partnerships. Let food creators link their content directly. When someone shares their TikTok to Instant Crust, the creator gets attribution and analytics. Everybody wins.

The vision is simple: Instant Crust becomes the home screen for home cooking. The one app between recipe inspiration and dinner on the table. We're just getting started.

Built With

  • 4.5
  • 54
  • anthropic
  • api
  • cheerio
  • claude
  • cloudflare
  • expo-camera
  • expo-clipboard
  • expo-crypto
  • expo-haptics
  • expo-image
  • expo-keep-awake
  • expo-linear-gradient
  • expo-router
  • expo-share-intent
  • expo-sharing
  • expo-splash-screen
  • expo-sqlite
  • expo.io
  • haiku
  • ios
  • javascript
  • native
  • pexels
  • react
  • react-native-gesture-handler
  • react-native-purchases
  • react-native-purchases-ui
  • react-native-reanimated
  • react-native-view-shot
  • revenuecat
  • sdk
  • sqlite
  • typescript
  • workers
Share this project:

Updates