mirror of
https://github.com/hoppscotch/hoppscotch.git
synced 2026-04-26 01:06:00 +03:00
[PR #5747] [MERGED] perf(desktop): cache store path resolution #5333
Labels
No labels
CodeDay
a11y
browser limited
bug
bug fix
cli
core
critical
design
desktop
discussion
docker
documentation
duplicate
enterprise
feature
feature
fosshack
future
good first issue
hacktoberfest
help wanted
i18n
invalid
major
minor
need information
need testing
not applicable to hoppscotch
not reproducible
pull-request
question
refactor
resolved
sandbox
self-host
spam
stale
testmu
wip
wont fix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/hoppscotch#5333
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/hoppscotch/hoppscotch/pull/5747
Author: @CuriousCorrelation
Created: 1/5/2026
Status: ✅ Merged
Merged: 1/6/2026
Merged by: @jamesgeorge007
Base:
patch← Head:feat-desktop-cloud-cached-ipc-call📝 Commits (2)
e9b55f7perf(desktop): cache store path resolution899feeafix(desktop): revert bump to fix screen freeze📊 Changes
8 files changed (+2181 additions, -1866 deletions)
View changed files
📝
packages/hoppscotch-common/src/components.d.ts(+0 -3)📝
packages/hoppscotch-common/src/kernel/store.ts(+8 -3)📝
packages/hoppscotch-desktop/package.json(+19 -18)📝
packages/hoppscotch-desktop/src-tauri/Cargo.lock(+1294 -1217)📝
packages/hoppscotch-desktop/src-tauri/Cargo.toml(+18 -18)📝
packages/hoppscotch-desktop/src/components.d.ts(+1 -4)📝
packages/hoppscotch-selfhost-web/src/kernel/store.ts(+10 -5)📝
pnpm-lock.yaml(+831 -598)📄 Description
A performance improvement that also fixes the white screen crash on
macOS desktop app that occurs every ~2 minutes when logged in.
Closes FE-1110
Closes #5716
Closes #5722
Closes #5730
Closes #5739
The issue was introduced in v25.11.0 when store path resolution changed
from using a constant to dynamically computing the path on every
operation. Each
Store.set(),Store.get(), etc. now callsgetStorePath()which does:The
await getStoreDir()- IPC call to RustThe
await join(storeDir, STORE_PATH)- another IPC callWhen you make a request, multiple stores update (history, tabs, etc.)
and each update triggers these 2 extra IPC calls. The cascade overwhelms
the main thread, Firestore SDK thinks the page is unloading and sends a
beacon, then the webview fails to recover and goes white.
On v25.10.1 this worked because store operations used a constant path
with no IPC overhead per operation.
What's changed
Added a cached store path that's computed once on first access:
Testing
On macOS with desktop app v25.12.0:
Summary by cubic
Cache the store path so it’s resolved once instead of on every store operation. This removes extra IPC calls, fixes the macOS desktop white‑screen crash, and improves performance. Addresses Linear FE-1110.
Bug Fixes
Dependencies
Written for commit
899feea37d. Summary will update on new commits.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.