Skip to content

Logs

The Logs page provides a detailed history of update events and diagnostic information for your application. This is crucial for monitoring the update process, troubleshooting issues, and understanding how your devices interact with Capgo. You can access it by clicking on your app and then clicking on the “Logs” tab (previously named “updates” in some older screenshots or documentation).

From there you should see a page similar to this, displaying a list of log entries:

show logs
Logs Page Overview

Each row shows:

  • Timestamp (UTC)
  • Device ID
  • Action code (what happened)
  • Version name (bundle or builtin)

Click a row to jump to the device detail page for the full history.

Time (UTC)Device IDActionVersionWhat it tells you
2025-01-14 10:00:01A1B2C3get2.4.1Device asked Capgo if an update is available
2025-01-14 10:00:03A1B2C3download_manifest_start2.4.1Manifest fetch kicked off; SDK is about to download files
2025-01-14 10:00:07A1B2C3download_402.4.1Bundle download is 40% complete
2025-01-14 10:00:12A1B2C3download_zip_complete2.4.1Zip finished downloading
2025-01-14 10:00:13A1B2C3set2.4.1Bundle installed and marked as next to run
2025-01-14 10:05:00B9C8D7disableAutoUpdateToMajor1.9.0Channel policy blocked a jump to 2.x
2025-01-14 10:05:05B9C8D7rateLimitedbuiltinDevice hit the request limit; SDK backs off until restart

To help you understand what the logs tell you, here are example sequences showing real device update journeys:

This is what a healthy update looks like in your logs:

TimeDevice IDActionVersionWhat it means
10:00:01a1b2c3d4get1.2.0Device checked for updates and received version 1.2.0 info
10:00:02a1b2c3d4download_101.2.0Download started, 10% complete
10:00:03a1b2c3d4download_501.2.0Download at 50%
10:00:05a1b2c3d4download_complete1.2.0Download finished successfully
10:00:06a1b2c3d4set1.2.0Bundle installed and activated

When a device checks but already has the latest version:

TimeDevice IDActionVersionWhat it means
14:30:00e5f6g7h8noNew1.2.0Device is already on the latest version, no update needed

When an update fails and the device rolls back:

TimeDevice IDActionVersionWhat it means
11:15:00i9j0k1l2get1.3.0Device received update info
11:15:02i9j0k1l2download_complete1.3.0Download completed
11:15:03i9j0k1l2set1.3.0Bundle was set
11:15:10i9j0k1l2update_fail1.3.0App crashed or notifyAppReady() wasn’t called - rollback triggered
11:15:11i9j0k1l2resetbuiltinDevice reverted to the built-in version

Action needed: Check that your app calls notifyAppReady() after successful initialization. See the plugin documentation for details.

When network issues prevent the download:

TimeDevice IDActionVersionWhat it means
09:45:00m3n4o5p6get1.2.0Device received update info
09:45:01m3n4o5p6download_301.2.0Download started but…
09:45:15m3n4o5p6download_fail1.2.0Download failed (network timeout, connection lost, etc.)

Action needed: The device will retry automatically on next app launch. No action required unless this happens frequently.

When your account reaches its device limit:

TimeDevice IDActionVersionWhat it means
16:00:00q7r8s9t0needPlanUpgrade-This device won’t receive updates until you upgrade or the billing cycle resets

Action needed: Upgrade your plan or wait for the next billing cycle.

When channel settings prevent an update:

TimeDevice IDActionVersionWhat it means
12:00:00u1v2w3x4disableAutoUpdateToMajor2.0.0Device on v1.x can’t auto-update to v2.x (major version jump blocked)
12:05:00y5z6a7b8disableEmulator1.2.0Emulator detected, and channel blocks emulators
12:10:00c9d0e1f2disableDevBuild1.2.0Dev build detected, and channel blocks dev builds

Action needed: These are intentional protections. If you want to allow these updates, modify your channel settings.

These codes come from the stats_action enum used by the dashboard API (capgo/src/types/supabase.types.ts). If you see a new code in the UI, it was emitted by the SDK or backend and validated against this list.

Happy path & lifecycle

Code(s)Meaning
getDevice asked Capgo for the current channel manifest
download_manifest_start, download_manifest_completeManifest download began / finished (for delta or multi-file bundles)
download_zip_start, download_zip_completeZip archive download began / finished
download_10download_90Download progress milestones
download_completeEntire bundle downloaded
setBundle staged for next launch
resetDevice reverted to the builtin bundle
deleteBundle removed from local storage
uninstallApp uninstall detected
app_moved_to_foreground, app_moved_to_backgroundApp lifecycle events recorded by SDK
pingHealth/heartbeat check from device
setChannel, getChannelChannel overridden or fetched via SDK call

Configuration or policy blocks

Code(s)Why the update was blocked
disableAutoUpdate, disableAutoUpdateToMajor, disableAutoUpdateToMinor, disableAutoUpdateToPatch, disableAutoUpdateMetadata, disableAutoUpdateUnderNativeChannel strategy forbids this semver jump
disablePlatformIos, disablePlatformAndroidPlatform is disabled on the channel
disableDevBuild, disableEmulatorDev builds or emulators not allowed
cannotUpdateViaPrivateChannel, NoChannelOrOverride, channelMisconfiguredChannel selection or override failed
missingBundle, cannotGetBundleManifest refers to a bundle Capgo cannot serve
needPlanUpgradeOrg hit its plan/device limit
rateLimitedToo many requests; SDK throttles until restart
blocked_by_server_url, backend_refusal, InvalidIpServer-side rule blocked the request

Download / integrity / install failures

Code(s)Meaning
download_failBundle download failed (network or response error)
download_manifest_file_fail, download_manifest_checksum_fail, download_manifest_brotli_failManifest file couldn’t be retrieved or validated
checksum_fail, checksum_requiredIntegrity check failed or checksum missing
unzip_fail, directory_path_fail, canonical_path_fail, windows_path_failFile system or unzip validation failed
decrypt_failDecryption failed (encrypted bundle)
update_failBundle installed but app never called notifyAppReady(); rollback triggered
download_zip_* with no subsequent setDownload finished but install phase never completed

➡️ Need deeper per-code guidance? See Full Log Code Reference and Debugging Guide.

If you click on a specific log entry, it will typically take you to the device’s page. This allows you to see the full history for that particular device, which can be very helpful for diagnosing device-specific issues or understanding its update journey.