# Online, in sync, and offline


> Content lives on the device as well as in the cloud, which is why a screen keeps playing through an outage, and why a change takes a few minutes to appear.
Screenly is a cloud service, but the playing happens on the device. That one fact explains most of the timing you will observe.

## Two independent states

**Online** means the device is checking in with us. **In sync** means it has downloaded everything assigned to it.

They fail separately, so a screen can be:

| Online | In sync | What that means |
| --- | --- | --- |
| Yes | Yes | Healthy and current |
| Yes | No | Downloading. Still showing the previous content meanwhile |
| No | Yes | Offline, but playing exactly the right thing |
| No | No | Offline, will catch up when it reconnects |

The third row is the one people find surprising, and it is the point of the design.

## What survives an outage

Files you uploaded play from the device's own storage, and schedules are held on the device too. A screen carries on showing the right content at the right time with no internet at all.

What stops is anything that needs the network. A web page or an app pulling live data is skipped while it cannot reach its source, and rejoins the rotation when the connection returns.

## Why changes are not instant

A change reaches a screen on its next check-in, then the screen downloads whatever it does not already have and switches once the download is complete. There is no gap in playback: it keeps showing the old content until the new content is fully there.

In practice that means a minute or two on a healthy connection for the instruction, plus download time. Video takes considerably longer than images. Allow around fifteen minutes before deciding a change did not work.

## The trap in this

An offline screen keeps playing, so nobody notices. A dark or stale screen can go a week without anyone mentioning it, which is why offline [alerts](/docs/screens/monitoring/alerts/) matter more here than they would in a system that failed loudly.

Deeper: [Status and sync](/docs/screens/monitoring/status-and-sync/), [Storage and caching](/docs/content/overview/where-content-lives/).