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.