Archive for October 31, 2025

Friday, October 31, 2025

Combined Affinity Studio Now Free

Marcus Mendes (MacRumors, Hacker News, TidBITS-Talk, Mac Power Users):

Affinity has announced a complete overhaul of its design suite. Starting today, the company is unifying all its tools into a single app for vector, photo, and layout work, and making it permanently free.

[…]

Here’s Ash Hewson, CEO of Affinity:

“There’s no catch, no stripped-back version, and no gotchas. The same precise, high-performance tools that professionals rely on every day are now open to all, because creative freedom shouldn’t come with a cost.”

[…]

The all-new Affinity was completely redesigned to offer a seamless way to switch between vector, photo, and layout work.

Combining Affinity Designer, Photo, and Publisher into a single app is an interesting move. There was clearly duplication and extra friction from having them separate yet integrated, but it’s hard to get the user interface right in a mega app. I still prefer when Interface Builder was spearate from Xcode (though it matters less as I phase out my usage of nib files).

The immediate catch is that now you need to log into a Canva account to use the app, and there will probably be constant upselling UI, like with Apple’s services apps. Maybe that seems like a small price to pay for getting all these professional tools for free. But I have a bad feeling about this, both because it seems like the pro app functionality will no longer be the focus and because I don’t understand how they’re going to make money. Is the subscription with AI features that compelling?

Ernie Smith (via Hacker News):

Canva is well-suited for those smaller tasks, which is why they’ve convinced 24 million people to pay $120 per year or more for its offering, many in workplaces. Potentially, though, Canva Pro could be nearly as popular as Microsoft 365, which has an estimated 440 million paid subscribers. The pitch to employers: Rather than buying graphics software for one or two departments, everyone gets a Canva Pro subscription.

If only the market wasn’t so split because of all the professionals favoring Creative Cloud and looking down on Canva.

That’s where the make-Affinity-free logic comes into play. For years, Adobe’s Achilles heel has been its overwhelming high cost, which has left many early-career or freelance professional designers feeling sustained sticker shock, year after year.

[…]

If Canva can get more than 6 normies for every professional Adobe serves, they come out ahead.

[…]

Canva just flipped 40 years of design-business logic on its head, and if they pull this off, they look like geniuses. If they don’t, hopefully Affinity doesn’t get lost in the shuffle.

Jesus Diaz:

So, how does a free professional tool make business sense for Canva? Adams explains it to me with a simple mantra: “craft and scale.” The high-end, pixel-perfect “craft” happens in Affinity Studio. The “scale”—where that craft is used to generate massive amounts of content—happens in Canva. By making the craft tool free, Canva is betting it can grow the entire design ecosystem.​

The strategy is to build a frictionless bridge between these two worlds.

Craig Grannell (Mastodon):

All was good for a while. But fans got twitchy last year when Serif was snapped up by Canva, a company rather fond of subscriptions itself. Such concern escalated to full-blown panic this October when Affinity desktop apps vanished from sale, replaced by the cryptic slogan “Creative Freedom Is Coming”.

[…]

So what’s the catch? Well, the iPad version won’t be ready until next year, which explains why the iPad Affinity suite quietly went free rather than being pulled from the App Store. And there’s the integration of Canva AI tools, such as Generative Fill, Expand & Edit and Remove Background. GenAI is… divisive (let’s say) in the creative world. But those tools are entirely optional and Canva promises your work in Affinity “is not accessed to train AI features” anyway.

[…]

It does technically break Canva’s pledge to “offer perpetual licenses”, but given that the new price is literally zero, I think we can forgive the company for that. What I’m interested in now is not just how Affinity evolves, but also how Adobe responds.

Presumably, most of the future work will be on new features that require a subscription.

Brody Ford (Slashdot):

Adobe Inc. brought together 10,000 marketers, filmmakers and content creators to its annual conference this week to persuade them that the company’s software products are adapting to artificial intelligence and remain the best tools for their work.

But it’s Adobe’s investors, rather than its users, who are the most skeptical that generative AI technology won’t disrupt the company’s business as the top seller of software for creative professionals.

[…]

The company’s shares have lost about a quarter of their value this year as AI tools like Google’s video-generating model Veo have gained steam.

Previously:

Apple’s Q4 2025 Results

Apple (transcript, MacRumors, MacStories, Hacker News):

“Today, Apple is very proud to report a September quarter revenue record of $102.5 billion, including a September quarter revenue record for iPhone and an all-time revenue record for Services,” said Tim Cook, Apple’s CEO.

[…]

“Our September quarter results capped off a record fiscal year, with revenue reaching $416 billion, as well as double-digit EPS growth,” said Kevan Parekh, Apple’s CFO.

Jason Snell (podcast):

Now on to the charts!

The gross margin continues to climb and is now at 47.2%. I wish Apple reported separate numbers for hardware and services.

John Gruber (Mastodon):

Looking at Apple’s Consolidated Statement (PDF), the numbers look great across the board year-over-year: iPhone up 6%, Mac up 13%, iPad even, Wearables/Home even, and Services up 15%. Services now generates more revenue ($28.8 billion) than Mac, iPad, and Wearables/Home combined ($24.7 billion).

Manton Reece:

If iPhone revenue is essentially maxed out and flat, Apple will eventually become mostly a services revenue company. Very weird. 💰

As a fan of the devices but not the services, I don’t see how this can be good.

M.G. Siegler:

So yes, they’re well ahead of the $100B run rate. And so yes, that business – again, just Services – is now set to be bigger than Disney, Tesla, and all but around 40 companies in the Fortune 500, which is wild.

