Comparison

svg-scroll-draw
vs AOS vs ScrollReveal.

AOS and ScrollReveal.js put animation config in HTML data attributes. svg-scroll-draw puts it in JavaScript — typed, traceable, and part of a full scroll platform.

01

Bundle size.

svg-scroll-draw
~9 KB
yours
ScrollReveal.js
~9 KB
AOS
~14 KB

All sizes minified + gzipped. AOS includes CSS (~6KB). svg-scroll-draw includes all v2 APIs.

02

Side-by-side API.

Fade up on scroll

AOS

index.html
<!-- HTML attribute on every element -->
<div data-aos="fade-up"
     data-aos-once="true">
  Content
</div>

<!-- Init in JS -->
AOS.init({ duration: 800 });

ScrollReveal.js

app.js
// ScrollReveal.js — last updated 2021
const sr = ScrollReveal({
  origin: 'bottom',
  distance: '32px',
  duration: 800,
  once: true,
});

sr.reveal('.card');

svg-scroll-draw

app.js
import { scrollReveal }
  from 'svg-scroll-draw/reveal';

// One import. One call.
scrollReveal('.card');

// Custom config:
scrollReveal('.card', {
  from:    { opacity: 0, y: 32 },
  stagger: 0.08,
  once:    true,
});

Stagger cascade

AOS

index.html
<!-- AOS: delay per element in HTML -->
<div data-aos="fade-up"
     data-aos-delay="0">A</div>
<div data-aos="fade-up"
     data-aos-delay="100">B</div>
<div data-aos="fade-up"
     data-aos-delay="200">C</div>

ScrollReveal.js

app.js
sr.reveal('.card', {
  interval: 100,
  origin:   'bottom',
});

svg-scroll-draw

app.js
scrollReveal('.card', {
  stagger: 0.1, // seconds
});

03

Feature matrix.

Feature
svg-scroll-draw
AOS
ScrollReveal.js
Fade up / down / left / right
Scale reveal
3D flip (rotateX / rotateY)
Custom from state (x, y, scale…)
Stagger (cascade)
Custom easing function
CSS-only config (data attributes)
TypeScript types
~
Tree-shakeable sub-imports
scrollAnimate (any CSS property)
scrollPin / sticky sections
scrollSnap
scrollText (split + stagger text)
scrollVideo (scrub)
scrollProgress (CSS variable)
scrollHorizontal sections
React / Vue / Svelte wrappers
~
Active maintenance (2025)

ScrollReveal.js last release: 2021

MIT license
Bundle size (gzipped)
~9KB
~14KB
~9KB

✓ supported · ✗ not supported · ~ partial

One import. Done.

No data attributes. No config files. No separate CSS import. Works in React, Vue, Svelte, Solid, Astro, Nuxt.

$npm i svg-scroll-draw
Read the docs →