The FTC Made Amazon's Refunds Automatic. Killing Our Trial Still Needs a Step Nobody Has Confirmed.
On September 18th the FTC made Amazon's Prime dark-patterns refunds fully automatic, no forms required. We killed our own yearly free trial the day before, but the commit that did it names one manual dashboard step nobody has confirmed is done.
On September 18th, a federal court approved a joint motion from the FTC and Amazon that rewrites how the $2.5 billion Prime settlement pays people back. The original deal, from a year earlier, refunded people who’d been tricked into Prime or made to fight their way out of it, capped at $51 each. The new order raises that cap to $200, widens who qualifies to include anyone who used between 11 and 20 Prime benefits in a year, not just near-total non-users, and, this is the part I keep coming back to, makes every future payment automatic. No claim form, no response to a notice, nothing to fill in. Amazon just sends the money, by PayPal, Venmo, or check, starting October 1st. The FTC’s framing was blunt: the whole case was about a company that built friction into leaving, so the remedy was designed to have none.
I don’t think Mr Bite is an Amazon-scale offender of anything. But the week the FTC finished tightening that particular screw was also the week we made our biggest subscription change yet, and “automatic, no dependence on someone doing one more step” is exactly the bar I wanted to hold our own change against.
Here’s what changed. Three of the four Stripe subscriptions we’ve ever had cancelled on exactly day 14, the last day of our yearly plan’s free trial. That’s not a coincidence you get to ignore: people were taking the value and leaving on schedule, which means the trial wasn’t converting so much as it was training people to watch a calendar. So on September 17th we killed it. Stripe checkout stopped applying trial_period_days. The pricing endpoint started reporting trialDays: 0. The client’s own fallback, the number it shows if the server doesn’t answer, moved from 14 to 0, so even a dead endpoint can’t invent a trial that no longer exists. The buttons that used to say “Start free trial” now say “Get Unlimited.” The day-8 gate, three logged days after an uncapped first week, didn’t move. I think this is a genuinely honest change: we’re not hiding a charge, we’re removing the exact mechanic that let people forget one was coming.
Except the commit that made this change says something else, in its own words, that I can’t get past. Alongside the Stripe and Android work, there’s one line: “The App Store introductory offer on the yearly product must be removed in App Store Connect by the founder, or iPhones keep showing the trial the store still advertises.” App Store Connect isn’t our code. It’s Apple’s dashboard, and a change made there leaves no commit, no diff, nothing I can check by reading the repository the way I checked everything else this newsletter has ever covered. Our backend no longer knows about a 14-day trial. Android never had one to remove, since Google Play Billing only shipped for us this week and was built without a free-trial offer from the start. iOS is the one place where the trial isn’t a line of code we deleted, it’s a switch on someone else’s storefront that only stops existing if a person opens a dashboard and turns it off, and I have no way to confirm from here whether that’s happened.
That’s not a dark pattern in the sense the FTC meant it. Nobody sat down and decided to keep advertising a trial we’d already killed everywhere else. But it’s the same shape of gap the FTC just spent a settlement closing: a promise that lives in one system while the mechanism that would make it true depends on someone remembering to go do a second, disconnected thing. The FTC’s fix for Amazon was to stop trusting that a person would ever have to take that extra step again, refunds just happen now. Our fix for the App Store gap, as of the commit I read, is a sentence in a release note asking the founder to remember. I don’t have a way to make that automatic from inside the app, StoreKit doesn’t give us a webhook for “someone edited a product in App Store Connect.” What I can ask for is smaller: a single line back in RELEASE_NOTES.md, with a date, confirming it’s done, so the next person reading this repo isn’t stuck the same way I am right now, trusting a “must” instead of reading a “was.”
BITE of the Week

1.14.0 finished rolling out on Android (build 146, 100%, superseding 145) on September 17th, and iOS build 115 went to App Review the same day, still pending as I write this. The bigger change is 1.15.0, committed but not yet built for either store: BITE Unlimited can now be sold inside the app on Android through Google Play Billing, the first time Android has had its own in-app purchase path rather than showing “unavailable” while iOS sold. The yearly trial removal above is part of the same release, along with a smoother first launch (the notification prompt, the intake invite, and Mr Bite’s onboarding welcome now wait their turn instead of stacking on top of each other) and a model swap: chat, recipes, and plans now call DeepSeek’s V4.1-Flash on the client. The matching server-side switch across 15 functions is written and committed but not deployed yet; the live servers already accept the new model name, so nothing breaks in the meantime. One more thing landed on main this week that isn’t live in any sense: OraclePT partner links, which would let a coach receive a user’s weigh-ins and meals through a granted connection. Its two database migrations haven’t been applied and its two edge functions haven’t been deployed, so right now it’s code sitting in the repository, not a feature anyone can reach.
Three Quick Bites

-
A study of 104 Australians aged 65 to 75, covered by ScienceDaily on September 15th, found that four weeks on a lower-fat, higher-carbohydrate omnivorous diet measurably reduced participants’ biological age, calculated from 20 biomarkers including cholesterol, insulin, and C-reactive protein. The effect showed up in as little as four weeks, faster than most aging research expects to see a signal at all. ScienceDaily
-
Researchers at the University of Bristol, publishing in Science Translational Medicine and covered September 13th, found that primary aldosteronism, a hormone disorder that may drive high blood pressure in as many as one in five people who have it, often escapes routine blood tests because its telltale hormone surges happen at night, while patients sleep. Their wearable, U-RHYTHM, sampled hormones from the skin every 20 minutes over 24 hours in 60 patients and caught the nighttime spikes a single daytime blood draw would miss entirely. ScienceDaily
-
Sibylle Kranz, a registered dietitian at the University of Virginia, spent time testing several popular AI diet-tracking apps and published her verdict on September 1st: real convenience, real personalization, and accuracy she calls “a guessing game still,” with independent studies putting the typical per-meal calorie shortfall at 250 to 345 kcal. Photos get misread and crowdsourced food databases drift, which is a fair description of the exact problem our own photo scanner exists to fight. TechXplore
Tool of the Week: Deceptive Patterns

Since this issue is about the gap between a trial we meant to kill and a trial a storefront might still be showing, this week’s pick is the free reference built to name exactly that category of gap. Deceptive Patterns (formerly darkpatterns.org), run by Harry Brignull and collaborators, is a free online book and pattern library cataloguing the specific, named ways products trick or strand users, including the subscription and cancellation patterns the FTC has spent this year fining companies over. It won’t tell you whether App Store Connect still has an offer configured, but it’s exactly the checklist I’d want open the next time we ship a change to how people pay us or leave. Deceptive Patterns
Thanks for reading. If you want a coach that tells you when it isn’t sure its own trial is actually gone, Mr BITE is free on iOS and Android.
Collins, building Mr BITE