MCPInstall

syncfusion-react-listview

Implement Syncfusion React ListView component for displaying dynamic lists with single/multiple selection, templates, filtering, grouping, drag-drop, and virtualization. Use this when you need list visualization, item management, selection handling, custom templates, and data filtering. Supports local/remote data binding, checkboxes, animations, RTL, and accessibility features.

Installs
625
Last 24h
—
Trending rank
—
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/syncfusion/react-ui-components-skills --skill syncfusion-react-listview
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads syncfusion-react-listview automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

Implementing Syncfusion React ListView

A comprehensive guide to implementing the Syncfusion React ListView component for displaying dynamic, interactive lists with advanced features like templating, filtering, selection, and data management.

When to Use This Skill

Use this skill when you need to:

  • Display lists of items with rich templating and customization
  • Implement single or multiple item selection
  • Add, remove, or update list items dynamically
  • Filter and search list data
  • Create nested or grouped lists
  • Handle user interactions (scroll, select, check)
  • Apply custom animations and styling
  • Support drag-and-drop operations
  • Optimize performance with virtualization
  • Implement data binding (local or remote)
  • Add checkboxes or custom icons
  • Provide accessibility features (WCAG 2.1)

Component Overview

The ListView component displays a collection of items in a scrollable, interactive list. It supports:

  • Data Sources: Arrays, objects, DataManager, remote APIs
  • Selection Modes: None, single, multiple, or checkbox-based
  • Templates: Item templates, header templates, group templates
  • Data Operations: Filtering, sorting, grouping, searching
  • Performance: Virtual scrolling for 1000+ items
  • Interactions: Click, select, scroll events
  • Styling: Built-in themes, custom CSS, RTL support
  • Accessibility: WCAG 2.1 Level AA compliant

Installation & Setup

Step 1: Install Syncfusion Packages

npm install @syncfusion/ej2-react-lists @syncfusion/ej2-base @syncfusion/ej2-data

Step 2: Import Required Modules

import { ListViewComponent } from '@syncfusion/ej2-react-lists';
// For additional features:
import { Inject, Virtualization } from '@syncfusion/ej2-react-lists';

Step 3: Import CSS

import '@syncfusion/ej2-react-lists/styles/material.css'; // or other themes

Quick Start Example

import React from 'react';
import { ListViewComponent } from '@syncfusion/ej2-react-lists';

export function BasicListView() {
  const data = [
    { id: '1', text: 'Item 1' },
    { id: '2', text: 'Item 2' },
    { id: '3', text: 'Item 3' }
  ];

  return (
    <ListViewComponent
      id="list"
      dataSource={data}
      fields={{ text: 'text', id: 'id' }}
    />
  );
}

Core Concepts

1. Data Binding

Local Array:

const items = ['Apple', 'Banana', 'Orange'];
<ListViewComponent dataSource={items} />

Object Array with Mapping:

const data = [
  { productId: 1, productName: 'Laptop', category: 'Electronics' },
  { productId: 2, productName: 'Desk', category: 'Furniture' }
];

<ListViewComponent
  dataSource={data}
  fields={{
    id: 'productId',
    text: 'productName',
    groupBy: 'category'
  }}
/>

2. Selection Handling

const handleSelect = (args) => {
  console.log('Selected item:', args.text, args.id);
};

<ListViewComponent
  dataSource={data}
  select={handleSelect}
/>

3. Item Management

  • Add Items: addItem(data, fields?)
  • Remove Items: removeItem(item)
  • Update Items: Replace in dataSource and refresh
  • Get Selection: getSelectedItems()

4. Templates

// Item Template
const itemTemplate = (props) => (
  <div className="e-list-wrapper">
    <span>{props.text}</span>
    <span className="e-list-content">{props.category}</span>
  </div>
);

<ListViewComponent
  dataSource={data}
  fields={fields}
  template={itemTemplate}
/>

Documentation & Navigation Guide

Getting Started

📄 Read: references/getting-started.md

  • Installation and imports
  • Basic setup and first component
  • CSS themes and styling
  • Minimal working example
  • Project structure

Data Binding & Rendering

📄 Read: references/data-binding-rendering.md

  • Local array data sources
  • Object mapping with fields
  • Remote data with DataManager
  • Query filtering on remote data
  • Load on demand and pagination
  • Dynamic data updates

Item Management (CRUD)

📄 Read: references/item-management.md

  • Adding new items dynamically
  • Removing items by reference
  • Updating existing items
  • Batch operations
  • Finding items in list
  • Managing nested list items

Selection & Filtering

📄 Read: references/selection-filtering.md

  • Single item selection
  • Multiple item selection
  • Checkbox-based selection
  • Programmatic selection
  • Filtering list items
  • Search functionality
  • Selection events and callbacks

