Archive for December 20, 2024

Friday, December 20, 2024

Why Disney Stopped Subscriptions on the App Store

Ariel Michaeli (October 2024):

I see Disney’s choice of leaving the App Store as a long-term mistake that would cost them even more than the 30% they were giving Apple.

Ariel Michaeli:

Now that we have enough MRR data I think the reason is a bit clearer - and it isn’t just about fees.

[…]

In November, the first full month of no subscriptions, Disney+’s net revenue dropped by about $16M and Hulu’s by 28% - that’s double-digit millions in both cases - which means paying users are abandoning Disney at an alarming rate.

I think the reason Disney pulled out of subscriptions in the App Store is because they couldn’t figure out how to fight the churn which in turn necessitated getting fresh subscribers which isn’t easy.

Maybe I’m missing something, but this doesn’t make sense to me. First, the revenue reported is from both the App Store and Google Play; it would be helpful to see the Apple portion broken out. Second, why would leaving the App Store help with churn? I could maybe see that there’s more churn with App Store customers because Apple makes it easier to cancel. If you can get the same person to subscribe on the Web they might be more sticky. But, on the other hand, maybe it’s easier to sign them up with IAP. Easy come, easy go.

Without knowing the overall revenue picture, including direct-to-Disney revenue, I think it’s hard to conclude much. Of course, the App Store numbers are going down because every month there will be some cancellations with no new sign-ups. But we don’t know how many new and return subscribers there are or whether that would have been higher or lower with the App Store. Presumably, in the past there was a good stream of new App Store subscribers since the total was up over the year.

To me, the only thing this shows for sure is that the churn is very high, which suggests that lots of App Store subscribers were not staying long enough for Disney to go down from paying 30% to 15% in fees to Apple.

Previously:

Update (2024-12-20): Joe Rosensteel:

I have no data for this, but I continue to believe this is mostly about bundling in two ways: Bundles combat churn because people don’t want to start/stop parts of a bundle. Bundlers can also charge more for a bundle, which means higher fees. I think part of this will be explained when we see how much the “flagship” ESPN product will eventually cost.

The non-bundle DTC angle is that Disney can directly appeal to customers to rejoin for “relevant” shows. Can’t do that through Apple.

Provenance Rejected From the App Store

leazhito:

Around 4 hours ago developer posted that the app was once again rejected by Apple for weird reasons regarding adding games during testing.

They later posted that they submitted another appeal.

And shortly after this (see image) thread of two tweets mentions they have seemingly ran out of money due to Apple’s decision making and that unless the appeal works out, this “may be the end of Provenance for a while”.

Via Craig Grannell:

App review, as ever, is inconsistent. It still feels like Apple has it in for emulators, even if Consoles got approved (well, on one platform – last I saw, all non-iOS versions weren’t out despite the iOS one being live). What a mess.

Previously:

Apple Sued for Not Searching iCloud for CSAM

Ashley Belanger:

Thousands of victims have sued Apple over its alleged failure to detect and report illegal child pornography, also known as child sex abuse materials (CSAM).

The proposed class action comes after Apple scrapped a controversial CSAM-scanning tool last fall that was supposed to significantly reduce CSAM spreading in its products. Apple defended its decision to kill the tool after dozens of digital rights groups raised concerns that the government could seek to use the functionality to illegally surveil Apple users for other reasons. Apple also was concerned that bad actors could use the functionality to exploit its users and sought to protect innocent users from false content flags.

Child sex abuse survivors suing have accused Apple of using the cybersecurity defense to ignore the tech giant’s mandatory CSAM reporting duties. If they win over a jury, Apple could face more than $1.2 billion in penalties. And perhaps most notably for privacy advocates, Apple could also be forced to “identify, remove, and report CSAM on iCloud and implement policies, practices, and procedures to prevent continued dissemination of CSAM or child sex trafficking on Apple devices and services.” That could mean a court order to implement the controversial tool or an alternative that meets industry standards for mass-detecting CSAM.

[…]

To build the case, survivors’ lawyers dug through 80 cases where law enforcement found CSAM on Apple products, identifying a group of 2,680 survivors as potential class members.

Previously:

Swift Concurrency in Real Apps

Bryan Jones:

Consider this code, wherein we create a custom NSTableColumn that uses an image instead of a String as its header.

Holly Borla posted a fix that special-cases NSObject.init():

Now, overriding NSObject.init() within a @MainActor-isolated type is difficult-to-impossible, especially if you need to call an initializer from an intermediate superclass that is also @MainActor-isolated. Standard opt-out tools like MainActor.assumeIsolated cannot be applied to things like stored property initialization and super.init(), making the issue extremely difficult to work around. This is a major usability regression for programs that interoperate with Objective-C and make heavy use of @MainActor-isolated types.

[…]

I can’t reproduce a failure by overriding viewDidAppear in a @MainActor-isolated subclass of UIViewController, but if this is happening for methods that are marked as nonisolated or otherwise aren’t annotated with @MainActor, then that is a deliberate result of my original change. Overriding superclass methods and changing isolation does risk a data-race, which is why I made the original change. If you believe the superclass method is incorrectly annotated, that is a framework problem that you should report via Apple Feedback Assistant.

Matt Massicotte (Mastodon):

(As it turns out, UINib actually is MainActor-isolated, while NSNib is not. There’s one person out there somewhere maintaining a cross-platform app that uses nibs and this is going to make their life hell.)

The whole point of Nibs is to serialize UI components. That’s literally the only reason it exists. And that doesn’t work in Swift 6[…]

[…]

The compiler must honor the API contract of awakeFromNib. The framework maintainers have decided to not apply any isolation. The types and APIs aren’t able to fully describe the concurrent behavior, but the developer knows what’s actually going to happen at runtime.

This is a special-case of a very common issue and is exactly why dynamic isolation exists.

[…]

Some APIs, even really important ones that you use every day, just won’t ever work well with Swift concurrency. I’m certain some language changes could make things a little easier here and there. But, largely, these problematic APIs are going to be deprecated and replaced. It’s happening with Notifications right now.

Drew McCormack:

Pretty sure there are use cases for background threads. I think code for printing uses NSView, and usually involves a background op.

Der Teilweise:

TIL: awakeFromNib() can be called more than once when objects are loaded from XIBs.

IDK, maybe that is something that should be mentioned in the documentation.

Previously: