diff --git a/package-lock.json b/package-lock.json
index 9c911154..b794446a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2500,9 +2500,9 @@
}
},
"node_modules/@tanstack/history": {
- "version": "1.95.0",
- "resolved": "https://registry.npmjs.org/@tanstack/history/-/history-1.95.0.tgz",
- "integrity": "sha512-w1/yWuIBqmG0Z0MPMf1OuOCce7FXyVH4L4dIA4rvpnjIUCH8qRUgloFAVg37nTMUbOmhMsY2NZDxCpKBv+CLJg==",
+ "version": "1.99.13",
+ "resolved": "https://registry.npmjs.org/@tanstack/history/-/history-1.99.13.tgz",
+ "integrity": "sha512-JMd7USmnp8zV8BRGIjALqzPxazvKtQ7PGXQC7n39HpbqdsmfV2ePCzieO84IvN+mwsTrXErpbjI4BfKCa+ZNCg==",
"license": "MIT",
"engines": {
"node": ">=12"
@@ -2513,9 +2513,9 @@
}
},
"node_modules/@tanstack/query-core": {
- "version": "5.62.16",
- "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.62.16.tgz",
- "integrity": "sha512-9Sgft7Qavcd+sN0V25xVyo0nfmcZXBuODy3FVG7BMWTg1HMLm8wwG5tNlLlmSic1u7l1v786oavn+STiFaPH2g==",
+ "version": "5.66.4",
+ "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.66.4.tgz",
+ "integrity": "sha512-skM/gzNX4shPkqmdTCSoHtJAPMTtmIJNS0hE+xwTTUVYwezArCT34NMermABmBVUg5Ls5aiUXEDXfqwR1oVkcA==",
"license": "MIT",
"funding": {
"type": "github",
@@ -2534,12 +2534,12 @@
}
},
"node_modules/@tanstack/react-query": {
- "version": "5.62.16",
- "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.62.16.tgz",
- "integrity": "sha512-XJIZNj65d2IdvU8VBESmrPakfIm6FSdHDzrS1dPrAwmq3ZX+9riMh/ZfbNQHAWnhrgmq7KoXpgZSRyXnqMYT9A==",
+ "version": "5.66.9",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.66.9.tgz",
+ "integrity": "sha512-NRI02PHJsP5y2gAuWKP+awamTIBFBSKMnO6UVzi03GTclmHHHInH5UzVgzi5tpu4+FmGfsdT7Umqegobtsp23A==",
"license": "MIT",
"dependencies": {
- "@tanstack/query-core": "5.62.16"
+ "@tanstack/query-core": "5.66.4"
},
"funding": {
"type": "github",
@@ -2568,14 +2568,15 @@
}
},
"node_modules/@tanstack/react-router": {
- "version": "1.95.1",
- "resolved": "https://registry.npmjs.org/@tanstack/react-router/-/react-router-1.95.1.tgz",
- "integrity": "sha512-P5x4yNhcdkYsCEoYeGZP8Q9Jlxf0WXJa4G/xvbmM905seZc9FqJqvCSRvX3dWTPOXRABhl4g+8DHqfft0c/AvQ==",
+ "version": "1.111.3",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-router/-/react-router-1.111.3.tgz",
+ "integrity": "sha512-OsqAuExa4WF7+BbjENWlb4dHRousxU5jahJHUPyO0gaUcWwzaVloJKi8lTFTd1PWQ8waz5V7BedkV67hd8syUw==",
"license": "MIT",
"dependencies": {
- "@tanstack/history": "1.95.0",
+ "@tanstack/history": "1.99.13",
"@tanstack/react-store": "^0.7.0",
- "jsesc": "^3.0.2",
+ "@tanstack/router-core": "^1.111.3",
+ "jsesc": "^3.1.0",
"tiny-invariant": "^1.3.3",
"tiny-warning": "^1.0.3"
},
@@ -2587,8 +2588,8 @@
"url": "https://github.com/sponsors/tannerlinsley"
},
"peerDependencies": {
- "react": ">=18",
- "react-dom": ">=18"
+ "react": ">=18.0.0 || >=19.0.0",
+ "react-dom": ">=18.0.0 || >=19.0.0"
}
},
"node_modules/@tanstack/react-store": {
@@ -2610,12 +2611,12 @@
}
},
"node_modules/@tanstack/react-virtual": {
- "version": "3.11.2",
- "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.11.2.tgz",
- "integrity": "sha512-OuFzMXPF4+xZgx8UzJha0AieuMihhhaWG0tCqpp6tDzlFwOmNBPYMuLOtMJ1Tr4pXLHmgjcWhG6RlknY2oNTdQ==",
+ "version": "3.13.0",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.13.0.tgz",
+ "integrity": "sha512-CchF0NlLIowiM2GxtsoKBkXA4uqSnY2KvnXo+kyUFD4a4ll6+J0qzoRsUPMwXV/H26lRsxgJIr/YmjYum2oEjg==",
"license": "MIT",
"dependencies": {
- "@tanstack/virtual-core": "3.11.2"
+ "@tanstack/virtual-core": "3.13.0"
},
"funding": {
"type": "github",
@@ -2626,6 +2627,23 @@
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
}
},
+ "node_modules/@tanstack/router-core": {
+ "version": "1.111.3",
+ "resolved": "https://registry.npmjs.org/@tanstack/router-core/-/router-core-1.111.3.tgz",
+ "integrity": "sha512-q+CHuOhTgqHudVKijL89jIdLe5A00RzV8ZMMSi4qiHGnggm4nisF8eSE3dFQaic1+YFk1wR7dfFA2hvkr1hFIA==",
+ "license": "MIT",
+ "dependencies": {
+ "@tanstack/history": "1.99.13",
+ "@tanstack/store": "^0.7.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ }
+ },
"node_modules/@tanstack/router-devtools": {
"version": "1.91.3",
"resolved": "https://registry.npmjs.org/@tanstack/router-devtools/-/router-devtools-1.91.3.tgz",
@@ -2730,9 +2748,9 @@
}
},
"node_modules/@tanstack/virtual-core": {
- "version": "3.11.2",
- "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.11.2.tgz",
- "integrity": "sha512-vTtpNt7mKCiZ1pwU9hfKPhpdVO2sVzFQsxoVBGtOSHxlrRRzYr8iQ2TlwbAcRYCcEiZ9ECAM8kBzH0v2+VzfKw==",
+ "version": "3.13.0",
+ "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.13.0.tgz",
+ "integrity": "sha512-NBKJP3OIdmZY3COJdWkSonr50FMVIi+aj5ZJ7hI/DTpEKg2RMfo/KvP8A3B/zOSpMgIe52B5E2yn7rryULzA6g==",
"license": "MIT",
"funding": {
"type": "github",
@@ -2754,9 +2772,9 @@
}
},
"node_modules/@tauri-apps/api": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.0.2.tgz",
- "integrity": "sha512-3wSwmG+1kr6WrgAFKK5ijkNFPp8TT3FLj3YHUb5EwMO+3FxX4uWlfSWkeeBy+Kc1RsKzugtYLuuya+98Flj+3w==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.2.0.tgz",
+ "integrity": "sha512-R8epOeZl1eJEl603aUMIGb4RXlhPjpgxbGVEaqY+0G5JG9vzV/clNlzTeqc+NLYXVqXcn8mb4c5b9pJIUDEyAg==",
"license": "Apache-2.0 OR MIT",
"funding": {
"type": "opencollective",
@@ -6963,17 +6981,19 @@
}
},
"node_modules/framer-motion": {
- "version": "11.11.7",
- "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.11.7.tgz",
- "integrity": "sha512-89CgILOXPeG3L7ymOTGrLmf8IiKubYLUN/QkYgQuLvehAHfqgwJbLfCnhuyRI4WTds1TXkUp67A7IJrgRY/j1w==",
+ "version": "12.4.7",
+ "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.4.7.tgz",
+ "integrity": "sha512-VhrcbtcAMXfxlrjeHPpWVu2+mkcoR31e02aNSR7OUS/hZAciKa8q6o3YN2mA1h+jjscRsSyKvX6E1CiY/7OLMw==",
"license": "MIT",
"dependencies": {
+ "motion-dom": "^12.4.5",
+ "motion-utils": "^12.0.0",
"tslib": "^2.4.0"
},
"peerDependencies": {
"@emotion/is-prop-valid": "*",
- "react": "^18.0.0",
- "react-dom": "^18.0.0"
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
},
"peerDependenciesMeta": {
"@emotion/is-prop-valid": {
@@ -8577,9 +8597,9 @@
}
},
"node_modules/jsesc": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
- "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
+ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
"license": "MIT",
"bin": {
"jsesc": "bin/jsesc"
@@ -10008,6 +10028,47 @@
"integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==",
"license": "BSD-3-Clause"
},
+ "node_modules/motion": {
+ "version": "12.4.7",
+ "resolved": "https://registry.npmjs.org/motion/-/motion-12.4.7.tgz",
+ "integrity": "sha512-mhegHAbf1r80fr+ytC6OkjKvIUegRNXKLWNPrCN2+GnixlNSPwT03FtKqp9oDny1kNcLWZvwbmEr+JqVryFrcg==",
+ "license": "MIT",
+ "dependencies": {
+ "framer-motion": "^12.4.7",
+ "tslib": "^2.4.0"
+ },
+ "peerDependencies": {
+ "@emotion/is-prop-valid": "*",
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@emotion/is-prop-valid": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/motion-dom": {
+ "version": "12.4.5",
+ "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.4.5.tgz",
+ "integrity": "sha512-Q2xmhuyYug1CGTo0jdsL05EQ4RhIYXlggFS/yPhQQRNzbrhjKQ1tbjThx5Plv68aX31LsUQRq4uIkuDxdO5vRQ==",
+ "license": "MIT",
+ "dependencies": {
+ "motion-utils": "^12.0.0"
+ }
+ },
+ "node_modules/motion-utils": {
+ "version": "12.0.0",
+ "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.0.0.tgz",
+ "integrity": "sha512-MNFiBKbbqnmvOjkPyOKgHUp3Q6oiokLkI1bEwm5QA28cxMZrv0CbbBGDNmhF6DIXsi1pCQBSs0dX8xjeER1tmA==",
+ "license": "MIT"
+ },
"node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
@@ -15635,10 +15696,10 @@
"@replit/codemirror-vim": "^6.2.1",
"@replit/codemirror-vscode-keymap": "^6.0.2",
"@tailwindcss/container-queries": "^0.1.1",
- "@tanstack/react-query": "^5.62.16",
- "@tanstack/react-router": "^1.95.1",
- "@tanstack/react-virtual": "^3.11.2",
- "@tauri-apps/api": "^2.0.1",
+ "@tanstack/react-query": "^5.66.9",
+ "@tanstack/react-router": "^1.111.3",
+ "@tanstack/react-virtual": "^3.13.0",
+ "@tauri-apps/api": "^2.2.0",
"@tauri-apps/plugin-clipboard-manager": "^2.0.0",
"@tauri-apps/plugin-dialog": "^2.0.0",
"@tauri-apps/plugin-fs": "^2.0.0",
@@ -15655,7 +15716,6 @@
"eventemitter3": "^5.0.1",
"focus-trap-react": "^10.2.3",
"format-graphql": "^1.5.0",
- "framer-motion": "^11.5.4",
"fuzzbunny": "^1.0.1",
"hexy": "^0.3.5",
"history": "^5.3.0",
@@ -15663,6 +15723,7 @@
"js-md5": "^0.8.3",
"lucide-react": "^0.474.0",
"mime": "^4.0.4",
+ "motion": "^12.4.7",
"nanoid": "^5.0.9",
"papaparse": "^5.4.1",
"parse-color": "^1.0.0",
diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs
index dd07f706..f0998b43 100644
--- a/src-tauri/src/lib.rs
+++ b/src-tauri/src/lib.rs
@@ -11,7 +11,6 @@ use eventsource_client::{EventParser, SSE};
use log::{debug, error, warn};
use rand::random;
use regex::Regex;
-use serde_json::{json, Value};
use std::collections::{BTreeMap, HashMap};
use std::fs::{create_dir_all, File};
use std::path::PathBuf;
diff --git a/src-web/components/ImportCurlButton.tsx b/src-web/components/ImportCurlButton.tsx
index 8fde74e7..0dc45120 100644
--- a/src-web/components/ImportCurlButton.tsx
+++ b/src-web/components/ImportCurlButton.tsx
@@ -1,5 +1,5 @@
import { clear, readText } from '@tauri-apps/plugin-clipboard-manager';
-import { motion } from 'framer-motion';
+import * as m from 'motion/react-m';
import React, { useEffect, useState } from 'react';
import { useImportCurl } from '../hooks/useImportCurl';
import { useWindowFocus } from '../hooks/useWindowFocus';
@@ -22,7 +22,7 @@ export function ImportCurlButton() {
}
return (
-
Import Curl
-
+
);
}
diff --git a/src-web/components/Overlay.tsx b/src-web/components/Overlay.tsx
index c1e9390c..3c81cb2d 100644
--- a/src-web/components/Overlay.tsx
+++ b/src-web/components/Overlay.tsx
@@ -1,6 +1,6 @@
import classNames from 'classnames';
import FocusTrap from 'focus-trap-react';
-import { motion } from 'framer-motion';
+import * as m from 'motion/react-m';
import type { ReactNode } from 'react';
import React from 'react';
import { Portal } from './Portal';
@@ -48,7 +48,7 @@ export function Overlay({
{open && (
-
)}
{children}
-
+
)}
diff --git a/src-web/components/Settings/SettingsGeneral.tsx b/src-web/components/Settings/SettingsGeneral.tsx
index 18a5e17f..811ed403 100644
--- a/src-web/components/Settings/SettingsGeneral.tsx
+++ b/src-web/components/Settings/SettingsGeneral.tsx
@@ -82,7 +82,7 @@ export function SettingsGeneral() {
checked={false}
title="Send Usage Statistics (all tracking was removed in 2025.1.2)"
disabled
- onChange={(telemetry) => updateSettings.mutate({ telemetry })}
+ onChange={() => {}}
/>
diff --git a/src-web/components/Toasts.tsx b/src-web/components/Toasts.tsx
index 292c783a..ce0f34a9 100644
--- a/src-web/components/Toasts.tsx
+++ b/src-web/components/Toasts.tsx
@@ -1,4 +1,4 @@
-import { AnimatePresence } from 'framer-motion';
+import { AnimatePresence } from 'motion/react';
import { useAtomValue } from 'jotai';
import React, { type ReactNode } from 'react';
import { hideToast, toastsAtom } from '../lib/toast';
diff --git a/src-web/components/Workspace.tsx b/src-web/components/Workspace.tsx
index 638492e6..9a2d2254 100644
--- a/src-web/components/Workspace.tsx
+++ b/src-web/components/Workspace.tsx
@@ -1,5 +1,5 @@
import classNames from 'classnames';
-import { motion } from 'framer-motion';
+import * as m from 'motion/react-m';
import type { CSSProperties, MouseEvent as ReactMouseEvent } from 'react';
import { useCallback, useMemo, useRef, useState } from 'react';
import {duplicateWebsocketRequest} from "../commands/duplicateWebsocketRequest";
@@ -137,7 +137,7 @@ export function Workspace() {
portalName="sidebar"
onClose={() => setFloatingSidebarHidden(true)}
>
-
-
+
) : (
<>
diff --git a/src-web/components/core/Dialog.tsx b/src-web/components/core/Dialog.tsx
index a0a493f2..ae71e2d2 100644
--- a/src-web/components/core/Dialog.tsx
+++ b/src-web/components/core/Dialog.tsx
@@ -1,5 +1,5 @@
import classNames from 'classnames';
-import { motion } from 'framer-motion';
+import * as m from 'motion/react-m';
import type { ReactNode } from 'react';
import { useMemo } from 'react';
import { useKey } from 'react-use';
@@ -65,7 +65,7 @@ export function Dialog({
aria-labelledby={titleId}
aria-describedby={descriptionId}
>
-
)}
-
+
);
diff --git a/src-web/components/core/Dropdown.tsx b/src-web/components/core/Dropdown.tsx
index f3e6982c..31bbb117 100644
--- a/src-web/components/core/Dropdown.tsx
+++ b/src-web/components/core/Dropdown.tsx
@@ -1,5 +1,5 @@
import classNames from 'classnames';
-import { motion } from 'framer-motion';
+import * as m from 'motion/react-m';
import { atom } from 'jotai';
import type {
CSSProperties,
@@ -497,7 +497,7 @@ const Menu = forwardRef
-
-
+
)}
>
diff --git a/src-web/components/core/Toast.tsx b/src-web/components/core/Toast.tsx
index f73d753e..a9cde8f1 100644
--- a/src-web/components/core/Toast.tsx
+++ b/src-web/components/core/Toast.tsx
@@ -1,6 +1,6 @@
import type { ShowToastRequest } from '@yaakapp-internal/plugins';
import classNames from 'classnames';
-import { motion } from 'framer-motion';
+import * as m from 'motion/react-m';
import type { ReactNode } from 'react';
import React from 'react';
import { useKey } from 'react-use';
@@ -45,7 +45,7 @@ export function Toast({ children, open, onClose, timeout, action, icon, color }:
const toastIcon = icon ?? (color && color in ICONS && ICONS[color]);
return (
-
-
)}
-
+
);
}
diff --git a/src-web/package.json b/src-web/package.json
index c54ff187..293f2434 100644
--- a/src-web/package.json
+++ b/src-web/package.json
@@ -23,10 +23,10 @@
"@replit/codemirror-vim": "^6.2.1",
"@replit/codemirror-vscode-keymap": "^6.0.2",
"@tailwindcss/container-queries": "^0.1.1",
- "@tanstack/react-query": "^5.62.16",
- "@tanstack/react-router": "^1.95.1",
- "@tanstack/react-virtual": "^3.11.2",
- "@tauri-apps/api": "^2.0.1",
+ "@tanstack/react-query": "^5.66.9",
+ "@tanstack/react-router": "^1.111.3",
+ "@tanstack/react-virtual": "^3.13.0",
+ "@tauri-apps/api": "^2.2.0",
"@tauri-apps/plugin-clipboard-manager": "^2.0.0",
"@tauri-apps/plugin-dialog": "^2.0.0",
"@tauri-apps/plugin-fs": "^2.0.0",
@@ -43,7 +43,7 @@
"eventemitter3": "^5.0.1",
"focus-trap-react": "^10.2.3",
"format-graphql": "^1.5.0",
- "framer-motion": "^11.5.4",
+ "motion": "^12.4.7",
"fuzzbunny": "^1.0.1",
"hexy": "^0.3.5",
"history": "^5.3.0",
diff --git a/src-web/routes/__root.tsx b/src-web/routes/__root.tsx
index b0ed89aa..d0b4150b 100644
--- a/src-web/routes/__root.tsx
+++ b/src-web/routes/__root.tsx
@@ -1,7 +1,7 @@
import { QueryCache, QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { createRootRoute, Outlet } from '@tanstack/react-router';
import classNames from 'classnames';
-import { MotionConfig } from 'framer-motion';
+import { domAnimation, LazyMotion, MotionConfig } from 'motion/react';
import { Provider as JotaiProvider } from 'jotai';
import React, { Suspense } from 'react';
import { DndProvider } from 'react-dnd';
@@ -61,25 +61,27 @@ function RouteComponent() {
return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{/**/}
{/**/}
diff --git a/src-web/vite.config.ts b/src-web/vite.config.ts
index f9ed0513..ea388ba4 100644
--- a/src-web/vite.config.ts
+++ b/src-web/vite.config.ts
@@ -27,6 +27,7 @@ export default defineConfig(async () => ({
TanStackRouterVite({
routesDirectory: './routes',
generatedRouteTree: './routeTree.gen.ts',
+ autoCodeSplitting: true,
}),
svgr(),
react(),