Your apps deserve a better mobile stack
Realm makes it easy to build modern reactive apps, realtime collaborative features, and offline-first experiences.
Choose Your Free Download:
Looking for the Realm Mobile Database?
![Exploded view of Realm.io Platform](/web/20170823152407im_/https://realm.io/assets/img/home/realm-exploded-view.png)
![Amazon Logo](/web/20170823152407im_/https://realm.io/assets/img/home/logos/amazon.png)
![Google Logo](/web/20170823152407im_/https://realm.io/assets/img/home/logos/google.png)
![Hipmunk Logo](/web/20170823152407im_/https://realm.io/assets/img/home/logos/hipmunk.png)
![Starbucks Logo](/web/20170823152407im_/https://realm.io/assets/img/home/logos/starbucks.png)
![GoPro Logo](/web/20170823152407im_/https://realm.io/assets/img/home/logos/gopro.png)
![eBay Logo](/web/20170823152407im_/https://realm.io/assets/img/home/logos/ebay.png)
![Netflix Logo](/web/20170823152407im_/https://realm.io/assets/img/home/logos/netflix.png)
![Intel Logo](/web/20170823152407im_/https://realm.io/assets/img/home/logos/intel.png)
World‑class apps have world-class features
The Realm Mobile Platform enables any development team, no matter the size, to include difficult-to-build features like two‑way data sync and realtime collaboration. Devote more time to what makes your app truly unique and less time to maintaining services.
Learn MoreRealtime collaboration in as little as 10 lines of code
See the Realm Mobile Platform demo app in action and the developer experience
Realm Mobile Platform
Deploy data sync for your mobile apps and creative reactive app experiences in as little as 10 lines of code. Realm Object Server and Realm Mobile Database combine to make the Realm Mobile Platform.
// Authenticating the User
[RLMSyncUser logInWithCredentials:[RLMSyncCredentials credentialsWithGoogleToken:@"google token"]
authServerURL:[NSURL URLWithString:@"http://realm.example.com:9080"]
onCompletion:^(RLMSyncUser *user, NSError *error) {
if (user) {
// Opening a remote Realm
NSURL *realmURL = [NSURL URLWithString:@"realm://realm.example.com:9080/~/userRealm"];
RLMRealmConfiguration *config = [[RLMRealmConfiguration alloc] init];
config.syncConfiguration = [[RLMSyncConfiguration alloc] initWithUser:user realmURL:realmURL];
RLMRealm *realm = [RLMRealm realmWithConfiguration:config error:nil];
// Any changes made to this Realm will be synced across all devices!
} else if (error) {
// handle error
}
}];
// Authenticating the User
SyncUser.logIn(with: .google(token: "google token"),
server: URL(string: "http://realm.example.com:9080")!)
{ user, error in
if let user = user {
// Opening a remote Realm
let realmURL = URL(string: "realm://realm.example.com:9080/~/userRealm")!
let config = Realm.Configuration(syncConfiguration: SyncConfiguration(user: user, realmURL: realmURL))
let realm = try! Realm(configuration: config)
// Any changes made to this Realm will be synced across all devices!
} else if let error = error {
// handle error
}
}
// Authenticating the User
User user = User.login(Credentials.google("google token"),
"http://realm.example.com:9080/auth");
// Opening a remote Realm
String realmURL = "realm://realm.example.com:9080/~/userRealm";
SyncConfiguration config = new SyncConfiguration.Builder(user, realmURL).build();
Realm realm = Realm.getInstance(config);
// Any changes made to this Realm will be synced across all devices!
// Authenticating the User
Realm.Sync.User.registerWithProvider('http://realm.example.co:9080', 'google', googleAccessToken, (error, user) => {
if (!error) {
// Opening a remote Realm
var realm = new Realm({
sync: {
user: user,
url: 'realm://realm.example.co:9080/~/userRealm',
}
});
// Any changes made to this Realm will be synced across all devices!
}
})
var user = await User.LoginAsync(Credentials.Google("google token"),
new Uri("http://realm.example.com:9080"));
var realmUrl = new Uri("realm://realm.example.com:9080/~/userRealm");
var config = new SyncConfiguration(user, realmUrl);
var realm = Realm.GetInstance(config);
// Any changes made to this Realm will be synced across all devices!
Realm Mobile Database
A better mobile database means better apps. Use the Realm Mobile Database to save data in minutes so you can build mobile apps in a fraction of the time. Our object database is a simple alternative to SQLite and Core Data and proudly open source.
class Dog {}
Dog.schema = {
name: 'Dog',
properties: {
name: 'string',
age: 'int',
}
};
let realm = new Realm();
realm.write(() => {
realm.create('Dog', {name: 'Rex', age: 1});
});
let pups = realm.objects('Dog').filtered('age < 2');
@interface Dog : RLMObject
@property NSString *name;
@property NSInteger age;
@end
@implementation Dog
@end
Dog *dog = [Dog new];
dog.name = @"Rex";
dog.age = 1;
RLMRealm *realm = [RLMRealm defaultRealm];
[realm transactionWithBlock:^{
[realm addObject:dog];
}];
RLMResults<Dog *> *allDogs = [Dog allObjects];
RLMResults<Dog *> *pups = [allDogs objectsWhere:@"age < 2"];
class Dog: Object {
dynamic var name = ""
dynamic var age = 0
}
let dog = Dog()
dog.name = "Rex"
dog.age = 1
let realm = try! Realm()
try! realm.write {
realm.add(dog)
}
let pups = realm.objects(Dog.self).filter("age < 2")
public class Dog extends RealmObject {
public String name;
public int age;
}
Dog dog = new Dog();
dog.name = "Rex";
dog.age = 1;
Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
realm.copyToRealm(dog)
realm.commitTransaction();
RealmResults<Dog> pups = realm.where(Dog.class)
.lessThan("age", 2)
.findAll();
public class Dog : RealmObject
{
public string Name { get; set; }
public int Age { get; set; }
}
var realm = Realm.GetInstance();
realm.Write(() =>
{
realm.Add(new Dog
{
Name = "Rex",
Age = 1
});
});
var pups = realm.All<Dog>().Where(d => d.Age < 2);
Over 2 billion users rely on Realm
Trusted by Fortune 500 mainstays, innovative startups, and #1‑ranked app store successes, Realm is built into apps used by hundreds of millions of people every day.
Hand-curating content for your community
Our community pages help you discover what's new and important in your language. By recording talks at the top developer conferences and running local meetups and events, we're helping you spread knowledge of what works to make even better apps.