Molunerfinn/PicGo · warning
Failed to check latest version
Error message
Failed to check latest version
What it means
checkLatestVersion throws when the main-process GET_LATEST_VERSION RPC fails. The main handler (src/main/events/rpc/routes/version.ts:8) calls getLatestVersion(type), which performs an outbound HTTPS request to the update feed; a thrown error there is wrapped by fail(e) in rpcInvokeHandler and surfaced in the renderer as this Error. The literal message is the fallback used when result.error is empty.
Solutions
- Check network connectivity and retry; the error is usually transient
- Inspect result.error (log it before throwing) to distinguish network failure from rate limiting (403) vs 404
- Verify any configured proxy in PicGo settings is reachable and correct
- Check the update-feed URL/host used by getLatestVersion is not blocked in your environment
Example fix
// before
const version = await settingsAdapter.checkLatestVersion(includeBeta)
// after
let version: string | null = null
try {
version = await settingsAdapter.checkLatestVersion(includeBeta)
} catch (e) {
console.warn('Update check skipped:', (e as Error).message)
} Defensive patterns
Strategy: try-catch
Validate before calling
if (typeof navigator.onLine === 'boolean' && !navigator.onLine) {
return // skip update check while offline
} Type guard
function isRPCSuccess<T>(r: { success: boolean; data?: T }): r is { success: true; data: T } {
return r.success === true
} Try / catch
try {
const version = await checkLatestVersion(includeBeta)
} catch (e) {
logger.warn((e as Error).message)
// degrade gracefully: show 'unknown' version instead of failing the UI
} Prevention
- Treat update checks as best-effort; never let them block app startup
- Retry with backoff or schedule the next check instead of surfacing an error
- Check for corporate proxies/rate limits when the error recurs
- Log result.error from the RPC envelope to distinguish offline vs rate-limited
When it happens
Trigger: Calling checkLatestVersion(includeBeta) when the main process cannot reach the update server: network offline, DNS failure, proxy misconfigured, GitHub API rate-limit/HTTP error, or an unhandled exception inside getLatestVersion.
Common situations: Corporate proxy or firewall blocking api.github.com; GitHub API rate limiting (403) on shared IPs; offline/bad Wi-Fi; IPv6 issues; user enabled a custom mirror that is down.
Related errors
- Failed to get window state
- Setting window not found
- Toolbox fix failed
- Failed to copy provider config
- Failed to delete provider config
AI-assisted analysis of Molunerfinn/PicGo@07ec7068a5 (2026-08-30).
Data as JSON: /api/errors/101fe67983b59cfb.
Report an issue: GitHub.
Appendix: source
Thrown at src/renderer/adapters/settings.ts:41
openConfigFile () {
sendToMain(PICGO_OPEN_FILE, 'data.json')
},
openLogFile () {
sendToMain(PICGO_OPEN_FILE, 'picgo.log')
},
openExternalUrl (url: string) {
openURL(url)
},
updateServer () {
sendToMain('updateServer')
},
updateCustomLink () {
sendToMain('updateCustomLink')
},
async checkLatestVersion (includeBeta: boolean) {
const result = await invokeRPC<string>(IRPCActionType.GET_LATEST_VERSION, includeBeta)
if (!result.success) {
throw new Error(result.error || 'Failed to check latest version')
}
return result.data
},
async loadShortcuts () {
const config = await getConfig<IShortKeyConfigs>('settings.shortKey')
return config || {}
},
toggleShortcutModifiedMode (value: boolean) {
sendToMain(TOGGLE_SHORTKEY_MODIFIED_MODE, value)
},
toggleShortcutEnabled (item: IShortKeyConfig) {
sendToMain('bindOrUnbindShortKey', item, item.from)
},
updateShortcut (item: IShortKeyConfig, oldKey: string) {
return new Promise<boolean>((resolve, reject) => {
const cleanup = ipc.once('updateShortKeyResponse', (result: boolean) => {
resolve(result)View on GitHub (pinned to 07ec7068a5)