{"id":38662,"date":"2023-03-02T13:45:58","date_gmt":"2023-03-02T18:45:58","guid":{"rendered":"https:\/\/mjtsai.com\/blog\/?p=38662"},"modified":"2023-03-03T09:14:06","modified_gmt":"2023-03-03T14:14:06","slug":"tweetbot-and-twitterrific-subscription-cliff","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2023\/03\/02\/tweetbot-and-twitterrific-subscription-cliff\/","title":{"rendered":"Tweetbot and Twitterrific Subscription Cliff"},"content":{"rendered":"<p><a href=\"https:\/\/daringfireball.net\/2023\/03\/tweetbot_and_twitterrific_face_the_cliff\">John Gruber<\/a> (<a href=\"https:\/\/twitter.com\/daringfireball\/status\/1631051443921715201\">tweet<\/a>, <a href=\"https:\/\/www.macrumors.com\/2023\/03\/02\/tweetbot-twitterrific-subscription-refunds\/\">MacRumors<\/a>, <a href=\"https:\/\/news.ycombinator.com\/item?id=34989008\">Hacker<\/a> <a href=\"https:\/\/news.ycombinator.com\/item?id=34998201\">News<\/a>):<\/p>\n<blockquote cite=\"https:\/\/daringfireball.net\/2023\/03\/tweetbot_and_twitterrific_face_the_cliff\"><p>Twitter&rsquo;s kneecapping of third-party clients didn&rsquo;t just mean that their <em>future<\/em> revenue was gone&#x2009;&mdash;&#x2009;it meant <em>revenue they&rsquo;d already collected<\/em> from App Store subscriptions would need to go back to customers in the form of prorated refunds for the remaining months on each and every user&rsquo;s annual subscriptions. Consider the gut punch of losing your job&#x2009;&mdash;&#x2009;you stop earning income. It&rsquo;s brutal. Now imagine that the way it worked when you get fired or laid off is that you&rsquo;re also suddenly on the hook to pay back the last, say, 6 months of your income. That&rsquo;s where Tapbots and The Iconfactory are.<\/p><p>[&#8230;]<\/p><p>This week, both Tapbots and The Iconfactory released updates in the iOS App Store to <a href=\"https:\/\/apps.apple.com\/us\/app\/tweetbot-for-twitter\/id1527500834\">Tweetbot<\/a> and <a href=\"https:\/\/apps.apple.com\/us\/app\/twitterrific-tweet-your-way\/id580311103\">Twitterrific<\/a>&#x2009;&mdash;&#x2009;not to restore any functionality, but to deal with the grim meathook reality of these paid-for subscriptions rendered useless by Phony Stark&rsquo;s imperious shitheadedness. Both apps, upon launch, now simply display a single screen describing what has happened, and offer options to users with existing subscriptions.<\/p><p>[&#8230;]<\/p><p>Tweetbot offers users three choices. The first is an option to transfer your existing Tweetbot subscription to <a href=\"https:\/\/tapbots.com\/ivory\/\">Ivory<\/a>, Tapbots&rsquo;s magnificent (and magnificently Tweetbot-like) new Mastodon client. [&#8230;] Twitterrific offers two choices: the same do-nothing-and-get-a-prorated-refund-from-us option, and a clear &ldquo;I Don&rsquo;t Need a Refund&rdquo; button with this heartfelt description[&#8230;]<\/p><\/blockquote>\n<p>Perhaps because I haven&rsquo;t developed a subscription product, I&rsquo;m really confused about what&rsquo;s happening here. The idea that some customers would want a prorated refund since the apps no longer work makes sense. And most businesses aren&rsquo;t prepared to deal with a large number of refunds, on top of no longer being able to sell their product. But I have questions about the details:<\/p>\n\n<ul>\n<li><p>How is the refund being triggered? Is this something Apple is imposing, or are the developers choosing to be nice to their customers and offer that option?<\/p><\/li>\n<li><p>What is the source of the deadline (in just under a month) for deciding what to do? Did the two companies agree on this together, or does it come from Apple?<\/p><\/li>\n<li><p>As far as I can tell, the App Store&rsquo;s refund API only lets the <em>customer<\/em> request a refund. Developers cannot initiate this themselves. Does Apple automatically issue prorated refunds if the developer deletes an entire subscription offering (for all customers)? But, if that&rsquo;s what they plan to do, how are they telling Apple <em>not<\/em> to refund the customers who opted out? If Apple is imposing this, maybe they get to use a private API?<\/p><\/li>\n<li><p>How does the developer actually pay for the refund? Presumably, Apple can&rsquo;t claw the funds back from your bank account, so they would have to be fronted by Apple and then deducted from future sales. Some developers have recommended (for other reasons) that <a href=\"https:\/\/mjtsai.com\/blog\/2020\/05\/11\/apps-that-cant-be-transferred\/\">each app have its own LLC and developer account<\/a>. That does not seem to be the case here, but if it were does that mean that both &ldquo;halves&rdquo; of the refund would come from Apple since that developer account would never have any more revenue?<\/p><\/li>\n<li><p>How hard was it to implement the subscription transfer to Ivory? Is it transferring the remaining subscription time or the remaining dollar value? The former would be a great deal, since Ivory is more expensive.<\/p><\/li>\n<li><p>Would this have been better or worse (for customers and developers) with paid-up-front vs. subscriptions? Certainly, without a subscription there should be less expectation of a prorated refund because there was no specified time period of service. You bought something and then it stopped working. But maybe some customers would try to request refunds of the entire purchase price? Would Apple go for that?<\/p><\/li>\n<\/ul>\n\n<p>Previously:<\/p>\n<ul>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2023\/01\/20\/twitter-makes-it-official\/\">Twitter Makes It Official<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2021\/06\/08\/storekit-2\/\">StoreKit 2<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2021\/05\/06\/whitelisted-developers\/\">Whitelisted Developers<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2020\/05\/11\/apps-that-cant-be-transferred\/\">Apps That Can&rsquo;t Be Transferred<\/a><\/li>\n<\/ul>\n\n<p id=\"tweetbot-and-twitterrific-subscription-cliff-update-2023-03-03\">Update (2023-03-03): <a href=\"https:\/\/twitter.com\/bdkjones\/status\/1631370074622951425\">Bryan Jones<\/a>:<\/p>\n<blockquote cite=\"https:\/\/twitter.com\/bdkjones\/status\/1631370074622951425\">\n<p>Stripe will <em>absolutely<\/em> withdraw funds from your bank account to fill a refund or credit card dispute&mdash;I&rsquo;ve had it happen. I&rsquo;d expect Apple to do the same. (Unclear what happens if that withdrawal bounces due to lack of funds, though.)<\/p>\n<\/blockquote>","protected":false},"excerpt":{"rendered":"<p>John Gruber (tweet, MacRumors, Hacker News): Twitter&rsquo;s kneecapping of third-party clients didn&rsquo;t just mean that their future revenue was gone&#x2009;&mdash;&#x2009;it meant revenue they&rsquo;d already collected from App Store subscriptions would need to go back to customers in the form of prorated refunds for the remaining months on each and every user&rsquo;s annual subscriptions. Consider the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"2023-03-02T18:46:00Z","apple_news_api_id":"2bacc3cd-69ff-405a-81cf-82bac8cb2793","apple_news_api_modified_at":"2023-03-03T14:14:08Z","apple_news_api_revision":"AAAAAAAAAAAAAAAAAAAABA==","apple_news_api_share_url":"https:\/\/apple.news\/AK6zDzWn_QFqBz4K6yMsnkw","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[2],"tags":[1421,101,31,2185,26,2324,181,49,233],"class_list":["post-38662","post","type-post","status-publish","format-standard","hentry","category-technology","tag-app-subscriptions","tag-business","tag-ios","tag-ios-16","tag-iosapp","tag-ivory","tag-tweetbot","tag-twitter","tag-twitterrific"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/38662","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=38662"}],"version-history":[{"count":5,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/38662\/revisions"}],"predecessor-version":[{"id":38678,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/38662\/revisions\/38678"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=38662"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=38662"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=38662"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}