flutter-smell-list-performance

Detect performance smells in Flutter ListView, GridView, and Sliver lists.

Updated Nov 7, 2025
One-click install
npx skills add https://github.com/belluga/delphi-ai --skill flutter-smell-list-performance
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: flutter-smell-list-performance
Source: https://github.com/belluga/delphi-ai/tree/main/.cline/skills/flutter-smell-list-performance
Command: npx skills add https://github.com/belluga/delphi-ai --skill flutter-smell-list-performance

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Flutter apps with large lists or grids can suffer from slow builds and janky scrolling when lists are rendered with non-builder widgets, lack of pagination, and unstable item keys.

Core Features & Use Cases

  • Detect performance smells in ListView, GridView, and Sliver-based lists.
  • Recommend and apply builder-based rendering (ListView.builder, SliverList) and implement stable keys.
  • Use cases include long product grids, chat lists, and data-heavy lists where smooth scrolling is critical.

Quick Start

Inspect a Flutter screen with a long list, identify non-builder patterns, and convert to a builder-based approach with stable keys and optional pagination.

Frequently Asked Questions about flutter-smell-list-performance

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
Why does my Flutter ListView scroll slowly with large data sets?

Flutter ListView scrolling is slow when lists use non-builder widgets, lack stable keys, or render complex item widgets all at once. Converting to builder variants and implementing pagination or virtualization fixes the janky scrolling.

How do I fix janky scrolling in a Flutter GridView?

Fix janky scrolling in a Flutter GridView by identifying non-builder patterns and converting them to builder-based rendering. Applying stable item keys and enabling pagination or virtualization further smooths the scrolling.

When do I need to use ListView.builder instead of ListView in Flutter?

You need to use ListView.builder in Flutter when rendering large data sets or complex item widgets. It lazily builds items on demand, preventing slow builds and janky scrolling that occur with standard non-builder lists.

What is the best way to add stable keys to Flutter Slivers?

The best way to add stable keys to Flutter Slivers is to assign unique identifiers to each item widget instead of using index-based keys. This preserves widget state and prevents unnecessary rebuilds during list mutations.

Does converting to a builder pattern improve Flutter list performance for chat lists?

Converting to a builder pattern significantly improves Flutter list performance for chat lists. It renders complex item widgets lazily, and combined with stable keys, ensures smooth scrolling even with large data sets.

Can I apply virtualization to non-builder Flutter lists?

You can apply virtualization to non-builder Flutter lists by converting them to builder variants like ListView.builder or SliverList. This transition enables on-demand rendering for large data sets and complex item widgets.