On this page
You might want to seed your mobile app with some initial data that will be available to users on the initial launch of the app. To do this, you:
- Build a temporary realm app,
- Make a copy of an existing realm (with only the data you want bundled), and then
- Bundle the Realm file in your app's shared project.
In your production app (the one that will use this bundled realm when first loading), you add a few lines of code to extract the realm and save it in the app data. The following sections provide more information on these steps.
If your backend application has enabled advanced backend compaction by configuring a client maximum offline time, users could experience a client reset the first time they open the bundled realm file. This can happen if the bundled realm file was generated more than client maximum offline time days before the user syncs the realm for the first time.
Applications experiencing a client reset will download the full state of the realm from the application backend. This negates the advantages of bundling a realm file. To prevent client resets and preserve the advantages of realm file bundling:
- Avoid using a client maximum offline time in applications that bundle a synchronized realm.
- If your application does use a client maximum offline time, ensure that your application download always includes a recently synced realm file. Generate a new file each application version, and ensure that no version ever stays current for more than client maximum offline time number of days.
- Create a new project with the same data models as your production app. Open an existing realm with the data you wish to bundle, or create a new one.
Use the WriteCopy() method to make a copy of the realm to a new location and/or name. The following code demonstrates this.
Now that you have a copy of the realm with the "seed" data in it, you need to bundle it with your production application. The process of bundling depends on whether you are building a mobile app or Unity app:
Non-encrypted realm files are cross-platform compatible, which is why you can bundle the file in the shared project.
Now that you have a copy of the realm included with your app, you need to add code to use it. The code you add depends on the type of app: