eli5: When an app updates, how are people on the old version still able to use it?

225 views

I know this isnt the case 100% of the time but could someone pls explain. sorry im dumb and bad at tech

In: 0

7 Answers

Anonymous 0 Comments

The servers the app connects to may be configured to allow more than one version for a while, as the app update won’t have reached everyone yet, and requiring an app update later found to have a critical issue could be a horrible experience.

Anonymous 0 Comments

The way an app works is that there’s code that’s running on your phone and it sometimes sends messages to a server at the company if it needs to do something over the internet. So if you’re using Spotify and you want to play a song, your phone sends a message to a server at Spotify that’s says something like “get song: 5553426” and the server sends back a message with the data. When you update an app, some of the code that runs on your phone can change, but as long as the servers are still using the same message format, you can keep using an older version of the app.

Anonymous 0 Comments

Apps are just used as a way to display information from a server and send data to the server.

That communication flow doesn’t necessarily change if an application receives updates. Only the updated features get affected.

If you have an application that creates a new reddit thread, your client app would take your username, your post title, and your post message body and send it to a reddit owned endpoint for creating threads. It doesn’t matter what the client looks like, or what other features it has, it just needs to have that information in a specific format and send it to the right endpoint.

Think of it like a recipe book. Different books can have the same exact recipe and it won’t matter which recipe book you use as the recipes are the same.

If you want to change the recipe, you have two options.

1. You can remove the old recipe and go with the new (this would break older applications)

2. You can have both recipes and cook with whatever recipe comes your way. (Backwards compatibility).

Anonymous 0 Comments

You’re not dumb. Let’s start with that.

A lot of the time, like say here on reddit, the app is just a different way to access the service. Like, you can access reddit via the web, or through a third party app like /r/ApolloApp, or even through some really weird interfaces that require more brains than I got.

But the app is only the front end. It’s where the human interacts with the service. The app then connects with that service.

Unless the service itself changes radically, old apps and new apps use the same basic way to connect with the service.

Anonymous 0 Comments

An updated app is the same application with some recent changes. The old application didn’t change. It’s still a program that runs on your phone. Updating the app won’t affect usability of the old app unless the app maker tells its servers specifically to reject data from obsolete versions.

Anonymous 0 Comments

How clients (apps) and servers communicate can be quite simple or quite complicated. A simple way to communicate is using something called JSON (JavaScript Object Notation) and a login attempt may send this data. This data isn’t special it will likely be identical to how it was sent to your computer to display below.

“`
{
payload: login,
session: 0,
data: {
username: An_0w1,
password: Password123,
}
}
“`

I have told the server that I want to log in and given it the info it needs to try to log me in. The server can then respond with all the info I need to stay logged in or it can tell me it failed to log me in, which may look like this.

“`
{
payload: login_response,
session: ebc4c39712006984136a13fdcb7a81d3
data: {
code: 200 (success)
}
}
“`

From there the client can request whatever it needs. maybe it wants to load posts it can send a message with the `request_posts` payload. The server can the send the post data.

Lets say I update my app, these messages don’t need to change. I can use the same messages if a new payload is added the old app wont know about that so it wont be able to use it, but that wont change how the app actually acts.

People seem to think that if the code isn’t exactly the same made the same way on the same stuff that for some reason its different, but its not. When software creates data to be used externally programmers want to make it universal so that they never need to rewrite it again for something else.

Anonymous 0 Comments

It depends on the update, but in general good programmers/architects ensure backwards compatibility. Particular if you’re creating apps used by millions that won’t be updating at the same time etc.

There are updates/changes that absolutely will NOT work backwards – they’re rare and “we” try to design code to avoid them. But in some cases, we decide that “doing this in a completely different way is so much better than the trouble of ensuring everyone must update”. In most cases you design things to work with multiple versions.