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 →
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 .bexode720 × 440

Set progress to 100 to finish the ring.

Live inputs

Technical Specifications

Scene format
One .exode file
Live inputs
progress, label, speed, accent, accent2
Emitted event
complete
Motion
Orbit dots + determinate ring

Interaction Phases

IndeterminateProgress below zero keeps three dots orbiting with trails.
DeterminateProgress from 0 to 100 draws the accent ring around the orbit.
CompleteAt 100 the scene emits complete and settles into a success state.
SpeedThe speed input scales orbit and ring timing without changing layout.

The scene keeps one Idle state. These phases are driven by its inputs and pointer events; the same values appear in the code below.

Use the scene

animated-loader.jsx
import { ExodeUICanvas } from 'exodeui';

// animated-loader.bexode goes in /public
export function AnimatedLoader() {
  return (
    <ExodeUICanvas
      src="/animations/react-loader.bexode"
      fit="Layout"
      autoPlay
      interactive
      inputs={{
        progress: -1,
        label: 'Loading assets',
        speed: 1,
        accent: '#7c5cff',
        accent2: '#22d3ee',
        bg: '#0b0b12',
      }}
      onTrigger={(name) => {
        // fires: 'complete'
      }}
      style={{ width: '100%', height: 440 }}
    />
  );
}

This snippet loads /animations/react-loader.bexode with the same inputs shown in the live stage.

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.

The ring and orbit dots are drawn directly on the scene canvas, so the loader stays crisp at any size.

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 for free