Framer Motion
Production-ready React animation library with declarative API, layout animations, gestures, and exit animations.
Websites Using Framer Motion
No websites detected yet. Analyze a website to contribute data.
What Is Framer Motion?
Framer Motion is a popular animation library for React that makes it straightforward to add smooth, physics-based animations, gestures, and layout transitions to user interfaces. It provides a declarative API: instead of imperatively scripting keyframes, you describe the states you want an element to be in, and the library animates between them. Framer Motion has been one of the most widely adopted animation libraries in the React ecosystem, frequently used on marketing sites, product UIs, and design-led web experiences.
In recent times the project has been rebranded and expanded under the name Motion. The library that React developers knew as Framer Motion now sits within a broader Motion project that also targets vanilla JavaScript outside React, while the React-specific API remains the spiritual successor to Framer Motion. For the purposes of detection and this profile, "Framer Motion" refers to that React animation library and its lineage; you may encounter it imported under either the older or newer package naming depending on a project's age.
The library is closely associated with Framer, the design-and-publishing tool, which is where it originated, but it is important to separate the two. Framer Motion is an open-source library that any React project can install and use; it is not the Framer website builder, and a site using Framer Motion is not necessarily built with Framer. Conversely, sites published from Framer often use Motion-style animation under the hood, but plenty of independent React apps use Framer Motion without any other connection to Framer.
Framer Motion is not a browser extension, a standalone product, or a framework. It is a JavaScript library bundled into a React application's code. This bundling matters a great deal for detection: because the library is compiled into the application's JavaScript along with everything else, it does not announce itself with a distinctive global object, asset path, or meta tag the way a framework or CMS does. As the detection section below explains, this makes Framer Motion genuinely hard to fingerprint with certainty, and honesty about that limitation is important.
It helps to understand what Framer Motion is for. It targets developers and design-minded teams who want rich, fluid motion, spring physics, drag gestures, entrance and exit animations, shared-layout transitions, without hand-writing complex animation code. Its declarative model fits naturally into React's component world, which is why it became a default choice for teams building polished, animated React interfaces. That focus on expressive, ergonomic animation in React shapes everything about the library.
How Framer Motion Works
At the core of Framer Motion is the motion component. The library exposes animatable versions of HTML and SVG elements, such as motion.div, that accept animation-related props. You describe an element's target state through an animate prop, its starting state through initial, and its exit state through exit, and the library smoothly animates between them. Because this is declarative, you change what an element should look like and the library figures out how to get there, rather than you scripting each frame.
Animations are typically spring- and physics-based rather than fixed-duration tweens, which gives motion a natural, responsive feel. You can configure transitions, stiffness, damping, delays, and staggering across multiple elements. Variants let you define named animation states and orchestrate them across a tree of components, so a parent can trigger coordinated animations in its children, useful for things like staggered list reveals.
Framer Motion also provides gestures and interaction props (such as hover, tap, and drag behaviors) and layout animations. The layout system can automatically animate an element when its position or size changes between renders, and shared-layout transitions can animate an element as it moves from one place in the UI to another. Exit animations are coordinated through a wrapper component that keeps elements in the DOM long enough to animate out before they are removed.
Crucially for detection, all of this runs as part of the React application. When the app renders, Framer Motion applies inline styles to the elements it animates, frequently transform properties (translate, scale, rotate) and opacity, updating them rapidly to produce the animation. These inline styles are visible in the DOM, but they are the generic output of an animation running, not a unique signature of this specific library. The library's own code is compiled into the app's JavaScript bundle, so there is no separate framer-motion.js file to spot and no global object reliably exposed on window.
A useful way to picture the workflow is to follow a single component. A developer imports motion and renders a motion.div with initial={{ opacity: 0, y: 20 }} and animate={{ opacity: 1, y: 0 }}. When the component mounts, Framer Motion animates the element from transparent and shifted-down to fully visible and in place, applying a transform and opacity on every frame. To the browser, the result is an element whose inline style attribute carries a changing transform and opacity, exactly what you would see from many animation approaches, which is why the visible output alone cannot definitively identify the library.
How to Tell if a Website Uses Framer Motion
Framer Motion is one of the harder technologies to detect with confidence, and it is important to be candid about that. Because it is a library bundled into the application's JavaScript rather than a framework with its own files, globals, or meta tags, there is no single definitive fingerprint the way there is for, say, an Astro generator tag. StackOptic analyzes a URL from the server side and can surface suggestive signals, but Framer Motion detection is inherently qualitative and probabilistic, not certain.
Inline transform and opacity styles. The most visible trace is the inline styling the library applies to animated elements: rapidly changing transform (translate, scale, rotate) and opacity values in the style attribute. On a page with entrance animations or drag interactions, you will see many elements carrying these inline styles. This indicates that some animation library is at work, but on its own it does not prove it is Framer Motion specifically, since other libraries and hand-written code produce similar output.
Paired with React. Framer Motion is a React library, so it only appears on React sites. Confirming React first (through React's own signals) narrows the field considerably: inline transform-based animations on a confirmed React app are more consistent with Framer Motion than the same animations on a non-React page. For confirming React, see how to check if a website uses React, Vue, or Angular.
Bundle inspection. The most authoritative method is to inspect the JavaScript bundle. If source maps are available, or if the minified code retains recognizable internal identifiers, function names, or string constants associated with the library, you may confirm its presence. This is advanced, unreliable when code is heavily minified, and not guaranteed, but it is the closest thing to a definitive check. The general approach is covered in how to check what JavaScript libraries a website uses.
Framer-published sites. If a site is published from the Framer tool, it often uses Motion-style animation as part of its output. Detecting Framer the builder (through its own hosting and asset signals) is a separate question, but it raises the likelihood that Motion-style animation is present.
Here is how to approach each method, with realistic expectations:
| Method | What to do | What it tells you about Framer Motion |
|---|---|---|
| DevTools Elements | Inspect animated elements' inline style | Shows transform/opacity animation; suggestive, not conclusive |
| Confirm React | Check React signals first | Establishes the prerequisite; narrows the possibilities |
| Network/Sources | Inspect JS bundles and any source maps | May reveal library identifiers if not fully minified; best available proof |
| Wappalyzer | Run the extension on the page | May report Framer Motion in some cases, but bundled libs are often missed |
| Console | Look for any exposed globals | Usually nothing reliable, since the library does not expose a stable global |
The honest summary is that you can often gather strong circumstantial evidence, React confirmed, abundant inline transform/opacity animations, and sometimes a builder signal, but a truly definitive identification usually requires bundle inspection that may not succeed against minified production code. This is a general truth about bundled front-end libraries, and it is covered further in how to find out what technology a website uses. When certainty is not possible, the responsible approach, and the one StackOptic takes, is to report the signal qualitatively rather than overstate it. If you want to contrast a hard-to-detect bundled library with an easy-to-detect framework, compare this with Astro, whose generator tag and asset paths make identification straightforward.
Key Features
- Declarative animations. Describe target states with
initial,animate, andexitprops and let the library handle the transitions. - Spring physics. Natural, responsive motion based on configurable spring physics rather than only fixed-duration tweens.
- Variants and orchestration. Named animation states that coordinate and stagger across component trees for complex sequences.
- Gestures. Built-in hover, tap, and drag interactions with animation responses.
- Layout animations. Automatic animation of position and size changes, including shared-layout transitions as elements move within the UI.
- Exit animations. Coordinated removal animations so elements animate out gracefully before leaving the DOM.
- React-native ergonomics. An API that fits naturally into React components, making rich motion accessible without hand-written keyframe code.
Pros and Cons
Pros
- A highly ergonomic, declarative API that makes sophisticated animation accessible in React.
- Natural, physics-based motion that feels responsive and polished by default.
- Powerful layout and shared-element transitions that are difficult to build by hand.
- Strong fit with React's component model and broad adoption, so patterns and examples are plentiful.
Cons
- Adds JavaScript weight to the bundle, which can affect performance if overused on content-focused pages.
- React-only, so it does not help non-React projects (though the broader Motion project addresses vanilla JS).
- Overusing animation can harm usability and accessibility if motion preferences are not respected.
- Hard to detect from the outside, which is a limitation for technographics rather than a product flaw.
Framer Motion vs Alternatives
Framer Motion competes with other animation approaches in and around React. The table clarifies where it fits and how detectable each is.
| Library/approach | Scope | Style | Detectability from outside |
|---|---|---|---|
| Framer Motion (Motion) | React (and vanilla via Motion) | Declarative, spring physics | Low; bundled, no reliable global |
| GSAP | Framework-agnostic JS | Imperative timelines | Low to moderate; sometimes a global or CDN file |
| React Spring | React | Spring physics, hooks-based | Low; bundled like Framer Motion |
| CSS transitions/animations | Native CSS | Declarative in stylesheets | Visible in CSS, but not a "library" |
| Lottie | Framework-agnostic | Plays exported animation files | Moderate; distinctive player and JSON assets |
Because all of these except Lottie and CDN-loaded GSAP tend to compile into the app bundle, none is trivially detectable, which reinforces the point that animation libraries are among the harder technologies to fingerprint. For the broader methodology, see how to check what JavaScript libraries a website uses.
Use Cases
Framer Motion is most at home on design-led React interfaces where motion is part of the experience. Marketing and product landing pages use it for entrance animations, scroll-triggered reveals, and hover effects that make a site feel polished and alive. Product UIs use it for transitions between views, animated modals and drawers, and drag interactions that improve usability.
It also fits portfolios and agency sites that want to showcase craft through motion, interactive data and onboarding flows where animated transitions guide attention, and any React app where shared-layout transitions, animating an element smoothly as it moves or resizes, would otherwise be painful to implement by hand. Because it is a library rather than a framework, teams adopt it incrementally, animating a few key components without changing the rest of their stack.
Consider a few concrete scenarios. A startup might use Framer Motion on its marketing site so the hero section fades and slides into view and feature cards stagger in as the user scrolls. A SaaS product might animate the transition between dashboard views and use drag gestures for a reorderable list, relying on Framer Motion's layout animations. A design studio might build a heavily animated portfolio where Framer Motion drives nearly every interaction to demonstrate the team's attention to detail.
From a technographics standpoint, Framer Motion is a useful but caveated signal. When it can be inferred, often alongside confirmed React and rich inline transform animations, it suggests a design-conscious, React-based team that invests in interface polish. That said, because the library is bundled and hard to detect with certainty, analysts should treat its presence as probabilistic rather than confirmed, and weight it accordingly when qualifying leads. The broader practice of using stack signals for qualification is covered in what is technographics: using tech-stack data to qualify leads. The honest handling of an uncertain signal is itself part of doing technographics well.
Frequently Asked Questions
Is Framer Motion the same as Framer?
No. Framer Motion is an open-source animation library for React, while Framer is a separate design-and-publishing tool. The library originated in the Framer ecosystem and shares branding, but any React project can install and use Framer Motion without using the Framer builder. A site can use Framer Motion without being built in Framer, and the two should be evaluated separately when analyzing a stack.
Why is Framer Motion hard to detect?
Because it is a JavaScript library bundled directly into a React application's code, rather than a framework or platform with its own files, global objects, or meta tags. There is no framer-motion.js file to find and no reliable global on window. The animations it produces, inline transform and opacity styles, look like the output of many animation approaches. The most authoritative check is inspecting the JavaScript bundle, which is often thwarted by minification, so detection is usually qualitative.
Has Framer Motion been renamed to Motion?
The project has expanded and rebranded under the name Motion, which now also supports vanilla JavaScript beyond React. The React animation library that was known as Framer Motion is the direct lineage of Motion's React API. Depending on a project's age, you may see it imported under older or newer package names, but for detection and discussion purposes "Framer Motion" and the React side of "Motion" refer to the same library family.
Can I be certain a site uses Framer Motion?
Usually not with full certainty from the outside. You can gather strong circumstantial evidence, confirming the site is React, observing abundant inline transform and opacity animations, and sometimes finding identifiers in an unminified bundle or source map, but minified production code often hides the proof. The responsible approach is to treat the signal as probabilistic. This is true of most bundled front-end libraries, not a unique shortcoming of Framer Motion.
Does Framer Motion hurt site performance?
It adds JavaScript to the bundle, and overusing animation, especially on content-heavy pages, can affect load and runtime performance. Used judiciously on the elements that benefit from motion, the impact is usually acceptable for design-led sites, and the library is optimized for smooth animation. As always, performance depends on how much animation a site uses and how the rest of the application is built; respecting users' reduced-motion preferences is also good practice.
Want to analyze a site's React stack and the rest of its technology automatically? Run any URL through StackOptic at https://stackoptic.com.
Alternatives to Framer Motion
Compare Framer Motion
Analyze a Website
Check if any website uses Framer Motion and discover its full technology stack.
Analyze Now