We like to think of physical products as one offs where what you buy tomorrow is the same as what you buy today.
But I have run a bakery for 5 years, and you get better day by day, you introduce new techniques, find different flours, optimize bake times for fluffiness, crispiness, and taste. The croissants we make today are much better than what we made during our first month.
We improved our product just like how software improves, but we did it without a croissant subscription, but by selling its own version as its own thing day by day.
What software companies need to do is sell versions, where the life time of the version usefulness is actually limited. In the physical world, we have wear and tear, or in the case of croissants, decomposition or consumption which limit customers from using the same product forever.
Can the same not be found for many software products?
To use iOS as an example, the OPs app Castro charges for night mode, but night mode via OS controls didn’t always exist in iOS so a theoretical Castro v1 could have been released without before it, and v2 would include that new feature. Or when inevitably, v1 no longer works on new iOS versions, people would have to upgrade.
We don't charge for night mode. I don't really think versioning would work very well for us, many have tried, but I do agree Apple should facilitate other business models like this in a better way.
> What software companies need to do is sell versions, where the life time of the version usefulness is actually limited... Can the same not be found for many software products?
Some of the enterprise software I've worked on has an option that functions this way. You pay for a specific version which is supported for a few years. You can keep using it forever but if you want to keep getting security updates or live support then you'll have to buy a newer version that is still in its support window.
Having said that, it seems like most businesses seem to prefer subscriptions.