Sora UI

Sora Blog.

Notes on motion, UI craft, and shipping React experiences.

[/rss.xml]
The Sora UI repo is public. The docs can answer back.

The Sora UI repo is public. The docs can answer back.

The full source is on GitHub under SoraLabsOSS/ui. Docs Ask AI retrieves from a crawled copy of the live site via Cloudflare AI Search, then answers from those pages — no tool-calling, no guessing.

#soraui#opensource#ai#react
Why Sora UI Reaches for GSAP Instead of Just Motion

Why Sora UI Reaches for GSAP Instead of Just Motion

Most Sora UI primitives use Motion. Seven don't. Here's the actual technical ceiling that made GSAP the right tool for those seven, not a preference.

#gsap#motion#react
Shadcn/ui Animation Libraries Compared: Aceternity, Magic UI, Kibo UI, and Sora UI

Shadcn/ui Animation Libraries Compared: Aceternity, Magic UI, Kibo UI, and Sora UI

A practical, no-hype comparison of shadcn/ui-compatible animation libraries — stack, pricing, component depth, and which one actually fits your project.

#shadcnui#react#animation
Sora CLI, and an MCP server that finally hands off

Sora CLI, and an MCP server that finally hands off

A standalone install CLI just shipped, and sora-mcp's registry tools got cut from three down to one that points straight at it.

#cli#mcp#ai#react
The Sora UI MCP server won't install components

The Sora UI MCP server won't install components

sora-mcp gives AI agents six read-only tools to search Sora UI docs and fetch component source. None of them write to your project, and here is why.

#mcp#ai#react#shadcn
Magnetic Cards in React: the fling isn't magnetism, it's a stopwatch

Magnetic Cards in React: the fling isn't magnetism, it's a stopwatch

How MagneticCards tracks raw mousemove deltas per card and hands them to GSAP's InertiaPlugin as a starting velocity — plus why the name undersells what's actually happening, and the one frame-rate gotcha baked into "speed" itself.

#gsap#react#animation#inertiaplugin
prefers-reduced-motion in React: 5 production patterns beyond duration: 0

prefers-reduced-motion in React: 5 production patterns beyond duration: 0

What 24 shipped React primitives taught me about handling prefers-reduced-motion properly — five different strategies, and why "just set duration to 0" is the wrong default.

#a11y#accessibility#css#react
Sticky Scroll Cards — one ScrollTrigger, three acts

Sticky Scroll Cards — one ScrollTrigger, three acts

How StickyScrollCards turns a single 0-to-1 scroll progress number into pin, 3D flip, and staggered dismiss — plus the two GSAP footguns that took the longest to figure out.

#gsap#scrolltrigger#react#animation
Cursor Trail Reveal — no GSAP, no Motion

Cursor Trail Reveal — no GSAP, no Motion

A deep dive into building a cursor trail effect with clip-path polygon, requestAnimationFrame, and plain CSS transitions — zero animation library imports.

#css#react#animation#vanilla
Introducing Sora UI

Introducing Sora UI

Motion-first React primitives you install with shadcn, read in full, and ship in production.

#soraui#react#motion
Motion-first UI without the black box

Motion-first UI without the black box

Why Sora UI ships scroll-driven React primitives you can copy, tune, and own—through a shadcn registry, not opaque animation packages.

#motion#react#gsap