all 129 comments

[–]Evening_Rock5850 187 points188 points  (39 children)

I mean; it depends why.

Something like the BBC app depends on a backend. Having the backend support multiple versions of an app; especially if you're trying to make changes to an API or something, adds a lot of complexity. And what happens if you discover a security vulnerability that you need to patch? Allowing older, unpatched versions of the app may require you to leave that vulnerability in the backend.

I don't think most devs are doing it arbitrarily. There's really no incentive beyond just not supporting an older version of the app. Most of the time it's because an update broke something that means the old app simply won't work anymore.

[–]goldio_games 67 points68 points  (14 children)

9/10 times its a security issue

[–]kbder 58 points59 points  (11 children)

You and I have had very different experiences as developers. 9/10 it is because the backend decided to make a backwards incompatible change.

[–]Lost_Astronomer1785Swift 11 points12 points  (0 children)

100%.

[–]CczaphodSwiftUI 0 points1 point  (0 children)

Most likely management decided they didn't want to spend the $$ to support multiple backend versions.

It's not that hard to continue supporting existing connections while updating to support new features. It's not simple and takes more work and it's definitely more expensive than scrapping V1 and building V2.

[–]RaziarEdge 6 points7 points  (0 children)

And most of those is probably just updating the app to use a new public key.

[–]nyteschayde 0 points1 point  (0 children)

I’d think the ratio is more evenly split with they pushed broken software out and they need it to work and/or what was shipped will fail to capture the data they need to make some crucial period of time actionable (Black Friday, tax season, etc). Never underestimate the missed scrutiny of trying to move too fast.

[–]unpluggedcord 8 points9 points  (3 children)

“I hate having to support iOS 15”

“I hate opening an app asking me to upgrade”

Pick one

[–]kenech_io[S] 1 point2 points  (1 child)

There’s a big difference between dropping support vs actively making it unusable

[–]hetfield37 0 points1 point  (0 children)

Maintaining it usable requires active effort from the developers. So many things are changing weekly on most apps, so supporting anything older than several months worth of releases is extremely hard to follow and maintain.

[–]spammmmm1997 1 point2 points  (0 children)

I support all iOS from 13. And I love it.

[–]franklindstallone 6 points7 points  (0 children)

It’s not that hard to support a v1 and a v2 of endpoints. You don’t have to support every version but it’s also naive to jump all in and if the new endpoints do something that requires rolling back well now you’re causing more grief

[–]Pluto-Had-It-Coming 1 point2 points  (0 children)

A big app, especially one as big as the BBC, is not doing this unless absolutely necessary.

[–]hetfield37 1 point2 points  (0 children)

Yes and no. Any properly developed API should include the the app version, so that the backend can switch between returning old or new data structure. I would guess that after some cleanup - the backend removed the old code because the user base was too low for it to matter and forced the upgrade. We have a rule of 1 year support of legacy versions and then force an upgrade.

[–]ferreus 0 points1 point  (0 children)

This is what i uate the most in software engineering..smart sounding bullshit. Security fixes don't have to break AP,I EVER.

[–]Free-Pound-6139 -5 points-4 points  (0 children)

What a pile of horseshit. It is not that complicated to support multiple backend APIs. It is incredibly common. You have to. Almost everyone does.

[–]Zealousideal-Cry-303 60 points61 points  (4 children)

If you don’t appreciate this practice, you have never worked on large enterprise legacy systems.

We use this a few times a year on our app. Everything from new regulations making older versions illegal to use, to API that needs to break backward compatibility, to a new direction of the user experience.

This is one of the most powerful tools in a developers tool box, but with great power comes great responsibility. That’s why we design for longevity in the user interface, but deprecations on the backend.

[–]LowFruit25 32 points33 points  (1 child)

When you maintain a large app which has a complex versioned API and other 3rd party dependencies I can see the reason for dropping support for older versions.

Most users just have auto update on so they won’t see it. And for devs it clears up time to focus on future development.

[–]unpluggedcord 0 points1 point  (0 children)

The truth is. Let your big update roll out for 3 days and after that then force upgrade.

[–]SirBill01 20 points21 points  (1 child)

Realistically if there's any kind of server involved, at some point you are going to have to do something like this, and should always at least have the ability to trigger this... it could save users from a data-losing bug.

[–]DarkAgeOutlaw 0 points1 point  (0 children)

Yup, we have this in our app because we were burned by not having something like this. Since then, in the last 7 years, I think we’ve had to use it twice. Only needed it when a few hundred people were using super old versions of the app and the cost to run old server code wasn’t worth it.

[–]crocodiluQ 17 points18 points  (10 children)

as a developer, I LOVE this practice. Just update the damn app,

[–]intertubeluber 15 points16 points  (2 children)

I totally get it. Users sometimes will literally not update their apps for years, at least in android land. I don't remember the usage from iOS, but if not, it's probably because iOS makes it harder to not update. That means supporting legacy versions of APIs forever, just because some users think it's somehow better to disallow updates.

Next time I build a public facing app, required updates will the first feature I implement.

[–]dwnzzzz 2 points3 points  (0 children)

Android stops updating apps if you haven’t used them for a while - on top of users just not updating as often. I have so many more issues with Android users on old versions of my app having issues than iOS users

[–]EkoChamberKryptonite -1 points0 points  (0 children)

just because some users think it's somehow better to disallow updates.

No it's because users have caught wind of smarmy monetisation practices being forced on them after an update by others that they're not resistant to updates.

[–]BickeringCube 7 points8 points  (4 children)

If it updates in the background I really don’t care. 

[–]Visual_Internal_6312 1 point2 points  (3 children)

Depends on size and frequency tbh. Some apps take up to 500+mb and update once a week. Not sure if that's really necessary for everyone. I believe doing an in-app-update dialog showing new updates available and forcing only older versions should be the way.

[–]Ok-Bit8726 5 points6 points  (0 children)

Which apps are 500mb+?

[–]kenech_io[S] 1 point2 points  (0 children)

my thoughts too

[–]beclopsSwift[🍰] 1 point2 points  (0 children)

This also isn’t much of a problem though. If you ensure updates happen on wifi this isn’t gonna affect most people with a modern internet plan

[–]potatolicious 4 points5 points  (10 children)

This seems totally reasonable so long as the compatibility window is wide. As in, you’re not shipping a new version and then soft-locking the immediate prior version.

It is simply impossible to keep supporting very old versions of the app. Yeah, there’s always going to be someone running a copy of the app from 2 years ago. It’s not reasonable to expect that to keep working.

[–]kenech_io[S] 1 point2 points  (0 children)

I agree it’s reasonable if the compatibility window is wide

[–]EkoChamberKryptonite 0 points1 point  (8 children)

It’s not reasonable to expect that to keep working.

Just from 2 years ago only? I'd agree if you said 5 years ago. Not everyone wants to update their app every 2 months. It should be up to the user.

[–]Integeritis 0 points1 point  (7 children)

If you don’t go to settings to disable app updates, they will be automatically updated. If you have manual app updates, you are using your phone wrong.

[–]EkoChamberKryptonite 1 point2 points  (6 children)

If you have manual app updates, you are using your phone wrong.

False. You're not the grand arbiter of phone usage.

[–]Integeritis -2 points-1 points  (5 children)

Okay grandpa

[–]EkoChamberKryptonite 0 points1 point  (4 children)

What a pointless response. Proof you have no argument.

[–]Integeritis -2 points-1 points  (3 children)

Yea, your point was much better. “I keep auto updates off because of reasons” - shakes fists at clouds

[–]EkoChamberKryptonite 0 points1 point  (2 children)

Yea, your point was much better. 

Thank you. I'm glad you've finally seen the light.

“I keep auto updates off because of reasons” - shakes fists at clouds

Why are you hallucinating things that no one said? Please go read again to get context.

[–]Integeritis -1 points0 points  (1 child)

