About · first release 12 September 2026
About Moonarc
Moonarc is a library of motion components for Astro, built and maintained by one developer, Azri. The 102 primitives in @moonarc/core are free under the MIT license, and 67 of them load no JavaScript. Pro, the paid tier, adds page sections, GPU effects and templates.
The changelog starts on 12 September 2026 and lists every release since, with its date.
- Maker
- Azri
- Work
- Full-stack developer and 3D, motion and graphic designer
- First release
- 12 September 2026
- Catalogue
- 102 primitives, 67 of them load no JavaScript
- License
- MIT, for
@moonarc/core - Tested on
- Astro 5, 6 and 7
- Payments
- Polar, merchant of record
- Contact
- hello@moonarc.dev
Who builds it
I'm Azri, a full-stack developer and a 3D, motion and graphic designer. I have shipped production web work since 2022. I design, write and test each Moonarc component.
Why I built it
Each library below works as designed. The problems start where it meets the way Astro builds pages. Every Moonarc component follows four rules, one for each problem.
- 01
The problem
Scripts run once.
With
ClientRouter, Astro swaps the page without a reload, so setup code from the first load never runs again. Five threads on the GSAP forum between April and August 2024 report GSAP breaking after an Astro navigation (one of them).The rule
One runtime binds each component after every navigation and cleans it up before the next.
- 02
The problem
React effects need React.
An effect from a React catalogue runs in a React island, and React with ReactDOM costs about 67 kB gzip before the effect itself (measured here). React context also stops at the edge of each island (Astro docs).
The rule
Effects use CSS wherever the browser can draw them. Each component page prints the JavaScript it ships, measured from a production build (how).
- 03
The problem
Content waits for JavaScript.
A library that starts elements at
opacity: 0leaves them invisible when its script fails to load (AOS #81).The rule
The server renders each component's end state, so the page reads correctly with JavaScript off. Every component also has a
prefers-reduced-motionbranch. - 04
The problem
Two scripts move the scroll.
On a site with
ClientRouter, Lenis and Astro's scroll restoration both write the scroll position (withastro/astro#12725).The rule
The GSAP and Lenis adapters run on that same runtime, so they rebind with everything else.
How Moonarc is tested
These checks run in CI on pull requests and on pushes to main, whenever the change can affect what they check.
Cost
A production build of each component measures the JavaScript it ships. That number is the cost printed on its page.
Install
The packed
@moonarc/corepackage installs into 7 real Astro projects: Astro 5, 6 and 7, static and server output, with real GSAP and Lenis.Accessibility
axe-core checks every page of this site against WCAG 2.1 AA, in light and dark on desktop, and on a phone.
Browser
A browser test loads every page in Chromium, fails on any page error, and runs the navigation demo.
How it is paid for
- Free
- The primitives are MIT-licensed and stay free.
- Pro
- Pro pays for the rest of the work: new components every month, the agent tooling and support (pricing).
- Payments
- Polar processes payments as the merchant of record.
If Moonarc stops
What you installed keeps working:
The primitives are MIT-licensed. Your copy is yours to keep and change.
Pro components you installed stay licensed in every project after a subscription ends (pricing FAQ).
The free components never depend on a server. The registry and the MCP catalogue are also published as static files.
What ends is access to the Pro registry, the Pro MCP tools and new releases.
Contact
- Bugs and requests
- Bugs and component requests go to GitHub issues.
- Security
- Send security reports by email, so they stay private until a fix ships.