api-client/packages/hoppscotch-desktop
Shreyas 72ff950d91
fix(relay): avoid override with header passthrough (#4931)
The current implementation causes duplicate `Content-Type` headers when users
override headers in the UI or use OAuth2 authentication with the agent.
Web servers receive multiple `Content-Type` headers which causes
undefined behavior and 400 errors for backends that don't accept duplicate headers.

This also fixes inconsistent behavior when overriding the `Content-Type` header
with custom values (e.g., `application/json;v=2`).

While HTTP/1.1 headers are case-insensitive per RFC 7230, inconsistent handling
across server implementations can treat differently-cased variations (e.g.,
"Content-Type" vs "content-type") as distinct headers. HTTP/2 (RFC 7540) mandates
converting all header field names to lowercase, which would prevent this issue.

This patch removes the automatic content-type header insertion, allowing user-defined
headers to take precedence without duplication. The is a temporary
workaround until we implement a HTTP/2-compliant solution with proper normalization.

This was implemented initially to support moving lower level handling
towards the kernel, although since the larger refactor has been slightly
deferred in favor of stability, this change is suitable for current
state.

This will be revisited when we implement HTTP/2 compliant header handling in the
kernel layer as part of our upcoming kernel efforts.

Use the following request to test this out on Desktop app and Agent and
override `Content-Type` header to `application/json;=v2`:

```
curl --request POST \
  --url 'https://echo.qubit.codes/?qp=1' \
  --header 'Content-Type: application/json;v=2' \
  --data '{ "test-key": "test-value" }'
```
2025-03-25 16:34:27 +05:30
..
crates/webapp-bundler feat: platform independent core and the new desktop app (#4684) 2025-02-28 00:01:25 +05:30
plugin-workspace fix(relay): avoid override with header passthrough (#4931) 2025-03-25 16:34:27 +05:30
public feat: platform independent core and the new desktop app (#4684) 2025-02-28 00:01:25 +05:30
src fix: resolve typos across packages (#4867) 2025-03-12 13:53:08 +05:30
src-tauri fix(relay): avoid override with header passthrough (#4931) 2025-03-25 16:34:27 +05:30
.gitignore feat: platform independent core and the new desktop app (#4684) 2025-02-28 00:01:25 +05:30
connection-to-self-hosted-instance.png docs(desktop): update README (#4864) 2025-03-10 22:46:15 +05:30
desktop-app.png docs(desktop): update README (#4864) 2025-03-10 22:46:15 +05:30
index.html feat: platform independent core and the new desktop app (#4684) 2025-02-28 00:01:25 +05:30
package.json chore: bump version to 2025.2.3 2025-03-19 14:41:08 +05:30
postcss.config.js feat: platform independent core and the new desktop app (#4684) 2025-02-28 00:01:25 +05:30
README.md docs(desktop): include windows specific caveats (#4884) 2025-03-13 16:25:25 +05:30
tailwind.config.ts feat: platform independent core and the new desktop app (#4684) 2025-02-28 00:01:25 +05:30
tsconfig.json feat: platform independent core and the new desktop app (#4684) 2025-02-28 00:01:25 +05:30
tsconfig.node.json feat: platform independent core and the new desktop app (#4684) 2025-02-28 00:01:25 +05:30
vite.config.ts fix(desktop): cache size for larger bundles, dev server, lints (#4796) 2025-02-28 22:18:51 +05:30

Hoppscotch Desktop App ALPHA

Hoppscotch Desktop

Download | Official Docs


Hoppscotch Desktop App is a cross-platform Hoppscotch app built with Tauri V2

Hoppscotch Desktop App

Now with the ability to connect to Self-Hosted instances

Hoppscotch Desktop App

Install Hoppscotch Desktop App

  1. Download the latest version of Hoppscotch Desktop App
  2. Open the downloaded file.
  3. Follow the on-screen instructions to install Hoppscotch Desktop App.
  4. Open Hoppscotch Desktop App.

Access Hoppscotch

Hoppscotch Cloud Edition for Individuals

Access Hoppscotch Cloud Edition from Hoppscotch Desktop App:

  1. Open Hoppscotch Desktop App.
  2. Click the Hoppscotch logo in the top-left corner.
  3. Click "HOPPSCOTCH CLOUD".
  4. Sign in with your Hoppscotch Cloud account to access your workspaces and collections.

Hoppscotch Self-Hosted Edition for Community

Note

To enable desktop app support for your self-hosted Hoppscotch instance, make sure to update the WHITELISTED_ORIGINS environment variable in your .env file with your deployment URL.

e.g. to allow connection to https://hoppscotch.mydomain.com you need to add app://hoppscotch_mydomain_com (MacOS, Linux) and http://app.hoppscotch_mydomain_com (Windows) to the WHITELISTED_ORIGINS environment variable.

WHITELISTED_ORIGINS=...existing_origins,app://hoppscotch_mydomain_com,http://app.hoppscotch_mydomain_com

Add your self-hosted Hoppscotch Community Edition instance to Hoppscotch Desktop App:

  1. Open Hoppscotch Desktop App.
  2. Click the Hoppscotch logo in the top-left corner.
  3. Click "Add an instance".
  4. Enter the URL of your self-hosted Hoppscotch instance.
  5. Click "Connect".

Tip

You can also self-host Hoppscotch Desktop App.

  1. Install and generate the selfhost web app:
    cd ../hoppscotch-selfhost-web
    pnpm install
    pnpm generate
    
  2. Build the webapp bundler:
    cd crates/webapp-bundler
    cargo build --release
    
  3. Bundle the web app:
    cd target/release
    ./webapp-bundler --input [path-to-dist-directory] --output [path-to-hoppscotch-desktop]/bundle.zip --manifest [path-to-hoppscotch-desktop]/manifest.json
    
  4. Run the Tauri development server:
    cd src-tauri
    pnpm tauri dev
    
    or the following for production build:
    cd src-tauri
    pnpm tauri dev
    

Note

[path-to-dist-directory] should point to the dist directory created by the pnpm generate command in step 1.

Hoppscotch Self-Hosted Edition for Enterprise

Note

To enable desktop app support for your self-hosted Hoppscotch instance, make sure to update the WHITELISTED_ORIGINS environment variable in your .env file with your deployment URL.

e.g. to allow connection to https://hoppscotch.mydomain.com you need to add app://hoppscotch_mydomain_com (MacOS, Linux) and http://app.hoppscotch_mydomain_com (Windows) to the WHITELISTED_ORIGINS environment variable.

WHITELISTED_ORIGINS=...existing_origins,app://hoppscotch_mydomain_com,http://app.hoppscotch_mydomain_com

Add your self-hosted Hoppscotch Enterprise Edition instance to Hoppscotch Desktop App:

  1. Open Hoppscotch Desktop App.
  2. Click the Hoppscotch logo in the top-left corner.
  3. Click "Add an instance".
  4. Enter the URL of your self-hosted Hoppscotch instance.
  5. Click "Connect".

Note

For docker setup, the desktop app uses a server at port 3200, and it is part of the frontend container:

 docker run -p 3000:3000 -p 3200:3200 hoppscotch/hoppscotch-frontend

Once the container is live, you can enter [your-ip]:3200 or simply the base address of the instance if you are using subpath access.