equatable
A Dart package that helps to implement value based equality without needing to explicitly override == and hashCode.
2.1.0
1000K downloads/mo
#12 most downloaded on pub.dev
felangel/equatable
What this package is like to depend on
Last release 1 months ago
05 Jul 2026
Ships unpredictably
gaps range from 3 weeks to 2.2 years
Nearly every release is documented
notes for 47 of 47 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
55 releases · first in 2019
3 releases in the last 12 months
see the full history below
Release timeline
55 releases · Jan 2019 to Jul 2026Releases
latest 55-
3.0.0-dev.116 Oct 2024 pre-releaseRelease notes
Open source →- feat: use
covariantinoperator==override for improved type safety - chore: add
macrostotopicsinpubspec.yaml
- feat: use
-
3.0.0-dev.016 Oct 2024 pre-releaseRelease notes
Open source →-
BREAKING feat!: rewrite using macros
Before
class Person extends Equatable { const Person({required this.name}); final String name; @override List<Object> get props => [name]; }
After
@Equatable() class Person { const Person({required this.name}); final String name; }
-
-
2.1.005 Jul 2026Release notes
Open source →- feat: deprecate
EquatableMixin(#214)class Foo with EquatableMixin {...} // OLD class Foo with Equatable {...} // NEW
- refactor: update analysis options
- deps: upgrade to Dart >=3.0.0
- chore(example): upgrade to Dart >=3.12.0
Release notes
Open source →- feat: deprecate
EquatableMixin(#214)class Foo with EquatableMixin {...} // OLD class Foo with Equatable {...} // NEW - refactor: update analysis options
- deps: upgrade to Dart >=3.0.0
- chore(example): upgrade to Dart >=3.12.0
- feat: deprecate
-
2.1.0-dev.024 May 2026 pre-releaseNothing published for this version
-
2.0.804 Jan 2026Release notes
Open source →What's Changed
- fix: improve
mapEqualsto correctly compare maps with different key… by @Danilospano00 in #207 - chore: bump license by @felangel in #208
- chore: v2.0.8 by @felangel in #209
New Contributors
- @Danilospano00 made their first contribution in #207
Full Changelog: v2.0.7...v2.0.8
- fix: improve
-
2.0.721 Nov 2024Release notes
Open source →What's Changed
- fix: explicitly handle
numequality comparisons by @felangel in #189 - revert:
equalsinequatable_utilsby @felangel in #190 - chore: v2.0.7 by @felangel in #191
Full Changelog: v2.0.6...v2.0.7
Release notes
Open source → - fix: explicitly handle
-
2.0.621 Nov 2024Release notes
Open source →What's Changed
- fix: add @immutable to EquatableMixin by @felangel in #154
- refactor: update
analysis_options.yamlby @felangel in #169 - refactor: simplify
toStringlogic by @Amir-P in #140 - chore: fix typo in doc comment by @azack in #170
- chore: add
fundingandtopicstopubspec.yamlby @felangel in #176 - docs: improve snippet in README by @felangel in #184
- perf: improve equality comparison performance by @Maksimka101 in #173
- chore: v2.0.6 by @felangel in #185
New Contributors
- @Amir-P made their first contribution in #140
- @azack made their first contribution in #170
- @Maksimka101 made their first contribution in #173
Full Changelog: v2.0.5...v2.0.6
Release notes
Open source →- perf: improve equality comparison performance (#173)
- docs: improve snippet in
README(#184) - chore: upgrade example to Dart >=3.5.0
- chore: add funding and topics to
pubspec.yaml(#176) - chore: add performance benchmarks
- chore: fix typo in inline API docs (#170)
- refactor: simplify
toStringlogic (#140) - docs: add nullable props example to
README - refactor: update
analysis_options.yaml(#169) - fix: add
@immutabletoEquatableMixin(#154)
-
2.0.519 Aug 2022Release notes
Open source →- fix: resolves
T not a subtype of type 'Comparable<dynamic>'when computinghashCode
Release notes
Open source →- fix: resolves
T not a subtype of type 'Comparable<dynamic>'when computinghashCode
- fix: resolves
-
2.0.419 Aug 2022Release notes
Open source →- fix: use
SplayTreeSetto resolve inconsistenthashCodefor properties of typeSet(#142)
Release notes
Open source →- fix: use
SplayTreeSetto resolve inconsistenthashCodefor properties of typeSet(#142)
- fix: use
-
2.0.314 Jun 2021 -
2.0.220 May 2021 -
2.0.119 May 2021 -
2.0.002 Mar 2021Release notes
Open source →- BREAKING: opt into null safety
- feat!: upgrade Dart SDK constraints to
>=2.12.0-0 <3.0.0
- feat!: upgrade Dart SDK constraints to
- BREAKING: stringify prints "null" for null properties instead of ""
- feat:
EquatableConfig.stringifydefaults totruein debug mode. - fix: support legacy equality overrides with
EquatableMixin - fix: iterable equality comparisons (#101)
- fix: stringify instance with long properties (#94)
- chore: update dependencies
collection: ^1.15.0meta: ^1.3.0
- docs: minor updates to
READMEandexample
- BREAKING: opt into null safety
-
2.0.0-nullsafety.426 Feb 2021 pre-releaseRelease notes
Open source →- feat:
EquatableConfig.stringifydefaults totruein debug mode. - fix: support legacy equality overrides with
EquatableMixin
- feat:
-
2.0.0-nullsafety.308 Feb 2021 pre-release -
2.0.0-nullsafety.208 Feb 2021 pre-releaseRelease notes
Open source → -
2.0.0-nullsafety.106 Jan 2021 pre-release -
2.0.0-nullsafety.022 Nov 2020 pre-releaseRelease notes
Open source →- BREAKING: opt into null safety
- feat!: upgrade Dart SDK constraints to
>=2.12.0-0 <3.0.0 - docs: minor updates to
READMEandexample
-
1.2.608 Feb 2021Release notes
Open source → -
1.2.508 Sep 2020Release notes
Open source →- docs: dartdoc improvements (#80)
- docs: minor inline documentation improvements
-
1.2.423 Aug 2020 -
1.2.325 Jul 2020Release notes
Open source →- docs: inline, public documentation improvements (#78).
- refactor: stricter analysis/lint rules
-
1.2.211 Jul 2020 -
1.2.111 Jul 2020Release notes
Open source →- Fix
hashCodecomputation forIterables(#74) - Minor documentation improvements
- Fix
-
1.2.029 May 2020 -
1.1.102 Mar 2020 -
1.1.010 Feb 2020 -
1.0.324 Jan 2020 -
1.0.203 Jan 2020 -
1.0.124 Nov 2019 -
1.0.019 Nov 2019Release notes
Open source →- Update hashCode implementation to use
Jenkins Hash(#39) - Documentation Updates
- Update hashCode implementation to use
-
0.6.102 Oct 2019 -
0.6.027 Sep 2019Release notes
Open source →- The
propsgetter override is required for bothEquatableandEquatableMixin - Performance Improvements
- The
-
0.5.129 Aug 2019 -
0.5.026 Aug 2019Release notes
Open source →- Removed
EquatableMixinBase(now covered byEquatableMixin). - Typed
EquatableMixinfromList<dynamic>toList<Object>to fix linter issues withimplicit-dynamic: false.
- Removed
-
0.4.004 Aug 2019 -
0.3.015 Jul 2019 -
0.2.631 May 2019 -
0.2.524 May 2019 -
0.2.419 May 2019 -
0.2.309 Mar 2019 -
0.2.226 Feb 2019Release notes
Open source →Bug Fixes:
Equatableinstances that are equal now have the samehashCode(#8)
-
0.2.125 Feb 2019 -
0.2.021 Feb 2019 -
0.1.1026 Jan 2019 -
0.1.924 Jan 2019 -
0.1.823 Jan 2019 -
0.1.723 Jan 2019 -
0.1.610 Jan 2019 -
0.1.507 Jan 2019 -
0.1.407 Jan 2019 -
0.1.307 Jan 2019 -
0.1.207 Jan 2019 -
0.1.106 Jan 2019 -
0.1.006 Jan 2019Release notes
Open source →Initial Version of the library.
- Includes the ability to extend
Equatableand not have to override==andhashCode.
- Includes the ability to extend