We are excited to announce the release of Solid Lints 1.0.0, a major milestone for our popular open-source package designed to elevate code quality across Dart and Flutter projects based on software engineering industry standards (ISO/IEC, NIST) and best practices.
From our experience building with modern AI coding agents, we’ve seen that AI frequently violates DRY principles, introduces architectural anti-patterns, and produces more complex code. Solid Lints allows to create a built-in feedback loop that allows AI agents to automatically verify and fix their work according to company engineering standards.
This release represents a significant architectural step forward: Solid Lints has completely migrated to Dart's official analyzer plugin architecture. This shift delivers higher performance, improved resource efficiency, and smoother overall analysis for larger projects.
What’s New in 1.0.0?
Along with core performance improvements, we’ve expanded our test coverage by adding 272 new tests and introduced 5 new lint rules:
- avoid_duplicate_code: identifies structurally identical code blocks within functions, methods, and constructors across your entire project. Scattered duplicate logic is a common source of bugs. For example, you might fix an issue in one place but forget to update the copied code elsewhere. To prevent this, the rule actively enforces the DRY (Don't Repeat Yourself) principle and encourages developers and AI agents to extract shared logic into reusable components. At the same time, structural duplication is sometimes justified (like when identical code performs different business tasks). In these cases, the rule can be easily disabled on a case-by-case basis. More info
- feature_envy: detects methods that interact excessively with fields or methods of external classes rather than their own. This classic OOP anti-pattern indicates misplaced responsibilities, and flagging it encourages proper encapsulation by moving logic closer to the data it operates on. More info
- use_nearest_context: prevents subtle bugs in Flutter widget trees by ensuring BuildContext is always retrieved from the closest available scope in the hierarchy. This avoids stale context issues, improper widget re-renders, and unexpected behavior during navigation or state updates. More info
- use_descriptive_names_for_type_parameters: requires meaningful names for generic type parameters (e.g., <TEntity, TResponse> instead of <T, U, V>) when multiple type parameters are used. Clear generic names prevent confusion in complex domain logic and improve IDE auto-completion clarity. More info
- avoid_similar_names: flags variables within the same scope that use uninformative suffixes (such as item1 and item2 or tempA and tempB). This encourages clear, distinct naming and prevents accidental typos or variable mix-ups during rapid refactoring or AI code generation. More info
Our Commitment to Quality
As an Official Flutter Consultant and global leader in Flutter app development, Solid Software is dedicated to advancing adoption of best software engineering standards and practices, and sharing tools that help developers build clean, maintainable apps. Solid Lints 1.0.0 is built to help teams write better code every day.
Check out Solid Lints on pub.dev, explore our Documentation, or view the source on GitHub.