Cook perfect lamb shoulder, every time.
LowSlow takes the guesswork out of slow-cooking lamb shoulder. Choose your weight, cooking method, bone option, and desired doneness — LowSlow calculates the exact oven temperature, target internal temperature, cooking time, rest time, seasoning quantities, and a complete step-by-step timeline.
Lamb shoulder is a forgiving cut, but getting it perfectly timed — especially when you're planning a meal — requires knowing how weight, method, and doneness interact. LowSlow does the math:
- 🐑 Weight-based timing — cooking time scales with the size of your shoulder
- 🔥 Five cooking methods — oven roast, low & slow, braise, pressure cooker, smoker
- 🦴 Bone-in or boneless — bone conducts heat, changing cook time
- 🥩 Three doneness levels — medium, well done, or fall-apart/pulled
- 🧂 Seasoning calculator — rub quantities scaled to your exact weight
- ⏱️ Full timeline — prep → sear → cook → rest → serve, with clock projections
- 📖 Save & share — keep a history of your cooks, share plans with friends
Built with Expo SDK 56, React Native 0.85, and TypeScript. Runs on web, iOS, and Android from a single codebase.
- Weight input — kg or lbs, with quick-preset chips (1.5, 2, 2.5, 3 kg)
- Bone option — bone-in (cooks ~10% faster) or boneless
- Five methods — oven roast, low & slow oven, braise/Dutch oven, pressure cooker, smoker/BBQ
- Doneness control — medium (63°C), well done (74°C), fall-apart/pulled (95°C)
- Starting temperature — fridge-cold or room-temp
- Oven + target temp display — in both °C and °F
- Time range — ±15% to account for oven variance and shoulder shape
- Rest time — calculated by weight and doneness level
- Step-by-step timeline — prep → sear → cook → rest → serve, each with clock-time projections
- Seasoning quantities — salt, pepper, garlic powder, rosemary, thyme, olive oil (grams + tsp)
- Fully offline — all data stored locally via AsyncStorage; no accounts
- No tracking — no analytics, no telemetry, no cloud storage
- No permissions — doesn't use location, camera, or notifications
cd LowSlowMobile
# Install dependencies
npm install
# Start the Expo dev server
npx expo start
# Run on a specific platform
npx expo start --web
npx expo start --ios
npx expo start --androidRequirements: Node.js 22+, Expo SDK 56.
LowSlowMobile/
├── app/ # Expo Router (file-based routing)
│ ├── _layout.tsx # Root layout
│ ├── (tabs)/
│ │ ├── _layout.tsx # Responsive: sidebar (desktop) or tabs (mobile)
│ │ ├── index.tsx # Calculator screen
│ │ ├── history.tsx # Saved cooks history
│ │ └── settings.tsx # User settings
│ └── cook/[id].tsx # Cook detail page
├── src/
│ ├── models/types.ts # TypeScript types + unit conversion helpers
│ ├── theme/index.ts # Design tokens (colors, spacing, typography)
│ ├── store/ # AsyncStorage persistence
│ ├── lib/calculations.ts # Core cooking calculation engine
│ ├── data/ # Static lookup tables (methods, doneness, etc.)
│ ├── components/ # Reusable UI components
│ └── hooks/ # useBreakpoint (responsive layout)
└── assets/ # Fonts and icons
┌──────────────┐ ┌─────────────────┐ ┌────────────────────┐
│ Weight (kg) │ │ Method Lookup │ │ Oven Temperature │
│ Bone Option │ ──▶ │ Doneness Table │ ──▶ │ Target Internal │
│ Method │ │ Bone Factor │ │ Cooking Time │
│ Doneness │ │ Starting Temp │ │ Rest Time │
│ Start Temp │ └─────────────────┘ └────────────────────┘
└──────────────┘ │
▼
┌──────────────┐ ┌──────────────────────────────────────────┐
│ Seasoning │ │ Full Cook Plan: │
│ Calculator │ │ • Oven temp + target internal temp │
│ (g/kg) │ │ • Time range (±15%) │
└──────────────┘ │ • Timeline (prep→sear→cook→rest→serve) │
│ • Seasoning quantities │
│ • Liquid (braise only) │
│ • Method-specific tips │
└──────────────────────────────────────────┘
Cooking formulas are derived from:
- Harold McGee, On Food and Cooking
- J. Kenji Lopez-Alt, The Food Lab
- Meathead Goldwyn, AmazingRibs.com
- USDA food safety guidelines
MIT License — see LICENSE.
LowSlow takes your privacy seriously:
- ❌ No accounts — no sign-up, no login
- ❌ No tracking — no analytics, no telemetry
- ❌ No cloud storage — your cook history stays on your device
- ❌ No permissions — no location, camera, or notification access