npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@rbxts/ripple

v0.10.0

Published

Spring-driven animations and more

Readme

🎨 Ripple

Ripple is a simple, lightweight, and easy-to-use Roblox library for creating simple transitions and animations. It is inspired by react-spring and aims to provide an imperative API for general use.

Installation

Ripple is available on NPM and can be installed with the following commands:

npm install @rbxts/ripple
yarn add @rbxts/ripple
pnpm add @rbxts/ripple
# Wally
Ripple = "littensy/ripple@version"

Reference

Supported types

The following data types are supported for animation:

| Data type | Converted type | | -------------------------- | --------------------------------------------------------------- | | number | [number] | | vector | [vector] | | Vector2 | [vector] | | Vector3 | [vector] | | Color3 | [vector] (Oklab) | | UDim | [vector] | | UDim2 | [vector, number] | | CFrame | [vector, vector, vector, vector] | | Rect | [vector, number] | | Map<any, number | vector> | Map<any, number \| vector> |


createSpring(initialValue, options)

createSpring creates a spring object starting at the given value.

local spring = createSpring(0, {
	tension = 170,
	friction = 26,
	start = true,
})

spring:setGoal(1)
spring:onChange(print) --> number, deltaTime

Try the react-spring visualizer →

Parameters

  • initialValue: The value that the spring should start with.
  • optional options: The physical properties of the spring.

Options

| Option | Type | Description | | ---------------- | --------- | ---------------------------------------------------------------------------------------------- | | tension[^1] | number | Influences the number of bounces in the animation. Defaults to 170. | | friction[^1] | number | Influences the level of spring in the animation. Defaults to 26. | | mass[^1] | number | Influences the speed of the spring and height of the bounce. Defaults to 1. | | frequency[^2] | number | How quickly the spring responds to changes. | | dampingRatio[^2] | number | Dictates how the spring slows down. | | precision | number | The distance to the goal before the spring is considered idle. Defaults to 0.001. | | restVelocity | number | The smallest velocity before the spring is considered idle. Derived from precision by default. | | position | T | Set the position of the spring. | | velocity | T | Set the velocity of the spring. | | impulse | T | Add to the velocity of the spring. | | start | boolean | Connect to Heartbeat while animating. Defaults to false. |

[^1]: Tension, friction, and mass are not compatible with frequency or damping ratio.

[^2]: Frequency and damping ratio are not compatible with tension, friction, or mass.

Returns

createSpring returns a spring object.


createTween(initialValue, options)

createTween creates a tween object starting at the given value.

local tween = createTween(0, {
	easing = "quadOut",
	duration = 1,
	start = true,
})

tween:setGoal(1)
tween:onChange(print) --> number, deltaTime

Parameters

  • initialValue: The value that the spring should start with.
  • optional options: The properties of the tween.

Options

| Option | Type | Description | | -------- | --------- | -------------------------------------------------------------- | | easing | Easing | The easing function to use for animation. | | duration | number | Duration of one repetition of the tween, in seconds. | | repeats | number | Number of times the tween repeats. | | reverses | boolean | Reverse directions when repeating. | | position | T | Continue the rest of the tween from this position. | | start | boolean | Connect to Heartbeat while animating. Defaults to false. |

Easing functions

| | | | | ------------- | -------------- | ---------------- | | "linear" | "instant" | "smoothstep" | | "sineIn" | "sineOut" | "sineInOut" | | "backIn" | "backOut" | "backInOut" | | "quadIn" | "quadOut" | "quadInOut" | | "quartIn" | "quartOut" | "quartInOut" | | "quintIn" | "quintOut" | "quintInOut" | | "bounceIn" | "bounceOut" | "bounceInOut" | | "elasticIn" | "elasticOut" | "elasticInOut" | | "expoIn" | "expoOut" | "expoInOut" | | "circIn" | "circOut" | "circInOut" | | "cubicIn" | "cubicOut" | "cubicInOut" |

See examples of easing functions →

Returns

createTween returns a tween object.


createMotion(initialValue, options)

createMotion creates an animation that switches between a spring and a tween.

local motion = createMotion(0, {
	spring = { tension = 170, friction = 26 },
	tween = { easing = "quadOut", duration = 1 },
	start = true,
})

motion:onChange(print) --> number, deltaTime
motion:tween(1)
task.wait(1)
motion:spring(0)

[!WARNING]

This creates both a spring and a tween object, which can be wasteful if your animation uses only one or the other.

Use createSpring or createTween if you do not need to switch animation types.

Parameters

  • initialValue: The value that the spring and tween should start with.
  • optional options: The properties of the spring or tween.

Options

| Option | Type | Description | | ------ | ------------------ | ------------------------------------------------------------ | | spring | SpringOptions<T> | The spring options to use for spring animations. | | tween | TweenOptions<T> | The tween options to use for tween animations. | | start | boolean | Connect to Heartbeat while animating. Defaults to false. |

Returns

createMotion returns a motion object that controls a spring and a tween.


GitHub License