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? Open web studio →
UI & States4 min read

Deterministic State Machine Progress Loader

Direct Definition & Architecture

An animated state machine loader orchestrates deterministic transitions between connecting, indeterminate progress, percentage completion, and success confirmation without asynchronous animation glitching or visual flicker.

Live Physics Canvas
120 FPS GPU Render
Stiffness (Tension)280
Damping (Friction)24

Technical Specifications

Bundle Footprint
< 1.9 kB gzipped
States Handled
Indeterminate → Progress → Success → Error
Geometry
SVG dynamic path morphing
Export Targets
React JSX, SwiftUI, Vue

State Machine Graph

ConnectingIndeterminate pulsing arc rotating continuously.
StreamingBound to numerical progress parameter (0.0 to 1.0).
SuccessCircle closes; checkmark path draws with spring snap.
ErrorStroke turns rose-500 with horizontal shake oscillation.

Production Code Output

animated-loader.jsx
import React from 'react';
import { motion } from 'framer-motion';

export function StateLoader({ state = 'loading', progress = 75 }) {
  return (
    <div className="flex flex-col items-center gap-4 p-8 bg-stone-900 rounded-2xl border border-stone-800">
      <div className="relative w-16 h-16 flex items-center justify-center">
        <svg className="w-full h-full -rotate-90" viewBox="0 0 100 100">
          <circle cx="50" cy="50" r="40" stroke="#27272a" strokeWidth="8" fill="none" />
          <motion.circle
            cx="50"
            cy="50"
            r="40"
            stroke="#8b5cf6"
            strokeWidth="8"
            strokeLinecap="round"
            fill="none"
            initial={{ pathLength: 0 }}
            animate={{ 
              pathLength: state === 'success' ? 1 : progress / 100,
              stroke: state === 'success' ? '#10b981' : '#8b5cf6'
            }}
            transition={{ type: "spring", stiffness: 180, damping: 20 }}
          />
        </svg>
      </div>
      <span className="text-xs font-mono uppercase tracking-widest text-stone-400">
        {state === 'success' ? 'Completed' : `Processing ${progress}%`}
      </span>
    </div>
  );
}

Architectural Breakdown

Generic spinners loop indefinitely and offer zero meaningful feedback to users.

An ExodeUI state loader explicitly models system status transitions: connecting, streaming bytes, and completing with an organic checkmark morph.

All geometry is authored as clean SVG paths animated via GPU transforms.

Frequently Asked Questions

Explore Related Motion Guides & Tooling

Build your next living interface today.

Design fluid physics and visual logic in ExodeUI and export directly to React, Swift, and Flutter.

Try Exode for Free