Hard-reload a page in Ion without losing your login

Safari and Chrome on iPhone have no hard reload, only a way to wipe all of a site's data and log you out. Ion puts the ⌘⇧R gesture on the reload button itself, cache bypass without touching cookies or storage.

A phone showing Ion's reload menu with Hard Reload highlighted above the address bar, next to the Command, Shift and R keys and two labels: cache bypassed, still signed in.

I was testing a deploy on my phone and kept seeing the old CSS. On a laptop this is a non-event: ⌘⇧R, or Ctrl+Shift+R on Windows and Linux, refetches every resource from the origin instead of the cache, and you’re looking at the current build. There is no equivalent on an iPhone, or on any other phone. Reload just reloads, from whatever is already cached.

What “reload” actually offers on a phone

Long-press Safari’s reload icon and you get Request Desktop Website and Reload Without Content Blockers. Neither one is a cache bypass. The closest thing Safari has is Settings → Apps → Safari → Advanced → Website Data → find the site → delete it, which does force a fresh fetch next time you visit — by deleting everything else about that site along with the cache. Cookies, localStorage, IndexedDB, your session. You reload the page and you’re logged out. Chrome on iOS and Android don’t expose a per-site option at all; the equivalent is Delete browsing data for every site at once, or plugging into a computer and using remote DevTools with Disable cache ticked, which is a real workaround but needs a cable and a second machine. The full list of mobile workarounds is longer, and every item on it costs you either the session or a second device.

None of this is a bug in these browsers. A hard reload is a developer tool, and developer tools are the thing mobile Safari has always treated as a desktop-only concern.

Long-press Reload in Ion

Ion’s reload button behaves like the desktop one because it’s built for exactly this. Long-press it — or open it from the workspace’s overflow menu, for when the address bar is scrolled out of view — and you get two options: Reload, and Hard Reload. Hard Reload calls WKWebView’s reloadFromOrigin(), the same mechanism that backs a real ⌘⇧R: every resource on the page is revalidated against the server instead of served from the HTTP cache.

That’s the whole action. It doesn’t touch anything else.

Two phones with their reload menus open. Safari's offers Request Desktop Website and Reload Without Content Blockers; Ion's offers Reload and Hard Reload.
Long-press reload: Safari has no cache bypass, Ion has Hard Reload.

Why it doesn’t log you out

The reason Safari’s only real option costs you your session is that “clear the cache for this site” isn’t a thing iOS lets an app or a settings pane do on its own — the only exposed control is “delete this site’s data,” which is the cache and the cookie jar and local storage, bundled as one irreversible action.

Ion’s Hard Reload only calls into the HTTP cache. It doesn’t reach into the WKWebsiteDataStore that holds your cookies and local storage — that’s a separate store, and a separate feature (each Ion project gets its own, so you can stay signed in as two different users in two different projects without either session leaking into the other). Bypassing the cache and clearing your session are two different operations on desktop too; iOS just never gave phone users a way to do the first one without the second.

Two cards. Hard Reload in Ion refetches the HTTP cache and leaves cookies and local storage untouched; Delete Website Data in Settings deletes all three.
Hard Reload only goes to the HTTP cache. Deleting website data takes your session with it.

Get early access.

Invite-only, released in small waves. Free during early access.

Get early access.

Invite-only, released in small waves. Free during early access.