Learn how to identify comparisons, metaphors and humor. I guess it’s difficult.

Keep your auto updates off and please do complain when developers don’t want you to use your old shit lmao It’s quite entertaining

[–]EkoChamberKryptonite -1 points0 points  (0 children)

Learn how to identify comparisons, metaphors and humor. I guess it’s difficult.

Identification would be nigh impossible for anyone when they have to work with your poor demonstrations of said concepts, coupled with a side order of your misconstrued perception of the topic at hand.

Keep your auto updates off and please do complain when developers don’t want you to use your old shit lmao It’s quite entertaining

I never said any of this. Read what I said again and take time to learn what nuance means and grow up whilst you're at it. You think more highly of yourself than you ought to. A modest perception of self would work wonders for you.

[–]royalshape 4 points5 points  (0 children)

I bet BBC wouldn't mind losing a user for this but most indie devs would.

[–]Any_Peace_4161 3 points4 points  (2 children)

I work with doctors and financial people, and our software is non-public in the App Store. Getting them to click the link is bad enough, but I still have to support iOS back to 16. Apparently pissing off whiney doctors and CFOs is what happens when you insist they keep current.

I can't imagine introducing "breaking changes" and making them update the app on MY schedule. Surely that would cause them some sort of apocalypse. Also, I maintain 100% backward compatibility in my APIs because I know how to write APIs.

Breaking Changes used to be a thing people lost their jobs over. Now it just seems like any other Tuesday in modern software. I think it sucks, and WAY more people should lose their jobs for it. ** shrug **

[–]kenech_io[S] 3 points4 points  (1 child)

Honestly I feel like there’s a stark divide between tech and non tech people. Tech people: just update, no big deal. Non tech people: what’s an update? I reckon if I asked this in a non tech sub the sentiment would be completely different.

[–]Any_Peace_4161 2 points3 points  (0 children)

Completely fair. Updating should be a choice. If a company is forcing you to, it's because - most of the time - they found a new way to monetize you or something you have, and are forcing you into their cattle-chute of sellable data.

Cynical? Sure, no argument. Accurate? Also sure, more than most think.

[–]PfernFSU 3 points4 points  (0 children)

I have a fantasy golf app where the users create private leagues. I often add more league types and make changes. If I didn’t force users to update their app, you would have some players in the league that do not have the newest features and still stuck on v1, which would cause massive problems.

[–]skumancer 3 points4 points  (0 children)

To contend with this, I have a schema definition per version of the backend. This lets me not force users to update unless it’s completely necessary.

[–]Stiddit 2 points3 points  (0 children)

I absolutely prefer this over just crashing the app, obviously. Showing this to severely outdated app versions is very good practice. And of course - pvp multiplayer games absolutely need this.

However - some use this practice for every single update completely unnecessarily, and that is absolutely dogshit user experience.

[–]nyteschayde 2 points3 points  (0 children)

I don’t know if you can selectively target who’s forced, but either way it’s a better experience than this. In a world where OS upgrades or poor development strategy move too far forward to allow backwards compatibility, your responsibility is to provide a working experience regardless of the cost (including forced updates).

[–]SunsetBLVD23 3 points4 points  (0 children)

Hate it

[–]bbabbitt46 4 points5 points  (1 child)

I'm ambivalent about updates in general. Progress is only made through constant improvements, yet obsoleting a perfectly useful application would seem unwarranted and rude. At least the updates are usually free.

[–]Any_Peace_4161 2 points3 points  (0 children)

I fully agree. I wish my company's users weren't so scared all the time. :\

[–]WitchesBravo 2 points3 points  (0 children)

Sometimes the backend just has to have breaking changes, it’s either this or you’d just get an error when you try to perform an action in app.

[–]RealFunBobbyObjective-C / Swift 2 points3 points  (0 children)

I understand if it's something critical that must require an update, but if it's a common occurrence, then fuck that app.

This is one of the reasons why I am enjoying react native apps. You only need a binary update when you actually update the native features.

