Skip to main content

Import

from reflex_ui import avatar

Description

Displays a user’s profile picture, initials, or fallback icon in a circular container. Automatically handles image loading states with a fallback.

High-Level API

avatar(
    src="/path/to/image.jpg"
)

Props

src
str
URL of the image to display
render_
Component
Custom component to render as avatar root

Image Props

on_loading_status_change
EventHandler[str]
Called when image loading status changes. Receives status as ‘loading’, ‘loaded’, or ‘error’

Fallback Props

delay
int
Delay in milliseconds before showing fallback content

Compositional API

For full control, use the subcomponents:

avatar.root()

Root container for the avatar.
render_
Component
Custom root component

avatar.image()

Image element displayed in the avatar. Renders an <img> element.
src
str
required
Image source URL
on_loading_status_change
EventHandler[str]
Loading status change handler
render_
Component
Custom image component

avatar.fallback()

Displayed when image fails to load or while loading.
delay
int
Milliseconds to wait before showing fallback
render_
Component
Custom fallback component

Class Names

Access default class names via avatar.class_names:
  • ROOT: Circular container with flex centering
  • IMAGE: Full-size image with object-cover
  • FALLBACK: Fallback container with pulse animation

Examples

Basic Avatar

import reflex as rx
from reflex_ui import avatar

def user_avatar():
    return avatar(
        src="https://example.com/avatar.jpg"
    )

Avatar with Initials Fallback

import reflex as rx
from reflex_ui import avatar

def user_avatar_with_initials():
    return avatar.root(
        avatar.image(
            src="https://example.com/avatar.jpg"
        ),
        avatar.fallback(
            rx.text("JD", weight="bold")
        ),
        class_name="size-10"
    )

Avatar with Icon Fallback

import reflex as rx
from reflex_ui import avatar
from reflex_ui.components.icons.hugeicon import hi

def user_avatar_with_icon():
    return avatar.root(
        avatar.image(
            src="https://example.com/avatar.jpg"
        ),
        avatar.fallback(
            hi("UserIcon", size=20),
            delay=100
        )
    )

Custom Sized Avatar

import reflex as rx
from reflex_ui import avatar

def large_avatar():
    return avatar(
        src="https://example.com/avatar.jpg",
        class_name="size-16"  # Custom size
    )

Avatar Group

import reflex as rx
from reflex_ui import avatar

def avatar_group():
    return rx.box(
        avatar(src="https://example.com/user1.jpg"),
        avatar(src="https://example.com/user2.jpg"),
        avatar(src="https://example.com/user3.jpg"),
        display="flex",
        gap="2"
    )

Loading States

The avatar automatically handles three loading states:
  1. Loading: While the image is being fetched
  2. Loaded: When the image successfully loads
  3. Error: When the image fails to load (shows fallback)
import reflex as rx
from reflex_ui import avatar

class AvatarState(rx.State):
    loading_status: str = "loading"
    
    def handle_status_change(self, status: str):
        self.loading_status = status

def monitored_avatar():
    return rx.box(
        avatar.root(
            avatar.image(
                src="https://example.com/avatar.jpg",
                on_loading_status_change=AvatarState.handle_status_change
            ),
            avatar.fallback(
                rx.text("?"),
                delay=500
            )
        ),
        rx.text(f"Status: {AvatarState.loading_status}")
    )

Build docs developers (and LLMs) love