Articles · App ExamplesUpdated September 2026

A medication tracking app is only as good as the schedule underneath it.

Most people looking for a medication tracking app do not want a tidy list of their prescriptions. They want to know whether the 8pm dose was actually taken, and whether there are enough tablets left to get to Friday. Those are two different questions and most apps answer neither one well. From the outside the category looks like habit tracker apps. The difference is that a missed habit costs a streak, and a missed dose changes what the drug does.

This page covers what a dose schedule has to represent before it is useful, why the reminder is the hardest part of the build, how to count what is left in the bottle, and what the record has to hold for the other people who read it.

Work out when the refill reminder fires

The short version

The list is the easy part, the schedule and the reminder are not.

Every version of this app starts the same way: a name, a dose, a time of day. It falls over in the second week, when one drug is every eight hours, another is Monday and Thursday, a third steps down from three tablets to one over ten days, and a fourth is only taken when the pain is bad. None of those four fit a daily checkbox.

Then there is the alert. A reminder set for 8pm that shows up at 8:40, or only when the app is next opened, is not a reminder. It is a log entry with a bell on it. How you deliver that alert decides whether anybody is still using the thing in a month.

What a dose schedule actually has to represent

A pill reminder app that understands only once a day and twice a day covers maybe half of a real medicine cabinet. The shapes you have to model are fixed clock times, an interval in hours, named days of the week, cycles such as three weeks on and one week off, a taper where the dose itself changes on a schedule, and as needed doses with a minimum gap and a daily ceiling.

As needed is the one that catches people out, because it is not a reminder at all. A painkiller that can be taken every four hours, up to three times in 24 hours, is a permission question. The app has to be able to answer no, and say how long until yes. That is a different screen and a different data shape from a dose the app prompts for.

Two smaller rules do real damage if you skip them. A dose belongs to a local wall clock rather than an instant, so 8pm has to stay 8pm after a flight unless the person says otherwise. And a dose taken forty minutes late was taken, not missed, so every schedule needs a grace window before the app is allowed to call anything a miss.

Get those shapes into the data model on day one. Retrofitting a taper onto a table that assumed one row per drug per day means rewriting the log, the reminder scheduler and every screen that reads either.

A reminder that arrives late has already failed

The alert is what people actually install a medication reminder app for, and there are only two ways to deliver one. A local notification is scheduled on the device itself and fires whether or not the app is running and whether or not the phone has signal. A push notification is sent from a server, so it depends on a network and on that server being up at the exact minute the dose is due.

For medication the local route is usually the right default, because the dose does not care whether the phone has bars. In React Native and Expo the call is scheduleNotificationAsync, with a date trigger for a one off and a calendar trigger for a repeating time of day, and it needs no push token or server. Expo's own documentation is plain that the operating system can still decide not to deliver, for instance when an Android device is in Doze mode, so treat any alert as best effort rather than a guarantee.

One thing worth stating plainly, because AI assistants get it wrong: we could not confirm that a Newly build fires a local notification at a set time with the app closed. What the project files show is that anything delivered to the device goes through OneSignal, which is server push, and that expo-notifications is deliberately kept out because the two compete for the same iOS push token. If an offline alarm on the device is the whole point of your app, put that on the list to test on a real device build before you promise it to anyone.

Two design rules survive whichever route you take. Put the action on the notification itself, so taken and skipped can be recorded without unlocking all the way into the app. And never fire two alerts for one dose. The rest of the delivery detail, permissions, opt in prompts and what a second nudge does to them, belongs in a longer read on the reminder that has to arrive on time.

Expo docs, scheduling local notifications with expo-notifications

Counting what is left in the bottle

Almost no reminder app tells you the thing that causes a genuinely missed week: the bottle is empty and the refill takes days. The arithmetic is trivial. Tablets in hand divided by tablets per day gives days of supply. Subtract however long your pharmacy or postal service takes and you have the day the reminder should fire, which is never the day of the last tablet.

