Reflex Logo

Intro

Gallery

Hosting

Learn

Components

Recipes

API Reference

Onboarding

Library

/

Forms

/

Debounce

Reflex is a backend-centric framework, which can create negative performance impacts for apps that need to provide interactive feedback to the user in real time. For example, if a search bar sends a request to the backend on every keystroke, it may result in a laggy UI. This is because the backend is doing a lot of work to process each keystroke, and the frontend is waiting for the backend to respond before updating the UI.

Using the rx.debounce_input component allows the frontend to remain responsive while receiving user input and sends the value to the backend after some delay, on blur, or when Enter is pressed.

"Typically, this component is used to wrap a child rx.input or rx.text_area, however, most child components that accept the value prop and on_change event handler can be used with rx.debounce_input."

This example only sends the final checkbox state to the backend after a 1 second delay.

Unchecked

class DebounceCheckboxState(rx.State):
    checked: bool = False


def debounce_checkbox_example():
    return rx.hstack(
        rx.cond(
            DebounceCheckboxState.checked,
            rx.text("Checked", color="green"),
            rx.text("Unchecked", color="red"),
        ),
        rx.debounce_input(
            rx.chakra.checkbox(
                on_change=DebounceCheckboxState.set_checked,
            ),
            debounce_timeout=1000,
        ),
    )

The DebounceInput component is used to buffer input events on the client side.

It is intended to wrap various form controls and should be used whenever a
fully-controlled input is needed to prevent lost input data when the backend
is experiencing high latency.
PropTypeDefault ValueValues
min_length
int
debounce_timeout
int
DEFAULT_DEBOUNCE_TIMEOUT
force_notify_by_enter
bool
force_notify_on_blur
bool
value
Union[str, int, float]
input_ref
str
element
Type

Event Triggers

TriggerDescription
on_change

Fired when the input value changes

← CheckboxEditor →

Did you find this useful?

HomeGalleryChangelogIntroductionHosting