Skip to content

Improve template search input performance issue #8343

Merged
AustinMroz merged 3 commits intoComfy-Org:mainfrom
kaili-yang:fix/template-search-perf
Jan 30, 2026
Merged

Improve template search input performance issue #8343
AustinMroz merged 3 commits intoComfy-Org:mainfrom
kaili-yang:fix/template-search-perf

Conversation

@kaili-yang
Copy link
Contributor

@kaili-yang kaili-yang commented Jan 27, 2026

Summary

Improve Template search input performance issue #8134
This was caused by the search logic running too frequently (throttled at 50ms), causing the main thread to block on every few keystrokes.

Changes

Use debouncing that wait until you stop typing for a specific time (300ms) before running.
It makes the searching function more smoothly.

┆Issue is synchronized with this Notion page by Unito

@kaili-yang kaili-yang requested a review from a team as a code owner January 27, 2026 23:12
@dosubot dosubot bot added the size:XS This PR changes 0-9 lines, ignoring generated files. label Jan 27, 2026
@github-actions
Copy link

github-actions bot commented Jan 27, 2026

🎨 Storybook Build Status

loading Build is starting...

⏰ Started at: 01/29/2026, 10:19:56 PM UTC

🚀 Building Storybook

  • 📦 Installing dependencies...
  • 🔧 Building Storybook components...
  • 🌐 Preparing deployment to Cloudflare Pages...

⏱️ Please wait while the Storybook build is in progress...

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 27, 2026

📝 Walkthrough

Walkthrough

Swap throttle for debounce in template filtering composable (debounce delay changed 50→150), and change pagination reset watcher in the workflow template selector to depend on filteredTemplates instead of searchQuery.

Changes

Cohort / File(s) Summary
Template filtering composable
src/composables/useTemplateFiltering.ts
Replaced refThrottled with refDebounced from @vueuse/core and updated searchQuery to use refDebounced with delay changed from 50ms to 150ms; no public/export signature changes.
Workflow template selector component
src/components/custom/widget/WorkflowTemplateSelectorDialog.vue
Updated watcher that resets pagination: now watches filteredTemplates instead of searchQuery, so pagination resets only when the filtered result set changes rather than on each query update.

Possibly related PRs

Suggested reviewers

  • DrJKL
  • AustinMroz
  • Myestery
✨ Finishing touches
  • 📝 Generate docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link

github-actions bot commented Jan 27, 2026

🎭 Playwright Tests: ✅ Passed

Results: 507 passed, 0 failed, 0 flaky, 8 skipped (Total: 515)

📊 Browser Reports
  • chromium: View Report (✅ 495 / ❌ 0 / ⚠️ 0 / ⏭️ 8)
  • chromium-2x: View Report (✅ 2 / ❌ 0 / ⚠️ 0 / ⏭️ 0)
  • chromium-0.5x: View Report (✅ 1 / ❌ 0 / ⚠️ 0 / ⏭️ 0)
  • mobile-chrome: View Report (✅ 9 / ❌ 0 / ⚠️ 0 / ⏭️ 0)

@DrJKL
Copy link
Contributor

DrJKL commented Jan 27, 2026

@kaili-yang That was the opposite of my experience 🙃

When I tested it the search resolved a lot faster using throttled. @AustinMroz ?

@github-actions
Copy link

github-actions bot commented Jan 28, 2026

Bundle Size Report

Summary

  • Raw size: 22.1 MB baseline 22.1 MB — 🟢 -7.74 kB
  • Gzip: 4.6 MB baseline 4.61 MB — 🟢 -1.5 kB
  • Brotli: 3.42 MB baseline 3.42 MB — 🟢 -1.18 kB
  • Bundles: 173 current • 173 baseline • 106 added / 106 removed

Category Glance
Data & Services 🟢 -4.54 kB (2.7 MB) · Other 🟢 -2.76 kB (7.1 MB) · Vendor & Third-Party 🟢 -327 B (10.7 MB) · Panels & Settings 🟢 -101 B (471 kB) · Graph Workspace 🟢 -16 B (974 kB) · Views & Navigation ⚪ 0 B (80.7 kB) · + 5 more

Per-category breakdown
App Entry Points — 26 kB (baseline 26 kB) • ⚪ 0 B

Main entry bundles and manifests

File Before After Δ Raw Δ Gzip Δ Brotli
assets/index-DBlranF5.js (new) 26 kB 🔴 +26 kB 🔴 +7.5 kB 🔴 +6.6 kB
assets/index-DzU0Otvt.js (removed) 26 kB 🟢 -26 kB 🟢 -7.5 kB 🟢 -6.61 kB

Status: 1 added / 1 removed

Graph Workspace — 974 kB (baseline 974 kB) • 🟢 -16 B

Graph editor runtime, canvas, workflow orchestration

File Before After Δ Raw Δ Gzip Δ Brotli
assets/GraphView-NqK3wMno.js (removed) 974 kB 🟢 -974 kB 🟢 -197 kB 🟢 -149 kB
assets/GraphView-BTsabI95.js (new) 974 kB 🔴 +974 kB 🔴 +197 kB 🔴 +149 kB

Status: 1 added / 1 removed

Views & Navigation — 80.7 kB (baseline 80.7 kB) • ⚪ 0 B

Top-level views, pages, and routed surfaces

