Open-Source Rive Script Library

I've been writing Luau scripts for Rive for a while now, between the LERP course, client projects, and random experiments. And I keep running into the same thing: every time I build something useful, it lives in one .rev file and nobody else gets to use it.

There's no central place to share reusable scripts. We're all reinventing the same wheels.

I propose the following: a community thread where we share reusable Rive scripts as library files. One post, everyone contributes. Each submission is a .rev containing just the script(s), no design dependencies, plus instructions on how to wire it up in your own file. (if this takes off - i’ll even make a standalone website to have a library accessible / searchable)

Format for submissions:

- .rev file with script(s) only (the library file)

- Setup instructions (what to attach where)

- Input descriptions (what each parameter does)

To kick it off, here's mine:


ElectricityEffect — reusable lightning/electricity effect

Attach it to any path. Three scripts work together:

  1. ShapeVerts (shared module) - a shared module for passing extracted polygon vertices between a PathEffect (which reads the shape) and a Node script (which uses them).

  2. ExtractShapeVerts (Path Effect) — attaches to the any fill/stroke on the path you’d like to use. Every frame it reads the real path geometry (handles lines, curves, cubics) and publishes the vertices to a shared registry via ShapeVerts.

  3. ElectricityEffectDynamic (Node Script) — reads vertices every frame and renders the full electricity effect: permanent hugging arcs, random flash arcs between points on the outline, and flying sparks.

Setup

Step 1 — ExtractShapeVerts on the Path

  • Select the Path inside your Custom Shape

  • In the Path Effect panel, assign ExtractShapeVerts

  • Set the key input to a name, e.g. "bolt"

Step 2 — ElectricityEffectDynamic on the Node

  • Select the parent node of the bolt shape

  • n the Node Scripts panel, assign ElectricityEffectDynamic

  • Set shapeName to the exact same key: "bolt"

That's it. The two scripts are now linked via ShapeVerts

Inputs — ElectricityEffectDynamic

  • shapeName → ( string ) → Must match the key set on ExtractShapeVerts

  • color → (color) → Base color of the electricity

  • darkMode → (boolean) → true = screen blend (dark bg), false = srcOver (light bg)

  • lightModeBrightness → (number) → Extra brightness boost in light mode

  • arcFreqMin → (number) → Min simultaneous flash arcs at intensity = 0

  • arcFreqMax → (number) → Max simultaneous flash arcs at intensity = 100

  • intensity → (number) → Overall power of the effect (0–100), controls all systems at once

Inputs — ExtractShapeVerts

  • key → (string) → Must match shapeName on ElectricityEffectDynamic


New Addition - Poser (March 7, 2026)

See it in action in a demo + description → #Reusable Poser Script for cursor tracked interactivity
script+user guide below


New Addition - Coin Particle Effects by @Alvaro Secilla (March 17, 2026)

HOW TO:

- 2 kinds of artboards: the main one (01), where the magic happens when you press down the mouse, and the rest are the particles. Think about it as comps and precomps in AE.

- If you want to replace the particle, select the script in the main artboard (01) and select another artboard from the list on the right side.


New Addition - TaperedStroke (March 24, 2026)

SETUP

-- 1. Draw an open path (pen tool) in the Rive editor.

2. Add a FILL to the path shape and set its colour. The effect replaces the

open path with a closed envelope polygon that the fill renderer draws.

Do NOT apply to a stroke — strokes will outline the envelope shape.

3. Effects tab → Add Script Effect → choose TaperedStroke.

4. thicknessLeft / thicknessRight: perpendicular offset distance on each side.

5. taperStart / taperEnd: % of path length that narrows to a point (0–100).

0 = blunt end, 100 = taper covers the entire path from that end.

Both can be 100 simultaneously (full taper from both ends → diamond shape).

6. taperEase: easing profile for the taper ramp.

"linear" — constant rate, sharp transition

"smooth" — C1 smoothstep (default), organic feel

"easeIn" — slow start, accelerating taper

"easeOut" — fast start, decelerating taper

"easeInOut" — slow start + slow end, S-curve

7. roundEnds: when true, adds semicircular caps at path start and end.

8. samples: increase for smoother curves on tight bends; decrease for perf.


New Addition - PathVader - boolean path operations (March 27, 2026)

1. Add PathVaderCapture as a path effect on each source shape's fill. Give them the same group name and a unique key each.

2. Add PathVaderRenderer as a node script on any node. Set the group and pick your boolean mode.

3. Output — either toggle the renderer's built-in stroke/fill for a quick preview, or add PathVaderOutput as a path effect on a styled shape to get the result as a native path with gradients, feather, and blend modes.


Demo at #New FREE script ALERT! Pathvader Path Boolean Operations and file + detailed Readme, below



NEW ADDITION - PROCEDURAL INTERACTIVE PCB (May 1, 2026)

Quick start

  • Add a Layout in the Rive editor with L = R = T = B = 0 so the layout fills its parent.

  • Attach this script as a Node child of that layout. The script implements measure / resize, so the runtime feeds it the Layout's pixel size each frame.

  • The Layout receives pointer events. The script handles pointerDown / pointerMove / pointerUp / pointerExit automatically — make sure the Layout is hit-test-enabled on the artboard.

  • Adjust inputs in the right-panel inspector. Property names encode their valid ranges (<name>_min<lo>_max<hi>)

  • Demo at #FREE SCRIPT — parametric PCB pattern, hover-reactive.


Color changer! by Timo Meijs (May 29, 2026)

Setting what Matters in Motion

Generate a full color palette based on a single color property.

Ever wanted to take a data bound color but, say, animate only its opacity? Or create different shades of the same color without having to create multiple data properties? That’s what this script is for!

Usage is simple. Inside the .rev there are 2 converter scripts. You simply data bind a color and add either of the converter scripts.

ColorConverter

This one offsets your color. For example, if your hue is set to 10, and you enter 20 in the “hue” input, the resulting hue will be 30.

ColorConverter Absolute

This one sets absolute values. So again, if your hue is 10, and you enter 20 in the “hue” input, the resulting hue will be 20.

Hope that makes sense! Feel free to ask any questions.


SVGRendererLayout June 26, 2026

Add the layout script to the artboard, then bind the string property from the ViewModel to the SVGContent field of the script. Paste the svg code into the VM string input. Done!

if wrapped in a layout, you can set it to “hug” and it will drive the layout size dynamically - margin property will add left/right padding to the svg. Fixed height will resize the svg to that value in px, but if it fixed height the svg is longer than max-width, the height will be adjusted so that the svg fits into the max-width value.

The VM string inputs holding svg code could be adjusted at runtime just as any vm property!


Who else has scripts they keep reusing? Drop them here, same format: .rev + instructions.

electricity-effect.revposer-lib.revposer-userGuide.mdTaperedStroke.revcoinparticlesystem (1).revPathVader.revPathVader README.mdprocedural_pcb.revprocedural_pcb_readme.mdcolor_scripts.revsvglayoutrenderer.rev