On September 12, 2023, Unity announced that it would start charging game developers a fee every time their game was installed. The internet did the rest. Within six days the company had issued an apology, within ten it had walked back the worst of it, and at one point it closed its San Francisco and Austin offices after threats against staff, threats that were later traced to a Unity employee. The fee was eventually cancelled outright. It is the most spectacular pricing backfire in recent memory, but it is not unique. Heroku detonated one in 2022. Docker has reworked its plans more than once to audible groaning from developers. The archive of these blowups is now deep enough to read for pattern, and the pattern is consistent: the changes that backfire share three shapes, and the companies that recover do one specific thing.
Three public detonations
The Unity case is worth getting precise about, because the precise terms are what enraged people. As Rock Paper Shotgun reported, the Runtime Fee would have charged $0.20 for every install past a $200,000 annual revenue and 200,000 lifetime install threshold on the Personal and Plus tiers, with Pro and Enterprise users paying between $0.01 and $0.15 above a $1 million and one-million-install line. Installs, not sales. A player reinstalling on a second device could rack up multiple charges, and the company had no credible way to count installs accurately, a problem The Register noted bluntly. Worse, the fee was announced as retroactive, applying to games already shipped on an engine that powers Hollow Knight, Cuphead, and Pokémon Go. Marc Whitten, who ran Unity Create, opened his apology with “I am sorry” and conceded the obvious: “We should have spoken with more of you and we should have incorporated more of your feedback,” per Kotaku. The walkback kept Personal free, raised its revenue cap from $100,000 to $200,000, dropped the retroactivity, and removed the Made-With-Unity splash screen.
Heroku’s was quieter but cut deeper for a generation of developers. On August 25, 2022, GM Bob Wise, a Salesforce EVP, announced via the Heroku blog and TechCrunch that all free plans, free Dynos, free Postgres, free Data for Redis, would end on November 28, 2022, with inactive-account deletion starting October 26. The stated reason was fraud and abuse. The Hacker News thread hit 908 points. One commenter, “driverdan,” ran the math that everyone felt: the change would roughly double the cost of a basic app on paid dynos plus database plus Redis, from $25 a month to $49. Heroku Dynos start at $7 a month, Postgres at $9, Redis at $15, per the same reporting. The deeper cost was strategic. Heroku, acquired by Salesforce for $212 million in 2010 and used to build 13 million apps, had been the free staging ground where a generation of developers, and most bootcamps, deployed their first app. Killing the free tier killed the on-ramp.
Docker has been the slow-burn version, and it is also the one with the cleanest recovery, so it is worth tracking start to finish. Its November 2024 plan overhaul introduced consumption-based pricing on Docker Hub starting March 1, 2025, plus image-pull limits and storage-based billing, framed as more value across the unified suite of Desktop, Hub, Build Cloud, Scout, and Testcontainers. Developers heard “consumption pricing on the registry we all depend on” and reacted accordingly, which is the through-line of the whole genre. Pricing on shared infrastructure that an ecosystem treats as a public good lands differently than pricing on a discretionary tool.
The three shapes that fail
Read the three together and the failure modes resolve into three shapes. The first is retroactivity, changing the deal on work that is already done. Unity’s original fee applied to games already shipped, which is why “we are not changing your terms unless you upgrade” was the single most calming sentence in the walkback. You can change the price of the next thing. Changing the price of the last thing reads as breach, not pricing.
The second shape is the mid-cycle yank of something people built on. Heroku’s free tier was not a promotion, it was load-bearing infrastructure for staging apps, side projects, and teaching. Removing it mid-flight, with the database deletion clock running on three months’ notice, stranded people who had architected around its existence. The blame-the-abusers framing made it worse, because it told legitimate users their loss was collateral damage from someone else’s fraud.
The third shape is the packaging shuffle with no added value, raising the effective price while claiming it is about delivering more. Docker’s “more value” framing on a consumption model is the soft version. The hard version is any repackaging where the customer does the arithmetic, finds they are paying more for the same thing, and concludes they are being managed. Customers forgive a price increase tied to visible new value. They do not forgive being told a price increase is a gift.
You can change the price of the next thing. Changing the price of the last thing reads as breach, not pricing.
The one thing survivors do
Across the recoveries, the move that works is the same: communicate the change before it bites, segment who absorbs it, and give the people it would genuinely break a path out. Unity only stopped the bleeding when it confirmed existing projects could stay on their current terms unless the developer chose to upgrade. That is the survivor move in its purest form, an opt-in boundary that protects the work already done.
Docker’s climb-back is the textbook version of doing it without a hostage crisis. In a February 21, 2025 post titled “Revisiting Docker Hub Policies,” the company cancelled the pull-consumption charges entirely and delayed storage billing indefinitely, then by April 8 confirmed it had not enforced the rate-limit changes at all, leaving 100 pulls per six hours for unauthenticated users and 200 for the free Personal tier in place. The unauthenticated cap, a spokesman told The Register, touched only about 7% of users, which is the point: Docker segmented the change down to the slice that actually drove cost and pulled it off everyone else. It also promised at least six months’ notice for any future enforcement. Notice plus segmentation plus a public reversal of the parts that overreached, on a registry trusted by more than 20 million developers, is what a recovery looks like when nobody has to apologize for a threat against staff first.
Patrick Campbell, who built ProfitWell and Price Intelligently into the financial-metrics layer for roughly a fifth of the subscription market after stints as an economist at Google and the US intelligence community, frames the discipline counterintuitively. His advice, given to Intercom in 2018, is to not be afraid of raising prices and, perhaps surprisingly, not to reflexively grandfather existing users. Focus instead on making it an easy transition and clearly explaining the added value, and, critically, “have a contingency plan for customers whose core business may be torpedoed by a price hike.” That last clause is the whole thing. The failure in every backfire above was the absence of a contingency for the people the change would wreck. Unity had no plan for the indie studio whose shipped game would suddenly owe per-install fees. Heroku had no plan for the bootcamp running fifty student apps on free dynos.
Campbell’s point cuts against the idea’s tidy framing, and it is worth sitting with: blanket grandfathering is not always the right answer, because it freezes a chunk of revenue forever and trains customers to expect that price changes never apply to them. The survivor move is not “grandfather everyone.” It is “know exactly who the change destroys, and route them somewhere they can survive.” Sometimes that is grandfathering. Sometimes it is a longer transition, a discount, or a dedicated plan. The fatal version is having no route at all.
What a good pricing change looks like
The inverse of the three shapes is a usable checklist. Price the next thing, not the last thing: changes apply forward, and existing commitments are honored or explicitly opted into. Tie the increase to value the customer can see, so the arithmetic confirms the story rather than contradicting it. Give notice that is long relative to the switching cost you are imposing; three months to migrate a database, as Heroku offered, is short when the alternative is rebuilding your deployment pipeline. And build the contingency Campbell describes before you announce, not after the apology.
The clearest tell that a pricing change will backfire is the order of operations in the announcement. The backfires all led with the new economics and treated developer reaction as a communications problem to manage afterward. Whitten’s apology said the quiet part: they should have talked to developers before announcing, not after. Pricing on shared infrastructure is not a number you set. It is a deal you renegotiate with people who already built on the old terms, and the ones who handled it well started that renegotiation before the new price ever took effect.