The fallback chain
Picture → initials → icon. The third src is an image that cannot load — bytes no browser can decode, standing in for a URL that 404s — and this page is server-rendered, so that picture fails before the app hydrates — its error event fires before any listener exists. The avatar reads the image's own state on its first render in the browser instead, which is why it shows initials and not a broken image. While a slow picture loads, the initials show under it, so nothing moves when it arrives.
<div>
<gog-avatar name="Ada Lovelace" [src]="photo" size="lg" />
<span>picture</span>
</div>
<div>
<gog-avatar name="Ada Lovelace" size="lg" />
<span>no src</span>
</div>
<div>
<!-- An image that cannot load. On this server-rendered page it fails before the app hydrates. -->
<gog-avatar name="Ada Lovelace" [src]="broken" size="lg" />
<span>src fails</span>
</div>
<div>
<gog-avatar size="lg" />
<span>no name either</span>
</div>