Skip to content

fix(deps): replace dependency framer-motion with motion - #250

Open
Coldaine wants to merge 1 commit into
mainfrom
renovate/framer-motion-replacement
Open

fix(deps): replace dependency framer-motion with motion#250
Coldaine wants to merge 1 commit into
mainfrom
renovate/framer-motion-replacement

Conversation

@Coldaine

@Coldaine Coldaine commented Aug 19, 2026

Copy link
Copy Markdown
Collaborator

Agent review expected: verify the dependency impact, summarize CI status, and merge only when the update is coherent for this repo.

This PR contains the following updates:

Package Type Update Change
framer-motionmotion dependencies replacement ^12.42.2^12.42.2

⚠️ Renovate's replacement functionality does not currently wire in the release age for a package, so the Minimum Release Age checks can apply. You will need to manually validate the Minimum Release Age for these package(s).

This is a special PR that replaces framer-motion with the community suggested minimal stable replacement version.


Configuration

📅 Schedule: (in timezone America/Chicago)

  • Branch creation
    • Between 04:00 AM and 08:59 AM, Monday through Friday (* 4-8 * * 1-5)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate CLI.

Copilot AI lite review requested due to automatic review settings August 19, 2026 10:38
@Coldaine Coldaine added agent-review Needs agent review before merge dependencies Pull requests that update a dependency file labels Aug 19, 2026
@Coldaine Coldaine self-assigned this Aug 19, 2026
@codeant-ai

codeant-ai Bot commented Aug 19, 2026

Copy link
Copy Markdown

🤖 CodeAnt AI — Review Status

Status Commit Started (UTC) Finished (UTC)
✅ Reviewed your PR bd9f264 Aug 19, 2026 · 10:38 10:38

@codeant-ai

codeant-ai Bot commented Aug 19, 2026

Copy link
Copy Markdown

Thanks for using CodeAnt! 🎉

We're free for open-source projects. if you're enjoying it, help us grow by sharing.

Share on X ·
Reddit ·
LinkedIn

@cursor

cursor Bot commented Aug 19, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_b6a5b587-4684-4002-8cea-8a877587a33d)

@codeant-ai codeant-ai Bot added the size:M This PR changes 30-99 lines, ignoring generated files label Aug 19, 2026
@qodo-code-review

Copy link
Copy Markdown
Contributor

PR Summary by Qodo

Replace framer-motion dependency with motion

⚙️ Configuration changes 🕐 10-20 Minutes

Grey Divider

AI Description

• Replaces the direct framer-motion declaration with motion at the same version range.
• Resolves motion, framer-motion, and motion-dom to 12.43.0 in the lockfile.
• Leaves existing framer-motion imports dependent on motion installing it transitively.
Diagram

graph TD
  SRC["App components"] --> FM["framer-motion"]
  PKG["package.json"] --> MOTION["motion 12.43"] --> FM --> DOM["motion-dom"]
  LOCK["package-lock.json"] --> MOTION
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Migrate imports to motion/react
  • ➕ Completes the intended package migration
  • ➕ Avoids relying on an undeclared transitive import
  • ➕ Keeps source imports aligned with package.json
  • ➖ Requires updating and validating animation imports across numerous components
  • ➖ Creates a larger diff than the automated dependency replacement
2. Retain direct framer-motion dependency
  • ➕ Matches all existing source imports
  • ➕ Minimizes runtime and module-resolution risk
  • ➕ Requires no application changes
  • ➖ Does not adopt the recommended motion package entry point
  • ➖ Defers the package migration

Recommendation: Do not treat the manifest-only replacement as complete: existing code imports framer-motion directly while it is now only transitive. If adopting motion, migrate imports to motion/react and run lint, typecheck, tests, and build; otherwise retain framer-motion as the direct dependency. CI status is not present in the supplied diff and must be verified separately.

Files changed (2) +35 / -9

Other (2) +35 / -9
package-lock.jsonResolve the motion replacement dependency graph +34/-8

Resolve the motion replacement dependency graph

• Adds 'motion' 12.43.0 and records its dependency on 'framer-motion'. The refreshed graph also moves 'framer-motion' and 'motion-dom' from 12.42.2 to 12.43.0.

package-lock.json

package.jsonReplace the direct framer-motion declaration +1/-1

Replace the direct framer-motion declaration

• Removes 'framer-motion' from direct dependencies and adds 'motion' with the same '^12.42.2' version range. Existing application imports are unchanged.

package.json

@qodo-code-review

Copy link
Copy Markdown
Contributor

Code Review by Qodo

🐞 Bugs (1) 📘 Rule violations (0) 📜 Skill insights (0)

Grey Divider


Remediation recommended

1. Imports target removed dependency 🐞 Bug ☼ Reliability
Description
The PR removes framer-motion from direct dependencies without migrating any source imports to
motion/react; all 23 animation consumers still import framer-motion. This only works because the
current motion package transitively installs and hoists framer-motion, leaving builds vulnerable
to dependency-layout or transitive-dependency changes.
Code

package.json[24]

+    "motion": "^12.42.2",
Relevance

●●● Strong

Recent accepted precedent requires direct dependencies instead of relying on transitive installs
after removal.

PR-#210

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The manifest now declares motion, while representative application components still import
framer-motion; repository-wide search finds 23 such imports and no motion/react imports. The
lockfile shows why this currently resolves: the newly added motion package declares
framer-motion as its own dependency, rather than the application declaring what its source
imports.

package.json[21-27]
src/app/page.tsx[1-3]
src/components/InventoryDrawer.tsx[1-3]
package-lock.json[7631-7633]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The dependency manifest replaces `framer-motion` with `motion`, but application code still imports `framer-motion`. Update every runtime import to use the replacement package's React entry point, `motion/react`, and verify typecheck/build behavior.

## Issue Context
The lockfile currently hides the undeclared dependency because `motion` itself installs `framer-motion`. Source code should consume the package declared by this repository rather than relying on transitive hoisting.

## Fix Focus Areas
- package.json[21-27]
- src/app/page.tsx[1-3]
- src/app/items/page.tsx[1-4]
- src/app/mission/[id]/page.tsx[1-3]
- src/app/missions/page.tsx[1-3]
- src/app/quartermaster/page.tsx[1-3]
- src/app/tech-tree/page.tsx[1-3]
- src/app/unit/[id]/page.tsx[1-4]
- src/components/InventoryDrawer.tsx[1-3]
- src/components/RoverSchematic.tsx[1-4]
- src/components/Shell.tsx[1-4]
- src/components/UnitCard.tsx[1-4]
- src/components/board/NetInspector.tsx[1-3]
- src/components/cockpit/CommandRail.tsx[1-4]
- src/components/cockpit/OpticsWall.tsx[4-7]
- src/components/cockpit/SafetyStrip.tsx[8-11]
- src/components/datacore/DriverBoardSchematic.tsx[1-4]
- src/components/datacore/beast-console/BeastConsole.tsx[6-9]
- src/components/datacore/beast-console/BenchView.tsx[5-8]
- src/components/datacore/beast-console/ConsoleUi.tsx[1-4]
- src/components/datacore/beast-console/MountView.tsx[5-8]
- src/components/datacore/beast-console/PowerView.tsx[6-9]
- src/components/datacore/beast-console/RefView.tsx[5-8]
- src/components/ui/Gauge.tsx[1-4]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Context sources
✅ Compliance rules (platform): 12 rules
Review mode: ⚖️ Balanced: This runtime dependency replacement can alter module resolution and compatibility (including existing framer-motion imports), so it warrants a complete review.

Grey Divider

Tip of the day
💡 Did you know, you can show, collapse, or hide each part of a finding: code, evidence, and all

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

Comment thread package.json
"clsx": "^2.1.1",
"drizzle-orm": "^0.45.2",
"framer-motion": "^12.42.2",
"motion": "^12.42.2",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remediation recommended

1. Imports target removed dependency 🐞 Bug ☼ Reliability

The PR removes framer-motion from direct dependencies without migrating any source imports to
motion/react; all 23 animation consumers still import framer-motion. This only works because the
current motion package transitively installs and hoists framer-motion, leaving builds vulnerable
to dependency-layout or transitive-dependency changes.
Agent Prompt
## Issue description
The dependency manifest replaces `framer-motion` with `motion`, but application code still imports `framer-motion`. Update every runtime import to use the replacement package's React entry point, `motion/react`, and verify typecheck/build behavior.

## Issue Context
The lockfile currently hides the undeclared dependency because `motion` itself installs `framer-motion`. Source code should consume the package declared by this repository rather than relying on transitive hoisting.

## Fix Focus Areas
- package.json[21-27]
- src/app/page.tsx[1-3]
- src/app/items/page.tsx[1-4]
- src/app/mission/[id]/page.tsx[1-3]
- src/app/missions/page.tsx[1-3]
- src/app/quartermaster/page.tsx[1-3]
- src/app/tech-tree/page.tsx[1-3]
- src/app/unit/[id]/page.tsx[1-4]
- src/components/InventoryDrawer.tsx[1-3]
- src/components/RoverSchematic.tsx[1-4]
- src/components/Shell.tsx[1-4]
- src/components/UnitCard.tsx[1-4]
- src/components/board/NetInspector.tsx[1-3]
- src/components/cockpit/CommandRail.tsx[1-4]
- src/components/cockpit/OpticsWall.tsx[4-7]
- src/components/cockpit/SafetyStrip.tsx[8-11]
- src/components/datacore/DriverBoardSchematic.tsx[1-4]
- src/components/datacore/beast-console/BeastConsole.tsx[6-9]
- src/components/datacore/beast-console/BenchView.tsx[5-8]
- src/components/datacore/beast-console/ConsoleUi.tsx[1-4]
- src/components/datacore/beast-console/MountView.tsx[5-8]
- src/components/datacore/beast-console/PowerView.tsx[6-9]
- src/components/datacore/beast-console/RefView.tsx[5-8]
- src/components/ui/Gauge.tsx[1-4]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: bd9f264483

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread package.json
"clsx": "^2.1.1",
"drizzle-orm": "^0.45.2",
"framer-motion": "^12.42.2",
"motion": "^12.42.2",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Migrate imports to the declared Motion entry point

