Need help with simperium-ios?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

208 Stars 46 Forks MIT License 1.8K Commits 28 Opened issues


Simperium libraries and samples

Services available


Need anything else?

Contributors list


Pod Version Pod Platform Pod Platform Pod License

Simperium is a simple way for developers to move data as it changes, instantly and automatically. This is the iOS / OSX library. You can browse the documentation or try a tutorial.

You can sign up for a hosted version of Simperium. There are Simperium libraries for other languages too.

Adding Simperium to your project

The easiest way to add Simperium is to download the latest release. Unzip the source code somewhere convenient.

Then, drag and drop Simperium.xcodeproj into your application's project, and add Simperium.framework in your target's Build Phase tab (under Link Binary with Libraries). You'll still need to add some dependencies.


Everything works pretty much the same on OSX. Some changes are noted in the online documentation.


The master branch always has the latest stable release, and is tagged. Simperium is used by hundreds of thousands of people across many different apps and devices, and is considered production-ready.

The develop branch has an ongoing development build (not intended for production use).

Folder structure

Simperium. Everything is accessed from a

instance. This class can be safely instantiated more than once in the same app (e.g. for unit testing).

Object. Simperium does a lot of diffing in order to send only data that changes. Any object class that conforms to the

protocol can be supported.
is for Core Data, and
is a container for raw JSON (not yet supported).
is an object's opinion of its own state on the server (the name "ghost" was borrowed from the Tribes Networking Model).

Diffing. An

can perform diffs on any
object. Each differ adheres to an
. The schema stores a list of members/properties (of type
) for an object of a particular type. Each subclass of
corresponds to a data type, and knows how to diff itself. In the future these will be parameterized for custom diffing, conflict resolution, validation, etc.

System. An

provides access to a synchronized bucket of objects of a particular type. The
has an
to perform diffs, an
for locally reading and writing data, an
for processing incoming and outgoing changes, and an
for processing indexes retrieved from the server. The processors run in their own threads.

Storage. An

defines an interface for local reading and writing of objects. In particular it defines a
method that returns a thread safe instance.
is currently the only fully functional storage provider.

Authentication. An

handles all authentication with Simperium, and can be customized or overridden as necessary. There are companion classes for iOS and OSX that provide a code-driven UI for signing in and signing up (

Networking. An

defines an interface for remote reading and writing of objects in an
. The network provider sends local data and receives remote data in the background, passing it through threaded processors as necessary. Although there is an HTTP provider, the WebSockets provider is intended to become the default (but is still under development).

User. Basic access to a user's data. In the future this will hold custom properties and presence information.

Helpers. Exporter, keychain, etc.


The Simperium iOS library is available for free and commercial use under the MIT license.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.