iOfficeAI/AionUi · warning · Error
Failed to flush feedback report${eventId ? ` (${eventId})` :
Error message
Failed to flush feedback report${eventId ? ` (${eventId})` : ''} What it means
Sentry's `client.flush(timeout)` resolves `false` when not all queued events could be sent within the timeout. This error signals the feedback report was accepted locally but not confirmed delivered to Sentry before the deadline — usually network slowness or a too-short `flushTimeoutMs`.
Source
Thrown at packages/desktop/src/renderer/services/feedback/submitFeedbackReport.ts:311
message: eventSummary,
extra: {
description: normalizedDescription,
...input.extra,
},
},
{ attachments }
);
});
if (input.flushTimeoutMs !== undefined) {
const client = Sentry.getClient();
if (!client) {
throw new Error(`Failed to flush feedback report${eventId ? ` (${eventId})` : ''}: Sentry is not initialized`);
}
const flushed = await client.flush(input.flushTimeoutMs);
if (!flushed) {
throw new Error(`Failed to flush feedback report${eventId ? ` (${eventId})` : ''}`);
}
}
logFeedbackReport('info', 'submitted', {
module: input.module,
eventId,
collectLogs: Boolean(input.collectLogs),
logAttachment: summarizeLogAttachment(logAttachmentStatus, logAttachment),
dbDiagnosticsAttachment: summarizeDbDiagnosticsAttachment(dbDiagnosticsAttachmentStatus, dbDiagnosticsAttachment),
attachmentCount: attachments.length,
attachments: summarizeAttachments(attachments),
flushTimeoutMs: input.flushTimeoutMs,
tagKeys: Object.keys(input.tags ?? {}),
});
} catch (error) {
logFeedbackReport('error', 'failed', {
module: input.module,
eventId,View on GitHub (pinned to 711aa0550e)
Solutions
- Increase `flushTimeoutMs` to a realistic value (several seconds) especially when attachments are attached
- Check network reachability of the Sentry DSN host (proxy/firewall rules)
- Retry the submission once connectivity returns; consider queueing offline via Sentry's offline transport
- Trim heavy payload data (large base64 attachments) that slows the flush
Example fix
// before
const flushed = await client.flush(input.flushTimeoutMs);
if (!flushed) {
throw new Error(`Failed to flush feedback report${eventId ? ` (${eventId})` : ''}`);
}
// after (retry once with a longer budget)
let flushed = await client.flush(input.flushTimeoutMs);
if (!flushed) flushed = await client.flush(input.flushTimeoutMs * 2);
if (!flushed) throw new Error(`Failed to flush feedback report${eventId ? ` (${eventId})` : ''}`); Defensive patterns
Strategy: retry
Validate before calling
if (!navigator.onLine) { /* queue report, do not flush now */ } Type guard
null
Try / catch
catch (e) { if (e.message.startsWith('Failed to flush feedback report')) { scheduleRetry(eventId); } } Prevention
- Use a generous flushTimeoutMs (>=5s) when attachments are present
- Retry once after reconnect before surfacing failure
When it happens
Trigger: `submitFeedbackReport` invoked with a `flushTimeoutMs`; `client.flush(input.flushTimeoutMs)` resolves `false` because the transport (network request to Sentry DSN) did not drain within the timeout, or the client is offline.
Common situations: Offline or flaky network at submission time; flushTimeoutMs set too low for large payloads (screenshots/attachments); Sentry endpoint blocked by firewall/proxy; high event volume backing up the transport buffer.
Related errors
AI-assisted analysis of iOfficeAI/AionUi@711aa0550e (2026-08-28).
Data as JSON: /api/errors/fe7b2857486cfda8.
Report an issue: GitHub.