The marker-and-rotation systems above are honestly hard to beat for a pantry you can see at a glance, and the "best by, not bad after" point is well taken. But since the original post asked specifically about apps and that part never got answered: the requirements listed there (multiple storage locations, expiration notifications, works across home-canned and store-bought) are almost exactly the spec I built to, so sharing in case it helps.
Disclosure first: I'm the developer.
BeaglePrep (Android) assigns items to locations (basement, root cellar, camper), sends reminders before dates come up so rotation happens on schedule rather than by memory, and scans barcodes for store-bought goods while home-canned batches enter once and autocomplete after. The reminders are rotation nudges, not throw-it-out alarms; what you do at the date is your call. Fully offline, no account. Happy to answer questions here either way.