This page was moved from the old wiki and is in the process of being revised.

Protocol

remoteStorage.js

remoteStorage.js is a JavaScript library that does all the heavy-lifting of connecting remoteStorage accounts, caching, synchronizing and storing user data. It is well-tested in all modern browsers, and also works in Cordova apps and node.js programs.

As the reference client, maintained by the RS core team, it always supports the latest protocol versions (but is reasonably backwards-compatible as well).

Core

Data modules

Tips and Considerations

Hosting

Domains

Apps should always be hosted under their own domain or subdomain, as opposed to hosting several apps in subdirectory URLs of a common domain. This is due to the Web’s per-origin security model, where things like Web storage, permissions, etc. are scoped by origin, i.e. by “domain/host:port”.

HTTPS/TLS

Apps should always be available via HTTPS. HTTP should redirect to the same URI on HTTPS.

OAuth

Client ID

Due to there being no client registration for OAuth apps on the Open Web, most remoteStorage servers currently require the client_id parameter to be the same base URL as the redirect_uri.

Private browsing

remoteStorage.js supports Private/Incognito browsing mode in modern browsers. However, depending on browser support it cannot use all or any local Web Storage backends.

Safari

IndexedDB and localStorage are stubbed but not functional in Private windows (in version 9.1). RS.js stores all data in memory, so it is lost when connecting a remote storage (except for the WebFinger discovery data, which is transported via the OAuth state parameter).

Caveat: do not get fooled by Safari’s Web Inspector. It displays the localStorage content for the origin, but not IndexedDB.

Chrome

Firefox