GrabMotion FAQ
Frequently asked questions.
From your first preview to your finished website. Find answers about frameworks, customisation, installation and getting your effects working.
About GrabMotion
What is GrabMotion?
GrabMotion is a library of interactive motion effects for websites.
Explore animated backgrounds, cursor effects, buttons, cards, text effects and overlays.
- Preview an effect in action.
- Customise it to match your website.
- Copy the code into your project.
Is GrabMotion free to use in personal and commercial projects?
Yes — free for personal and commercial use. Code snippets are MIT licensed.
- Your projects: Use and customise the code for your website, product or client work.
- Full code access: Unlock it through the free newsletter signup.
Do I need an account to copy an effect?
No account, password or payment is required.
- Preview and customise: Start immediately, without signing up.
- View and copy full code: Subscribe to the free newsletter when prompted.
- Return later: Access is remembered in that browser. If you switch browsers or clear storage, enter the same email to unlock again.
Supported frameworks
Which frameworks does GrabMotion support?
React, Vue and Vanilla JS are available for every effect.
- CSS and Tailwind: Available for selected effects.
- Other frameworks: Start with the Vanilla JS version and adapt its setup and cleanup to your framework’s lifecycle.
Choose the matching tab in the effect’s code panel before copying.
Do I need Tailwind CSS, and why do some effects have fewer code tabs?
Tailwind is only required for Tailwind snippets. React, Vue and Vanilla JS versions include their own styling.
- Available tabs vary: CSS and Tailwind appear only where those implementations exist.
- Some effects need JavaScript: Canvas and physics effects cannot always be recreated with CSS alone.
- Copy the complete snippet: Include its supporting styles and scripts.
Customisation
How do I customise an effect to match my website?
Adjust the controls and watch the live preview update.
- Open an effect and try the available settings, such as colours, size, speed, text, particles or spring behaviour.
- Copy after customising so the generated code includes your changes.
- Fine-tune in your project by editing the copied styling, content and behaviour.
The controls available depend on the effect.
Can I try an effect across the GrabMotion site?
Yes — use Apply on supported effect cards. It temporarily previews the effect across the GrabMotion interface.
- Available for: Supported backgrounds, cursors and selected card interactions.
- End the preview: Press
Escapeor choose Stop. - Use it on your website: Open the effect’s detail page and copy its code. Applying a preview does not install it.
Installation
How do I add a GrabMotion effect to my project?
Choose → customise → copy → add to your project.
Select your code format and copy the complete snippet, then follow the instructions for your framework:
- React: Save as a
.jsxcomponent, then import and render it. Add types if you use TypeScript. - Vue: Save as a
.vuecomponent and use it in your page. - Vanilla JS: Include the HTML, styles and script. Run the script after its target elements exist.
Before testing: Keep the required container dimensions and install any dependencies referenced by the snippet.
Do I need to install a GrabMotion package or an animation library?
No GrabMotion package is required. Copy the source code directly into your project.
- Most effects: Use browser APIs and your existing framework.
- Framer Motion: The React versions of Gravity Button and Elastic Cursor need
framer-motion. Check the snippet’s imports and install it withnpm install framer-motion, or your package manager’s equivalent. - Tailwind snippets: Require Tailwind to be configured in your project.
Can I use GrabMotion with the Next.js App Router?
Yes — choose the React version.
- Keep
"use client"at the top of interactive component files. - Import the component into your page or layout.
- Run browser APIs in effects or event handlers, rather than during server rendering. This includes
window,documentand canvas APIs.
Seeing window is not defined? Check for browser API calls outside those client-side lifecycle steps.
Troubleshooting
Why is my copied effect invisible or not animating?
Start with the console, container size and interaction trigger.
- Check the console: Fix missing imports or JavaScript errors, and confirm you copied the complete snippet.
- Check visibility: Give the container a visible width and height. Look for clipping, stacking order or overlapping elements.
- Trigger the effect: Try hovering, moving the pointer or clicking.
- Check reduced motion: This preference can limit or disable animation. Respect it and provide a usable static state.
Do cursor and hover effects work on mobile devices?
It depends on the effect. Touchscreens do not have the same persistent cursor or hover behaviour as a mouse.
- Test on a real touch device: Many snippets use pointer events, but behaviour still varies.
- Keep essential actions available: Visitors should be able to use your site without hovering.
- Simplify decorative cursors: Consider disabling them on coarse-pointer devices or providing a touch-friendly alternative.
What can I do if an effect feels slow?
Reduce the amount of animation running at once.
- Lower the workload: Reduce particles, trail length or density where the effect allows it.
- Use fewer large canvases: Avoid running several heavy effects together.
- Preserve cleanup: Cancel animation frames and remove event listeners when components are removed.
- Pause when off-screen: Consider pausing decorative effects and keep a reduced-motion fallback.
Test on the devices your visitors use, especially mobile hardware.
What should I do if copying or unlocking the code fails?
Check the unlock first, then try copying again.
- Code still locked? Complete the free newsletter form. Existing subscribers can use the same email.
- Signup error? Check your connection and retry. Private browsing or blocked storage can prevent access from being remembered.
- Copy failed? Try Copy code again, or select and copy the code manually from the full-screen editor.
Still stuck? Email support@grabmotion.dev with the effect name, code format, browser and error message.
Still need a hand?
Email support@grabmotion.dev with the effect name, your framework and what you are seeing.
Explore the effect library