supercluster
A port of MapBox's javascript supercluster library for fast clustering, with added mutable clustering support.
3.2.0
13K downloads/mo
#2596 most downloaded on pub.dev
rorystephenson/supercluster_dart
What this package is like to depend on
Last release 12 months ago
28 Aug 2025
Release timing varies
gaps range from 8 days to 1.2 years
Nearly every release is documented
notes for 15 of 15 stable releases
Nothing withdrawn
no release was ever pulled
4 years old
17 releases · first in 2022
0 releases in the last 12 months
see the full history below
Release timeline
17 releases · Jun 2022 to Aug 2025
2023
2024
2025
2026
Releases
latest 17-
3.2.028 Aug 2025 -
3.1.004 Jul 2024 -
3.0.113 Jul 2023 -
3.0.006 Jul 2023Release notes
Open source →- BREAKING: SuperclusterMutable.insert() has changed behaviour and name. It is now add() in following with dart collection conventions. The implementation has changed to ensure that clusters are appropriately formed, previously after many insertions now enough clusters were being formed. There is a performance cost but if you need to add many points you can use the new addAll() method which is fast for multiple points.
- BREAKING: The remove() method has also changed implementation to ensure that clusters are reformed correctly, previously not enough clusters were being reformed after certain removals.
- FEATURE: Added addAll() method for efficiently adding many points.
- FEATURE: Added removeAll() method for efficiently removing many points.
- FEATURE: Added containsElement() method for SuperclusterImmutable.
-
3.0.0-dev.205 Jul 2023 pre-releaseNothing published for this version
-
3.0.0-dev.104 Jul 2023 pre-releaseNothing published for this version
-
2.4.028 May 2023 -
2.3.028 May 2023Release notes
Open source →- FEATURE: The following methods are now available for both SuperclusterImmutable and
SuperclusterMutable:
- parentOf
- childrenOf
- layerPointOf
- BREAKING: Supercluster.contains has been renamed to Supercluster.containsPoint
- BREAKING: SuperclusterImmutable.childrenOf has been renamed to SuperclusterImmutable.childrenOfById.
- BREAKING: MutableLayerPoint's weighted x/y (wX/wY) have been removed. They are equivalent x/y.
- BREAKING: MutableLayerCluster's x/y is now originX/originY and the wX/wY is now x/y. This brings MutableLayerCluster in line with ImmutableLayerCluster and means that the x/y of a LayerElement is always the coordinate with which it is stored in the index.
- FEATURE: The following methods are now available for both SuperclusterImmutable and
SuperclusterMutable:
-
2.2.021 May 2023Release notes
Open source →- FEATURE: Add replacePoints method which allows the index's points to be replaced with the original ones when a supercluster index is created in a separate isolate.
- BUGFIX: Fix highestZoom/lowestZoom values when inserting in a mutable supercluster causes a new cluster to form.
-
2.1.129 Sep 2022Release notes
Open source →- BUGFIX: SuperclusterMutable now removes existing points when calling load(). This was the
documented behaviour but there was a bug in the implementation. Thanks
@Robbendebienefor pointing this out.
- BUGFIX: SuperclusterMutable now removes existing points when calling load(). This was the
documented behaviour but there was a bug in the implementation. Thanks
-
2.1.027 Sep 2022Release notes
Open source →- Add new
containsfunction which returns true if the provided point is contained in the index.
- Add new
-
2.0.027 Sep 2022Release notes
Open source →- BREAKING: SuperclusterImmutable no longer has a
pointsargument. Instead the points should be set by calling load() as is done with SuperclusterMutable. - BREAKING: onClusterDataChange callback has been removed. If you want to react to cluster data
changes you can do so after:
loadis called. -removeis called and returns true. -modifyPointDatais called and returns true.
- BREAKING: SuperclusterImmutable no longer has a
-
1.0.019 Sep 2022Release notes
Open source →- BREAKING: ClusterOrMapPoint has been renamed to LayerElement
- BREAKING: Cluster has been renamed to LayerCluster
- BREAKING: MapPoint has been renamed to LayerPoint
- BREAKING: Supercluster now no longer supports points with a null x or y. The getX and getY functions are now non-nullable. If you have points with null x/y you should filter them out.
- Introduced SuperclusterMutable which allows adding/removing points. This uses a rbush instead of kdbush as the point index which is slower but supports mutation. If you don't need mutation you should stick with the normal Supercluster.
-
0.1.008 Jun 2022 -
0.0.205 Jun 2022 -
0.0.105 Jun 2022 -
0.0.1+105 Jun 2022