Skip to main content

What’s new in DCM 1.30.0

· 19 min read

Cover

Today we’re excited to announce the release of DCM 1.30.0!

This release includes 22 new rules, improvements in ~55 existing rules, baseline for code quality commands (e.g. dcm check-unused-code), a new flag to update the existing baseline, support for different levels of baseline sensitivity, more rules in Free and Starter plans, updated "recommended" preset, better support for baselined issues in DCM Dashboards, optimizations for DCM Dashboards uploaded metadata, and more!

warning

❗️ With the next release we plan to discontinue all DCM versions prior to 1.24.0.

If you're still using one of those, consider upgrading to a newer version.

Let’s go through the highlights of this release! (And you can find the full list of changes in our changelog)

Practical Accessibility in Flutter (and Code You’ll Actually Use)

· 30 min read
Majid Hajian
Developer Advocate

Cover

I still remember the day a colleague turned on VoiceOver to try our Flutter app, then we found large parts of the UI were silent or confusing. No crashes or errors, just buttons with no labels, images announced only as "image," and custom widgets invisible to accessibility tools.

It's easy to forget about these during development, and they can silently exclude a group of our users and before you realize it, you might get a user complaint or a poor accessibility audit. Accessibility is crucial for inclusive apps, and thankfully Flutter’s latest updates are making it easier and faster to do the right thing.

In this post, I’ll share what I learned about building accessible Flutter apps with real examples, best practices, and leveraging Flutter 3.32’s new features to fix common pitfalls. We’ll explore mistakes like missing alt text on images or ignoring large font settings and how to fix them.

The Hidden Cost of Async Misuse in Flutter (And How to Fix It)

· 20 min read
Majid Hajian
Developer Advocate

Cover

I still remember the week I hunted a mysterious Flutter performance issue which had no crashes or error logs; just a sluggish app and somehow an increase usage of memory. Guess what? The issue was a missing await here, an unguarded setState() there.

These bugs don’t crash your app or shout errors; they silently cause memory leaks, UI glitches, and race conditions that surface only after extended use. Problem is that when you spot these behaviors or degraded performance, the damage is done.

In this post, I’ll share what I learned about async misuse’s hidden costs in Flutter, with real examples and fixes. We’ll explore common pitfalls (some of which I’ve embarrassingly written myself), see their sneaky production impacts, and how to use tools like DCM to catch them early.

Announcing General Availability of DCM Dashboards

· 6 min read
Majid Hajian
Developer Advocate

Cover

Two months ago, we announced DCM Dashboards (Closed Beta), a solid new way to monitor your issues, metrics, and code quality trends over time for your entire organization' projects.

Since then, we've worked closely with many of early adopters and refined the experience based on their feedback as well as adding new features and functionalities.

Today, we’re excited to announce that DCM Dashboards is now generally available to all Teams and Enterprise customers.

What’s new in DCM 1.28.0

· 10 min read

Cover

Today we’re excited to announce the release of DCM 1.28.0!

This release includes 11 new rules, general availability of DCM Dashboards, configurable estimated effort for rules and metrics, printable HTML reports, support for the old Dart formatter, and more! 🚀

Let’s go through the highlights of this release! (And you can find the full list of changes in our changelog)

15 Common Mistakes in Flutter and Dart Development (and How to Avoid Them)

· 41 min read
Majid Hajian
Developer Advocate

Cover

As Flutter projects grow, mistakes that didn’t matter early on can start affecting performance, stability, and maintainability. Some are easy to miss. Others are misunderstood or handled inconsistently across teams.

In this article, I am going to focus on mistakes that are common in Flutter and Dart apps, especially in larger codebases or long-running apps which I have often seen in the last 6-7 years of being in the field. They range from memory leaks and rebuild issues to state misuse, testing gaps, and architectural problems. All of them are avoidable. Most can be detected with static analysis such as DCM. Some require deeper architectural decisions.

Let's get started and see which of these issues are familiar to you and which of them you already have done! I bet you can resonate with many of the following issues.

10 Lesser-Known Dart and Flutter Functionalities You Should Start Using

· 44 min read
Majid Hajian
Developer Advocate

Cover

I started writing Dart code in 2019, and since then, I've been learning something new every day. It’s fascinating to see what this framework and language have to offer.

In this article, I want to share some of those hidden gems I’ve discovered—lesser-known functionalities that can simplify your development process and add a unique touch to your apps. Moreover, we will go deeper into the implementation and explore how they are implemented to learn more about the patterns.

Let’s uncover some of these functions and methods together!

What’s new in DCM 1.27.0

· 5 min read

Cover

Today we’re excited to announce the release of DCM 1.27.0!

This release includes 4 new rules, new built-in presets, reworked metrics console reporter, support for disabling ignore comments for particular rules, closed beta for DCM Dashboards, and more! 🚀

Let's go through the highlights of this release! (And you can find the full list of changes in our changelog)

Announcing DCM Dashboards (Closed Beta)

· 7 min read
Majid Hajian
Developer Advocate

Cover

For the past two years we were focusing on a various parts of the product, and added:

While all those features help you maintain your codebase and be more productive, there was still one problem that the tool was not helping you with: getting an overview of all your issues and metrics, and how they change over time.

Today we are excited to announce DCM Dashboards that will help exactly with that! 🚀

Step by Step Guide to Integrate DCM Into A Flutter & Dart Open Source Package: dart_mappable

· 17 min read
Majid Hajian
Developer Advocate

Cover

I recently had the pleasure of collaborating with Kilian, the developer behind several Dart and Flutter open-source packages, including the popular "dart_mappable". "dart_mappable" is a package that simplifies JSON serialization, data classes, and supports powerful features like advanced inheritance and generics.

In this post, I'll walk you through how we integrated DCM into "dart_mappable" and show you how you can select rules, create baseline and start fixing issues quickly.

10 Flutter Widgets Probably Haven’t Heard Of (But Should Be Using!)

· 34 min read
Majid Hajian
Developer Advocate

Cover

It’s been over 6 years since I started developing with Flutter and Dart, and yet I still come across features or widgets that I didn’t know existed. It’s fascinating how a framework you work with daily can still surprise you with its depth and versatility.

In this article, I want to share some of those hidden gems I’ve discovered lesser-known widgets and functionalities that can simplify your development process and add a unique touch to your apps. Moreover, we will go deeper into the implementation and explore how they are implemented to learn more about the patterns.

Let’s uncover some of these widgets together!

What’s new in DCM 1.26.0

· 12 min read

Cover

Today we’re excited to announce the release of DCM 1.26.0!

This release includes 17 new rules (4 for Flutter), new JSON output format for all commands, improved help output for "dcm init preview", new rule tags, configuration autocompletion in analysis_options.yaml (IntelliJ/AS), rule pages improvements, and more UX improvements and bug fixes! 🚀

Let's go through the highlights of this release! (And you can find the full list of changes in our changelog)

Demystifying Union Types in Dart, Tagged vs. Untagged, Once and For All

· 33 min read
Majid Hajian
Developer Advocate

Cover

Over the years and throughout my career, I have written a lot of code in various languages, such as PHP, Python, Javascript, Typescript, Dart, Java, Go, Clojure, and more. All these languages are equally good and have unique aspects that make you approach problem-solving in a certain way.

One concept seems to appear frequently, often in a rather basic manner but in fact quite complicated: Union Types. Some languages naturally support them; in others, it may seem like an impossible task.

In this article, we will be diving deep into Union Types (Untagged and Tagged Unions)—what they are, why they’re helpful, where they fall short, and why, in strongly typed languages like Dart, you might want to reconsider their use. To convey my message better, I will write examples from different languages, including Typescript, F#, PHP, and more.

Without further ado, let’s get started.

What’s new in DCM 1.25.0

· 9 min read

Cover

Today we’re excited to announce the release of DCM 1.25.0!

This release includes 14 new rules (9 for Bloc), additional filters and estimated effort for "dcm init preview", support for adding new seats directly from the DCM Teams Console, and more UX improvements! 🚀

Plus, starting from this version, all rules for Bloc are now included into our Free plan!

warning

❗️ With the next release we plan to discontinue all DCM versions prior to 1.17.3.

If you're still using one of those, consider upgrading to a newer version.

Let's go through the highlights of this release! (And you can find the full list of changes in our changelog)

What’s new in DCM 1.24.0

· 11 min read

Cover

Today we’re excited to announce the release of DCM 1.24.0!

This release includes 17 new rules (6 for Bloc and 4 for Flutter), autocompletion for DCM configuration in analysis_options.yaml, improved validation of rules and metrics in DCM configuration, a new type of fixes called "unsafe fixes" and more! 🚀

info

The "recommended" preset has been updated and now includes some new rules from previous releases, so you may get new warnings if you use the build-in recommended preset or once you update the dart-code-metrics-presets package dependency.

Let's go through the highlights of this release! (And you can find the full list of changes in our changelog)