Templating & Customization

📄 Read: references/templating-customization.md

  • Custom item templates (JSX, function, string)
  • Header templates with headerTemplate
  • Group header templates with groupTemplate
  • Template data context and variables
  • Dynamic templates based on device
  • CSS customization with classes
  • RTL template support

Advanced Features

📄 Read: references/advanced-features.md

  • Grouping and sorting
  • Nested lists with hierarchy (up to 3 levels)
  • Checkbox state management
  • Animations and effects
  • Custom icons and image display
  • Enable/disable item states
  • Layout patterns for complex dashboards

Layout & Alignment Patterns ⭐ NEW

📄 Read: references/layout-alignment-patterns.md

  • Patient Portal Pattern: ListView with Cards, Appointments, Prescriptions, Messages
  • Appointments Dashboard: 3x2 Grid layout with filters, scheduler, analytics
  • Monitoring Dashboard: 3x3 Grid layout with KPIs, alerts, tickets
  • Fixing common alignment issues (scrolling, borders, spacing)
  • Responsive grid layouts for mobile/tablet/desktop
  • Complete code examples for each pattern

Performance & Virtualization

📄 Read: references/performance-virtualization.md

  • Virtual scrolling for large datasets (1000+)
  • Enabling virtualization
  • Refresh item heights
  • Memory optimization tips
  • Combining with pagination
  • Performance best practices
  • Dataset size recommendations

API Reference & Properties

📄 Read: references/api-reference.md

  • Complete property documentation
  • Method signatures and parameters
  • Event handler arguments
  • Default values for all properties
  • Property type specifications
  • Usage examples for each API

Accessibility & Events

📄 Read: references/accessibility-events.md

  • WCAG 2.1 compliance
  • Keyboard navigation
  • Screen reader support
  • ARIA attributes
  • Focus management
  • Event lifecycle
  • Event arguments and data

Common Patterns

Pattern 1: List with Selection

User clicks item → select event fires → update UI

const [selected, setSelected] = React.useState(null);

const handleSelect = (args) => {
  setSelected(args);
};

<ListViewComponent
  dataSource={items}
  select={handleSelect}
/>

Pattern 2: Add/Remove Items

const listViewRef = React.useRef(null);

const addItem = () => {
  listViewRef.current.addItem([{ text: 'New Item', id: Date.now() }]);
};

const removeItem = (item) => {
  listViewRef.current.removeItem(item);
};

<ListViewComponent ref={listViewRef} dataSource={items} />

Pattern 3: Filtered List

const [filteredData, setFilteredData] = React.useState(items);

const handleFilter = (searchText) => {
  const filtered = items.filter(item =>
    item.text.toLowerCase().includes(searchText.toLowerCase())
  );
  setFilteredData(filtered);
};

<ListViewComponent dataSource={filteredData} />

Pattern 4: Multiple Selection with Checkboxes

<ListViewComponent
  dataSource={items}
  showCheckBox={true}
  fields={{ id: 'id', text: 'text', isChecked: 'checked' }}
/>

Pattern 5: ListView in Card Container (NEW)

<div style={{
  border: '1px solid #e0e0e0',
  borderRadius: '4px',
  overflow: 'hidden',
  display: 'flex',
  flexDirection: 'column'
}}>
  <div style={{
    padding: '16px',
    backgroundColor: '#f5f5f5',
    borderBottom: '1px solid #e0e0e0'
  }}>
    <h3 style={{ margin: 0 }}>Messages</h3>
  </div>
  <div style={{ flex: 1, overflow: 'auto', minHeight: 0 }}>
    <ListViewComponent
      dataSource={items}
      height="100%"
      width="100%"
    />
  </div>
</div>

Pattern 6: ListView in Grid Layout (NEW)

<div style={{
  display: 'grid',
  gridTemplateColumns: 'repeat(3, 1fr)',
  gap: '16px'
}}>
  {/* Card 1 - ListView */}
  <div style={{ border: '1px solid #e0e0e0', display: 'flex', flexDirection: 'column' }}>
    <div style={{ padding: '12px', backgroundColor: '#f5f5f5' }}>Appointments</div>
    <div style={{ flex: 1, overflow: 'auto', minHeight: 0 }}>
      <ListViewComponent dataSource={appointments} height="300px" />
    </div>
  </div>
  {/* Card 2, Card 3, etc. */}
</div>

Pattern 7: Dashboard with Multiple ListViews (NEW)