All 23 source modules still import framer-motion, which this line removes as a direct dependency. The current npm lock only keeps those imports working because motion transitively depends on and hoists framer-motion; a resolver that enforces direct dependencies or a future dependency layout that nests it will make Next unable to resolve these imports, and the intended package replacement is not actually achieved. Update the imports to the declared package's motion/react entry point.

Useful? React with 👍 / 👎.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR attempts to replace the app’s direct animation dependency on framer-motion with motion.

Changes:

  • Swaps framer-motionmotion in package.json.
  • Updates package-lock.json to include motion and resolves framer-motion/motion-dom to 12.43.0 transitively.

CI status (PR #250 / renovate/framer-motion-replacement):

  • Hangar web tests: success
  • Letta PR Review: success
  • Build RobotOverview image: in progress
  • OpenHands Cold Review: skipped/cancelled (multiple runs)

Reviewed changes

Copilot reviewed 1 out of 2 changed files in this pull request and generated 1 comment.

File Description
package.json Replaces direct dependency framer-motion with motion.
package-lock.json Adds motion and updates resolved Motion/Framer packages (including transitive framer-motion).

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread package.json
Comment on lines 23 to 25
"drizzle-orm": "^0.45.2",
"framer-motion": "^12.42.2",
"motion": "^12.42.2",
"lucide-react": "^1.23.0",
@kilo-code-bot

kilo-code-bot Bot commented Aug 19, 2026

Copy link
Copy Markdown

Code Review Summary

Status: No New Issues Found | Recommendation: Review existing comments before merge

Overview

Severity Count
CRITICAL 0
WARNING 0
SUGGESTION 0
Issue Details (click to expand)

No new issues identified in this review. Three active inline comments already flag the manifest/source import mismatch at package.json lines 24-25: the PR replaces the direct framer-motion dependency with motion but does not migrate the 23 source-file imports from framer-motion to motion/react.

Files Reviewed (2 files)
  • package.json — dependency manifest change; existing comments cover import migration gap
  • package-lock.json — lockfile update reflecting manifest change; mechanically consistent

Reviewed by step-3.7-flash:free · Input: 66.6K · Output: 3.4K · Cached: 166.3K

@Coldaine

Copy link
Copy Markdown
Collaborator Author

Verified: this is Renovate's framer-motion→motion package replacement (drop-in per upstream, same version string 12.42.2), touching only `package.json`/`package-lock.json`. It's a real import-surface change across every component using `framer-motion` in this app, and CI cannot verify it today (org-wide billing block). Per current review policy, MAJOR/library-replacement dependency PRs need a real test run before merging, which isn't possible right now.

Not merging. Recommendation: hold until CI is restored, then merge only after a green run (or a manual local build+smoke test) confirms no runtime import breakage.

@Coldaine

Copy link
Copy Markdown
Collaborator Author

CI is green (build, web tests, Kilo, Letta all pass), but the diff is incomplete: it only swaps the dependency entry in package.json/package-lock.json (framer-motion -> motion). It does not update any of the ~22 source files that still import ... from "framer-motion" (e.g. src/components/Shell.tsx, src/components/RoverSchematic.tsx, src/components/ui/Gauge.tsx, src/app/page.tsx, and 18 more — full list checked via code search, zero files import from "motion yet).

Build currently succeeds only because motion@12.43.0 itself depends on framer-motion@^12.43.0, so framer-motion is still physically present in node_modules as an undeclared transitive dependency and npm happens to hoist it. That is fragile: framer-motion is no longer a direct dependency, so a future npm dedupe/lockfile regeneration, or motion dropping its internal framer-motion re-export, would break every one of those imports silently.

To actually complete this migration, the ~22 imports need to move to from "motion/react" (motion's documented React entrypoint) in the same PR. Not merging as-is — leaving open. If this is meant to land as-is with the import migration deferred to a follow-up, please say so explicitly and I will reconsider.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agent-review Needs agent review before merge dependencies Pull requests that update a dependency file size:M This PR changes 30-99 lines, ignoring generated files 🕐 10-20 Minutes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants