
Changelog: Migrating Sora MCP to xmcp — Dual HTTP/STDIO, Prompts, and Resources
Why we rebuilt our Model Context Protocol server from the ground up using xmcp: native STDIO + Streamable HTTP dual bundling, official MCP Prompts and Resources, and a cleaner /mcp endpoint.

Changelog: Sora UI has moved to ui.soralabs.studio
Sora UI has officially migrated to its new domain: ui.soralabs.studio. All traffic and endpoints from the legacy domain are now automatically redirected.

Changelog: Evolving Sora UI into Motion, Catalog, and UI
Why we restructured Sora UI into three clear product pillars, added Base UI + Radix UI multi-foundation support, and how Next.js rewrites keep your links working.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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

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.