What changed
Changelog
Every TestFlight build since the first one, newest first.
Unreleased
Source collections — 12 October 2026
- Filter Recipes by a saved website, person, or cookbook, including credits added later. Search the source picker by name or paste a website address.
- Export the matching recipes or a selection as a Rendition collection, including source credits, saved versions, and available photos. The export reports any omitted details and excludes personal cooking logs, pantry, and shopping data.
iPhone design update — 12 October 2026
- Today leads with the planned meal's photo and a clear cooking action. Recipes use a simpler photo grid with a single column at accessibility text sizes.
- Plan shows the week as an agenda with an Add action for each date. Meal ideas expand when wanted, and the new disclosures respect Reduce Motion.
- Kitchen uses calmer aisle and Pantry lists, keeps stock changes one tap away, and shows a saved recipe that uses food already on hand.
- Recipe details keep the status bar readable without fading over the food. Photos, source credit and cooking controls stay distinct.
- Add missing recipe attribution from the Source card or recipe editor: save a website link, a cookbook or person’s credit, or both. Existing sources and recipe history stay saved.
- Fractional servings keep the decimal separator while you type, including comma-decimal locales, while recipe quantities update live.
Private IPA update — 11 October 2026
- Kitchen brings the shopping list and Pantry together. Pantry puts food that needs restocking first and shows simple Have it, Almost out, and Out states; lowering a food adds it to the buy list without requiring package counts or expiry tracking.
- A checked grocery can mark a food as available without inventing an amount. Replaying an old checkoff no longer overwrites a newer Pantry status choice.
- Recipe, plan, cooking, and library screens have clearer actions and large-text layouts. The Greek chicken sample shows its Budget Bytes source and keeps the weeknight adaptation separate from that original.
- At accessibility text sizes, the grocery purchase flow opens full screen so its actions stay responsive. Cook Mode's ingredient sheet remains open while scrolling until you close it with Done.
Added
- Android is on the way. The website now says Rendition for Android is coming soon to Google Play, in the hero, the closing call and a new FAQ answer. App Store wording is unchanged.
- The privacy policy covers Android. A new section says Rendition for Android keeps your library on the device, without iCloud, and sends the same things to Rendition's servers as the iPhone app.
- Rendition for Android, first build. A native Android app in
android/with the recipe library and search, web import through the same service as iOS (including sharing a link from the browser), serving-size scaling, a plain-text editor, a step-by-step cook view with timers, and a grocery list grouped by aisle. Recipes stay on the device for now; sync with iOS comes with the planned move to Firebase. - Test the free-tier preview in private builds. A private Settings switch simulates an exhausted free allowance without changing your subscription or locking existing recipes. TestFlight and App Store builds exclude the control and its override.
- Keep collecting website recipes after 50. Additional website imports now save as clearly marked previews, including when shared from Safari. See the photo, title, source and a faded beginning of the recipe; Rendition Pro unlocks the full ingredients and instructions. Existing recipes, your first Paprika migration and recipes already unlocked stay available, including after a subscription ends.
- Your pantry travels in library backups (private install-page builds after Build 303). New backups include pantry items, stock levels, aliases, locations, inventory records, and “Help me use this up” preferences. You can back up a pantry with no recipes. Restore adds missing pantry data while preserving existing choices; older recipe-only backups still work.
- Help me use this up (private install-page builds after Build 301). Mark an ingredient while shopping, in pantry edit, or after cooking. With Rendition Pro, turn on prioritization in Today or the meal planner to favor recipes using marked ingredients you have in stock. No amount tracking is needed. Unmark anytime; running out stops the boost and restocking brings it back. Your flags and choice are remembered on this device.
- Photograph a cookbook page or recipe card (private install-page builds after Build 300). Read one or several photos into a reviewable recipe, add another photo if part is missing, and keep the source photos in the recipe gallery. Photo reading uses Rendition Pro.
- Crash diagnostics (private install-page builds after Build 300). Development builds include limited Sentry crash reporting to help diagnose failures.
- Real screenshots on the website. Screens from the shipped build show the recipe, tonight’s dinner, groceries and cook mode alongside the homepage’s product tour, served from an allowlist.
- Rendition Pro is switched on. The welcome, Settings and the import screens now show the free library of 50 imported recipes and the Rendition Pro subscription, with Sign in with Apple ahead of a purchase. Writing your own recipes, web import, planning, the grocery list and the pantry stay free.
- The Someday shelf, on the website. The features page now describes moving a recipe off the table: it leaves the library, search and suggestions until you bring the Someday shelf back into view.
- The year leads on the paywall, and a Paprika library moves over whole. Rendition Pro's annual plan is listed first with what a month works out to and what it saves against paying monthly. Your first Paprika import comes in entirely, whatever its size; the free limit applies from the next one on. When a free monthly allowance of video imports and translations is switched on, the app opens the paywall once it is used up. Inert until subscriptions go live.
- One "+" on the Recipes tab. New recipe, quick log entry and quick side now sit behind a single add button, with their names, instead of three unlabeled circles; Import keeps its own button and gains its word.
- The free library holds 50 imported recipes; Rendition Pro lifts it. Only recipes you bring in count: what you write yourself never does, and neither do quick logs, sides, plan markers, the sample recipes or a household member's recipes; a recipe's versions count once. Nothing is ever locked: a library already past 50 keeps every recipe and just can't bring in another without Pro. The Recipes tab shows the count, the fifty-first import opens the paywall, a Paprika file takes what fits and says how many wait, and a share from Safari says so too. Inert until subscriptions go live.
- A first run that starts with a recipe. A new install opens on one welcome screen with one button, "Save your first recipe", which goes straight to the import screen with the link field ready and a line about sharing from Safari. Each tab explains the one thing about itself people miss, once, and the first recipe you keep is told that the original stays beside your edits.
- Support, Privacy Policy and Terms in Settings. The About section links all three alongside the guide and changelog, and the version row reads the real version and build.
- Search by where a recipe came from. Type "budg" and the Budget Bytes recipes come up, or an author's name for theirs, ranked below a title match and above a passing mention in a step. Statistics gains "Where they come from": one row per site, with the recipes you wrote counted apart.
- The pantry starts with Water. Well-stocked, known as room-temperature, warm, hot, boiling, cold, ice, lukewarm and tap water, so a recipe's water never reads as missing or lands on a list. Remove it and it stays gone.
Fixed
- Photographing a cookbook page or recipe card reads the recipe again. The app sent the recognized text to an address the recipe service doesn't have, so every photo import failed. It now reaches the right one.
- A new install fills its library from iCloud promptly. If iCloud wasn't ready the moment the app first opened — common right after installing — sync gave up until iOS fetched on its own schedule, leaving the library empty for minutes. Rendition now tries again shortly after, with increasing waits up to a minute, and immediately on returning to the app or when the iCloud account changes.
- The camera permission prompt says what the camera is for. It described only taking a photo of your cooking, and did not mention photographing a cookbook page or recipe card to read the recipe from it — which is what the camera is mostly used for. It now describes both.
- Recipe previews use the regular recipe layout. Locked website recipes share the same full-width photo, header, metadata, ingredient rows and direction cards as unlocked recipes, fading into the unlock message and button.
- The Recipes list follows the pantry again (private install-page builds after Build 305). After a restock, the default “In stock” order and the “N needed” counts could keep showing what was true before you shopped, until something else happened to refresh the screen. They now update as soon as the pantry changes.
- A pantry change made while another is still saving is no longer lost. Two overlapping refreshes could finish out of order, and the slower one would write back what it had read before your newer change — quietly reverting it. The newer state now wins.
- Non-food items are reachable when the pantry is empty. The link sat on the pantry list only after you had food on hand, so anyone with an empty pantry but non-food purchases could not open the screen.
- A renamed grocery keeps one spelling. When two purchases of the same thing shared a timestamp, the name shown in Statistics and the pantry’s “bought” sorts could change between launches. It is now stable.
- The public website keeps the Build 300 icon during App Review. Its home-screen icon matches the submitted app while newer icon artwork remains in private install-page builds.
- Large library backups restore (private install-page builds after Build 302). Removed the 256 MiB total backup limit. Restore reads archive entries individually and stages photos on disk, so photo-heavy libraries can restore without loading every image into memory at once.
- Restore your library without losing your recipes (private install-page builds after Build 300). The first library restore on an install is unrestricted; later free-tier restores explain which recipes exceed the library limit.
- More resilient website imports (private install-page builds after Build 300). Ignore comment markers inside scripts and recover from rate-limited pages through the existing browser fallback.
- A subscription counts wherever it was bought. Rendition's server now checks a purchase against both of Apple's stores, so a subscription made during App Review, or by a sandbox tester, unlocks Rendition Pro exactly as a bought one does. Nothing about the subscription check depends on whether the app is being reviewed.
- The website's hero card. The "Planned for Tuesday" badge is a small label again instead of a dark block, and the headline beside the card stays put while the versions cycle.
- The Get the app button no longer touches the theme switch. On the guide, about, changelog, support and legal pages the two sat flush against each other in the header, so the button's corner cut into the rounded switch beside it. They are spaced as they are on the front page.
- The website is easier to read and to navigate by keyboard. The small grey text used for the footer, prices, card details and section labels was too faint against the light background to meet the contrast standard, and is a shade darker now. The focus outline that follows the Tab key was drawn in a pale amber that all but vanished on the light theme; it is a deeper amber there, and unchanged on the dark theme.
- Servings from sites that list the yield twice. WP Recipe Maker pages publish "4" and "4 servings" side by side; the import read neither and left servings blank. Now it reads the fuller one.
Changed
- (Internal — no user-visible change) TestFlight promotion can be frozen. Every successful ship used to upload to TestFlight as well, so a private build could not ship while TestFlight had to stay on the build under App Store review. Setting the repository variable
RENDITION_TESTFLIGHT_FROZENtotruenow skips the automatic upload; starting the TestFlight workflow by hand still works. - Pasted links read the recipe the page publishes. A link now brings in the recipe written on the page itself, rather than processing any video the page happens to host. Imports are faster and the app is about 115 MB smaller to download. A page that shows the cooking without writing the ingredients and amounts down now says so plainly — Rendition will not invent quantities a page never stated. Choosing a video from your own library is unchanged and still reads what the clip says aloud.
- Website previews keep the recipe-card layout. The photo, recipe typography, timing and servings sit above ingredient quantities and numbered directions, with the fade and upgrade prompt inside the recipe card.
- A consistent Rendition palette (private install-page builds after Build 304). The dimensional recipe-card icon now uses ivory and charcoal backgrounds. Default light and dark screens match the website, with saffron primary controls and readable matching labels.
- A dimensional recipe-card icon (private install-page builds after Build 300). Light, dark, and tinted appearances use the new ceramic card artwork.
- A shorter, more visual website tour. The homepage leads with the real recipe screen, shows how a recipe becomes your version, and brings planning, shopping and cooking into one story. The Rendition name stays visible on phones, the theme control moves to the footer, and visitors can explore the app while its App Store listing is on the way.
- Sign in with Apple is back in the app's entitlements. Both entitlement files carry it again now that the App ID and the pinned development profile include the capability. The button only appears once monetization is switched on.
- Ship builds carry the Firebase config. The Ship and TestFlight workflows write the gitignored GoogleService-Info.plist from a repository secret before generating the project, checking it belongs to Rendition's bundle. The app leaves it untouched until monetization is switched on.
- The paywall's title is set in the serif. "Rendition Pro" atop the subscription screen now uses Young Serif like every other screen title, instead of bold Figtree.
- A new library starts with real recipes. Four imports, each attributed to its page: Tasty's chewy chocolate chip cookies (with a "My version" beside the untouched Original, so versioning shows itself on the first recipe you open), and Budget Bytes' Greek Chicken, Sheet Pan Doner Kebab and Spicy Sriracha Noodles. The invented sample kitchen, its planned dinner and its shopping list are gone.
Fixed
- Ingredient groups from more sites. A page that names its groups plainly ("Doner Kebab Ingredients", "Tzatziki Ingredients") now imports with those headings, not one flat list. Site cost notes like "($0.12)" on each ingredient come off at import instead of following the food onto the list.
Fixed
- Optional ingredients say so. An ingredient the recipe's own text calls optional (the editor's Optional toggle) now carries the same Optional chip on the recipe page as one you marked optional for this recipe, and shows no stock dot.
Changed
- One way to make an ingredient optional. The Optional switch on each ingredient in the recipe editor is now also on the import review screen, so a recipe can be right before its first save. The long-press "Optional for this recipe" mark from Build 288 is gone; an ingredient the recipe calls optional shows an Optional chip, never counts as missing, and stays off the list for that recipe.
- Nutrition folds to one line. The card under a recipe's numbers now reads "Nutrition · 237 kcal per serving" until you tap it; the table opens in place and stays open on every recipe once you've opened it. The ingredients sit where they did before.
Changed
- Optional is per recipe now. Long-press an ingredient on a recipe and choose "Optional for this recipe": it stops counting toward what you're missing and never lands on the list for that dish, while every other recipe and the pantry are untouched. The pantry's own "Optional" level is gone; foods you had marked that way are now Well-stocked, which keeps them off the list the same way.
- The front page's suggestion demo means it. "Save money" and "Variety" now pick five from eight candidates instead of shuffling the same five: cheapest trips lead in one, and a protein you already cooked this week waits its turn in the other, the way the plan composer works.
Fixed
- Re-import brings nutrition in. "Re-import from source" on a recipe saved before nutrition existed now fills its Nutrition card from the page, keeping your edits as before. A page that no longer publishes a panel keeps the values the recipe already has.
Changed
- The guide keeps up. The website's user guide and front page now describe nutrition, shared aliases, the "which one did you buy?" question and the energy setting.
- A bigger app icon. The two recipe cards now fill the tile the way iOS expects, sit optically centred, and the three ingredient lines stay crisp at home-screen size. iOS 18's tinted Home Screen gets a proper greyscale version instead of a flattened copy of the light one.
- The website wears the mark too. A favicon that follows the tab's light or dark theme, and the app icon for a home-screen bookmark, on every page.
Added
- renditionrecipes.com is open, and findable. The front page answers the apex, every page has one canonical address, a description and a link-preview card, the app is described to search engines as software, a sitemap and robots file point crawlers at the site and away from the API docs, and a wrong address gets a real page instead of an error document. Four new pages answer the searches people make: recipe manager, meal planning, grocery list, and pantry.
- Dark mode on the website, your way. Every page has a theme control in the top bar: Auto follows your device, or pick Light or Dark and the site remembers it, applied before the page paints so nothing flashes. On a phone the bar keeps the brand and the control, since the hero right below carries the same button.
- Which one did you buy? When a name on your list is one that several pantry foods share as an alias ("neutral oil" on canola and sunflower), checking it off asks which you bought and restocks that one, instead of guessing. A check made from Reminders, where there is nobody to ask, restocks the food that has always answered for the name.
- Nutrition from Paprika. A Paprika export's nutrition text comes in with the recipe, and Rendition writes it back out the same way, so it survives a round trip.
Fixed
- One alias, several foods. Canola, sunflower and grapeseed oil can each be known as "neutral oil", and a recipe that calls for it now reads as covered when any of them is on hand. The stock dot and the after-cook "did this run low?" list used to answer for whichever of them the pantry listed first, so an empty canola could hide a full sunflower.
Fixed
- The Shop and Recipes tabs no longer redo their sums on every frame. Under a "bought" pantry sort, each row's "Bought N times" note was re-folding the whole purchase history on every render; the per-food statistics are now computed once per reload and looked up. The library's stock-aware sorts likewise folded every recipe's ingredients against the pantry on every render; each recipe's score is now memoized and refreshed only when the pantry or a "needed here" override changes.
Added
- Nutrition, when the source states it. Recipe pages that publish nutrition (the Schema.org block most sites carry) now bring it in: energy, fat, saturated fat, carbohydrate, sugars, fibre, protein, sodium and cholesterol, per serving, shown on the recipe page under its numbers. Video imports that came with a nutrition panel are read the same way. Energy follows your region — calories in the US, kilojoules in Australia and New Zealand, both in Europe and the UK — with a switch in Settings, and the "% of a day" column uses your region's reference intakes, listing salt instead of sodium where labels do. Nothing is estimated: no data on the page means no card.
Added
- Settings opens the user guide. The "About Rendition" row is now "User guide" and opens renditionrecipes.com/guide, a walkthrough of each tab and the features that aren't obvious, instead of a short description of the app. The Changelog row now shows only builds since 2 September 2026.
- Import from the source page in one tap. Opening a recipe's source now uses Rendition's own browser instead of Safari's, with the same back, forward, share, reload and open-in-Safari controls plus an Import button. Browse from the source to any other recipe on the site and tap Import to bring it into your library — no share sheet, no hunting for the Rendition icon.
Fixed
- Buying a food under one of its other names no longer makes a second pantry row. Checking "granulated sugar" off the list used to open a new shelf beside the "Sugar" that already listed it under Also known as; the check-off matched only a food's main name. It now answers to every name on the page, so the purchase restocks the food you already have.
- (Internal — no user-visible change) UI tests start on Today, not on a stray Import sheet. With the test suites now running on one simulator instead of parallel clones, a share-import unit test's fixture link was leaking into the App Group hand-off and greeting the next launch with an Import sheet. The share-import model now takes its hand-off as an injected step so tests never touch the real container, and the UI-test reset drops any pending share link. CI also runs the simulator tests serially with a per-test time allowance, which is what turned three 30-minute hangs into a two-minute unit bundle.
Build 279
2 September 2026
Added
- A pantry item's page is about its names, not a ledger. "Record a change" and the exact-amount Activity ledger are gone from the item page, along with the "1 oz" a check-off happened to record — the pantry has been tracked by level (Out, Low, Well-stocked) for a while, and that screen was the last place still asking for amounts. The room goes to "Also known as": the item's other names sit right on the page as chips you can remove with a tap, with a field to add another, instead of behind the pencil. The pencil now just renames.
Build 278
2 September 2026
Added
- Sort the pantry by what you buy. The Pantry tab's new sort menu offers Location (the default), Inventory level (out, low, then stocked), Recently bought, Frequently bought (the last 90 days) and Most bought. Under a "bought" sort every food shows how many times it has been checked off the list and when last, and every one carries an add-to-list button, so the shelf stays useful even when levels aren't kept current.
- Non-food items have a home. Paper towels, dish soap and litter never sat in the pantry, so once checked off they vanished. A "Non-food items" list at the foot of the Pantry tab gathers every household, personal care and pet item you buy, most bought first, each a tap from the grocery list.
- Grocery purchases in Statistics. Every food checked off the grocery list counts as bought, and the record survives the row leaving the list: the Statistics screen now shows how many foods you've bought this year and all time, month by month, and the foods you buy most. Household, personal care and pet items are tallied on the Non-food items list instead.
Build 277
2 September 2026
Added
- No more stutter after switching Light and Dark. For a few seconds after the phone changed appearance, scrolling a recipe hitched: every color on screen re-resolves at once, and each resolution was rebuilding the theme's palette from scratch. Palettes are now resolved once and served from a table.
- The pantry is laid out like your kitchen. The Pantry tab now groups by storage location — Fridge, Freezer, Pantry, in the order you keep them — with foods alphabetical inside each and anything unplaced at the end. Locations had been set but never read; store aisles stay on the Groceries tab, where the shopping trip is.
- Fix a wrong aisle, once. Every grocery row now has a visible "…" button (the same actions as a long-press) with "Move to aisle"; the choice is remembered for that item's name. The classifier also learned that a seasoning is a spice, not the vegetable it's made from: garlic powder, onion powder, garlic salt, black pepper, red pepper flakes and dried oregano file under Baking & Spices instead of Produce.
- Say something isn't a food, after the fact. A pantry item's page has "Not a food…" (household, personal care, pet): it leaves the pantry, the name is remembered so it classifies that way next time, and any hand-typed grocery row for it is retagged. Grocery rows' "Change type" is now reachable from the "…" button too.