File Before After Δ Raw Δ Gzip Δ Brotli
assets/CloudSurveyView-D5YQuSoV.js (new) 17.1 kB 🔴 +17.1 kB 🔴 +3.6 kB 🔴 +3.05 kB
assets/CloudSurveyView-Ky5xTgVD.js (removed) 17.1 kB 🟢 -17.1 kB 🟢 -3.6 kB 🟢 -3.05 kB
assets/CloudLoginView-CpXtqtCS.js (new) 11.8 kB 🔴 +11.8 kB 🔴 +3.09 kB 🔴 +2.72 kB
assets/CloudLoginView-Cz0bAYvs.js (removed) 11.8 kB 🟢 -11.8 kB 🟢 -3.09 kB 🟢 -2.72 kB
assets/UserCheckView-Bg_j0NdH.js (removed) 10.5 kB 🟢 -10.5 kB 🟢 -2.45 kB 🟢 -2.13 kB
assets/UserCheckView-o-tMiwGq.js (new) 10.5 kB 🔴 +10.5 kB 🔴 +2.44 kB 🔴 +2.13 kB
assets/CloudLayoutView-BE3feEh4.js (removed) 8.54 kB 🟢 -8.54 kB 🟢 -2.24 kB 🟢 -1.95 kB
assets/CloudLayoutView-CRmaYhri.js (new) 8.54 kB 🔴 +8.54 kB 🔴 +2.24 kB 🔴 +1.96 kB
assets/CloudSignupView-CsiaoK_S.js (removed) 8.18 kB 🟢 -8.18 kB 🟢 -2.32 kB 🟢 -2.02 kB
assets/CloudSignupView-DYQGKwMo.js (new) 8.18 kB 🔴 +8.18 kB 🔴 +2.33 kB 🔴 +2.02 kB
assets/CloudForgotPasswordView-B1Z6c8ae.js (new) 6.26 kB 🔴 +6.26 kB 🔴 +1.93 kB 🔴 +1.69 kB
assets/CloudForgotPasswordView-C8U7cwpk.js (removed) 6.26 kB 🟢 -6.26 kB 🟢 -1.93 kB 🟢 -1.69 kB
assets/UserSelectView-0j2Arflh.js (new) 5.28 kB 🔴 +5.28 kB 🔴 +1.76 kB 🔴 +1.57 kB
assets/UserSelectView-DaNblRLk.js (removed) 5.28 kB 🟢 -5.28 kB 🟢 -1.76 kB 🟢 -1.58 kB
assets/CloudSubscriptionRedirectView-BhO4zdFg.js (new) 5.27 kB 🔴 +5.27 kB 🔴 +1.73 kB 🔴 +1.54 kB
assets/CloudSubscriptionRedirectView-BJzZ9Ver.js (removed) 5.27 kB 🟢 -5.27 kB 🟢 -1.73 kB 🟢 -1.54 kB
assets/CloudAuthTimeoutView-BEIcWPZk.js (new) 5.24 kB 🔴 +5.24 kB 🔴 +1.71 kB 🔴 +1.49 kB
assets/CloudAuthTimeoutView-IH7Yy4py.js (removed) 5.24 kB 🟢 -5.24 kB 🟢 -1.71 kB 🟢 -1.49 kB
assets/CloudSorryContactSupportView-cm9oKn4s.js (new) 1.97 kB 🔴 +1.97 kB 🔴 +700 B 🔴 +625 B
assets/CloudSorryContactSupportView-n5f-fGMz.js (removed) 1.97 kB 🟢 -1.97 kB 🟢 -703 B 🟢 -625 B
assets/layout-CUzumK-h.js (new) 500 B 🔴 +500 B 🔴 +308 B 🔴 +265 B
assets/layout-V93lMUpe.js (removed) 500 B 🟢 -500 B 🟢 -307 B 🟢 -266 B

Status: 11 added / 11 removed

Panels & Settings — 471 kB (baseline 471 kB) • 🟢 -101 B

Configuration panels, inspectors, and settings screens

File Before After Δ Raw Δ Gzip Δ Brotli
assets/WorkspacePanel-B5mc8s_j.js (new) 29.8 kB 🔴 +29.8 kB 🔴 +5.89 kB 🔴 +5.14 kB
assets/WorkspacePanel-DaP--hp6.js (removed) 29.8 kB 🟢 -29.8 kB 🟢 -5.89 kB 🟢 -5.13 kB
assets/LegacyCreditsPanel-CapCB9NV.js (removed) 23.8 kB 🟢 -23.8 kB 🟢 -5.95 kB 🟢 -5.22 kB
assets/LegacyCreditsPanel-TrRnVY9C.js (new) 23.8 kB 🔴 +23.8 kB 🔴 +5.95 kB 🔴 +5.23 kB
assets/SubscriptionPanel-cY50hNDo.js (new) 21 kB 🔴 +21 kB 🔴 +5.04 kB 🔴 +4.45 kB
assets/SubscriptionPanel-KZBrnoIQ.js (removed) 21 kB 🟢 -21 kB 🟢 -5.04 kB 🟢 -4.44 kB
assets/KeybindingPanel-lBawcRmm.js (removed) 14.3 kB 🟢 -14.3 kB 🟢 -3.77 kB 🟢 -3.34 kB
assets/KeybindingPanel-DghDqNKK.js (new) 14.2 kB 🔴 +14.2 kB 🔴 +3.74 kB 🔴 +3.31 kB
assets/AboutPanel-CkV4o24W.js (new) 10.8 kB 🔴 +10.8 kB 🔴 +2.68 kB 🔴 +2.43 kB
assets/AboutPanel-DdZlY6It.js (removed) 10.8 kB 🟢 -10.8 kB 🟢 -2.68 kB 🟢 -2.43 kB
assets/ExtensionPanel-CHLyh_LM.js (new) 10.2 kB 🔴 +10.2 kB 🔴 +2.71 kB 🔴 +2.4 kB
assets/ExtensionPanel-DWFfD-64.js (removed) 10.2 kB 🟢 -10.2 kB 🟢 -2.71 kB 🟢 -2.4 kB
assets/ServerConfigPanel-bmeWUD_S.js (new) 7.23 kB 🔴 +7.23 kB 🔴 +2.17 kB 🔴 +1.94 kB
assets/ServerConfigPanel-CKc4VfLS.js (removed) 7.23 kB 🟢 -7.23 kB 🟢 -2.17 kB 🟢 -1.94 kB
assets/UserPanel-DCA4ZSab.js (new) 6.58 kB 🔴 +6.58 kB 🔴 +1.9 kB 🔴 +1.68 kB
assets/UserPanel-nfXaoJhx.js (removed) 6.58 kB 🟢 -6.58 kB 🟢 -1.9 kB 🟢 -1.68 kB
assets/refreshRemoteConfig-BaXy4AMB.js (new) 1.31 kB 🔴 +1.31 kB 🔴 +572 B 🔴 +498 B
assets/refreshRemoteConfig-BwSH7sJm.js (removed) 1.31 kB 🟢 -1.31 kB 🟢 -572 B 🟢 -497 B
assets/config-BJnN3URR.js (removed) 1.16 kB 🟢 -1.16 kB 🟢 -608 B 🟢 -537 B
assets/config-DSTzaNly.js (new) 1.15 kB 🔴 +1.15 kB 🔴 +604 B 🔴 +530 B
assets/cloudRemoteConfig-851AoHFQ.js (removed) 1.11 kB 🟢 -1.11 kB 🟢 -513 B 🟢 -438 B
assets/cloudRemoteConfig-B2p1ThuG.js (new) 1.11 kB 🔴 +1.11 kB 🔴 +508 B 🔴 +441 B
assets/refreshRemoteConfig-bDWyzJk2.js (new) 169 B 🔴 +169 B 🔴 +108 B 🔴 +101 B
assets/refreshRemoteConfig-BNpaN_a4.js (removed) 169 B 🟢 -169 B 🟢 -108 B 🟢 -103 B
assets/remoteConfig-B0mlVvm7.js 788 B 788 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-2UNjEj6k.js 32.9 kB 32.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-B2OMGvh7.js 31.2 kB 31.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-BcujOfpn.js 29.6 kB 29.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-BI09_t23.js 29.4 kB 29.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-BKamuseh.js 25.8 kB 25.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-BlTun9tZ.js 26.4 kB 26.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-CZ62uO3e.js 30.2 kB 30.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DaK-NByz.js 35.2 kB 35.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DaS3cSXp.js 39.4 kB 39.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DWbMuaAa.js 32 kB 32 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-S7pA60Hj.js 30.4 kB 30.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 12 added / 12 removed

User & Accounts — 3.94 kB (baseline 3.94 kB) • ⚪ 0 B

Authentication, profile, and account management bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/auth-C96SFtlM.js (new) 3.54 kB 🔴 +3.54 kB 🔴 +1.24 kB 🔴 +1.06 kB
assets/auth-CSj4tYip.js (removed) 3.54 kB 🟢 -3.54 kB 🟢 -1.24 kB 🟢 -1.05 kB
assets/firebaseAuthStore-BiTQDNoZ.js (removed) 217 B 🟢 -217 B 🟢 -138 B 🟢 -123 B
assets/firebaseAuthStore-DFxbRzge.js (new) 217 B 🔴 +217 B 🔴 +138 B 🔴 +118 B
assets/auth-ACAS6iwA.js (new) 178 B 🔴 +178 B 🔴 +142 B 🔴 +133 B
assets/auth-DapesT4a.js (removed) 178 B 🟢 -178 B 🟢 -141 B 🟢 -129 B

Status: 3 added / 3 removed

Editors & Dialogs — 2.89 kB (baseline 2.89 kB) • ⚪ 0 B

Modals, dialogs, drawers, and in-app editors

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useSubscriptionDialog-Cenlj_oK.js (new) 2.71 kB 🔴 +2.71 kB 🔴 +1.28 kB 🔴 +1.14 kB
assets/useSubscriptionDialog-CNNqIoep.js (removed) 2.71 kB 🟢 -2.71 kB 🟢 -1.29 kB 🟢 -1.14 kB
assets/useSubscriptionDialog-CQdQO5mR.js (new) 179 B 🔴 +179 B 🔴 +110 B 🔴 +100 B
assets/useSubscriptionDialog-CyT9mcV_.js (removed) 179 B 🟢 -179 B 🟢 -110 B 🟢 -97 B

Status: 2 added / 2 removed

UI Components — 33.7 kB (baseline 33.7 kB) • ⚪ 0 B

Reusable component library chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/ComfyQueueButton-CRq78ran.js (removed) 9.52 kB 🟢 -9.52 kB 🟢 -2.68 kB 🟢 -2.41 kB
assets/ComfyQueueButton-DrBtLAlc.js (new) 9.52 kB 🔴 +9.52 kB 🔴 +2.68 kB 🔴 +2.41 kB
assets/TopbarBadge-BFw4kSAY.js (new) 8.36 kB 🔴 +8.36 kB 🔴 +1.98 kB 🔴 +1.76 kB
assets/TopbarBadge-qACg_vGT.js (removed) 8.36 kB 🟢 -8.36 kB 🟢 -1.98 kB 🟢 -1.76 kB
assets/SubscribeButton-CPxvhDKm.js (new) 4.63 kB 🔴 +4.63 kB 🔴 +1.57 kB 🔴 +1.39 kB
assets/SubscribeButton-InCtNbGL.js (removed) 4.63 kB 🟢 -4.63 kB 🟢 -1.57 kB 🟢 -1.39 kB
assets/Button-Bb_i0j7c.js (removed) 3.82 kB 🟢 -3.82 kB 🟢 -1.38 kB 🟢 -1.23 kB
assets/Button-DbRyW27H.js (new) 3.82 kB 🔴 +3.82 kB 🔴 +1.39 kB 🔴 +1.23 kB
assets/WidgetButton-CVau1vM3.js (new) 2.41 kB 🔴 +2.41 kB 🔴 +981 B 🔴 +887 B
assets/WidgetButton-DSv9NFvF.js (removed) 2.41 kB 🟢 -2.41 kB 🟢 -980 B 🟢 -883 B
assets/CloudBadge-B2iTmXs2.js (new) 1.85 kB 🔴 +1.85 kB 🔴 +719 B 🔴 +642 B
assets/CloudBadge-CzKMhVcP.js (removed) 1.85 kB 🟢 -1.85 kB 🟢 -720 B 🟢 -643 B
assets/cloudFeedbackTopbarButton-BAkZBYQe.js (removed) 1.24 kB 🟢 -1.24 kB 🟢 -676 B 🟢 -573 B
assets/cloudFeedbackTopbarButton-ChKqSPxK.js (new) 1.24 kB 🔴 +1.24 kB 🔴 +676 B 🔴 +575 B
assets/ComfyQueueButton-BX8NyW1f.js (removed) 181 B 🟢 -181 B 🟢 -118 B 🟢 -107 B
assets/ComfyQueueButton-BXgFlxOh.js (new) 181 B 🔴 +181 B 🔴 +118 B 🔴 +107 B
assets/UserAvatar-D80lITos.js 1.73 kB 1.73 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 8 added / 8 removed

Data & Services — 2.7 MB (baseline 2.71 MB) • 🟢 -4.54 kB

Stores, services, APIs, and repositories

