CtrlK
BlogDocsLog inGet started
Tessl Logo
PluginPublic

thiennc-tesoglobal/flutter-skills

Focused Agent Skills for complete Flutter and Dart app delivery.

Quality

89%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

Overview
Quality
Evals
Security
Files

memory-startup-and-size.mdskills/flutter-performance/references/

Memory, startup, and size

Memory retention

Measure a repeated flow: establish a steady baseline, enter and leave the feature several times, force collection through the profiler when appropriate, then compare retained objects and ownership paths. Distinguish a bounded cache from unbounded growth.

Inspect lifecycle ownership of controllers, subscriptions, listeners, image caches, platform handles, and closures capturing widget state. Fix disposal or ownership at the source; do not hide retention by clearing every cache.

Treat full-resolution decodes as a hypothesis. Compare actual decoded dimensions with the physical pixels required for the tile's fit or crop, and check whether oversized images account for the growth. If decodes already match the required size, rule out oversized dimensions and inspect the number of retained images and their ownership instead.

Read ImageCache.currentSizeBytes as cached entry size and liveImageCount as a separate count. Pair them with memory profiling and decoded dimensions before attributing growth. When oversized decodes are confirmed, use platform-aware image sizing to reduce the size at the source.

For oversized thumbnails, keep normal cache eviction and correct the decode size. Reject periodic whole-cache clearing as a fix because it discards reusable entries and leaves actively listened-to images live.

For web image-memory comparisons, repeat the same scroll in an isolated browser tab and sample its memory footprint at the same points before and after. Use a browser process metric such as Chrome Task Manager's Memory footprint and report it as aggregate memory. Record response dimensions and transfer bytes separately. A JS heap snapshot alone misses native allocations, and transfer size measures network cost.

Startup

Define the user-visible milestone, such as first useful frame or first interactive content. Trace initialization on a representative device in profile or release mode. Defer only work that is not required for correctness, and preserve ordering for authentication, migrations, and dependency setup.

App size

Compare like-for-like release artifacts for the same target, architecture splits, symbols, and build configuration. Use Flutter's size analysis to identify ownership before removing assets or dependencies. Verify runtime loading and licensing after changing fonts, icons, or deferred components.

Sources

  • DevTools memory view
  • ImageCache metrics
  • Chrome memory diagnostics
  • Measure app size
  • Flutter performance profiling

skills

LICENSE

README.md

tile.json