Focused Agent Skills for complete Flutter and Dart app delivery.
89%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
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.
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.
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.
.tessl-plugin
skills
dart-concurrency
dart-language
flutter-accessibility
flutter-ai-integration
flutter-animation
flutter-app-workflow
flutter-architecture
flutter-authentication
flutter-background-execution
flutter-build-release
flutter-ci-cd
flutter-code-review
flutter-dependency-upgrades
flutter-device-testing
flutter-figma-workflow
flutter-in-app-purchases
flutter-localization
references
flutter-location-maps
flutter-media
flutter-networking
flutter-notifications
flutter-observability
flutter-openapi-client
flutter-package-development
flutter-payments-checkout
flutter-performance
flutter-persistence
flutter-platform-integration
flutter-product-analytics
flutter-responsive-layout
flutter-runtime-debugging
flutter-security
flutter-state-management
flutter-testing
flutter-text-rendering
references
flutter-ui-design
flutter-ui-patterns
flutter-visual-effects