File Before After Δ Raw Δ Gzip Δ Brotli
assets/dialogService-DZz_Mh8J.js (removed) 2.01 MB 🟢 -2.01 MB 🟢 -424 kB 🟢 -324 kB
assets/dialogService-BvWLCNsD.js (new) 2 MB 🔴 +2 MB 🔴 +424 kB 🔴 +324 kB
assets/api-D91jUAt3.js (removed) 675 kB 🟢 -675 kB 🟢 -149 kB 🟢 -119 kB
assets/api-BSte_XYZ.js (new) 674 kB 🔴 +674 kB 🔴 +149 kB 🔴 +118 kB
assets/releaseStore-CGX9MLmK.js (new) 8.91 kB 🔴 +8.91 kB 🔴 +2.4 kB 🔴 +2.12 kB
assets/releaseStore-CliC1vG8.js (removed) 8.91 kB 🟢 -8.91 kB 🟢 -2.4 kB 🟢 -2.12 kB
assets/keybindingService-CQqGHa6c.js (new) 6.78 kB 🔴 +6.78 kB 🔴 +1.74 kB 🔴 +1.51 kB
assets/keybindingService-ac9a4D6c.js (removed) 6.74 kB 🟢 -6.74 kB 🟢 -1.75 kB 🟢 -1.52 kB
assets/bootstrapStore-B2hM2lVf.js (new) 2.69 kB 🔴 +2.69 kB 🔴 +1.03 kB 🔴 +968 B
assets/bootstrapStore-DaMVSfR4.js (removed) 2.69 kB 🟢 -2.69 kB 🟢 -1.03 kB 🟢 -967 B
assets/userStore-BvwKNit6.js (removed) 2.16 kB 🟢 -2.16 kB 🟢 -811 B 🟢 -724 B
assets/userStore-D-5tRbu1.js (new) 2.16 kB 🔴 +2.16 kB 🔴 +814 B 🔴 +723 B
assets/audioService-D-dFeEju.js (removed) 2.03 kB 🟢 -2.03 kB 🟢 -929 B 🟢 -809 B
assets/audioService-DF-X644Z.js (new) 2.03 kB 🔴 +2.03 kB 🔴 +929 B 🔴 +812 B
assets/releaseStore-Bbt74HKi.js (removed) 140 B 🟢 -140 B 🟢 -106 B 🟢 -106 B
assets/releaseStore-Df9B38X_.js (new) 140 B 🔴 +140 B 🔴 +106 B 🔴 +105 B
assets/serverConfigStore-DOoqLe5c.js 2.64 kB 2.64 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 8 added / 8 removed

Utilities & Hooks — 25.3 kB (baseline 25.3 kB) • ⚪ 0 B

Helpers, composables, and utility bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/colorUtil-DfMUHmsF.js (new) 7.2 kB 🔴 +7.2 kB 🔴 +2.22 kB 🔴 +1.96 kB
assets/colorUtil-GMAsfHxw.js (removed) 7.2 kB 🟢 -7.2 kB 🟢 -2.22 kB 🟢 -1.96 kB
assets/useErrorHandling-b_E1wi9o.js (removed) 5.21 kB 🟢 -5.21 kB 🟢 -1.53 kB 🟢 -1.34 kB
assets/useErrorHandling-Djnd-FTb.js (new) 5.21 kB 🔴 +5.21 kB 🔴 +1.53 kB 🔴 +1.35 kB
assets/useWorkspaceUI-CjEzbHM7.js (new) 3.42 kB 🔴 +3.42 kB 🔴 +977 B 🔴 +840 B
assets/useWorkspaceUI-DmxbPtel.js (removed) 3.42 kB 🟢 -3.42 kB 🟢 -976 B 🟢 -842 B
assets/useSubscriptionActions-DIc-H8V1.js (new) 2.22 kB 🔴 +2.22 kB 🔴 +871 B 🔴 +764 B
assets/useSubscriptionActions-PsQBLboZ.js (removed) 2.22 kB 🟢 -2.22 kB 🟢 -869 B 🟢 -763 B
assets/subscriptionCheckoutUtil-_yOaTEoX.js (new) 2.03 kB 🔴 +2.03 kB 🔴 +872 B 🔴 +765 B
assets/subscriptionCheckoutUtil-BfzgQN32.js (removed) 2.03 kB 🟢 -2.03 kB 🟢 -873 B 🟢 -771 B
assets/markdownRendererUtil-DM9z_tTX.js (new) 1.78 kB 🔴 +1.78 kB 🔴 +884 B 🔴 +776 B
assets/markdownRendererUtil-ivqHoiOs.js (removed) 1.78 kB 🟢 -1.78 kB 🟢 -884 B 🟢 -774 B
assets/useSubscriptionCredits-Cbi58kVP.js (removed) 1.39 kB 🟢 -1.39 kB 🟢 -600 B 🟢 -530 B
assets/useSubscriptionCredits-D3IBAqI1.js (new) 1.39 kB 🔴 +1.39 kB 🔴 +595 B 🔴 +519 B
assets/audioUtils-Cw23D2Nc.js (new) 970 B 🔴 +970 B 🔴 +546 B 🔴 +486 B
assets/audioUtils-zJfO32AE.js (removed) 970 B 🟢 -970 B 🟢 -550 B 🟢 -481 B
assets/tailwindUtil-BWBAZ7f9.js (new) 488 B 🔴 +488 B 🔴 +297 B 🔴 +270 B
assets/tailwindUtil-CJjrIEVR.js (removed) 488 B 🟢 -488 B 🟢 -295 B 🟢 -266 B
assets/useCurrentUser-C9GsivRH.js (new) 145 B 🔴 +145 B 🔴 +114 B 🔴 +101 B
assets/useCurrentUser-CoMc0tUD.js (removed) 145 B 🟢 -145 B 🟢 -114 B 🟢 -112 B
assets/_plugin-vue_export-helper-DuK_Fly3.js 467 B 467 B ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 10 added / 10 removed

Vendor & Third-Party — 10.7 MB (baseline 10.7 MB) • 🟢 -327 B

External libraries and shared vendor chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/vendor-other-jpGqhHNG.js (removed) 4.1 MB 🟢 -4.1 MB 🟢 -869 kB 🟢 -674 kB
assets/vendor-other-B3TsI6ya.js (new) 4.1 MB 🔴 +4.1 MB 🔴 +869 kB 🔴 +674 kB
assets/vendor-chart-DHGfk3hn.js 408 kB 408 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-primevue-4Jj8eU28.js 3.04 MB 3.04 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-reka-ui-aCG649nF.js 263 kB 263 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-three-CERwhPwK.js 1.83 MB 1.83 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-tiptap-BxrEVL6s.js 650 kB 650 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-vue-Dwii0E-t.js 13.6 kB 13.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-xterm-IX6P8SWv.js 398 kB 398 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 1 added / 1 removed

