fix(frontend): stop empty avatar src reporting failed image loads - #3738
Merged
Conversation
Avatar components used '' as their "not loaded yet" value and bound it straight to :src. Vue renders src="" for an empty string, which the browser resolves to the current document URL and immediately fires an error event for, without any request. That made every avatar mount report "Failed to load image: <page url>" to Sentry. fetchAvatarBlobUrl now resolves to undefined instead of '', and all consumers hold undefined until an avatar resolves, so Vue omits the src attribute entirely.
An <img> with an empty or '#' src (the tiptap image placeholder) fires an error event with img.src reflecting the page URL, which the resource error listener reported as a failed image load.
kolaente
approved these changes
Sep 4, 2026
kolaente
enabled auto-merge (rebase)
September 4, 2026 21:09
Preview DeploymentPreview deployments for this PR are available at:
The preview environment will start automatically on first visit. Subsequent pushes to this PR will update the Run locally with Dockerdocker pull ghcr.io/go-vikunja/vikunja:pr-3738
docker run -p 3456:3456 ghcr.io/go-vikunja/vikunja:pr-3738Last updated for commit de42aac |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Avatar components hold
''as "not loaded yet", bind straight to:src. Vue rendersrc="". Per HTML spec empty src fireerrorimmediately, no fetch, andimg.srcreflect page URL. So sentry resource-error listener reportFailed to load image: https://app.vikunja.cloud/tasks/409653on every avatar mount. ~189k events.Fix: avatar refs hold
undefined, never''— Vue omit attribute whole. Listener also skip img with empty or'#'src (tiptap image placeholder).Fixes Sentry issue FRONTEND-OSS-263.
How to verify
<img>in the elements panel before its blob URL resolves.srcattribute at all (notsrc=""), and no imageerrorevent fires for it, so nothing is reported to Sentry.Before this PR: every avatar rendered
src="", fired an error event, and reported the current page URL as a failed image load.