Synchronisation
Coryn saves recordings locally and uploads them automatically. Older sessions can upload while a new session is being recorded; you do not need to stop recording to send queued data.
Network policy
Uploads require an unmetered network by default. Wi-Fi can be metered, and a network being connected does not necessarily make it eligible for upload.
To allow uploads on metered networks, configure this at initialisation:
import ai.coryn.replay.api.core.main.Coryn
Coryn.init(application, BuildConfig.CORYN_AI_API_KEY) {
network {
isUploadOnMeteredNetworkAllowed = true
}
}
The Java equivalent is CorynConfiguration.Builder().setUploadOnMeteredNetworkAllowed(true).build().
With the default policy, a change to a metered network cancels in-flight recording and diagnostic uploads. Unsent data remains eligible for a later upload attempt. If metering information cannot be obtained, the SDK treats the network as metered. Enabling metered uploads removes that restriction; a working connection is still required.
Uploads can resume after an eligible connection is restored, but reconnection does not guarantee an immediate upload.
This option controls recording and diagnostic uploads. It does not disable recording, and it is not a blanket prohibition on other SDK requests such as fetching project configuration.
Scheduling and offline data
Coryn uploads while the app process is running. Background uploads are subject to Android's scheduling restrictions and may be delayed.
A session can appear in the dashboard before recording ends. Its timeline and UI snapshots may become available at different times.
Offline storage is limited. Unsent data may be removed when storage limits are reached or the server rejects it; local storage is not a permanent archive.
Multiple application processes
Recordings and storage limits are separate for each application process. Processes may upload concurrently, but each process uploads only its own recordings.
Initialise Coryn in each process where you want SDK functionality, using the same API key and network configuration. Configuration changes in one process are not applied automatically to Coryn instances already running in another process.
Periodic background uploads require WorkManager in the main application process. If your app configures WorkManager for another process, Coryn uploads while the recording process is running instead.
A terminated secondary process can therefore leave data queued until that same process runs and initialises Coryn again. Starting the main process alone does not flush the secondary process's queue.
Sessions are not appearing
Check these conditions:
- A recorder dependency is present, and
Coryn.startRecording()was called afterCoryn.init(). - The project is enabled in the dashboard and its API key and endpoint are correct.
- The active network is unmetered, or metered uploads were allowed at initialisation.
- The app has remained running long enough to save and upload the recording.
- For queued secondary-process data, that process has run again.
The optional development Log Viewer can show integration and upload diagnostics. Keep it out of production builds.