Newsletter
Join the Community
Subscribe to our newsletter for the latest news and updates
The material design ripple effect for react made simple yet customisable.
React Ripples Continued is an open-source React component library that adds Material Design-style ripple effects to buttons and surfaces with a two-component API: Ripples and RippleSurface.
React Ripples Continued is a React component library for creating ripple effects, published on npm and maintained by Balazs-topg on GitHub. It takes a React application and produces interactive ripple animations on any element by rendering an animated circular overlay where the user clicks or hovers. The package includes the npm library, documentation in the README, and a showcase website hosted on GitHub Pages.
Ripples for raw effect placement and RippleSurface for a wrapper that handles required styling automatically.on prop accepts "click", "mouseDown", "clickAndMouseDown", or "hover" to control when ripples appear.color, opacity (0 to 1), blur (in rem units), duration (in milliseconds), and zIndex are all individually settable.fillAndHold makes the ripple expand to fill the container and stay until mouse up.optimize removes ripple elements from the DOM after animation completes, useful for frequent triggers; it defaults to false because it can cause odd behavior.rippleElement accepts JSX and displays it inside the ripple, with the suggestion to lower opacity or clear the color when used."use client" directive, making them compatible with Next.js and other SSR React frameworks.React developers who want Material Design-style feedback on buttons, cards, and menus without pulling in a full UI framework. Design system maintainers can use it as a lightweight, dependency-free interaction primitive. Next.js developers benefit from the client-component setup that avoids SSR hydration issues.
RippleSurface to get the ripple effect without manually setting positioning or overflow styles.Ripples component inside any element that has position: relative and overflow: hidden.rippleElement to render emojis, icons, or other JSX inside the expanding ripple.Install it with npm i react-ripples-continued and import either component. The Ripples component listens for the configured event and calls an internal addRipple function that renders an animated circle into the nearest positioned ancestor. The function is written to be framework-agnostic, using ReactDOM.createRoot only for JSX parsing, so it could be adapted to Vue, Svelte, Angular, or Solid.
Yes, the library is open-source under the MIT license, and the source code is available on GitHub.
Yes. Both Ripples and RippleSurface are marked with the "use client" directive, so they work in Next.js and other React SSR setups.
The default trigger is "click", but the on prop can be changed to "mouseDown", "clickAndMouseDown", or "hover".
The parent container must have overflow: hidden and position: relative. RippleSurface applies these styles automatically unless disableDefaultStyling is set to true.
Yes, pass a duration value in milliseconds to the Ripples component, or through rippleProps when using RippleSurface. The default is 500 ms.
