
A checkout button with shimmer, a loading spinner and a burst of sparks on success. A free, live button component.
Updated November 2026
Use it for the one main action on a screen, such as placing an order. The spinner shows the tap worked, and the sparks mark success. Keep the sparks for moments that matter, because they lose their effect if every button has them.
npm i exodeui.ExodeUICanvas. Taps and hovers work out of the box, and fireTrigger plays it from your code.import { ExodeUICanvas, useExodeUI } from 'exodeui';
export function DiwaliPrimaryButton() {
const { setEngine, fireTrigger } = useExodeUI();
return (
<>
<div style={{ width: 400, height: 300 }}>
<ExodeUICanvas
src="/ui-gallery/files/diwali-button.bexode"
autoPlay
onReady={setEngine}
style={{ width: '100%', height: '100%' }}
/>
</div>
{/* Optional: taps on the canvas already work */}
<button onClick={() => fireTrigger('in_order')}>Play from code</button>
</>
);
}