Skip to main content
ExodeUI

EXODEUI DESKTOP

A little space for good ideas.

Choose your platform to get the official ExodeUI installer.

Looking for Intel Mac or other builds? Explore the web studio or check all download options.

Prefer the browser? Try for free in your browser →

React Recipe • Production Pattern

React Loading Spinner Animation: Fluid Vector Spinners & Progress Wheels

Traditional animated loading GIFs suffer from muddy pixelation, fixed 256-color palettes, and heavy asset sizes that delay initial rendering. With ExodeUI, React loading spinner animations are rendered as crisp vector graphics with infinite mathematical scalability. Because transitions run off the main browser thread with GPU acceleration, ExodeUI spinners never stutter, hitch, or freeze during heavy JavaScript data fetching or React virtual DOM re-renders.

Live Interactive Stage
GPU WebGL / React Canvas
Vector rendered • Zero pixelation

Runnable ExodeUI React Code Example

Production Ready

Import the ExodeUICanvas component directly into your React application tree. Wire states, triggers, and parameters declaratively:

jsx
import React, { useState } from 'react';
import { ExodeUICanvas } from 'exodeui';

export function LoadingIndicator({ isLoading, speed = 1.0 }) {
  return (
    <div className="spinner-wrapper" aria-busy={isLoading} role="status">
      <ExodeUICanvas
        src="/scenes/circular-spinner.json"
        stateMachine="SpinnerMachine"
        inputs={{
          "active": isLoading,
          "speedFactor": speed,
          "strokeWidth": 3.5
        }}
      />
      <span className="sr-only">Loading content...</span>
    </div>
  );
}

Frequently Asked Questions about loading spinner animation

Why choose ExodeUI vector spinners over animated GIFs or CSS spinners?

GIFs are bloated raster files that cannot scale cleanly on Retina displays and cannot be dynamically recolored or speed-controlled. CSS spinners can hitch when the main browser thread is occupied with heavy JavaScript. ExodeUI renders vector paths with hardware acceleration, guaranteeing smooth 60fps+ spinning regardless of thread load.

Can I change the spinner stroke color or gradient dynamically in React?

Yes. ExodeUI allows dynamic property bindings, so you can change stroke color, track background, and gradient stops via runtime inputs directly matching your design system theme.

How do I control the rotation speed or pause the spinner?

You can pass numeric inputs (like speedFactor) or boolean states (like paused) to the ExodeUICanvas component to smoothly decelerate or accelerate the spinner without jarring frame cuts.

Is the loading spinner accessible for screen readers?

Yes. Wrapping your spinner with role="status" and aria-busy, plus an invisible sr-only label, ensures assistive technologies announce the loading state cleanly.

Explore Related Recipes & Architectural References