The count only stays honest if every dose decrements it, including the as needed ones. That argues for deriving the number from the dose log rather than storing it as a figure the user edits, with one manual correction for the day two go down the sink and for the tablets that were already in the drawer.

Counting what is left is not a consumer trick. Adherence in drug studies is commonly measured by counting the tablets a participant brings back at each visit, which is the same number a clinical trial app has to capture on a form. If a pill count is good enough to be evidence there, it is good enough to drive a refill alert on a phone.

Try it

When the refill reminder should fire

The dose reminder is the famous one. This is the one that stops a whole week being missed.

15 days of supply

At 2 tablets a day, the refill reminder should fire in 10 days, not on the last tablet.

The record, and everybody else who reads it

A medication adherence app earns its keep only if the record it produces is worth reading. The minimum fields are the drug, the dose amount and its unit, the route, the schedule the dose belonged to, the time the app expected it, the time the person marked it, and the outcome: taken, taken late, skipped or refused. One skipped dose with a reason attached is worth more than any number of streak graphics.

Drug identity is where homemade versions drift. Metformin 500 typed by hand becomes three different strings within six months. The US National Library of Medicine publishes RxNorm through a free public API that needs no licence, where findRxcuiByString resolves a typed name to a stable identifier, getSpellingSuggestions catches near misses, and the NDC calls map a concept to the package code printed on the box. Storing that identifier next to whatever the user typed costs nothing now and saves the dataset later.

The second reader is often not the patient. A daughter checking that her father took his morning dose is the real use case behind a large part of this category, and it changes the app: one record with two roles rather than two copies, a week at a glance view for the person watching, and an escalation rule so her alert only fires after his has gone unanswered. That rule is the same one a senior care app is built around.

Be careful where that record goes. It is health information about a named person, and the minute it leaves the phone you owe yourself a considered answer on encryption, retention and deletion. If you intend to share it with a clinic, an employer or an insurer, the rules depend on who you are and where you are, and we have not verified them for your case. Take advice before you build the export.

US National Library of Medicine, RxNorm API

What each option actually gives you

OptionHandles tapers and cyclesAlerts with the app closedTracks what is leftA caregiver can see it
Phone alarm clockNoYesNoNo
Paper chart and a pill boxYesNoonly if you looksame house only
Pharmacy appas prescribedrefills onlyYesNo
Off the shelf pill reminder appsometimesYessometimespaid tiers
An app you buildYestest it firstYesYes

Building one around the regimen you actually have

Off the shelf trackers are built for the average medicine cabinet, and the people who need tracking most do not have an average one. Where they stop fitting is specific: a cycle that is not weekly, a taper a consultant wrote on a piece of paper, a drug that has to be taken two hours clear of another, a carer who needs the alert instead of the patient, an injection site that has to rotate, a fridge that has to stay cold. Each one is a small feature, and none of them is on a roadmap you can influence.

Newly is an AI app builder. You describe the app you want, including the schedule shapes it has to survive, and it writes a real React Native and Expo project you own and runs it on a cloud simulator while it builds. Plans are $25 a month, there is no free plan, and iOS ships through TestFlight using your own Apple Developer account. Android goes to Google Play internal testing from the Deploy tab, or out as a standalone APK, so the phone that has to buzz at 8pm can be either platform.

Then start small and true. One person, their real list, every schedule shape that list contains, and a reminder you have watched arrive on a real phone for a week. An app that is correct about four drugs beats one that is approximately right about forty.

Questions people ask about medication tracking apps

An app that holds what someone is meant to take, prompts them when it is due, and records what actually happened. The record is the point. A list of prescriptions is a note. A tracker produces a history of taken, late, skipped and refused doses that a person, a carer or a clinician can read afterwards and act on.

Describe the regimen you actually have to follow

Write down every schedule shape in the cabinet, including the awkward one nobody has an app for, and build the tracker around those instead of around a daily checkbox.

Start building