Other — 7.1 MB (baseline 7.1 MB) • 🟢 -2.76 kB

Bundles that do not match a named category

File Before After Δ Raw Δ Gzip Δ Brotli
assets/i18n-BlyhGDPa.js (removed) 500 kB 🟢 -500 kB 🟢 -96.5 kB 🟢 -71.8 kB
assets/i18n-BCYgaE08.js (new) 499 kB 🔴 +499 kB 🔴 +96.4 kB 🔴 +71.6 kB
assets/core-Z8ZvfqTE.js (removed) 180 kB 🟢 -180 kB 🟢 -43.3 kB 🟢 -36.2 kB
assets/core-CCxnJSkY.js (new) 180 kB 🔴 +180 kB 🔴 +43.3 kB 🔴 +36.2 kB
assets/main-D0g10ZKf.js (removed) 131 kB 🟢 -131 kB 🟢 -39.3 kB 🟢 -31.7 kB
assets/main-BWJjz1qs.js (new) 130 kB 🔴 +130 kB 🔴 +39.1 kB 🔴 +31.6 kB
assets/WidgetSelect-D1eH4a0u.js (removed) 52.2 kB 🟢 -52.2 kB 🟢 -11.5 kB 🟢 -10 kB
assets/WidgetSelect-CTRNyaFY.js (new) 51 kB 🔴 +51 kB 🔴 +11.2 kB 🔴 +9.8 kB
assets/Load3DControls-C2FHHSNE.js (new) 35.9 kB 🔴 +35.9 kB 🔴 +5.87 kB 🔴 +5.09 kB
assets/Load3DControls-XGz6NS-i.js (removed) 35.9 kB 🟢 -35.9 kB 🟢 -5.87 kB 🟢 -5.08 kB
assets/SubscriptionRequiredDialogContent-Dx6TlYGb.js (removed) 28.7 kB 🟢 -28.7 kB 🟢 -6.79 kB 🟢 -5.91 kB
assets/SubscriptionRequiredDialogContent-h8RLXKOR.js (new) 28.7 kB 🔴 +28.7 kB 🔴 +6.78 kB 🔴 +5.92 kB
assets/CurrentUserPopoverWorkspace-B1ESAw_6.js (removed) 22.2 kB 🟢 -22.2 kB 🟢 -4.99 kB 🟢 -4.42 kB
assets/CurrentUserPopoverWorkspace-CMIT1iKV.js (new) 22.2 kB 🔴 +22.2 kB 🔴 +4.99 kB 🔴 +4.43 kB
assets/Load3D-CUxV1CHN.js (new) 19.2 kB 🔴 +19.2 kB 🔴 +4.38 kB 🔴 +3.85 kB
assets/Load3D-DnSYPh6f.js (removed) 19.2 kB 🟢 -19.2 kB 🟢 -4.37 kB 🟢 -3.85 kB
assets/WidgetInputNumber-BgybV_3w.js (removed) 18.3 kB 🟢 -18.3 kB 🟢 -4.53 kB 🟢 -4.02 kB
assets/WidgetInputNumber-DbFthj1b.js (new) 18.3 kB 🔴 +18.3 kB 🔴 +4.53 kB 🔴 +4.03 kB
assets/WidgetRecordAudio-B65nB-Q6.js (removed) 18.3 kB 🟢 -18.3 kB 🟢 -4.97 kB 🟢 -4.43 kB
assets/WidgetRecordAudio-spzsi0UJ.js (new) 18.3 kB 🔴 +18.3 kB 🔴 +4.97 kB 🔴 +4.45 kB
assets/SubscriptionPanelContentWorkspace-CLcJ6p9-.js (removed) 18.2 kB 🟢 -18.2 kB 🟢 -4.47 kB 🟢 -3.9 kB
assets/SubscriptionPanelContentWorkspace-m0Jwvyo6.js (new) 18.2 kB 🔴 +18.2 kB 🔴 +4.47 kB 🔴 +3.9 kB
assets/WidgetImageCrop-CbLxxpv0.js (removed) 17.1 kB 🟢 -17.1 kB 🟢 -4.14 kB 🟢 -3.63 kB
assets/WidgetImageCrop-CoWMyVmK.js (new) 17.1 kB 🔴 +17.1 kB 🔴 +4.14 kB 🔴 +3.63 kB
assets/PanelTemplate-BnMv01L7.js (new) 16.2 kB 🔴 +16.2 kB 🔴 +5.45 kB 🔴 +4.8 kB
assets/PanelTemplate-DCV9TqAV.js (removed) 16.2 kB 🟢 -16.2 kB 🟢 -5.46 kB 🟢 -4.8 kB
assets/LazyImage-DHwPdKGO.js (removed) 14.1 kB 🟢 -14.1 kB 🟢 -4 kB 🟢 -3.54 kB
assets/LazyImage-ooHoQZNd.js (new) 14.1 kB 🔴 +14.1 kB 🔴 +4 kB 🔴 +3.54 kB
assets/AudioPreviewPlayer-DKSijW1v.js (removed) 10.8 kB 🟢 -10.8 kB 🟢 -2.98 kB 🟢 -2.65 kB
assets/AudioPreviewPlayer-DqYrdp0J.js (new) 10.8 kB 🔴 +10.8 kB 🔴 +2.97 kB 🔴 +2.66 kB
assets/InviteMemberDialogContent-DTXHuT7d.js (new) 8.36 kB 🔴 +8.36 kB 🔴 +2.51 kB 🔴 +2.17 kB
assets/InviteMemberDialogContent-mnYtOwjD.js (removed) 8.36 kB 🟢 -8.36 kB 🟢 -2.5 kB 🟢 -2.17 kB
assets/WidgetWithControl-BbmICMNV.js (removed) 8.07 kB 🟢 -8.07 kB 🟢 -2.68 kB 🟢 -2.41 kB
assets/WidgetWithControl-DD_wuuSd.js (new) 8.07 kB 🔴 +8.07 kB 🔴 +2.68 kB 🔴 +2.42 kB
assets/CreateWorkspaceDialogContent-D-h0R6KO.js (removed) 5.93 kB 🟢 -5.93 kB 🟢 -1.93 kB 🟢 -1.68 kB
assets/CreateWorkspaceDialogContent-DE5bDZbs.js (new) 5.93 kB 🔴 +5.93 kB 🔴 +1.92 kB 🔴 +1.68 kB
assets/EditWorkspaceDialogContent-BI3F8fJs.js (removed) 5.7 kB 🟢 -5.7 kB 🟢 -1.88 kB 🟢 -1.64 kB
assets/EditWorkspaceDialogContent-CG0yGSvy.js (new) 5.7 kB 🔴 +5.7 kB 🔴 +1.88 kB 🔴 +1.65 kB
assets/ValueControlPopover-Be0FfQ4s.js (removed) 5.17 kB 🟢 -5.17 kB 🟢 -1.68 kB 🟢 -1.49 kB
assets/ValueControlPopover-ekH65m5G.js (new) 5.17 kB 🔴 +5.17 kB 🔴 +1.69 kB 🔴 +1.5 kB
assets/DeleteWorkspaceDialogContent-BPYtRB7u.js (new) 4.59 kB 🔴 +4.59 kB 🔴 +1.56 kB 🔴 +1.35 kB
assets/DeleteWorkspaceDialogContent-CBG1qsbk.js (removed) 4.59 kB 🟢 -4.59 kB 🟢 -1.56 kB 🟢 -1.35 kB
assets/WidgetGalleria-DDD96zwa.js (removed) 4.57 kB 🟢 -4.57 kB 🟢 -1.57 kB 🟢 -1.42 kB
assets/WidgetGalleria-jm_gz6R2.js (new) 4.57 kB 🔴 +4.57 kB 🔴 +1.56 kB 🔴 +1.42 kB
assets/LeaveWorkspaceDialogContent-CWOO6jpb.js (removed) 4.41 kB 🟢 -4.41 kB 🟢 -1.5 kB 🟢 -1.31 kB
assets/LeaveWorkspaceDialogContent-DrbWiHT3.js (new) 4.41 kB 🔴 +4.41 kB 🔴 +1.5 kB 🔴 +1.31 kB
assets/RemoveMemberDialogContent-679OSiFt.js (removed) 4.38 kB 🟢 -4.38 kB 🟢 -1.46 kB 🟢 -1.27 kB
assets/RemoveMemberDialogContent-DDXIH0hd.js (new) 4.38 kB 🔴 +4.38 kB 🔴 +1.45 kB 🔴 +1.27 kB
assets/RevokeInviteDialogContent-8_MvwB3e.js (new) 4.29 kB 🔴 +4.29 kB 🔴 +1.47 kB 🔴 +1.29 kB
assets/RevokeInviteDialogContent-CIFb45pW.js (removed) 4.29 kB 🟢 -4.29 kB 🟢 -1.47 kB 🟢 -1.29 kB
assets/Slider-C87scEAV.js (new) 4.21 kB 🔴 +4.21 kB 🔴 +1.52 kB 🔴 +1.34 kB
assets/Slider-D4lsf6Ob.js (removed) 4.21 kB 🟢 -4.21 kB 🟢 -1.52 kB 🟢 -1.34 kB
assets/WidgetTextarea-BXRA46js.js (new) 3.87 kB 🔴 +3.87 kB 🔴 +1.44 kB 🔴 +1.26 kB
assets/WidgetTextarea-CV3BoahN.js (removed) 3.87 kB 🟢 -3.87 kB 🟢 -1.43 kB 🟢 -1.27 kB
assets/WidgetImageCompare-A6pZMGtc.js (removed) 3.79 kB 🟢 -3.79 kB 🟢 -1.28 kB 🟢 -1.12 kB
assets/WidgetImageCompare-DnZ84Utk.js (new) 3.79 kB 🔴 +3.79 kB 🔴 +1.28 kB 🔴 +1.12 kB
assets/WidgetColorPicker-BEfQQjV6.js (new) 3.71 kB 🔴 +3.71 kB 🔴 +1.38 kB 🔴 +1.25 kB
assets/WidgetColorPicker-BxNqMlFv.js (removed) 3.71 kB 🟢 -3.71 kB 🟢 -1.38 kB 🟢 -1.25 kB
assets/WidgetMarkdown-3U-WuCE_.js (new) 3.49 kB 🔴 +3.49 kB 🔴 +1.32 kB 🔴 +1.16 kB
assets/WidgetMarkdown-a8bZhyc5.js (removed) 3.49 kB 🟢 -3.49 kB 🟢 -1.32 kB 🟢 -1.16 kB
assets/WidgetToggleSwitch-DYS14Ar3.js (new) 3.26 kB 🔴 +3.26 kB 🔴 +1.23 kB 🔴 +1.12 kB
assets/WidgetToggleSwitch-ZdaYkxkD.js (removed) 3.26 kB 🟢 -3.26 kB 🟢 -1.23 kB 🟢 -1.13 kB
assets/GlobalToast-BO_hO5Z7.js (removed) 3.05 kB 🟢 -3.05 kB 🟢 -1.1 kB 🟢 -944 B
assets/GlobalToast-D4FVI1Vr.js (new) 3.05 kB 🔴 +3.05 kB 🔴 +1.1 kB 🔴 +939 B
assets/SubscribeToRun-Ditq3W-_.js (new) 2.96 kB 🔴 +2.96 kB 🔴 +1.15 kB 🔴 +1.01 kB
assets/SubscribeToRun-ePJMYJ0N.js (removed) 2.96 kB 🟢 -2.96 kB 🟢 -1.16 kB 🟢 -1.01 kB
assets/cloudSessionCookie-21zw5-7V.js (removed) 2.94 kB 🟢 -2.94 kB 🟢 -933 B 🟢 -802 B
assets/cloudSessionCookie-CTz9ljaw.js (new) 2.94 kB 🔴 +2.94 kB 🔴 +927 B 🔴 +801 B
assets/WidgetLayoutField-BHrU_4qY.js (new) 2.7 kB 🔴 +2.7 kB 🔴 +1.03 kB 🔴 +907 B
assets/WidgetLayoutField-MDImyvc3.js (removed) 2.7 kB 🟢 -2.7 kB 🟢 -1.03 kB 🟢 -910 B
assets/WidgetInputText-DSMUKRnt.js (removed) 2.58 kB 🟢 -2.58 kB 🟢 -1.01 kB 🟢 -913 B
assets/WidgetInputText-WCHoBOIV.js (new) 2.58 kB 🔴 +2.58 kB 🔴 +1.01 kB 🔴 +954 B
assets/BaseViewTemplate-COh2ik87.js (removed) 2.42 kB 🟢 -2.42 kB 🟢 -1.04 kB 🟢 -937 B
assets/BaseViewTemplate-NHFp5h7Z.js (new) 2.42 kB 🔴 +2.42 kB 🔴 +1.04 kB 🔴 +943 B
assets/MediaImageTop-Bqe7yvm_.js (removed) 2.34 kB 🟢 -2.34 kB 🟢 -1.01 kB 🟢 -873 B
assets/MediaImageTop-D5feRGXX.js (new) 2.34 kB 🔴 +2.34 kB 🔴 +1.01 kB 🔴 +875 B
assets/CloudRunButtonWrapper-Rh-izSFM.js (new) 1.79 kB 🔴 +1.79 kB 🔴 +643 B 🔴 +567 B
assets/CloudRunButtonWrapper-YwaQwIDV.js (removed) 1.79 kB 🟢 -1.79 kB 🟢 -646 B 🟢 -565 B
assets/cloudBadges-D3XBEzB6.js (new) 1.08 kB 🔴 +1.08 kB 🔴 +536 B 🔴 +478 B
assets/cloudBadges-Xr_xyr7M.js (removed) 1.08 kB 🟢 -1.08 kB 🟢 -536 B 🟢 -480 B
assets/graphHasMissingNodes-C86xvV6Q.js (new) 1.06 kB 🔴 +1.06 kB 🔴 +463 B 🔴 +409 B
assets/graphHasMissingNodes-DYu8Kr8j.js (removed) 1.06 kB 🟢 -1.06 kB 🟢 -462 B 🟢 -415 B
assets/cloudSubscription-BfyqNq3H.js (new) 976 B 🔴 +976 B 🔴 +464 B 🔴 +399 B
assets/cloudSubscription-DuXSC9xR.js (removed) 976 B 🟢 -976 B 🟢 -466 B 🟢 -403 B
assets/nightlyBadges-B0qZstsr.js (removed) 595 B 🟢 -595 B 🟢 -355 B 🟢 -308 B
assets/nightlyBadges-J35o575W.js (new) 595 B 🔴 +595 B 🔴 +356 B 🔴 +308 B
assets/SubscriptionPanelContentWorkspace-CXYw6dnP.js (new) 266 B 🔴 +266 B 🔴 +136 B 🔴 +123 B
assets/SubscriptionPanelContentWorkspace-XpfhxKzP.js (removed) 266 B 🟢 -266 B 🟢 -136 B 🟢 -119 B
assets/i18n-Bk40SxqN.js (new) 188 B 🔴 +188 B 🔴 +150 B 🔴 +130 B
assets/i18n-byadgsvD.js (removed) 188 B 🟢 -188 B 🟢 -151 B 🟢 -129 B
assets/WidgetInputNumber-B_C5rngO.js (new) 186 B 🔴 +186 B 🔴 +119 B 🔴 +109 B
assets/WidgetInputNumber-BG4U_5uz.js (removed) 186 B 🟢 -186 B 🟢 -119 B 🟢 -111 B
assets/WidgetLegacy-Dpg524rF.js (new) 164 B 🔴 +164 B 🔴 +125 B 🔴 +111 B
assets/WidgetLegacy-eXIyydFn.js (removed) 164 B 🟢 -164 B 🟢 -125 B 🟢 -104 B
assets/mixpanel.module-CC2-PIpB.js (removed) 143 B 🟢 -143 B 🟢 -125 B 🟢 -106 B
assets/mixpanel.module-DLR992B1.js (new) 143 B 🔴 +143 B 🔴 +125 B 🔴 +107 B
assets/Load3D-C2dOdehw.js (new) 131 B 🔴 +131 B 🔴 +107 B 🔴 +111 B
assets/Load3D-e40Iezpt.js (removed) 131 B 🟢 -131 B 🟢 -107 B 🟢 -110 B
assets/auto-DWs2ctGL.js 1.73 kB 1.73 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BEw5ErI4.js 18.5 kB 18.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BGeHkplA.js 17.9 kB 17.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BV0l36Iz.js 17.2 kB 17.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-C_Y3D6Cn.js 17.8 kB 17.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-C6piRza5.js 19.3 kB 19.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-Cf8Zq1td.js 18.8 kB 18.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CiziP3Xs.js 18 kB 18 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-D1595tOr.js 19.3 kB 19.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-DXauvccL.js 20.6 kB 20.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-P5QCEfZc.js 18 kB 18 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-WbYP_D61.js 17 kB 17 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BHtk4Fg_.js 174 kB 174 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BMSlgLcp.js 155 kB 155 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BQCWi9e4.js 112 kB 112 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CJicmTR7.js 113 kB 113 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CNOkBy-u.js 126 kB 126 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CySb1R5_.js 151 kB 151 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DMUPIFMF.js 133 kB 133 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DpsGU4si.js 126 kB 126 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-Dz6IPJXM.js 144 kB 144 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-lrEzMywH.js 128 kB 128 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/Media3DTop-DUmUhXD6.js 2.38 kB 2.38 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaAudioTop-CD66_Mw_.js 2 kB 2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaVideoTop-De3MzVmp.js 2.82 kB 2.82 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-A7pvB7zM.js 370 kB 370 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-BIVjUijC.js 345 kB 345 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-Chkn0HaI.js 343 kB 343 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CK_6GHao.js 452 kB 452 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CToVAwnT.js 373 kB 373 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DDabdWgx.js 417 kB 417 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DgvJyE3d.js 386 kB 386 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DjxaeFt_.js 416 kB 416 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DslnWEGg.js 377 kB 377 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-EPAM3kwk.js 373 kB 373 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-NrulhNyH.js 366 kB 366 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/OBJLoader2WorkerModule-DTMpvldF.js 109 kB 109 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/previousFullPath-CmezY7As.js 838 B 838 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/rolldown-runtime-cVp-94Rc.js 1.96 kB 1.96 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/widget-BJiJuR5i.js 518 B 518 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetBoundingBox-CUtab2CB.js 4.71 kB 4.71 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetBoundingBox-D79nBMxa.js 186 B 186 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetChart-CiXfBVBH.js 2.79 kB 2.79 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/widgetPropFilter-ERx8czR8.js 1.31 kB 1.31 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/widgetTypes-KPj-zM0O.js 573 B 573 B ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 49 added / 49 removed

