Initialize the Realm App Client

The Realm app client is the interface to the MongoDB Realm backend. It provides access to the authentication functionality, functions, and sync management.

Before you can use Realm in your app, you must initialize the Realm library. Your application should initialize Realm just once each time the application runs.

To initialize the Realm library, provide an Android context to the Realm.init() static function. You can provide an Activity, Fragment, or Application context for initialization with no difference in behavior. You can initialize the Realm library in the onCreate() method of an application subclass to ensure that you only initialize Realm once each time the application runs.

Realm.init(this) // context, usually an Activity or Application
Info With Circle IconCreated with Sketch.Note
Register Your Application Subclass in the Android Manifest

If you create your own Application subclass, you must add it to your application's AndroidManifest.xml to execute your custom application code. Set the property of your manifest's application definition to ensure that Android instantiates your Application subclass before any other class when a user launches your application.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="" package="com.mongodb.example">
<application android:name=".MyApplicationSubclass" ... />

Pass the Realm app ID for your Realm app, which you can find in the Realm UI.

val appID : String = YOUR_APP_ID // replace this with your App ID
val app: App = App(AppConfiguration.Builder(appID).build())
Important With Circle IconCreated with Sketch.Important
Initialize the App before Creating an Instance

You must initialize your Realm app connection with Realm.init() before creating any instance of an App.

Info With Circle IconCreated with Sketch.Note

You can create multiple App instances to connect to multiple Realm apps or to the same Realm app with different configurations. All App instances that share the same App ID use the same underlying connection.

For more granular control of the details of your app connection, such as custom timeouts for connections, codecs used for MongoDB Data Access, and keys for local encryption, you can use the AppConfiguration Builder to control details of your App:

val appID = YOUR_APP_ID // replace this with your App ID
val app: App = App(AppConfiguration.Builder(appID)
.appName("My App")
.requestTimeout(30, TimeUnit.SECONDS)
Info With Circle IconCreated with Sketch.Note

For most use cases, you only need your application's App ID to connect to MongoDB Realm. The other settings demonstrated here are optional.

Give Feedback