German (Deutsch) added as a 9th language
Alongside English, French, Spanish, Italian, Japanese, Korean, Russian, and Simplified Chinese. The string catalog grew by ~244 keys this release, bringing the total to roughly 844 translated strings.
A running log of every release that's made its way into Receeto. Newest first. No marketing spin - just what changed and why it matters.
Deutsch joins as the 9th language (~844 translation strings total), an in-app banner now nudges you when a new App Store build is live, receipts remember their original currency for accurate historical conversion, and a root-cause fix to the SwiftUI typing means the whole UI translates by construction.
Alongside English, French, Spanish, Italian, Japanese, Korean, Russian, and Simplified Chinese. The string catalog grew by ~244 keys this release, bringing the total to roughly 844 translated strings.
A new AppUpdateService checks the App Store on launch and on foreground. When a newer version is live, an UpdateAvailableBanner surfaces on the Dashboard and Profile with a one-tap link to update.
A new additive extractedCurrencyRawValue on Receipt lets receipts that aren't linked to an expense be re-rendered in your current display currency using historical rates - so old scans stay accurate as you switch currencies.
Documents the one rule that keeps translations working and the 3-file recipe for adding a new language. No Swift changes needed in views.
Every reusable SwiftUI view that takes a label, title, subtitle, chip, or caption param now types it as LocalizedStringKey instead of String. Passing a String was silently hitting the verbatim Text overload and skipping bundle lookup - the root cause of every stuck-in-English bug. Affected: onboarding PosterPage props, settingsRow, summaryCard, detailRow, extractedField, featureRow, PaywallFeature, OnboardingView.ctaText, and PlanPage.features. The whole UI now translates by construction rather than by whack-a-mole.
A native-feeling dark mode, system-level Scan Receipt quick actions from Siri and the Action Button, a gentle daily reminder, three new currencies, and a modernized OCR pipeline for iOS 26 - plus polish across the dashboard.
System / Light / Dark picker persisted in UserDefaults and applied via .preferredColorScheme. Toggling from the Dashboard plays a growing circular-wipe reveal (snapshot overlay + .destinationOut blend) that feels native, not janky. Every surface, border, and control recolours automatically via dynamic UIColor { traits } providers.
A new App Intent surfaces Scan Receipt in the Shortcuts app, Siri, Spotlight, and the iPhone Action Button. A matching home-screen long-press shortcut handles both cold launches and warm-path cases.
DetectLensSmudgeRequest runs after auto-framing on iOS 26+. A non-blocking yellow "Wipe your lens for a sharper scan" hint appears when confidence clears the threshold.
On a fresh install, Receeto asks once for notification permission and, if you accept, schedules a daily nudge for 18:30. Decline once and you'll never be asked again.
Fires at the moment of peak engagement. Apple rate-limits it to three per user per year, so it never becomes noise.
Romanian Leu (RON), Mauritian Rupee (MUR), and Ukrainian Hryvnia (UAH). Symbols, names, flags, detection markers (including Cyrillic грн), and the on-device LLM whitelist all updated.
Introduced ReceiptWhispererTests using Swift Testing - 21 golden tests covering amount, merchant, date, currency, and category extraction, OCR misread correction, split-column layouts, geometry-aware label-to-amount pairing, and invalid-input handling. Coverage enabled in the scheme.
OCRToken now preserves boundingBox through the extraction pass instead of discarding it. On iOS 26+ we prefer RecognizeDocumentsRequest: paragraphs map to tokens via boundingRegion.boundingBox, detected tables map straight to line items, and we fall back to VNRecognizeTextRequest gracefully. Geometry-aware total detection pairs the TOTAL label to the rightmost numeric token on the same y-band, ahead of the regex column-pairing fallback. Date extraction rewritten on NSDataDetector - roughly 58 lines of hand-rolled formatters, gone.
Chevron accessories replaced with a clearer Edit › label on merchant, amount, category, and date rows. Tap targets now span the whole row instead of just the text.
New hero card and modular stat cards replace the older single-card layout. Tighter 16pt corner radii on Scan and Manual buttons match the rest of the B&W system. Transaction rows and in-app typography tuned for the paper-like aesthetic.
New lightweight viewer component for inspecting captured receipt photos.
One receipt.extraction crumb per scan captures OCR source (doc / text), extraction path (FM / geometry / regex), confidence, filled-field set, and line-item count. Aggregated telemetry will tell us whether the regex fallback is still earning its keep.
A 100% offline AI receipt scanner and expense tracker for iPhone. No accounts, no cloud, no data collection. Snap a receipt, and on-device AI extracts the merchant, amount, date, and category in a single tap.
Apple Vision OCR for text recognition, paired with Foundation Models for intelligent extraction. Merchant, total, date, and category are pulled out automatically from any receipt photo. Everything runs on the Neural Engine - no network calls, no cloud queue.
No servers. No accounts. No analytics SDK quietly phoning home. Every receipt, every expense, and every cent of your data lives only on your device. Works in airplane mode, on a flight, or in a dead-zone.
USD, EUR, GBP, JPY, CAD, AUD, INR, KRW, BRL, and more. Receeto detects the currency from the receipt itself and converts between currencies using regularly updated exchange rates.
Groceries, dining, transport, entertainment, and the rest, auto-assigned by the on-device model. Override anytime; the app learns your patterns over time.
Cash tip, parking meter, vending machine. Tap the amount on a tactile numpad, pick a category, and you're done in under five seconds.
Monthly charts, category breakdowns, and daily / weekly averages. Every aggregation happens on-device against your local store - no telemetry, no server-side rollups.
Export your full expense history as a CSV for spreadsheets, or a ZIP that bundles the CSV with every original receipt image. Share via email, AirDrop, or anywhere iOS reaches.
English, French, Spanish, Italian, Japanese, Korean, Russian, and Simplified Chinese. The string catalog ships with every translation in the bundle - no download, no fallback to English.
Core scanning and tracking are free, no account required. Supporter ($9 / year) and Believer ($29 one-time) unlock unlimited scans and data export, and help fund a solo developer building in the open.
Built with SwiftUI from the ground up for blazing-fast performance, system-native navigation, and tactile haptic feedback on every meaningful interaction.