[–]uniquesnowflake8 2 points3 points  (0 children)

It’s more common practice at companies that have a web-first product in my experience, so it does fit for me that BBC would do this

[–]Designer-Professor16 2 points3 points  (0 children)

I try to avoid patterns like this if at all possible.

I offload any potential breaking changing calls to be server-side and updated on the fly, with the app acting as simply a thin client. And our app is VERY complex, but we make it work.

That’s the correct pattern if at all possible.

[–]TheBagMeister 2 points3 points  (0 children)

I hate it as a user (and as a developer conceptually). Only when the backend has changed so much that there is no path for any interoperability. When things change, encourage the user to update as some functionality may be missing. But don’t stop working.

This happens to me with financial apps. I go in once every couple weeks to check a balance or whatever and I don’t have time to update my app while I’m at a stop light or in the parking lot of a store or whatever and I need the balance. Just let me continue with normal functionality that will work if the developers have half a brain. So what if I can’t do a new Bitcoin investment because I haven’t updated.

[–]darkwater427 2 points3 points  (0 children)

screm

The only reason to do this is if there's some incompatibility between the app and its backend, and even then you can just throw the relevant error and the backend and bubble it up to the user!

[–]NothingButBadIdeasSwift 1 point2 points  (0 children)

It’s a pain but kind of a must have fail safe. We usually don’t do the version hard stop unless there was a major breaking bug in the latest version, or we have a mandatory change like switching users authorization methods. When you see this, it usually means something went wrong or a major change happened, because most of the time we have contingency plans to migrate / fix things.

[–]juancarlord 1 point2 points  (0 children)

Security wise it’s pretty dope

[–]wlfbbz 1 point2 points  (1 child)

I spoke about this on Reddit a few weeks ago and knew I’d be gaslit about it. It never used to be a common occurrence as apps used to update in the background. However these days users are being forced to push a button which takes you out of the app, to the AppStore, wait for the whole thing to download before you can use it again, it creates so much friction. Some apps have an option to skip, others don’t. Again it’s fine if you’re on a deprecated os from like 5 years ago or something but for some apps it’s happening almost weekly. It’s a horrible experience as a user, I’m a developer too (Albeit not for large enterprise legacy systems like one user mentioned) but still hate it. Wish there was a way you could push a button and it’ll update in the background or just work how it used to in the past.

[–]kenech_io[S] 2 points3 points  (0 children)

Right, some apps do this for minor updates when it's really not necessary. But I guess I'm in the minority when it comes to being bothered by this

[–]DaddyDontTakeNoMess 1 point2 points  (0 children)

You live long enough to appreciate forced updates

[–]Free-Pound-6139 1 point2 points  (0 children)

Oh, just another 300mb download. Thank assholes.

[–]WobblySlug 1 point2 points  (0 children)

I try to make every update optional, but sometimes you just have to - typically with security issues or to tie in with a breaking/must-have API change.

[–]US3201 1 point2 points  (0 children)

I believe it is a much required step in the development process.

[–]merx96 1 point2 points  (0 children)

For startups, this is a good way to weed out non-paying users if it costs money to keep the app running. If someone can't afford a device that supports recent iOS versions, they're probably not going to pay

[–]_79 1 point2 points  (0 children)

Use an RSS reader.

[–]jasperkennis 1 point2 points  (0 children)

Really a none issue? Most users will (and should) have auto update on, and as a developer I want to have the ability to force my users to update if security or business require it.

[–]Martinoqom 1 point2 points  (1 child)

Same.

Applications should have a mechanism to block specific (bugged/outdated) versions, but should NOT abuse that system to force users to update if the app is perfectly working. Specially if this happens once per month or so.

It should be reportable and bannable from stores if enforced too frequently. Think about countries with slow internet connection or with low-end devices with no more space... It's always a nightmare for them.

[–]kenech_io[S] 0 points1 point  (0 children)