See Layout & Alignment Patterns Guide for:

  • 🏥 Patient Portal: Appointments + Messages + Prescriptions grid
  • 📅 Appointments Dashboard: 3x2 grid with filters and scheduler
  • 📊 Monitoring Dashboard: 3x3 grid with KPIs, logs, alerts, and tickets

Key Properties

PropertyTypeDefaultPurpose
dataSourceArray/DataManager[]Data to display
fieldsFieldSettingsModeldefaultMappedFieldsMap data to fields
templatestring/function/JSXnullCustom item template
headerTemplatestring/function/JSXnullCustom header template
groupTemplatestring/function/JSXnullCustom group template
showCheckBoxbooleanfalseShow checkboxes
checkBoxPosition'Left'|'Right''Left'Checkbox position
sortOrder'None'|'Ascending'|'Descending''None'Data sort order
enableVirtualizationbooleanfalseVirtual scrolling
heightnumber|string''List height
widthnumber|string''List width
cssClassstring''Custom CSS class
enabledbooleantrueEnable/disable component
enableRtlbooleanfalseRight-to-left support
animationAnimationSettings{...}Item animations

Key Methods

MethodPurpose
addItem(data, fields?)Add new items to list
removeItem(item)Remove item from list
removeMultipleItems(items)Remove multiple items at once
selectItem(item)Select an item
selectMultipleItems(items)Select multiple items
unselectItem(item?)Deselect item(s)
getSelectedItems()Get current selection
findItem(item)Find item details
checkItem(item)Check a checkbox item
uncheckItem(item)Uncheck checkbox item
checkAllItems()Check all items
uncheckAllItems()Uncheck all items
enableItem(item)Enable disabled item
disableItem(item)Disable item
hideItem(item)Hide item
showItem(item)Show hidden item
back()Navigate back from nested list
refreshItemHeight()Refresh item heights (virtualization)
destroy()Clean up component

Key Events

EventTriggers When
selectItem is selected
actionBeginAny action starts
actionCompleteAny action completes
actionFailureRemote data fetch fails
scrollUser scrolls to top/bottom

Common Use Cases

  1. Display Settings List: Grouped items with icons
  2. Contact List: Multi-line templates with images
  3. Nested Navigation: Drill-down hierarchy
  4. Filterable Search: Dynamic data filtering
  5. Todo List: Checkboxes and item removal
  6. Product Catalog: Pagination and filtering
  7. Chat Messages: Reverse grouping by date
  8. Notification Feed: Scrolling with actions
  9. Multi-Select Picker: Checkboxes and buttons
  10. Hierarchical Menu: Nested items with back navigation

Tips & Best Practices

General Best Practices

  • ✅ Always map fields correctly for data to display
  • ✅ Use templates for rich UI beyond plain text
  • ✅ Enable virtualization for 1000+ items
  • ✅ Use DataManager for filtering/sorting large remote data
  • ✅ Memoize templates and callbacks to prevent re-renders
  • ✅ Use cssClass for lightweight customization
  • ✅ Handle select event for user interactions
  • ✅ Clean up with destroy() when component unmounts
  • ❌ Don't render complex components in every item template
  • ❌ Don't forget to set proper fields mapping

Alignment & Layout Best Practices ⭐

  • ✅ Always set explicit height on parent container when using flex layout
  • ✅ Use overflow: 'auto' and minHeight: 0 on flex children for scrolling
  • ✅ Use flexShrink: 0 on headers to prevent shrinking
  • ✅ Use gap in templates instead of individual margins for consistent spacing
  • ✅ Set width: '100%' and height: '100%' on ListView to fill container
  • ✅ Wrap ListView in flex container with display: 'flex' and flexDirection: 'column'
  • ✅ Use CSS Grid for dashboard layouts with proper gridColumn/gridRow
  • ✅ Set overflow: 'hidden' on card container to respect border-radius
  • ❌ Don't rely on default margins - they cause misalignment
  • ❌ Don't skip flex container setup - ListView needs proper parent context
  • ❌ Don't forget minHeight: 0 on scrolling containers in flex

Troubleshooting

Items not displaying?

  • Verify dataSource is populated
  • Check fields mapping matches data structure
  • Ensure text field is mapped correctly

Selection not working?

  • Verify select event handler is bound
  • Check item has valid id field
  • Ensure item is not disabled

Performance issues?

  • Enable enableVirtualization={true}
  • Reduce template complexity
  • Use DataManager for remote filtering instead of client-side

Styling issues?

  • Import CSS theme file
  • Check cssClass is applied to root element
  • Inspect CSS specificity conflicts

Next Steps:

  • Read appropriate reference files based on your use case
  • Check API Reference for complete property/method documentation
  • Review Accessibility guide for WCAG compliance
  • Explore code examples for your specific feature

FAQ

