Add Electron docs coverage for update flow#496
Conversation
📝 WalkthroughWalkthroughThis PR systematically adds Electron as a supported platform alongside iOS and Android across documentation, UI components, and type definitions. Changes include updating component titles and descriptions, expanding platform coverage in API documentation, and broadening interface definitions to include Electron as a valid platform option. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested labels
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 33374beb43
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| | **`publicKey`** | <code>string</code> | Configure the public key for end to end live update encryption Version 2. Available on Android, iOS, and Electron. | <code>undefined</code> | 6.2.0 | | ||
| | **`version`** | <code>string</code> | Configure the current version of the app. This will be used for the first update request. If not set, the plugin will get the version from the native code. Available on Android, iOS, and Electron. | <code>undefined</code> | 4.17.48 | | ||
| | **`directUpdate`** | <code>boolean \| 'always' \| 'atInstall' \| 'onLaunch'</code> | Configure when the plugin should direct install updates. Only for autoUpdate mode. Works well for apps less than 10MB and with uploads done using the --delta flag. Zip or apps more than 10MB will be relatively slow for users to update. - false: Never do direct updates (use default behavior: download at start, set when backgrounded) - atInstall: Direct update only when app is installed, updated from store, otherwise act as directUpdate = false - onLaunch: Direct update only on app installed, updated from store or after app kill, otherwise act as directUpdate = false - always: Direct update in all previous cases (app installed, updated from store, after app kill or app resume), never act as directUpdate = false - true: (deprecated) Same as "always" for backward compatibility Available on Android, iOS, and Electron. | <code>false</code> | 5.1.0 | | ||
| | **`autoSplashscreen`** | <code>boolean</code> | Automatically handle splashscreen hiding when using directUpdate. When enabled, the plugin will automatically hide the splashscreen after updates are applied or when no update is needed. This removes the need to manually listen for appReady events and call SplashScreen.hide(). Only works when directUpdate is set to "atInstall", "always", or true. Requires the @capacitor/splash-screen plugin to be installed and configured with launchAutoHide: false. Requires autoUpdate and directUpdate to be enabled. Available on Android, iOS, and Electron. | <code>false</code> | 7.6.0 | |
There was a problem hiding this comment.
Remove Electron availability from autoSplashscreen option
This row now states autoSplashscreen is available on Electron, but the Electron updater reference does not expose any splash-screen option and documents a separate desktop flow (src/content/docs/docs/plugins/electron-updater/api.mdx). That mismatch can cause Electron users to set an unsupported config key and then debug a non-working startup UX path; this should stay mobile-only (as still documented in src/content/docs/docs/plugin/api.md).
Useful? React with 👍 / 👎.
src/content/docs/docs/plugin/api.md
Outdated
| | **`osLogging`** | `boolean` | Enable OS-level logging. When enabled, logs are written to the system log which can be inspected in production builds. - **iOS**: Uses os_log instead of Swift.print, logs accessible via Console.app or Instruments - **Android**: Logs to Logcat (android.util.Log) When set to false, system logging is disabled on both platforms (only JavaScript console logging will occur if enabled). This is useful for debugging production apps (App Store/TestFlight builds on iOS, or production APKs on Android). | `true` | 8.42.0 | | ||
| | **`shakeMenu`** | `boolean` | Enable shake gesture to show update menu for debugging/testing purposes | `false` | 7.5.0 | | ||
| | **`allowShakeChannelSelector`** | `boolean` | Enable the shake gesture to show a channel selector menu for switching between update channels. When enabled AND `shakeMenu` is true, the shake gesture shows a channel selector instead of the default debug menu (Go Home/Reload/Close). After selecting a channel, the app automatically checks for updates and downloads if available. Only works if channels have `allow_self_set` enabled on the backend. Only available for Android and iOS. | `false` | 8.43.0 | | ||
| | **`allowShakeChannelSelector`** | `boolean` | Enable the shake gesture to show a channel selector menu for switching between update channels. When enabled AND `shakeMenu` is true, the shake gesture shows a channel selector instead of the default debug menu (Go Home/Reload/Close). After selecting a channel, the app automatically checks for updates and downloads if available. Only works if channels have `allow_self_set` enabled on the backend. Available on Android, iOS, and Electron. | `false` | 8.43.0 | |
There was a problem hiding this comment.
Keep shake gesture selector documented as mobile-only
Marking allowShakeChannelSelector as Electron-supported is misleading because desktop docs describe debugMenu keyboard controls instead of any shake gesture (src/content/docs/docs/plugins/electron-updater/api.mdx), and Electron devices cannot trigger a physical shake flow. Leaving this claim will push Electron integrators toward a config path that cannot be exercised in production.
Useful? React with 👍 / 👎.
|
There was a problem hiding this comment.
Actionable comments posted: 12
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
src/content/docs/docs/webapp/main-app-page.mdx (1)
85-92:⚠️ Potential issue | 🟠 MajorPlatform-specific setup is internally inconsistent and can mislead configuration.
Line 85 creates three channels, but Line 87 says “both channels.” Also, update behavior bullets omit Electron. This undermines the section’s Electron support guidance.
Suggested fix
To set up platform-specific defaults: 1. Create separate channels for each platform (for example `production-ios`, `production-android`, and `production-electron`) 2. In each channel's settings, enable only the relevant platform (iOS, Android, or Electron toggle) - 3. Mark both channels as "Default" - Capgo allows this when channels target different platforms + 3. Mark each platform-specific channel as "Default" - Capgo allows this when channels target different platforms When a device requests an update: - iOS devices will receive updates from the iOS-enabled default channel - Android devices will receive updates from the Android-enabled default channel + - Electron devices will receive updates from the Electron-enabled default channel
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@src/components/landing/AutomationFeatures.astro`:
- Line 163: The tspan "Build Android / Electron" in the <text> element is longer
than the fixed card width and may clip; locate the <text ...><tspan> containing
that exact string in AutomationFeatures.astro and prevent overflow by either
reducing the font-size (e.g., 16 → 14), or make the text fit by adding
textLength="(cardInnerWidth)" and lengthAdjust="spacingAndGlyphs", and/or set
text-anchor="middle" and update x to the card center so the label is centered
and does not overflow the card. Ensure you only modify the <text> element that
contains "Build Android / Electron".
In `@src/components/landing/MonitoringFeatures.astro`:
- Around line 43-54: The Electron row label "Electron" currently shows "v 1.4"
but the legend still maps the three colors to versions 1.0, 1.1, and 2.0,
causing a mismatch; either update the legend entries to include 1.4 (and adjust
which color maps to 1.4) or change the Electron row version label to one of the
existing legend versions. Locate the Electron row (the div containing the text
"Electron" and version "v 1.4" and the three colored bars with classes
bg-blue-500, bg-emerald-500, bg-purple-500) and update the legend labels so the
color-to-version mapping is consistent with that row (or vice versa), ensuring
each colored bar has a corresponding legend entry.
In `@src/content/docs/docs/faq.mdx`:
- Line 162: The sentence beginning "Code push is designed to allow developers to
update their apps and still comply with store policies on iOS, Android, and
Electron delivery channels." conflates mobile store policy scope with Electron
distribution; update this sentence to explicitly scope compliance guidance to
iOS and Android (e.g., "Code push is designed to allow developers to update
their apps and still comply with iOS and Android store policies") and add a
following sentence clarifying that Electron distribution is governed by the
desktop delivery path used (e.g., "Electron distribution policies vary depending
on your desktop delivery method and may not follow the same app-store rules").
Ensure you edit the exact sentence in the paragraph that starts with "Developers
are bound by their agreements..." and replace/append text accordingly.
In `@src/content/docs/docs/live-updates/compliance.mdx`:
- Line 24: Update the Device ID paragraph to explicitly state the scope and
privacy constraints: clarify that the "Device ID" described in the Device ID
section is a per-app, per-plugin-instance identifier (not a cross-app or
advertising identifier), is non-personally-identifiable and is stored securely
(Keychain on iOS, EncryptedSharedPreferences on Android, Electron secure
storage), and persists only to maintain the same app instance across reinstalls
for update/delivery and billing purposes; also add a short note referencing that
this identifier is not collected/shared with advertisers or third parties and
does not enable cross-app tracking to avoid conflict with the "not collected"
section.
In `@src/content/docs/docs/plugin/api.md`:
- Line 26: Update the table cell for the `publicKey` entry to use the hyphenated
compound adjective "end-to-end" instead of "end to end" (i.e., change the phrase
in the `publicKey` table row describing live update encryption to "end-to-end
live update encryption").
- Line 32: Clarify that the numeric option periodCheckDelay treats 0 as a
special "disabled" value: update the description for the periodCheckDelay entry
to explicitly state that while values must be >=600 seconds when enabled, a
value of 0 is allowed and disables the periodic check (e.g., "0 = disabled;
otherwise must be at least 600 seconds"). Reference periodCheckDelay in the API
doc entry so readers understand the exception.
In `@src/content/docs/docs/plugins/updater/api.md`:
- Line 32: Update the inconsistent default for the periodCheckDelay parameter in
the updater API docs: in the table row containing **`periodCheckDelay`** change
the documented default from 600 to 0 (disabled) to match
src/content/docs/docs/plugin/api.md, and adjust the descriptive text to indicate
that 0 disables periodic checks and the minimum 600-second constraint only
applies when periodCheckDelay > 0; also update the example/default code cell to
show 0 instead of 600 so both docs are consistent.
In `@src/content/docs/docs/plugins/updater/local-dev/capacitor-updater.mdx`:
- Line 38: Correct the typo "Ngrock" to "ngrok", fix capitalization and
punctuation, and rephrase the sentence for clarity: replace the current line "By
default iOS, Android, and Electron expect you to use HTTPS, you need to use a
tool like Ngrock or localcan to proxy your API in https." with a clearer
sentence such as "By default iOS, Android, and Electron expect HTTPS; use a tool
like ngrok or localcan to proxy your API over HTTPS." Ensure the updated text
uses proper casing for tool names and "over HTTPS" wording.
In `@src/content/docs/docs/plugins/updater/self-hosted/handling-channels.mdx`:
- Around line 310-314: The Electron branch returns a human-readable sentence in
the error field; replace that with a canonical snake_case error code and move
the prose to a message field: in the conditional that checks platform ===
"electron" and !channelConfig.electron, keep status: "error", set error to a
snake_case identifier (e.g., "channel_not_available_for_electron") and add
message: "Channel not available for Electron" so the response uses
machine-stable error codes while retaining the human-readable explanation.
In `@src/content/docs/docs/plugins/updater/self-hosted/handling-stats.mdx`:
- Line 45: The example hardcodes platform as "ios" with a comment; update the
example to use the explicit union type used by the AppInfos interface (e.g.,
platform: "ios" | "android" | "electron") so the sample matches AppInfos; modify
the object/property named platform in handling-stats.mdx to replace the
commented string with the union literal and ensure the union values exactly
match those declared on AppInfos in auto-update.mdx.
In `@src/content/docs/docs/plugins/updater/settings.mdx`:
- Line 120: Update the documentation to remove Electron from the platform scope
for the autoSplashscreen and shakeMenu options: change the platform sentence(s)
that currently read "Available on Android, iOS, and Electron." to reflect that
autoSplashscreen and shakeMenu are Android and iOS only; ensure both occurrences
referencing autoSplashscreen and shakeMenu (the entries for those option names
in settings.mdx) explicitly list only Android and iOS to match the official
plugin behavior.
In `@src/content/docs/docs/webapp/main-app-page.mdx`:
- Around line 80-83: The three bullets under the rollout/update section use “the
other” which assumes only two platforms; update each bullet in main-app-page.mdx
to be platform-neutral by replacing phrases like “the other” with “other
platforms” or “another platform” (e.g., “roll out updates to one platform before
other platforms,” “use different update strategies per platform,” and “test a
new version on one platform while keeping other platforms stable”) so the
wording fits iOS/Android/Electron and any future platforms.
ℹ️ Review info
Configuration used: defaults
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (22)
src/components/landing/AutomationFeatures.astrosrc/components/landing/MonitoringFeatures.astrosrc/content/docs/docs/faq.mdxsrc/content/docs/docs/getting-started/troubleshooting.mdxsrc/content/docs/docs/live-updates/channels.mdxsrc/content/docs/docs/live-updates/compliance.mdxsrc/content/docs/docs/live-updates/custom-storage.mdxsrc/content/docs/docs/live-updates/features.mdxsrc/content/docs/docs/live-updates/index.mdxsrc/content/docs/docs/plugin/api.mdsrc/content/docs/docs/plugins/updater/api.mdsrc/content/docs/docs/plugins/updater/index.mdxsrc/content/docs/docs/plugins/updater/local-dev/capacitor-updater.mdxsrc/content/docs/docs/plugins/updater/self-hosted/auto-update.mdxsrc/content/docs/docs/plugins/updater/self-hosted/handling-channels.mdxsrc/content/docs/docs/plugins/updater/self-hosted/handling-stats.mdxsrc/content/docs/docs/plugins/updater/settings.mdxsrc/content/docs/docs/public-api/channels.mdxsrc/content/docs/docs/public-api/devices.mdxsrc/content/docs/docs/webapp/channels.mdxsrc/content/docs/docs/webapp/main-app-page.mdxsrc/pages/index.astro
| <rect x="551.323" y="108" width="221" height="84" rx="12.4516" fill="#252525"></rect> | ||
| <rect x="551.651" y="108.328" width="220.345" height="83.3447" rx="12.1239" stroke="#333333" stroke-width="0.655348"></rect> | ||
| <text fill="#FFFFFF" xml:space="preserve" style="white-space:pre" font-family="ui-sans-serif, system-ui, sans-serif" font-size="16" font-weight="500" letter-spacing="-0.005em"><tspan x="605.182" y="146.719">Build Android</tspan></text> | ||
| <text fill="#FFFFFF" xml:space="preserve" style="white-space:pre" font-family="ui-sans-serif, system-ui, sans-serif" font-size="16" font-weight="500" letter-spacing="-0.005em"><tspan x="605.182" y="146.719">Build Android / Electron</tspan></text> |
There was a problem hiding this comment.
Label width likely overflows this card.
The new text is substantially longer and may clip given the fixed card width and current x position.
Suggested tweak
-<text fill="#FFFFFF" xml:space="preserve" style="white-space:pre" font-family="ui-sans-serif, system-ui, sans-serif" font-size="16" font-weight="500" letter-spacing="-0.005em"><tspan x="605.182" y="146.719">Build Android / Electron</tspan></text>
+<text fill="#FFFFFF" xml:space="preserve" style="white-space:pre" font-family="ui-sans-serif, system-ui, sans-serif" font-size="14" font-weight="500" letter-spacing="-0.005em"><tspan x="582" y="146.719">Build Android / Electron</tspan></text>📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| <text fill="#FFFFFF" xml:space="preserve" style="white-space:pre" font-family="ui-sans-serif, system-ui, sans-serif" font-size="16" font-weight="500" letter-spacing="-0.005em"><tspan x="605.182" y="146.719">Build Android / Electron</tspan></text> | |
| <text fill="#FFFFFF" xml:space="preserve" style="white-space:pre" font-family="ui-sans-serif, system-ui, sans-serif" font-size="14" font-weight="500" letter-spacing="-0.005em"><tspan x="582" y="146.719">Build Android / Electron</tspan></text> |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/components/landing/AutomationFeatures.astro` at line 163, The tspan
"Build Android / Electron" in the <text> element is longer than the fixed card
width and may clip; locate the <text ...><tspan> containing that exact string in
AutomationFeatures.astro and prevent overflow by either reducing the font-size
(e.g., 16 → 14), or make the text fit by adding textLength="(cardInnerWidth)"
and lengthAdjust="spacingAndGlyphs", and/or set text-anchor="middle" and update
x to the card center so the label is centered and does not overflow the card.
Ensure you only modify the <text> element that contains "Build Android /
Electron".
| <!-- Electron --> | ||
| <div> | ||
| <div class="flex justify-between text-xs text-gray-400 mb-1"> | ||
| <span>Electron</span> | ||
| <span>v 1.4</span> | ||
| </div> | ||
| <div class="h-4 w-full bg-white/10 rounded-full overflow-hidden flex"> | ||
| <div class="h-full bg-blue-500" style="width: 35%"></div> | ||
| <div class="h-full bg-emerald-500" style="width: 45%"></div> | ||
| <div class="h-full bg-purple-500" style="width: 20%"></div> | ||
| </div> | ||
| </div> |
There was a problem hiding this comment.
Version legend is now inconsistent with the new Electron row.
The Electron row shows v 1.4, but the legend still maps colors to 1.0, 1.1, and 2.0 only. Please align the legend and row labels so the chart remains interpretable.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/components/landing/MonitoringFeatures.astro` around lines 43 - 54, The
Electron row label "Electron" currently shows "v 1.4" but the legend still maps
the three colors to versions 1.0, 1.1, and 2.0, causing a mismatch; either
update the legend entries to include 1.4 (and adjust which color maps to 1.4) or
change the Electron row version label to one of the existing legend versions.
Locate the Electron row (the div containing the text "Electron" and version "v
1.4" and the three colored bars with classes bg-blue-500, bg-emerald-500,
bg-purple-500) and update the legend labels so the color-to-version mapping is
consistent with that row (or vice versa), ensuring each colored bar has a
corresponding legend entry.
| ### How does this relate to the App/Play Store review process or policies?[](https://capgo.app/docs/faq/#how-does-this-relate-to-the-appplay-store-review-process-or-policies "Direct link to How does this relate to the App/Play Store review process or policies?") | ||
|
|
||
| Developers are bound by their agreements with store providers when they choose to use those stores. Code push is designed to allow developers to update their apps and still comply with store policies on iOS and Android. Similar to the variety of commercial products available to do so with React Native (e.g. [Microsoft](https://appcenter.ms/), [Expo](https://expo.dev/)). | ||
| Developers are bound by their agreements with store providers when they choose to use those stores. Code push is designed to allow developers to update their apps and still comply with store policies on iOS, Android, and Electron delivery channels. Similar to the variety of commercial products available to do so with React Native (e.g. [Microsoft](https://appcenter.ms/), [Expo](https://expo.dev/)). |
There was a problem hiding this comment.
Avoid conflating app-store policy scope with Electron distribution.
Line 162 currently implies the same store-policy frame applies equally to Electron channels, which can be misleading. Consider scoping that sentence to iOS/Android store policies and separately noting Electron distribution policy depends on your desktop delivery path.
💡 Suggested wording
-Developers are bound by their agreements with store providers when they choose to use those stores. Code push is designed to allow developers to update their apps and still comply with store policies on iOS, Android, and Electron delivery channels.
+Developers are bound by their agreements with store providers when they choose to use those stores. Code push is designed to help teams comply with iOS and Android store policies; Electron distribution follows your chosen desktop delivery channel and its policies.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| Developers are bound by their agreements with store providers when they choose to use those stores. Code push is designed to allow developers to update their apps and still comply with store policies on iOS, Android, and Electron delivery channels. Similar to the variety of commercial products available to do so with React Native (e.g. [Microsoft](https://appcenter.ms/), [Expo](https://expo.dev/)). | |
| Developers are bound by their agreements with store providers when they choose to use those stores. Code push is designed to help teams comply with iOS and Android store policies; Electron distribution follows your chosen desktop delivery channel and its policies. Similar to the variety of commercial products available to do so with React Native (e.g. [Microsoft](https://appcenter.ms/), [Expo](https://expo.dev/)). |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/content/docs/docs/faq.mdx` at line 162, The sentence beginning "Code push
is designed to allow developers to update their apps and still comply with store
policies on iOS, Android, and Electron delivery channels." conflates mobile
store policy scope with Electron distribution; update this sentence to
explicitly scope compliance guidance to iOS and Android (e.g., "Code push is
designed to allow developers to update their apps and still comply with iOS and
Android store policies") and add a following sentence clarifying that Electron
distribution is governed by the desktop delivery path used (e.g., "Electron
distribution policies vary depending on your desktop delivery method and may not
follow the same app-store rules"). Ensure you edit the exact sentence in the
paragraph that starts with "Developers are bound by their agreements..." and
replace/append text accordingly.
| - **Platform**: The platform (iOS, Android) of the app that is used to determine which updates are compatible with the app | ||
| - **Device ID**: A unique identifier for the device that is used to deliver updates to a specific device and for billing purposes. This identifier is a random string that is created when the app is started for the first time. **Starting from plugin version v5.10.0, v6.25.0 and v7.25.0**, the device ID now persists across app reinstalls (stored securely in Keychain on iOS and EncryptedSharedPreferences on Android) to provide better device tracking while maintaining compliance with app store guidelines. Prior to these versions, the device ID was reset with every app installation | ||
| - **Platform**: The platform (iOS, Android, Electron) of the app that is used to determine which updates are compatible with the app | ||
| - **Device ID**: A unique identifier for the device that is used to deliver updates to a specific device and for billing purposes. This identifier is a random string that is created when the app is started for the first time. **Starting from plugin version v5.10.0, v6.25.0 and v7.25.0**, the device ID now persists across app reinstalls (stored securely in Keychain on iOS, EncryptedSharedPreferences on Android, and Electron secure storage) to provide better device tracking while maintaining compliance with app store guidelines. Prior to these versions, the device ID was reset with every app installation |
There was a problem hiding this comment.
Clarify persistent-identifier wording to avoid privacy-policy ambiguity.
Line 24 now says the device ID persists across reinstalls, which can conflict with the later “not collected” section unless you explicitly scope it as per-app and non-cross-app tracking.
Suggested wording adjustment
-- **Device ID**: A unique identifier for the device that is used to deliver updates to a specific device and for billing purposes. This identifier is a random string that is created when the app is started for the first time. **Starting from plugin version v5.10.0, v6.25.0 and v7.25.0**, the device ID now persists across app reinstalls (stored securely in Keychain on iOS, EncryptedSharedPreferences on Android, and Electron secure storage) to provide better device tracking while maintaining compliance with app store guidelines. Prior to these versions, the device ID was reset with every app installation
+- **Device ID**: A unique identifier used for update delivery and billing for a specific app install context. It is a random string created on first launch. **Starting from plugin version v5.10.0, v6.25.0 and v7.25.0**, it persists across reinstalls (stored securely in Keychain on iOS, EncryptedSharedPreferences on Android, and Electron secure storage). This ID is app-scoped and not used for cross-app tracking. Before these versions, the device ID reset on each installation.🧰 Tools
🪛 LanguageTool
[style] ~24-~24: ‘Prior to’ might be wordy. Consider a shorter alternative.
Context: ...g compliance with app store guidelines. Prior to these versions, the device ID was reset...
(EN_WORDINESS_PREMIUM_PRIOR_TO)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/content/docs/docs/live-updates/compliance.mdx` at line 24, Update the
Device ID paragraph to explicitly state the scope and privacy constraints:
clarify that the "Device ID" described in the Device ID section is a per-app,
per-plugin-instance identifier (not a cross-app or advertising identifier), is
non-personally-identifiable and is stored securely (Keychain on iOS,
EncryptedSharedPreferences on Android, Electron secure storage), and persists
only to maintain the same app instance across reinstalls for update/delivery and
billing purposes; also add a short note referencing that this identifier is not
collected/shared with advertisers or third parties and does not enable cross-app
tracking to avoid conflict with the "not collected" section.
| | **`updateUrl`** | `string` | Configure the URL / endpoint to which update checks are sent. Available on Android, iOS, and Electron. | `https://plugin.capgo.app/updates` | | | ||
| | **`channelUrl`** | `string` | Configure the URL / endpoint for channel operations. Available on Android, iOS, and Electron. | `https://plugin.capgo.app/channel_self` | | | ||
| | **`statsUrl`** | `string` | Configure the URL / endpoint to which update statistics are sent. Available on Android, iOS, and Electron. Set to "" to disable stats reporting. | `https://plugin.capgo.app/stats` | | | ||
| | **`publicKey`** | `string` | Configure the public key for end to end live update encryption Version 2. Available on Android, iOS, and Electron. | `undefined` | 6.2.0 | |
There was a problem hiding this comment.
Use the hyphenated form end-to-end.
Line [26] should use “end-to-end” for correct compound adjective formatting.
🧰 Tools
🪛 LanguageTool
[grammar] ~26-~26: Use a hyphen to join words.
Context: ...ring` | Configure the public key for end to end live update encryption Version 2....
(QB_NEW_EN_HYPHEN)
[grammar] ~26-~26: Use a hyphen to join words.
Context: ...g` | Configure the public key for end to end live update encryption Version 2. Av...
(QB_NEW_EN_HYPHEN)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/content/docs/docs/plugin/api.md` at line 26, Update the table cell for
the `publicKey` entry to use the hyphenated compound adjective "end-to-end"
instead of "end to end" (i.e., change the phrase in the `publicKey` table row
describing live update encryption to "end-to-end live update encryption").
| This will enable you to use local capgo in development. However, by default, this is not enough. | ||
|
|
||
| > By default both IOS and Android expect you to use HTTPS, you need to use a tool like Ngrock or localcan to proxy your API in https. | ||
| > By default iOS, Android, and Electron expect you to use HTTPS, you need to use a tool like Ngrock or localcan to proxy your API in https. |
There was a problem hiding this comment.
Fix typo and HTTPS phrasing in the warning sentence.
Line 38 has a typo (“Ngrock”) and awkward wording (“in https”). This can confuse setup instructions.
✍️ Proposed wording
-> By default iOS, Android, and Electron expect you to use HTTPS, you need to use a tool like Ngrock or localcan to proxy your API in https.
+> By default, iOS, Android, and Electron expect HTTPS. You need to use a tool like ngrok or localcan to proxy your API over HTTPS.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| > By default iOS, Android, and Electron expect you to use HTTPS, you need to use a tool like Ngrock or localcan to proxy your API in https. | |
| > By default, iOS, Android, and Electron expect HTTPS. You need to use a tool like ngrok or localcan to proxy your API over HTTPS. |
🧰 Tools
🪛 LanguageTool
[grammar] ~38-~38: Ensure spelling is correct
Context: ... use HTTPS, you need to use a tool like Ngrock or localcan to proxy your API in https....
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/content/docs/docs/plugins/updater/local-dev/capacitor-updater.mdx` at
line 38, Correct the typo "Ngrock" to "ngrok", fix capitalization and
punctuation, and rephrase the sentence for clarity: replace the current line "By
default iOS, Android, and Electron expect you to use HTTPS, you need to use a
tool like Ngrock or localcan to proxy your API in https." with a clearer
sentence such as "By default iOS, Android, and Electron expect HTTPS; use a tool
like ngrok or localcan to proxy your API over HTTPS." Ensure the updated text
uses proper casing for tool names and "over HTTPS" wording.
| if (platform === "electron" && !channelConfig.electron) { | ||
| return { | ||
| status: "error", | ||
| error: "Channel not available for Electron" | ||
| } |
There was a problem hiding this comment.
Use canonical snake_case for error codes in the Electron branch.
Line [313] currently uses a human-readable sentence in error. Keep machine-stable snake_case in error and move prose to message.
Proposed fix
if (platform === "electron" && !channelConfig.electron) {
return {
- status: "error",
- error: "Channel not available for Electron"
+ status: "error",
+ error: "channel_not_available_for_platform",
+ message: "Channel not available for electron"
}
}Based on learnings: In the Capgo backend, error codes are canonical snake_case in debug output/API responses and should stay consistent across MDX docs.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/content/docs/docs/plugins/updater/self-hosted/handling-channels.mdx`
around lines 310 - 314, The Electron branch returns a human-readable sentence in
the error field; replace that with a canonical snake_case error code and move
the prose to a message field: in the conditional that checks platform ===
"electron" and !channelConfig.electron, keep status: "error", set error to a
snake_case identifier (e.g., "channel_not_available_for_electron") and add
message: "Channel not available for Electron" so the response uses
machine-stable error codes while retaining the human-readable explanation.
| "app_id": "**.***.**", // app identifier in the store | ||
| "device_id": "*******", // unique id per app install | ||
| "platform": "ios", // or android | ||
| "platform": "ios", // or android, or electron |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# First, verify the file exists and examine the context around line 45
echo "=== Checking file existence ==="
ls -la src/content/docs/docs/plugins/updater/self-hosted/handling-stats.mdx
echo -e "\n=== Content around line 45 ==="
if [ -f src/content/docs/docs/plugins/updater/self-hosted/handling-stats.mdx ]; then
sed -n '40,50p' src/content/docs/docs/plugins/updater/self-hosted/handling-stats.mdx
fi
echo -e "\n=== Search for platform patterns in .mdx files ==="
rg '"platform"' src/content/docs/docs/plugins/updater/self-hosted/ -A 2 -B 2
Repository: Cap-go/website
Length of output: 1990
🏁 Script executed:
#!/bin/bash
# Also search for similar platform type patterns across the entire docs
echo "=== Broader search for platform type definitions ==="
rg '"platform"' src/content/docs/ -t mdx --max-count 20 -B 1 -A 1
Repository: Cap-go/website
Length of output: 155
🏁 Script executed:
#!/bin/bash
# Search for other AppInfosStats definitions to ensure consistency
echo "=== Search for AppInfosStats definitions ==="
rg 'AppInfosStats' src/content/docs/ -A 10
echo -e "\n=== Full context of the interface in handling-stats.mdx ==="
sed -n '42,65p' src/content/docs/docs/plugins/updater/self-hosted/handling-stats.mdx
Repository: Cap-go/website
Length of output: 13369
Use an explicit union type for platform to match the AppInfos interface definition.
Line 45 currently types platform as only "ios" with a comment listing other valid values. The related AppInfos interface in auto-update.mdx uses the proper union type syntax. Update this to an explicit union for consistency and clarity.
Suggested fix
- "platform": "ios", // or android, or electron
+ "platform": "ios" | "android" | "electron",
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "platform": "ios", // or android, or electron | |
| "platform": "ios" | "android" | "electron", |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/content/docs/docs/plugins/updater/self-hosted/handling-stats.mdx` at line
45, The example hardcodes platform as "ios" with a comment; update the example
to use the explicit union type used by the AppInfos interface (e.g., platform:
"ios" | "android" | "electron") so the sample matches AppInfos; modify the
object/property named platform in handling-stats.mdx to replace the commented
string with the union literal and ensure the union values exactly match those
declared on AppInfos in auto-update.mdx.
| > Requires autoUpdate and directUpdate to be enabled. | ||
|
|
||
| Only available for Android and iOS. | ||
| Available on Android, iOS, and Electron. |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
# First, let's check if the file exists and examine the content around lines 120 and 347
fd "settings.mdx" --type fRepository: Cap-go/website
Length of output: 932
🏁 Script executed:
# Also search for any references to autoSplashscreen and shakeMenu in the repo
rg "autoSplashscreen|shakeMenu" -B 2 -A 2Repository: Cap-go/website
Length of output: 50373
🌐 Web query:
@capgo/capacitor-updater autoSplashscreen platform support documentation
💡 Result:
autoSplashscreen in @capgo/capacitor-updater is only supported on Android and iOS (not web/desktop). (github.com)
Key requirements/notes from the docs:
- Works only when
directUpdateis enabled ("atInstall","onLaunch","always", ortrue) and autoUpdate is enabled. (github.com) - Requires
@capacitor/splash-screeninstalled and configured withlaunchAutoHide: false(so the updater can control when the splash screen hides). (github.com) - Documented as added in plugin version 7.6.0. (github.com)
Citations:
- 1: https://github.com/Cap-go/capacitor-updater?utm_source=openai
- 2: https://github.com/Cap-go/capacitor-updater?utm_source=openai
- 3: https://github.com/Cap-go/capacitor-updater?utm_source=openai
- 4: https://github.com/Cap-go/capacitor-updater?utm_source=openai
🌐 Web query:
@capgo/capacitor-updater shakeMenu platform support Electron Android iOS
💡 Result:
@capgo/capacitor-updaterplatform support: production-ready for Android and iOS. [4]shakeMenu(Capacitor Updater): a boolean option (since v7.5.0) that enables a shake gesture to open a debug/update menu (useful for testing). This is a device shake gesture, so it applies to Android/iOS, not Electron. [1], [2]- Electron:
shakeMenuisn’t applicable. For desktop apps, Capgo provides@capgo/electron-updater, where the equivalent Debug Menu is opened via keyboard shortcutCtrl+Shift+D/Cmd+Shift+D(feature parity note: “Shake device” vs “Keyboard shortcut”). [3]
🏁 Script executed:
wc -l src/content/docs/docs/plugins/updater/settings.mdxRepository: Cap-go/website
Length of output: 112
🏁 Script executed:
sed -n '110,130p' src/content/docs/docs/plugins/updater/settings.mdxRepository: Cap-go/website
Length of output: 800
🏁 Script executed:
sed -n '337,357p' src/content/docs/docs/plugins/updater/settings.mdxRepository: Cap-go/website
Length of output: 378
Correct platform scope for autoSplashscreen and shakeMenu.
The documentation at lines 120 and 347 incorrectly lists Electron as a supported platform for these options. Official plugin documentation confirms autoSplashscreen and shakeMenu are Android and iOS only. The shake gesture feature does not exist on Electron (which has a separate @capgo/electron-updater library with keyboard shortcuts). Listing Electron support can mislead teams into invalid configurations.
Suggested doc fix
-Available on Android, iOS, and Electron.
+Available on Android and iOS only.Also applies to: 347-347
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/content/docs/docs/plugins/updater/settings.mdx` at line 120, Update the
documentation to remove Electron from the platform scope for the
autoSplashscreen and shakeMenu options: change the platform sentence(s) that
currently read "Available on Android, iOS, and Electron." to reflect that
autoSplashscreen and shakeMenu are Android and iOS only; ensure both occurrences
referencing autoSplashscreen and shakeMenu (the entries for those option names
in settings.mdx) explicitly list only Android and iOS to match the official
plugin behavior.
| - You want to roll out updates to one platform before the other | ||
| - You need different update strategies per platform | ||
| - You're testing a new version on one platform while keeping the other stable | ||
|
|
There was a problem hiding this comment.
Wording still assumes only two platforms.
These bullets still say “the other,” which conflicts with the new iOS/Android/Electron framing. Please switch to platform-neutral phrasing.
Suggested wording tweak
-- You want to roll out updates to one platform before the other
+- You want to roll out updates to one platform before the others
...
-- You're testing a new version on one platform while keeping the other stable
+- You're testing a new version on one platform while keeping the others stable🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/content/docs/docs/webapp/main-app-page.mdx` around lines 80 - 83, The
three bullets under the rollout/update section use “the other” which assumes
only two platforms; update each bullet in main-app-page.mdx to be
platform-neutral by replacing phrases like “the other” with “other platforms” or
“another platform” (e.g., “roll out updates to one platform before other
platforms,” “use different update strategies per platform,” and “test a new
version on one platform while keeping other platforms stable”) so the wording
fits iOS/Android/Electron and any future platforms.



This PR updates updater documentation to consistently reflect Electron support and avoid misconfiguration risk. It corrects update-related wording, timeout units/defaults, and markdown table formatting for the directUpdate option. It also removes incorrect Electron claims from splashscreen options and adds a dedicated Electron logs section for troubleshooting parity. The FAQ copy now uses consistent platform wording for code push and production status.
Summary by CodeRabbit
Documentation
Style