lottie-react
Examples

Basics

Copy-ready starting points: play, size, drive, place.

Every example is complete: take the code under it whole.

Play a file

import { Lottie } from "lottie-react";export function FirstAnimation() {  return <Lottie src="/anim.json" autoplay loop />;}

Size it

import { Lottie } from "lottie-react";export function Sizing() {  return (    <Lottie src="/anim.json" autoplay loop style={{ width: 160, height: 96 }} />  );}

Drive it from state

import { Lottie } from "lottie-react";import { useState } from "react";export function SpeedAndDirection() {  const [speed, setSpeed] = useState(1);  const [reversed, setReversed] = useState(false);  return (    <>      <Lottie        src="/anim.json"        autoplay        loop        speed={speed}        direction={reversed ? "reverse" : "forward"}      />      <div>        <button          type="button"          onClick={() =>            setSpeed((current) => (current >= 4 ? 0.5 : current * 2))          }        >          speed {speed}x        </button>        <button          type="button"          onClick={() => setReversed((current) => !current)}        >          {reversed ? "reverse" : "forward"}        </button>      </div>    </>  );}

Own the layout

The logo, placed by you

import { Lottie, LottieDisplay } from "lottie-react";export function YourOwnLayout() {  return (    <Lottie src="/anim.json" autoplay loop>      <p>The logo, placed by you</p>      <LottieDisplay />    </Lottie>  );}

Make it a button

import { Lottie, type LottieHandle } from "lottie-react";import { useRef } from "react";export function AsButton() {  const handle = useRef<LottieHandle>(null);  return (    <Lottie      as="button"      src="/anim.json"      lottieRef={handle}      onClick={() => handle.current?.play()}      aria-label="Play the logo"    />  );}

On this page