@AustinMroz
Copy link
Collaborator

Conceptually, I think the template search should use be a debounce and have a higher delay (100-150).

But 50ms throttled feels much better than 50ms debounced and appears to be better than the proposed 300ms debounced of this PR, too.

I went ahead and did some digging myself since the circumstances were frustrating to me. WorkflowTemplateSelectorDialog is watching and resetting pagination on many things it should not be, including the raw searchQuery. Since pagination is computed from filteredTemplates, I'm unsure if the watch or resetPagination call are needed at all.

@kaili-yang
Copy link
Contributor Author

kaili-yang commented Jan 28, 2026

The problem might bewatch searchQuery in the src/components/custom/widget/WorkflowTemplateSelectorDialog.vue.

Every time the user presses a key, immediately hard-reset the list (templateListKey++) and reset pagination.
This invalidates the entire purpose of Debouncing/Throttling. Even if your search logic was delayed, your UI re-render logic was instant.

I suggest to try the following approach. Logically, this ensures the expensive re-render happens only once (after the 300ms delay), rather than 10 times while you type "hello world".

image

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@src/composables/useTemplateFiltering.ts`:
- Line 1: Replace the broken refThrottled usage by creating a debounced search
ref and using a 300ms delay: import refDebounced from '@vueuse/core' (or add
refDebounced to the existing import) and replace the refThrottled(searchQuery,
50) call with refDebounced(searchQuery, 300); then update
WorkflowTemplateSelectorDialog.vue so its watcher listens to the debounced
search ref (or uses the same 300ms debounced value) instead of the raw
searchQuery to avoid calling resetPagination() and incrementing
templateListKey.value++ on every keystroke — keep references to the symbols
searchQuery, refDebounced/refThrottled, resetPagination, and templateListKey
when making these changes.

@kaili-yang
Copy link
Contributor Author

The performance issue was NOT the search algo, but the UI Watcher on searchQuery. It forced the entire list to re-render on every single keystroke, causing the freeze.
With that bug present, throttle at least updated the results during the freeze, creating an illusion of responsiveness. debounce just froze with old data.
Now that I've removed searchQuery from the watcher.Debounce is definitely better than 'throttled'. It ensures zero re-renders while typing, giving the smoothest possible search experience.

@AustinMroz AustinMroz added needs-backport Fix/change that needs to be cherry-picked to the current feature freeze branch core/1.38 Backport PRs for core 1.38 cloud/1.38 Backport PRs for cloud 1.38 labels Jan 30, 2026
@AustinMroz AustinMroz merged commit d784d49 into Comfy-Org:main Jan 30, 2026
29 checks passed
github-actions bot pushed a commit that referenced this pull request Jan 30, 2026
## Summary

Improve Template search input performance issue #8134
This was caused by the search logic running too frequently (throttled at
50ms), causing the main thread to block on every few keystrokes.


## Changes
Use debouncing that wait until you stop typing for a specific time
(300ms) before running.
It makes the searching function more smoothly.

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8343-Improve-template-search-input-performance-issue-2f56d73d36508144bdf9fa5e0cd76818)
by [Unito](https://www.unito.io)

---------

Co-authored-by: Alexander Brown <drjkl@comfy.org>
github-actions bot pushed a commit that referenced this pull request Jan 30, 2026
## Summary

Improve Template search input performance issue #8134
This was caused by the search logic running too frequently (throttled at
50ms), causing the main thread to block on every few keystrokes.


## Changes
Use debouncing that wait until you stop typing for a specific time
(300ms) before running.
It makes the searching function more smoothly.

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8343-Improve-template-search-input-performance-issue-2f56d73d36508144bdf9fa5e0cd76818)
by [Unito](https://www.unito.io)

---------

Co-authored-by: Alexander Brown <drjkl@comfy.org>
@comfy-pr-bot
Copy link
Member

@kaili-yang Successfully backported to #8471

@comfy-pr-bot
Copy link
Member

@kaili-yang Successfully backported to #8472

@github-actions github-actions bot removed the needs-backport Fix/change that needs to be cherry-picked to the current feature freeze branch label Jan 30, 2026
AustinMroz pushed a commit that referenced this pull request Jan 30, 2026
…#8472)

Backport of #8343 to `cloud/1.38`

Automatically created by backport workflow.

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8472-backport-cloud-1-38-Improve-template-search-input-performance-issue-2f86d73d3650815ba8dfef1ea135c4a3)
by [Unito](https://www.unito.io)

Co-authored-by: Kelly Yang <124ykl@gmail.com>
Co-authored-by: Alexander Brown <drjkl@comfy.org>
AustinMroz pushed a commit that referenced this pull request Jan 30, 2026
…8471)

Backport of #8343 to `core/1.38`

Automatically created by backport workflow.

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8471-backport-core-1-38-Improve-template-search-input-performance-issue-2f86d73d365081e3afbff8779ea0ebe0)
by [Unito](https://www.unito.io)

Co-authored-by: Kelly Yang <124ykl@gmail.com>
Co-authored-by: Alexander Brown <drjkl@comfy.org>
snomiao pushed a commit that referenced this pull request Jan 30, 2026
## Summary

Improve Template search input performance issue #8134
This was caused by the search logic running too frequently (throttled at
50ms), causing the main thread to block on every few keystrokes.


## Changes
Use debouncing that wait until you stop typing for a specific time
(300ms) before running.
It makes the searching function more smoothly.

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8343-Improve-template-search-input-performance-issue-2f56d73d36508144bdf9fa5e0cd76818)
by [Unito](https://www.unito.io)

---------

Co-authored-by: Alexander Brown <drjkl@comfy.org>
DrJKL added a commit that referenced this pull request Jan 31, 2026
## Summary

Improve Template search input performance issue #8134
This was caused by the search logic running too frequently (throttled at
50ms), causing the main thread to block on every few keystrokes.


## Changes
Use debouncing that wait until you stop typing for a specific time
(300ms) before running.
It makes the searching function more smoothly.

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8343-Improve-template-search-input-performance-issue-2f56d73d36508144bdf9fa5e0cd76818)
by [Unito](https://www.unito.io)

---------

Co-authored-by: Alexander Brown <drjkl@comfy.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cloud/1.38 Backport PRs for cloud 1.38 core/1.38 Backport PRs for core 1.38 size:XS This PR changes 0-9 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants