Groceries
Your shopping list — an in-store checklist of what you’re planning to buy. Items land here when you tap Need it on a Pantry row, type one into the Add to the list… field below the list, or swap a listed ingredient for a recipe’s substitute. Nothing adds itself.
Tap an item off as you shop
Each item in an aisle — its row — is a small tile: a drawing on the left, the name and amount beside it, and a ⋮ on the right. Tap anywhere on the item except the ⋮ to cross it off, the drawing included. Its name is struck through and its drawing fades. With a keyboard, move to the item with Tab and press Space.
Crossing an item off counts as buying it, and the Pantry and the Menu see it at once. The item’s reminder clock restarts from that day, by the length under the Pantry’s After I buy, ask again in…, and the day shows as Last bought in its Pantry ⋮ menu.
The row stays here, crossed out, for an hour, then drops off. Tap it again within the hour to undo the buy, and the Pantry and the Menu go back to how they were. Adding the item again does the same, from any add field, Need it on the Pantry, or Mirabel. To clear crossed-off rows sooner, use Done shopping.
Every aisle header says what’s left in it: 3 left while items remain, or a ✓ once everything in it is bought. Tap the header to close the aisle, and tap it again to open it. The whole header is the tap target, so anywhere along the row works, and it lights up under your finger or cursor. There’s no arrow to find — a closed aisle’s header still shows its count or its ✓.
When you check off the last item in an aisle, its count turns into a ✓ and the aisle closes on its own about half a second later. That happens only on the phone or tab where you checked it off. An aisle someone else finishes stays open on your screen.
A closed aisle stays closed for the rest of your shopping trip — about 8 hours from when it closed. That holds whether it closed on its own or you tapped it shut, and whether or not it still has items to buy. This device remembers: the aisle is still closed after a reload, after a trip to another page, and after someone else checks things off. Once its 8 hours are up, it starts open again the next time you open or reload the list, ready for your next trip. A list you already have open keeps its closed aisles until then. Tap a closed aisle open to look back over what you bought, and it stays open. With stores set up, All stores and each store remember their own closed aisles.
Within a trip, a closed aisle opens on its own only while you have the list open. It opens when a new item lands in it — one you add, one someone else adds, or the substitute a swap brings in. It also opens when an item in it is unchecked on another device or tab. Nothing new hides inside a closed aisle while you’re looking.
Items that land while the list isn’t open don’t open the aisle when you come back. That goes for someone else’s add and for your own Need it on a Pantry row. The header’s count includes them, though. And if you add an item without a signal and then close its aisle, the waiting item doesn’t open it.
An aisle can also forget it was closed before the trip is over. An aisle leaves the list once its last row drops off. The next time your list shows without that aisle, this device forgets it was closed. Items that come back to it after that find it open.
See which recipes call for an item
Open the ⋮ menu on a row. It opens with From your menu: each recipe and QuickBite on your Menu that calls for the item. Each shows its own line for the item, boxed, with its title underneath. On a Green onions row, that might be 4 scallions, sliced over Scallion Pancakes.
- The line reads as the recipe does now. Edit the recipe’s amount and the new amount shows here too
- A recipe with two lines for the item shows both, over its title once
- A QuickBite shows the item as the QuickBite lists it, with a QuickBite label beside its title
- A line from an embedded recipe sits under the title of the recipe that embeds it. It ends with the embedded recipe’s name, and its multiplier when that isn’t 1:
2 tbsp butter (Garlic Butter × 2). That amount is the embedded recipe’s own; the row’s amount counts it twice - The line follows the version you picked. After you swap in a substitute, the line moves to the substitute’s row and reads as the substitute
A row nothing on your Menu calls for, such as a custom item you typed in, has no From your menu.
An open ⋮ menu stays open when a change from another device or tab lands on a different row. It keeps what it showed when you opened it, including an aisle you’ve picked but not yet saved. A new aisle name you’re typing under New aisle… is the exception: that change closes the menu. A change to the menu’s own row closes it too; open it again to see the row’s current choices and its saved aisle.
Your own words: You added
When you add an item under a different name than its row shows, the ⋮ keeps your words. Type scallions and the Green onions row joins the list. Its ⋮ shows scallions, boxed, labelled You added. That line comes first, under the From your menu heading and above any recipe’s line. On a row you added by hand that nothing on your Menu calls for, it shows on its own, with no From your menu heading.
- Typing the name the row shows records nothing, in any case, and singular or plural where Mirepoix knows both forms. Green onion and GREEN ONIONS both match the row
- Add the item again under other words, and the newest words replace the old ones. Add it again by the row’s own name, and the old words go
- An app with agent access keeps its words the same way when it adds an item that isn’t on the list yet, or is crossed off. If the item is already on the list and not crossed off, the app leaves the row as it is, words and all
- Items Mirabel adds when you tap Yes, add them on her offer keep no words. Her add never clears your words either
- Your words stay while the item is on the list, crossed off or not. They go whenever it leaves the list: when its crossed-off row drops off, or when it’s skipped or taken off, here or on the Pantry
Skip an item this trip
Open the ⋮ menu on a row and tap Skip this trip. The row leaves the list right away — there’s no confirm.
This is the path for items you’re not buying after all — you put saffron on the list earlier, but you’re not heading to that store this time. Skipping works like answering Have it with 1 week on a Pantry row that’s already on your list: the Pantry asks about the item again in a week — unless it’s set to Don’t ask — and until then your Menu counts it as on hand. Need it sooner? Tap Need it on its Pantry row, or add it again here.
On a row something on your Menu calls for, the button carries a reminder underneath: Asks again next week. A row nothing on your Menu calls for — a custom item, say — has no reminder, because the Pantry only asks about what the Menu calls for. Skipping it takes it off the list, and nothing asks about it later. An item set to Don’t ask has no reminder either: skipping takes it off the list, and its Pantry row goes back to Not asking.
A row you’ve crossed off doesn’t offer Skip this trip. To take back a purchase, uncheck the row instead.
Swap in a substitute
When a recipe offers a substitute for an ingredient — a line like - Buttermilk, 1/2 cup; or Milk, 1/2 cup, see Recipe format — that ingredient’s ⋮ menu carries a chip naming what tapping it does: swap to milk ⇄. It sits below the From your menu lines.
Open the row’s ⋮ and tap the chip, and your list switches over — the row that changed briefly glows so you can catch it while scanning a long list. A milk row joins the list, and the buttermilk row drops off unless something else on your Menu still calls for it. To switch back, tap the chip in the milk row’s ⋮. When a line offers more than one substitute, each tap moves to the next one and comes back around to the ingredient the recipe lists first.
The choice belongs to your kitchen, not to the recipe. It shows on everyone’s screen right away, and the recipe still lists every version — nothing is edited. You can make the same choice on the recipe page, where the line offers a chip for each other version (see Recipe format). The recipe’s nutrition follows the swap too: it counts the substitute you picked.
Editing the recipe in the recipe editor keeps your choice, as long as that line still offers the version you picked. So do importing a file that replaces the recipe, saving a change Mirabel proposes, restoring an earlier version, and a change an app or tool makes to the recipe with an agent access token, as long as the line also keeps its ingredient name. Otherwise the line starts over at the ingredient written first on it.
If two things on your Menu call for the same ingredient and both offer a substitute, the row’s ⋮ carries one chip per recipe, each naming its recipe: swap to milk (Pancakes).
Optional ingredients
A recipe line marked ; optional gets an optional pill on its tile, under the name and amount, so you can decide at the shelf. The pill shows only when everything on your Menu asking for that ingredient marks it optional — if one recipe needs it outright, there’s no pill.
Optional ingredients also sit out of a recipe’s availability on the Menu: they’re in neither the Missing nor the Have list, and they don’t move the count badge.
Add an item by typing it
Type into the Add to the list… field below the list and press Enter (or tap the +). The item joins the list right away.
A name Mirepoix knows joins the list under the name its row shows: type scallions and Green onions joins. The row’s ⋮ keeps what you typed under You added.
A new item lands in the aisle you’d most likely find it in, when Mirepoix is fairly sure which one that is, and in Miscellaneous when it isn’t. To put it in a different aisle, use its ⋮ menu once — that aisle is then remembered the next time you add the same name. See Custom items for the details.
Edit the aisle order
Open the ⋮ at the right end of the toolbar and tap Edit aisles to rearrange, rename, add, or remove aisles. Aisles with no items are hidden until something lands in them. For the full editor, see Editing aisles.
Group the list by store
Open the ⋮ at the right end of the toolbar and tap Edit stores to set up the stores you shop at. Once you have, the pill at the left of the toolbar names whichever store you’re shopping. Tap it to pick another from the Shopping at menu. All stores shows your whole list grouped by aisle; pick a store to shop that one on its own. Until you set up a store, the pill reads Groceries. For the full editor, see Grouping by store.
See how much is left
The ring in the toolbar, just left of the ⋮, shows how many items you still have to buy, and its circle fills in as you tap items off. Tap the ring for the numbers: 5 left to buy and 7 of 12 bought. Once everything is crossed off, the ring shows a ✓ and the first line reads All bought.
The ring hides when there’s nothing to buy: an empty list, or a store’s view where every item sits under Not Available Here.
The list is shared across devices in real time, so a partner checking something off at home updates your screen on the spot. A row someone else checks off, unchecks or adds glows briefly so you can spot it; your own taps don’t, and neither does anything when your device is set to reduce motion. The screen also stays awake while the page is open.
Finish with Done shopping
Once the ring shows its ✓, tap it and then tap Done shopping. A confirm dialog asks: “All done? This will mark the items below as purchased.” Confirm, and the crossed-off rows leave the list on this device right away. Other devices showing the list catch up shortly after.
Done shopping ends the hour early for what’s crossed off on the list in front of you. On a store’s view, that’s the items at that store; anything else you’ve checked off keeps its hour. If someone unchecks an item on another device before your Done shopping goes through, the item stays on the list. Once it has gone through, a later uncheck can’t undo those buys. If you didn’t actually buy something, add it back to the list with Need it on the Pantry or the Add to the list… field.
Three things make it wait:
- Your last checks are still saving. If this device is still sending your last changes to the list, you’ll see Still saving your last checks. Try again in a moment. Nothing changes; tap again once they’re through.
- A change from over a week ago never synced. A change this device saved more than a week ago is never sent, so waiting won’t clear it. You’ll see A change from over a week ago never synced. Open What synced to discard it. Tap Some changes need a look on the status line to open What synced, and tap Discard beside that change. Then tap Done shopping again.
- No signal. Without a connection, tapping it says Needs a signal to finish shopping. See Shopping without a signal.
The drawing on each item
An ingredient Mirepoix knows shows its own small drawing on its tile: a carrot on the Carrot row. A name Mirepoix doesn’t know, such as most custom items, shows a paper bag instead. So does an ingredient newly added to Mirepoix, until its drawing is ready. The drawings are decoration only: the name beside each one says what it is, and screen readers skip them.
The drawings follow your palette, Mirepoix or Catppuccin, in light or dark to match your device. Switch palettes and they change straight away, with no reload.
A long name wraps between words, and Mirepoix never adds a hyphen to split a word. A note in parentheses at the end of a name sits on its own line, in lighter text: Flour over (all-purpose).
What a row is called
A row names an ingredient Mirepoix knows by the catalog’s name for it, whatever your recipes or your typing call it. A recipe asking for scallions and another asking for spring onions share one Green onions row. The Pantry names its rows the same way.
A custom item, or any name Mirepoix doesn’t know, keeps the name you gave it.
Rows sort by the names they show, A to Z within each aisle. A row keeps its name after the recipe behind it leaves your Menu, for as long as the item stays on the list.
Your recipe pages keep your recipes’ words. To see what each recipe calls the item, open the row’s ⋮ — see See which recipes call for an item.
A row’s name agrees with its count, when the row has a single plain count and Mirepoix knows both forms of the name: Grapes at a count of 11, and Grape at 1. A phrase ending in a name it knows agrees the same way, so large eggs reads large egg at 1. A name with no forms Mirepoix knows, or a row measured in cups or grams, keeps the same name at any amount.
The same names show outside this page too: in the iPhone widget, an app with agent access, and Mirabel when she reads your list or checks your Pantry, including what’s running low.
How amounts are shown
Each item in an aisle shows the total amount you need, under its name and without parentheses: 3 cloves. When the same ingredient turns up across the recipes you’ve selected in compatible units, the list combines them into one amount — 1 cup in one recipe and 2 tablespoons in another show as 1⅛ cups on one row, not two lines.
A row reads its amount the way a recipe page does: fractions as glyphs, and a singular unit with them. Half a stick of butter is ½ stick, not 0.5 sticks; three quarters of a teaspoon is ¾ tsp. Units read in Mirepoix’s spelling whatever the recipe was written with, and metric amounts stay decimal — 0.5 l, not ½ l. The full set of rules is on Scaling a recipe.
A volume and a weight of the same ingredient also combine, as long as the app knows how much a cup of that ingredient weighs. So 1 cup of flour in one recipe and 140 g in another fold into a single weight in grams, instead of sitting side by side. This works whether the two amounts came from different recipes or from the same one.
When the app doesn’t know that ingredient’s weight, the volume and weight stay side by side, joined with “ + “. Counts never fold into a volume or weight — a count of 3 has no weight to convert — so a count also stays side by side. An item with no countable amount — salt to taste — shows no amount at all, however many things on your Menu call for it that way. When some recipes give an amount and others don’t, the row shows the amounts it can add up and says there’s more: a Parmesan row reads 100 g, plus some more.
A line a recipe writes as a package — 2 cans, 6 oz each — shops as its count and its kind: a Tomato paste row reads 2 cans. The per-package size stays on the recipe page. The list never multiplies the two together, so a row never reads a weight in place of the thing you pick up; cans are what you’re buying, so cans are what the row counts.
Two package lines of the same kind add up by count, the way any two matching units do — two recipes each calling for 2 cans put 4 cans on one row. That holds even when their per-package sizes differ: 2 cans of 6 oz and 2 cans of 12 oz still read 4 cans, and the row doesn’t mark that the two sizes weren’t the same. The count is the part you act on at the shelf; check the recipes themselves when the size matters.
Parts you don’t buy on their own
Some recipe lines name a part of something rather than the thing you put in your cart, or a step you do to it at home — lemon zest, the juice of a lime, an egg yolk, cooked rice, baked tofu. Those land on the list as the thing you actually buy: a tart calling for lemon zest puts Lemon on your list, and a recipe calling for the zest and the juice of the same lemons puts them on that one row. A recipe that asks for bottled lemon or lime juice names a bottle, and the bottle stays on the list as itself.
When something else on your Menu calls for the whole ingredient, the two share one row, and the row names both demands: a Lemons row reads 4 + 2 tbsp lemon zest.
The two amounts sit side by side, each in the recipe’s own words. They’re never added together. Two tablespoons of zest might come off one lemon or three, and Mirepoix won’t guess which — that call is yours at the shelf. Two parts of the same thing each get their own label too: an Eggs row reads 2 egg whites + 2 egg yolks. A line asking for a part with no amount reads as a for, beside the amounts of the rest: 4 + for lemon zest. When nothing on the row has an amount, it shows no amount at all.
The row acts as one row. Check it off, undo the check, skip it this trip, or answer Have it on Pantry, and everything folded into it follows — so a zest line can’t put the row back on your list after you’ve bought the lemons.
Typing a part into the Add to the list… field folds the same way. Type lemon zest and it’s Lemon that joins the list.
Which ingredients pair up this way is built in — there’s nothing to set. Today it covers lemon and orange zest and peel, lime zest, lemon and lime juice, orange juice (fresh-squeezed) (bought as orange), egg whites and yolks, cooked rice (bought as white rice), oil (bought as vegetable oil), neutral oil (bought as vegetable oil), oil (high smoke point) (bought as vegetable oil), and tofu (baked) (bought as tofu). Each part keeps its own nutrition, so a recipe’s label still counts the zest as zest — see Ingredient catalog.
What lives on the list
Each row carries a few pieces of state:
| What | Meaning | How it changes |
|---|---|---|
| On the list | Whether the row shows on Groceries at all | Need it, Have it or Take it off the grocery list on Pantry, Skip this trip here, a swap chip carrying the row over to a substitute, or any add field: this page, the search overlay, or Mirabel |
| Crossed off | Bought, with the row kept here for an hour | Set when you tap the row. Within the hour, tapping it again or adding the item back undoes it. Done shopping ends the hour early |
| The reminder clock | When the Pantry next nudges you about the item | Restarts from the day you cross the item off, and goes back if you undo it. Skip this trip sets it a week out |
| You added | The words you added the item under, when they differ from the row’s name | Set when you, or an app with agent access, add it under other words; replaced by a later such add; cleared by one under the row’s own name, and whenever the item leaves the list. Mirabel’s adds leave it alone |
When you’re empty, the page reads: Your cart is empty. Add items from the Pantry, or type one in below.
See also
- Pantry
- Printing — take the list with you on paper
- Custom items
- Editing aisles
- Grouping by store
- Shopping without a signal
- Selecting recipes
Last updated October 13, 2026