NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev
A library for easy creation, transformation, and morphing of rounded polygonal shapes. Contains predefined Material Design shapes that can be used at various components.
Last release 1 months ago
13 Aug 2026
Release timing varies
gaps range from 9 days to 2 months
Nearly every release is documented
notes for 13 of 13 stable releases
Nothing withdrawn
no release was ever pulled
10 months old
13 releases · first in 2025
One column per month.
The shapes library is now deprecated in favor of androidx_graphics_shapes.
Introduced a new main library androidx_graphics_shapes.
shapes library is now deprecated in favor of androidx_graphics_shapes.package:androidx_graphics_shapes/shapes.dart to package:androidx_graphics_shapes/androidx_graphics_shapes.dart.Deprecated the material_shapes library in favor of package:material_3p/material_shapes.dart.
package:androidx_graphics_shapes/material_shapes.dart to package:material_3p/material_shapes.dart.Bumped minimum SDK versions to Dart 3.13 and Flutter 3.47.
Made Feature a sealed class.
Edge and Corner, which are already final classes.Upgraded dependencies to latest pinned SDK constraints.
meta to ^1.19.0.vector_math to ^2.4.2.Updated example to use the material_3p package.
Minor internal changes.
Applied minor optimizations to Cubic.split() (cartesian optimization) and Cubic.pointOnCurve().
Applied minor optimizations to Cubic.split() (cartesian optimization) and Cubic.pointOnCurve().
Fixed changelog formatting.
Removed deprecated internal extensions: RoundedPolygonInternalExtension and MorphInternalExtension.
Introduced a new abstract DynamicPathBorder class, which allows implementing bounds-dependent path borders while handling the painting logic automatically.
BorderSide support to both RoundedPolygonBorder and MorphBorder, including proper stroke alignment.strokeCap, strokeJoin and strokeMiterLimit properties allow customizing how the shape's outline will be painted. This change was propagated down to StaticPathBorder, RoundedPolygonBorder and MorphBorder as well.DynamicPathBorder.paintPathStroke() static method provides painting logic to help paint path strokes on a Canvas, e.g. in CustomPainter.paint(), RenderObject.paint(), etc.Renamed PathBorder to StaticPathBorder and changed its superclass to DynamicPathBorder.
Added Object.toString() overrides for all custom borders: DynamicPathBorder, StaticPathBorder, RoundedPolygonBorder and MorphBorder.
Added documentation clarifying the normalized path requirements to StaticPathBorder.path.
Removed deprecated internal extensions: RoundedPolygonInternalExtension and MorphInternalExtension.
RoundedPolygonExtension and MorphExtension respectively.Bumped minimum SDK versions to Dart 3.12 and Flutter 3.44.
Cleaned up internal code.
Reformatted the library with Dart 3.12 formatter changes.
Reformatted the changelog.
Changed RoundedPolygonExtension.transformedWithMatrix4() to always perform perspective transform. Removed the usePerspectiveTransform parameter.
Changed RoundedPolygonExtension.transformedWithMatrix4() to always perform perspective transform. Removed the usePerspectiveTransform parameter.
Fixed RoundedPolygon.hashCode returning different hash codes for equal objects. The features list is now being properly hashed by values.
Replaced usages of listEquals() and Object.hashAll() with ListEquality().equals() and ListEquality().hash().
Minor optimizations, as well as internal and code style changes.
Marked internal extension methods on RoundedPolygon and Morph as deprecated.
Bumped minimum Dart SDK to 3.11 and Flutter to 3.41.
Marked internal extension methods on RoundedPolygon and Morph as deprecated.
Fixed RoundedPolygonBorder.copyWith() skipping side and squash properties.
Exposed PathBorder for public use.
Added transformedWithMatrix2(), transformedWithMatrix3() and transformedWithMatrix4() methods to RoundedPolygonExtension.
Added more arguments to RoundedPolygonExtension.toPath() and MorphExtension.toPath() methods.
Optimized internal calculations and algorithms in the material_shapes library only.
Added missing 1.4.0 changelog entries.
Downgraded the dependency constraint of meta to ^1.17.0 to match the version pinned by the stable SDK.
meta to ^1.17.0 to match the version pinned by the stable SDK.Removed usages of the @immutable annotation.
Removed usages of the @immutable annotation.
Internal changes.
Addressed linter feedback.
Upgraded dependencies.
Added path caching to RoundedPolygonBorder and MorphBorder so they are no longer const-constructable.
Added path caching to RoundedPolygonBorder and MorphBorder so they are no longer const-constructable.
Implemented morphing between RoundedPolygonBorder shapes and between MorphBorder shapes (with the same morph values).
Exposed start and end properties of Morph as internal members.
Internal updates to MaterialShapes.
Added inline pragmas to internal utils.
CornerRounding() now uses positional parameters. For named parameters, CornerRounding.from() can be used.
CornerRounding() now uses positional parameters. For named parameters, CornerRounding.from() can be used.
Internal code style changes.
Updated README.md with expanded information.
Updated README.md with expanded information.
Added an empty example/main.dart for future implementation.
Added documentation comments for more items.
Optimized Point internal implementation for raw construction, making it an extension type.
Optimized Point internal implementation for raw construction, making it an extension type.
Optimized Cubic.fromPoints() internal constructor implementation.
Added identity equality checks for MutableCubic, making every instance of the class only be equal to itself.
Changed startAngle type from int to double in various APIs.
Previously mutable static members of MaterialShapes (i.e. MaterialShapes.circle, MaterialShapes.square etc.) are now final.
Applied dot shorthands across the library.
Improve overall code style and clarity.
- Initial version.
Your coding agent can read these notes before it upgrades. Set up the MCP server →