Skip to content

Add Electron docs coverage for update flow#496

Merged
riderx merged 4 commits intomainfrom
riderx/electron-docs-docfixes
Feb 25, 2026
Merged

Add Electron docs coverage for update flow#496
riderx merged 4 commits intomainfrom
riderx/electron-docs-docfixes

Conversation

@riderx
Copy link
Member

@riderx riderx commented Feb 25, 2026

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

    • Expanded platform references across FAQ, troubleshooting, live updates, plugins API, and public API documentation to include Electron
    • Updated code examples and platform-specific guidance for iOS, Android, and Electron
    • Modified interface definitions and descriptions to reflect expanded platform coverage
  • Style

    • Updated landing page components to reference Electron platform
    • Added Electron visualization block to monitoring features card

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 25, 2026

📝 Walkthrough

Walkthrough

This 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

Cohort / File(s) Summary
Landing Page Components
src/components/landing/AutomationFeatures.astro, src/components/landing/MonitoringFeatures.astro, src/pages/index.astro
Updated component titles and descriptions to include Electron support; added Electron visualization block to monitoring card; updated SEO metadata to reference Electron apps.
Core Documentation
src/content/docs/docs/faq.mdx, src/content/docs/docs/getting-started/troubleshooting.mdx
Expanded platform references to include Electron in FAQ sections and added new troubleshooting guidance for Electron logs (DevTools, main/renderer process logs, OS logs).
Live Updates Docs
src/content/docs/docs/live-updates/*
Consistently added Electron to platform references across channels, compliance, custom-storage, features, and index documentation.
Plugin API Documentation
src/content/docs/docs/plugin/api.md, src/content/docs/docs/plugins/updater/{api.md,index.mdx,settings.mdx,local-dev/capacitor-updater.mdx}
Updated platform availability statements from "Android and iOS only" to "Android, iOS, and Electron" across configuration options; added new updater options table; added navigation link for Electron Updater.
Self-Hosted Backend Docs
src/content/docs/docs/plugins/updater/self-hosted/{auto-update.mdx,handling-channels.mdx,handling-stats.mdx}
Extended TypeScript interface definitions (ListChannelsRequest, GetChannelRequest, SetChannelRequest, ChannelConfig, AppInfosStats) to include "electron" in platform unions; updated SQL schema with electron BOOLEAN column; added electron support checks in channel logic.
Public API Documentation
src/content/docs/docs/public-api/{channels.mdx,devices.mdx}
Broadened Device interface platform field from "ios" | "android" to "ios" | "android" | "electron"; added electron?: boolean property to ChannelSet interface.
Web App Documentation
src/content/docs/docs/webapp/{channels.mdx,main-app-page.mdx}
Updated channel management guidance to include Electron in platform descriptions; reordered channel settings items and added Electron toggle option; expanded default-channel examples to cover Electron.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • fix: Error-4XX_page #321: Modifies the same src/content/docs/docs/live-updates/channels.mdx file, suggesting concurrent platform-related documentation work.

Suggested labels

💰 Rewarded

Poem

🐰 Hopping through the docs with glee,
Electron joins iOS and Android spree!
From landing pages to APIs so bright,
Platform support takes full flight,
Three platforms strong, our updater's might! ✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: expanding documentation to include Electron support in the update flow.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch riderx/electron-docs-docfixes

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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 |

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

| **`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 |

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

@sonarqubecloud
Copy link

@riderx riderx merged commit bb47023 into main Feb 25, 2026
5 of 6 checks passed
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 | 🟠 Major

Platform-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

📥 Commits

Reviewing files that changed from the base of the PR and between c8ba744 and 7f5efaa.

📒 Files selected for processing (22)
  • src/components/landing/AutomationFeatures.astro
  • src/components/landing/MonitoringFeatures.astro
  • src/content/docs/docs/faq.mdx
  • src/content/docs/docs/getting-started/troubleshooting.mdx
  • src/content/docs/docs/live-updates/channels.mdx
  • src/content/docs/docs/live-updates/compliance.mdx
  • src/content/docs/docs/live-updates/custom-storage.mdx
  • src/content/docs/docs/live-updates/features.mdx
  • src/content/docs/docs/live-updates/index.mdx
  • src/content/docs/docs/plugin/api.md
  • src/content/docs/docs/plugins/updater/api.md
  • src/content/docs/docs/plugins/updater/index.mdx
  • src/content/docs/docs/plugins/updater/local-dev/capacitor-updater.mdx
  • src/content/docs/docs/plugins/updater/self-hosted/auto-update.mdx
  • src/content/docs/docs/plugins/updater/self-hosted/handling-channels.mdx
  • src/content/docs/docs/plugins/updater/self-hosted/handling-stats.mdx
  • src/content/docs/docs/plugins/updater/settings.mdx
  • src/content/docs/docs/public-api/channels.mdx
  • src/content/docs/docs/public-api/devices.mdx
  • src/content/docs/docs/webapp/channels.mdx
  • src/content/docs/docs/webapp/main-app-page.mdx
  • src/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>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

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.

Suggested change
<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".

Comment on lines +43 to +54
<!-- 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>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

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/)).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

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.

Suggested change
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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

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 |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

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.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

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.

Suggested change
> 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.

Comment on lines +310 to +314
if (platform === "electron" && !channelConfig.electron) {
return {
status: "error",
error: "Channel not available for Electron"
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 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.

Suggested change
"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.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 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 f

Repository: 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 2

Repository: 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 directUpdate is enabled ("atInstall", "onLaunch", "always", or true) and autoUpdate is enabled. (github.com)
  • Requires @capacitor/splash-screen installed and configured with launchAutoHide: 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:


🌐 Web query:

@capgo/capacitor-updater shakeMenu platform support Electron Android iOS

💡 Result:

  • @capgo/capacitor-updater platform 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: shakeMenu isn’t applicable. For desktop apps, Capgo provides @capgo/electron-updater, where the equivalent Debug Menu is opened via keyboard shortcut Ctrl+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.mdx

Repository: Cap-go/website

Length of output: 112


🏁 Script executed:

sed -n '110,130p' src/content/docs/docs/plugins/updater/settings.mdx

Repository: Cap-go/website

Length of output: 800


🏁 Script executed:

sed -n '337,357p' src/content/docs/docs/plugins/updater/settings.mdx

Repository: 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.

Comment on lines 80 to 83
- 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

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant