Playground · Loading & feedback

Shape-Morphing Loader

  • motion component
  • iOS
  • Android
  • Flutter 3.47.0+

A Material 3 Expressive loading indicator: a filled shape that keeps morphing from a soft burst to a cookie, a pentagon, a pill and more, settling into each with a little spring while it turns, optionally inside a circular container.

Version 1.0.1 · What changed
  • 1.0.1 2026-10-03 Time spent muted on an offstage route no longer skips the loader through several shapes when it returns; it carries on from where it stopped.
  • 1.0.0 2026-10-03 First release.

Parameters

The loader's diameter, its container included.

The colour of the morphing shape.

The colour of the circle behind the shape, when it is contained.

Sits the shape inside a circle of the container colour. Turn it off to let the shape fill the whole size on its own.

How fast the shapes change: a new one every 0.65 seconds at 1. 0 holds the first shape still.

The run of shapes it morphs through: Material's expressive mix (burst, cookie, pentagon, pill, oval, clover), only soft curves, or rounded polygons from a triangle to a hexagon.

Loading Preview…

Send to your coding agent

Add Sheen's MCP server once, then paste the prompt. No key or account needed.

Run in your project (Claude Code)
claude mcp add --transport http sheen https://sheen.ciroapps.com/api/mcp
Then ask your agent
Use the Sheen MCP server to add the Shape-Morphing Loader Component to this Flutter app. Call get_export with componentId "shape-morphing-loader" and parameters {"size":96,"color":"6F4BFF","containerColor":"E6DEFF","contained":true,"speed":1,"shapes":"expressive"}, then follow the install steps it returns. (Tuned in the Sheen Playground: https://sheen.ciroapps.com/c/shape-morphing-loader?size=96&color=6F4BFF&containerColor=E6DEFF&contained=true&speed=1&shapes=expressive)