String of Lights
InteractiveBones$4.99Get the file
Runtime
.rivReady to use in your app or website.
$4.99
Editable
.rev + .rivOpen it in the Rive editor and change anything. The .riv is included.
$9.99

Learn to build it
Full accessBuild this yourself, step by step. Every file in the library is included.
Courses from $119
Own a course? Sign in and every file is yours.
Use it in your own products and client work. Please don't resell or share the files themselves.
Use it on your site
import { useRive } from '@rive-app/react-canvas';
export function StringofLights() {
const { rive, RiveComponent } = useRive({
src: '/string-of-lights.riv',
artboard: 'String of Lights',
stateMachines: 'State Machine',
autoplay: true,
autoBind: true,
});
// every input on this page is a view model property
const vm = rive?.viewModelInstance;
if (vm) vm.boolean('lightsOn').value = true;
return <RiveComponent style={{ width: '100%', height: 400 }} />;
}Inputs: lightsOn. All on the StringOfLights view model.
How it's built
Six glowing bulbs on a green wire. They sway and twinkle on their own. Tap anywhere and a wave runs along the wire, each bulb swings as it passes and the lights switch off or on one by one. The wire ends level on both sides, so you can repeat the strip across a page.
- 1The wire is skinned to the bulbsEach bulb hangs from its own bone and the wire is skinned to those bones, so a wave travels along it from one side to the other.
- 2Every bulb has its own timingThe sway and the twinkle run on different periods per bulb, so the string never moves as one piece.
- 3The glow is a soft circleA radial gradient sits behind each bulb. It twinkles with the bulb and switches off as the wave reaches it.