Published on

How to Use Lottie Animations in GatsbyJS

Hello everyone, in this article, we will learn how to use lottie animations in GatsbyJS.

First install "lottie-web" library.


yarn add lottie-web

Create a component that named "Animations.tsx"

import React, { useEffect, createRef } from 'react'

import lottie from 'lottie-web'

interface Props {
  animation: string
  height?: number
  width?: number
  loop?: boolean
  autoplay?: boolean
}

export const Animations: React.FC<Props> = ({
  animation,
  height = 250,
  width = 250,
  loop = true,
  autoplay = true,
}) => {
  const animationContainer = createRef<HTMLDivElement>()

  useEffect(() => {
    const anim = lottie.loadAnimation({
      container: animationContainer.current,
      renderer: 'svg',
      loop,
      autoplay,
      animationData: animation,
    })
    return () => anim.destroy() // optional clean up for unmounting
  }, [])

  return <div style={{ marginTop: 20, marginBottom: 20, height, width }} ref={animationContainer} />
}

You can use your animation component in wherever you want.

import React, { useEffect, createRef } from 'react'

import reactAnimation from '../animations/296-react-logo.json'

export const APP: React.FC = (props) => {
  return <Animations animation={reactAnimation} />
}

Thanks for reading! Reach out to me on Twitter if you have any questions or comments.