Jason Snell:

And to top it all off, Cook dropped the mother of all forms of “guidance,” which is what you call it when companies publicly predict their next-quarter results three months in advance: “We expect the December quarter’s revenue to be the best ever for the company and the best ever for iPhone.”

[…]

Just so we’re clear, that’s about $138B in total revenue and a minimum of $76B in iPhone revenue. (Check back in January to see if they were right.) Keep in mind that the results reported on Thursday only have a week or two of iPhone sales, while Apple now has an addition month of sales data with which to make projections. And if Apple is this confident, iPhone 17 sales data has to be really, really good.

One reason Apple is so confident is that it’s supply-constrained. In other words, for at least some iPhone models, it just can’t make enough to fulfill demand. Cook specifically called out Greater China revenue decreasing largely because the company faced iPhone supply constraints, and said that generally Apple was “constrained on several [iPhone] 17 models.”

The iPhone 17 is fine, but I have no idea why this is the model that’s setting records.

Mac revenue was a real highlight this quarter, with revenue up 13% over the year-ago quarter. That’s eight straight quarters of year-over-year growth, so it’s been two very strong years for the Mac after a year where it fell a bit off the heights of improved sales due to COVID and the advent of Apple silicon.

Adam Engst:

Apple warned that next quarter will be a “very difficult compare” because of the “mother of all Mac launches” from last year—the M4-powered MacBook Pro, Mac mini, and iMac (see “New MacBook Pros Gain M4 Chips, 12MP Center Stage Camera, and Thunderbolt 5,” 30 October 2024). While sales of the M5 MacBook Pro will boost next quarter (see “New M5 Chip Accelerates the MacBook Pro, iPad Pro, and Vision Pro,” 15 October 2025), Apple’s warning suggests we won’t see M5 models of the Mac mini, iMac, or MacBook Air until next year.

Juli Clover:

Apple is still on track to release an upgraded version of Siri next year, according to Cook. Apple is also planning for more partnerships like the ChatGPT integration in Apple Intelligence.

Previously:

Swift 6.2: Observations

Holly Borla:

Swift 6.2 enables streaming transactional state changes of observable types using the new Observations async sequence type. Updates include all synchronous changes to the observable properties, and the transaction ends at the next await that suspends. This avoids redundant UI updates, improves performance, and ensures that your code reacts to a consistent snapshot of the value.

As with notification center messages, this is really part of the macOS 26 frameworks rather than Swift 6.2 itself.

Donny Wals:

Sequences created by Observations will automatically observe all properties that you accessed in your Observations closure. In this case we’ve only accessed a single property so we’re informed whenever count is changed. If we accessed more properties, a change to any of the accessed properties will cause us to receive a new value. Whatever we return from Observations is what our async sequence will output. In this case that’s a string but it can be anything we want. The properties we access don’t have to be part of our return value. Accessing the property is enough to have your closure called, even when you don’t use that property to compute your return value.

[…]

When iterating over our Observations sequence we’ll receive values in our loop after they’ve been assigned to our @Observable model. This means that Observations sequences have “did set semantics” while withObservationTracking would have given us “will set semantics”.

Keith Harrison:

The updates are transactional so multiple synchronous changes arrive as a single updated value.

SE-0475:

Observation was introduced to add the ability to observe changes in graphs of objects. The initial tools for observation afforded seamless integration into SwiftUI, however aiding SwiftUI is not the only intent of the module - it is more general than that. This proposal describes a new safe, ergonomic and composable way to observe changes to models using an AsyncSequence, starting transactions at the first willSet and then emitting a value upon that transaction end at the first point of consistency by interoperating with Swift Concurrency.

[…]

This proposal does not change the fact that the spectrum of APIs may range from favoring AsyncSequence properties to purely @Observable models. They both have their place. However the calculus of determining the best exposition may be slightly more refined now with Observations.

Jared Sinclair:

Apple has effectively deprecated the reigning paradigm of the ObservableObject protocol and @Published properties observed via the Combine framework, but they’ve only partially provided its replacement via the @Observable macro and the withObservationTracking free function. The gaps between the old way and the new way are worth careful consideration.

[…]

Observations is an Apple-provided way for one object to subscribe to long-running changes to some other, @Observable-macro’ed object. It is written to use the AsyncSequence protocol. Despite the fact that withObservationTracking was released in OS 17, Observations has not been back-ported and requires OS 26.

[…]

To implement cancellation you need to wrap the entire thing in a Task, store that task in an instance variable, and determine key points in the lifecycle of your object to cancel that task[…]

[…]

It is important that your Task and your Observations structs weakly-capture both self and whatever object you’re trying to observe. But it’s still easy to get it wrong.

[…]

You can’t access a mutable var property from the deinit. You would need to wrap that property in some kind of synchronization box, like a Mutex, which comes with its own kinds of hassles and boilerplate.

Combine was much more succinct, but it seems like this API is a work in progress so it may get better next year.

Paul Hudson (Mastodon, Hacker News):

There are a handful of important usage notes you should be aware of when using Observations:

  1. It will emit the initial value as well as all future values.
  2. If multiple changes come in at the same time, they might be coalesced into a single value being emitted. For example, if our Task code incremented score twice, the values emitted would go up in 2s.
  3. The AsyncSequence of values being emitted can potentially run forever, so you should put it on a separate task or otherwise handle it carefully.
  4. If you want iteration to stop – to end the loop – you should make the value being observed optional, then set it to nil.

Lucas van Dongen:

I built a simple demo app with both the new and existing stuff.

Previously: