Skip to content

feat: add RecycleList virtualized list component#207

Open
haywoodfu wants to merge 5 commits intoDioxusLabs:mainfrom
haywoodfu:feat/recycle-list
Open

feat: add RecycleList virtualized list component#207
haywoodfu wants to merge 5 commits intoDioxusLabs:mainfrom
haywoodfu:feat/recycle-list

Conversation

@haywoodfu
Copy link
Contributor

Add a new RecycleList component that virtualizes large lists by rendering only the visible slice plus a configurable buffer. Supports dynamic row heights and both container-scroll and window-scroll modes.

Primitive (dioxus-primitives):

  • RecycleList with configurable items, buffer, render_item callback
  • Spread attributes support via attributes: Vec
  • Scroll tracking via document::eval() JS bridge (no extra deps)
  • Automatic container-scroll vs window-scroll detection

Preview:

  • Styled wrapper with shadcn theme
  • Demo variant with 2000 dynamic-height rows
  • Component metadata (component.json, docs.md)

Tests:

  • Playwright E2E test for virtualization behavior

Closes #203

Add a new RecycleList component that virtualizes large lists by rendering
only the visible slice plus a configurable buffer. Supports dynamic row
heights and both container-scroll and window-scroll modes.

Primitive (dioxus-primitives):
- RecycleList with configurable items, buffer, render_item callback
- Spread attributes support via attributes: Vec<Attribute>
- Scroll tracking via document::eval() JS bridge (no extra deps)
- Automatic container-scroll vs window-scroll detection

Preview:
- Styled wrapper with shadcn theme
- Demo variant with 2000 dynamic-height rows
- Component metadata (component.json, docs.md)

Tests:
- Playwright E2E test for virtualization behavior

Closes DioxusLabs#203
@github-actions
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add RecycleList (virtualized list)

1 participant