What does the syncfusion-react-listview skill do?

Implement Syncfusion React ListView component for displaying dynamic lists with single/multiple selection, templates, filtering, grouping, drag-drop, and virtualization. Use this when you need list visualization, item management, selection handling, custom templates, and data filtering. Supports local/remote data binding, checkboxes, animations, RTL, and accessibility features.

How do I install syncfusion-react-listview?

Run npx skills add https://github.com/syncfusion/react-ui-components-skills --skill syncfusion-react-listview in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/syncfusion-react-listview/ (personal) or .claude/skills/syncfusion-react-listview/ (project).

Which AI agents can use syncfusion-react-listview?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is syncfusion-react-listview safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains syncfusion-react-listview?

It is published by syncfusion in syncfusion/react-ui-components-skills. It has 625 recorded installs.

More from syncfusion/react-ui-components-skills

View all →

syncfusion-react-grid

syncfusion/react-ui-components-skills

Implements Syncfusion React Grid component for feature-rich data tables and grids. Use this when working with data display, sorting, filtering, grouping, aggregates, editing, or exporting. This skill covers grid configuration, CRUD operations, virtual scrolling or infinite scrolling, hierarchy grids, state persistence, and advanced data management features for data-intensive applications.

Frontend & Design824 installs

syncfusion-react-scheduler

syncfusion/react-ui-components-skills

Implement Syncfusion React Scheduler component for calendar, event scheduling, and appointment management. Use this when building scheduling systems, calendar applications, booking systems, or time management interfaces. Covers all scheduler views (Day, Week, Month, Timeline, Agenda, Year), data binding, resource scheduling, recurring events, CRUD operations, drag-and-drop scheduling, customization, accessibility, and advanced features.

Frontend & Design784 installs

syncfusion-react-gantt-chart

syncfusion/react-ui-components-skills

Implement, configure, and customize the Syncfusion React Gantt Chart component. Use this when building project scheduling applications with task timelines, dependencies, resource management, and calendar-driven scheduling. Covers GanttComponent setup, task constraints, taskbar customization, filtering, sorting, Excel/PDF export, critical path analysis, milestones, predecessors, resource view, baseline tracking, and task calendar configuration.

Frontend & Design774 installs

syncfusion-react-rich-text-editor

syncfusion/react-ui-components-skills

Implements the Syncfusion React Rich Text Editor (RichTextEditorComponent) from ej2-react-richtexteditor, supporting HTML (WYSIWYG) and Markdown editing. Use this skill for toolbar configuration, image/video/audio insertion, paste cleanup, AI assistant integration, emoji picker, slash menu, mentions, import/export Word/PDF, form validation, and source code view in React applications.

Frontend & Design758 installs

syncfusion-react-charts

syncfusion/react-ui-components-skills

Implement Syncfusion React Charts component for data visualization. Use this when creating charts, configuring axes and series, or customizing visualization styles. This skill covers chart types, data binding, user interactions, financial indicators, accessibility features, and professional data visualization in React applications.

Frontend & Design750 installs

syncfusion-react-treegrid

syncfusion/react-ui-components-skills

Implements Syncfusion React TreeGrid for hierarchical data with sorting, filtering, editing, exporting, paging, virtual scrolling, and advanced features. Supports configuration, CRUD, aggregates, templates, state persistence, and performance optimization in React applications.

Frontend & Design747 installs

Popular frontend & design skills

View category →

setup-matt-pocock-skills

mattpocock/skills

Configure this repo for the engineering skills: set up its issue tracker, triage label vocabulary, and domain doc layout. Run once before first use of the other engineering skills.

Frontend & Design1.1M installs

frontend-design

anthropics/skills

Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.

OfficialFrontend & Design1M installs

hyperframes-animation

heygen-com/hyperframes

All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus Lottie, Three.js, Anime.js, CSS keyframes, Web Animations API, TypeGPU). Use for any motion or animation task: pick 2-4 rules and compose, or load a blueprint, or look up runtime-specific API (e.g. GSAP eases / Lottie player / Three.js mixer). Also covers auditing an existing composition's choreography (animation map) and 24 named text-animation effects. HyperFrames-native: single paused timeline, seek-safe, deterministic.

prototype

mattpocock/skills

Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.

Frontend & Design999.2K installs

hyperframes-core

heygen-com/hyperframes

The HyperFrames composition contract — build one renderable project. Use for composition structure, the data- timing attributes, class="clip", tracks, sub-compositions, variables, framework-owned media playback, deterministic-render rules, and validation. Read before writing composition HTML.

Frontend & Design930.5K installs

vercel-react-best-practices

vercel-labs/agent-skills

React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.

OfficialFrontend & Design843.1K installs