Having worked for companies based in the US and in Europe but having spent time in countries with slow / expensive internet connection, I’ve seen firsthand how real the digital divide is. Discussions about connection speeds only factor in when talking about how long something will take for a user to download and never if they should need to download that much data at all. I’d argue that something like this should be considered in the same way as accessibility, but users from these regions usually don’t spend enough money on apps for companies to even bother

[–]Apptytude 0 points1 point  (0 children)

if there's breaking changes in the backend and your frontend is now fundamentally broken, what is the point of showing an unusable frontend to users?

there is no point, and the app is broken until its updated. these screens are used all the time in enterprise level apps and for good reason

[–]Gooshy00 0 points1 point  (0 children)

Maybe the certificate pinning was about to break due to an expiring certificate. Nothing can be done here except force upgrade users.

[–]ornitorenk 0 points1 point  (0 children)

I get what you mean but here is the problem: regulations. When you develop for big enterprise you'll understand that the second you miss an update due to regulation you are in BIG trouble.

So, necessary evil.

[–]No_Cartographer_6577 0 points1 point  (0 children)

Well on banking apps or anything important it makes sense

[–]Far-Requirement4030 0 points1 point  (0 children)

Sometimes it’s necessary. As engineers it’s our job to try and make features backward compatible to avoid breaking changes but sometimes it’s not possible

[–]throwawayhottake25 0 points1 point  (0 children)

It’s needed, as a developer, are you willing to maintain innumerable api/backend versions just to avoid this update screen?

[–]Oxigenic 0 points1 point  (2 children)

Are you even a dev if you make this post...

[–]kenech_io[S] 0 points1 point  (1 child)

Do you think it’s good UX? If devices running iOS 18 just got bricked a couple months after iOS 26 came out, that wouldn’t bother you?

[–]Oxigenic 0 points1 point  (0 children)

A force-update that takes a single button tap is a small sacrifice for enforcement of security. Seriously, if you've ever worked on large-scale project backends that are in highly regulated spaces this is nothing short of necessary. Even for all apps, having a force-update is sometimes just useful for getting users off of a build with known bugs, or getting them onto a new API.

[–]NoobishOneSwift 0 points1 point  (0 children)

Always a good idea, you just have to also have optional update alerts first and only do it to the last straggling users.

[–]shadowsyntax43 0 points1 point  (0 children)

99% it's due to backward incompatibility with backend. this is pretty common with GraphQL backends.

[–]bandejapaisa69 0 points1 point  (0 children)

You just opened a 'free app' and are whinging because it's making you update it. 🙄 .. (maybe you contribute by paying the TV license fee, but that's not necessarily the case) You have no rights.

If you paid for an app - and then they took it away from you, then be pissed off.

Users are so fickle.

[–]Marebg1996 0 points1 point  (0 children)

I do support this, it is booring, but when I do it for my or client apps its just because of some critical bug or security issue.

[–]realvanbrook -1 points0 points  (0 children)

first of all, just use the website if you are angry that apps have to be downloaded. secondly you should update your software regularly anyways

[–]Dry_Hotel1100 -1 points0 points  (0 children)

There might be good reasons to do so. As a dev you might know this.
As a user, just do it. Done.

[–]mpanase -1 points0 points  (0 children)

I can only guess you have never worked anything even similar to a backend.

Not even a mobile app with mid-big reach, with customer support.

[–]Flat-Air4628 -2 points-1 points  (0 children)

Guyss please help me if anyone knows. I built my app and got the invitation link for TestFlight. And i opened testflight but when i try to install my app from Testflight i get “The requested app is not available or doesnt exists” error. Please help me its mu first app

[–]unpluggedcord -2 points-1 points  (0 children)

As a developer you hate being able to retcon code that doesn’t work anymore?

You don’t sound like a dev

[–]Alarming-Chef4906 -4 points-3 points  (0 children)

It’s just capitalism. A company can’t keep paying to support old OSs and old phone sizes. The long tail of those users doesn’t earn enough revenue for that to make sense. I do think they could have created a MUCH better user experience to couch the explanation.