I built react-easy-marquee after growing frustrated with the marquee packages available in the React ecosystem. Most were too opinionated, relied on JavaScript-driven animation timers, or offered little customization. I wanted something that felt native and flexible, so I built it from scratch: a fully customizable Marquee component that accepts any children (plain text, images, or arbitrary JSX elements) and scrolls them in a seamless loop.

The animation is driven entirely by CSS keyframes, with zero JavaScript timers or requestAnimationFrame logic. This keeps the component lightweight and performant. The zero-dependency design means nothing is pulled in beyond React itself. Key props give fine-grained control: duration (loop speed in ms), axis (horizontal or vertical scrolling), reverse (direction), pauseOnHover, background, and height/width, all with sensible defaults for a true plug-and-play experience.

I designed, architected, and maintain the entire package end-to-end: from the CSS animation model that achieves infinite scroll without scroll listeners or interval hacks, to the prop API and the live demo site. One non-trivial challenge was making the loop duration feel consistent regardless of how many or how few children are passed, since the perceived speed changes with content width, a nuance most competing packages ignore entirely.

The package has accumulated over 105,000 total downloads on npm and continues to see steady weekly adoption.

Built using: