Skip to content

[Bug]: Desktop app shows white screen instead of UI #3080

Description

@bmangust

Before submitting

  • I searched existing issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.

Area

apps/desktop

Steps to reproduce

  1. Install app with brew install --cask t3-code
  2. Run app from /Applications folder

Tried to move ~/.t3 folder - same behaviour.
Added logs, network and performance dumps.

Checked connection with curl - it's alive.
curl telnet://127.0.0.1:3773 -v

  • Trying 127.0.0.1:3773...
  • Connected to 127.0.0.1 (127.0.0.1) port 3773

Expected behavior

App starts normally

Actual behavior

  1. App is starting, but UI is not loading (just white screen).
  2. In-browser app starts normally with npx t3@latest

Impact

Blocks work completely

Version or commit

0.0.27 (a3422a9)

Environment

MacBook Air M1 2020, macOS Sequoia Version 15.2 (24C101), node v22.12.0, bun 1.3.5

Logs or stack traces

➜  logs pwd
/Users/maks/.t3/userdata/logs
➜  logs grep ERROR -rnwi .
./server-child.log:8:{"message":"backend child process output","level":"ERROR","timestamp":"2026-06-14T13:37:05.747Z","annotations":{"component":"desktop-backend-child","runId":"936dad05f687","stream":"stderr","text":"(node:15520) [DEP0180] DeprecationWarning: fs.Stats constructor is deprecated.\n(Use `T3 Code (Alpha) --trace-deprecation ...` to show where the warning was created)\n"},"spans":{},"fiberId":"#backend-child"}

./desktop.trace.ndjson:67:{"type":"effect-span","name":"http.client GET","traceId":"230c3c0c5dfc763351137f6e1645938c","spanId":"e0ffef3620b926d4","parentSpanId":"693eb3a64680f7e1","sampled":true,"kind":"client","startTimeUnixNano":"1781444213383865583","endTimeUnixNano":"1781444213386984374","durationMs":3.118791,"attributes":{"http.request.method":"GET","server.address":"http://127.0.0.1:3773","server.port":3773,"url.full":"http://127.0.0.1:3773/.well-known/t3/environment","url.path":"/.well-known/t3/environment","url.scheme":"http"},"events":[],"links":[],"exit":{"_tag":"Failure","cause":"HttpClientError: Transport error (GET http://127.0.0.1:3773/.well-known/t3/environment)\n    at catch (file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/node_modules/@effect/platform-node/dist/NodeHttpClient.js:163:21)\n    at file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/node_modules/effect/dist/internal/effect.js:699:103\n    at ~effect/Utils/internal (file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/node_modules/effect/dist/Utils.js:79:12)\n    at file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/node_modules/effect/dist/internal/effect.js:699:84\n    at process.processTicksAndRejections (node:internal/process/task_queues:104:5)\n    at http.client GET\n    at desktop.backendManager.waitForHttpReady (Alpha)\n    at desktop.backendManager.waitForHttpReady (definition) (/Applications/T3 Code (Alpha).app/Contents/Resources/app.asar/apps/desktop/dist-electron/main.cjs:11447:40)\n    at runBackendProcess (/Applications/T3 Code (Alpha).app/Contents/Resources/app.asar/apps/desktop/dist-electron/main.cjs:11587:19)\n    at runBackendProcess (definition) (/Applications/T3 Code (Alpha).app/Contents/Resources/app.asar/apps/desktop/dist-electron/main.cjs:11467:41)\n    at desktop.backendManager.start (Alpha)\n    at desktop.bootstrap (/Applications/T3 Code (Alpha).app/Contents/Resources/app.asar/apps/desktop/dist-electron/main.cjs:12834:23)\n    at desktop.startup (/Applications/T3 Code (Alpha).app/Contents/Resources/app.asar/apps/desktop/dist-electron/main.cjs:12862:23)\n    at desktop.app (/Applications/T3 Code (Alpha).app/Contents/Resources/app.asar/apps/desktop/dist-electron/main.cjs:12878:24) {\n  [cause]: Error: connect ECONNREFUSED 127.0.0.1:3773\n      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1705:16)\n}"}}
...
./server.trace.ndjson:205:{"type":"effect-span","name":"runClaudeCommand","traceId":"44268f6226c0d4244da2de086f9d7590","spanId":"670eded3e9b3ff96","parentSpanId":"6d97aac92af927b7","sampled":true,"kind":"internal","startTimeUnixNano":"1781444214645194041","endTimeUnixNano":"1781444214648677458","durationMs":3.483417,"attributes":{},"events":[],"links":[],"exit":{"_tag":"Failure","cause":"PlatformError: NotFound: ChildProcess.spawn (claude --version)\n    at Module.systemError (file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/node_modules/effect/dist/PlatformError.js:166:39)\n    at file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/node_modules/@effect/platform-node-shared/dist/internal/utils.js:28:24\n    at toPlatformError (file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js:25:54)\n    at ChildProcess.<anonymous> (file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js:230:26)\n    at ChildProcess.emit (node:events:509:28)\n    at ChildProcess._handle.onexit (node:internal/child_process:293:12)\n    at onErrorNT (node:internal/child_process:508:16)\n    at process.processTicksAndRejections (node:internal/process/task_queues:90:21)\n    at runClaudeCommand (Alpha)\n    at runClaudeCommand (definition) (Alpha)\n    at checkClaudeProviderStatus (file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/apps/server/dist/bin.mjs:35850:25)\n    at checkClaudeProviderStatus (definition) (Alpha)\n    at applySnapshot (file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/apps/server/dist/bin.mjs:35730:83)\n    at applySnapshot (definition) (Alpha)\n    at makeManagedServerProvider (file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/apps/server/dist/bin.mjs:35851:27)\n    at makeManagedServerProvider (definition) (Alpha) {\n  [cause]: Error: spawn claude ENOENT\n      at ChildProcess._handle.onexit (node:internal/child_process:287:19)\n      at onErrorNT (node:internal/child_process:508:16)\n      at process.processTicksAndRejections (node:internal/process/task_queues:90:21)\n}"}}
./server.trace.ndjson:264:{"type":"effect-span","name":"runClaudeCommand","traceId":"ad8432a98588f17ddb2526adb5982f4b","spanId":"ed9a25642470302b","parentSpanId":"48b1d65c04f32f77","sampled":true,"kind":"internal","startTimeUnixNano":"1781444219787193375","endTimeUnixNano":"1781444219792727708","durationMs":5.534333,"attributes":{},"events":[],"links":[],"exit":{"_tag":"Failure","cause":"PlatformError: NotFound: ChildProcess.spawn (claude --version)\n    at Module.systemError (file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/node_modules/effect/dist/PlatformError.js:166:39)\n    at file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/node_modules/@effect/platform-node-shared/dist/internal/utils.js:28:24\n    at toPlatformError (file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js:25:54)\n    at ChildProcess.<anonymous> (file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js:230:26)\n    at ChildProcess.emit (node:events:509:28)\n    at ChildProcess._handle.onexit (node:internal/child_process:293:12)\n    at onErrorNT (node:internal/child_process:508:16)\n    at process.processTicksAndRejections (node:internal/process/task_queues:90:21)\n    at runClaudeCommand (Alpha)\n    at runClaudeCommand (definition) (Alpha)\n    at checkClaudeProviderStatus (file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/apps/server/dist/bin.mjs:35850:25)\n    at checkClaudeProviderStatus (definition) (Alpha)\n    at applySnapshot (file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/apps/server/dist/bin.mjs:35730:83)\n    at applySnapshot (definition) (Alpha)\n    at refreshSnapshot (Alpha)\n    at refreshSnapshot (definition) (Alpha)\n    at refreshOneSource (file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/apps/server/dist/bin.mjs:69224:55)\n    at refreshOneSource (definition) (file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/apps/server/dist/bin.mjs:69157:34) {\n  [cause]: Error: spawn claude ENOENT\n      at ChildProcess._handle.onexit (node:internal/child_process:287:19)\n      at onErrorNT (node:internal/child_process:508:16)\n      at process.processTicksAndRejections (node:internal/process/task_queues:90:21)\n}"}}
./server.trace.ndjson:550:{"type":"effect-span","name":"runClaudeCommand","traceId":"44268f6226c0d4244da2de086f9d7590","spanId":"bcd320400fc9f8c2","parentSpanId":"aa477259085a60e4","sampled":true,"kind":"internal","startTimeUnixNano":"1781444514647190666","endTimeUnixNano":"1781444514651114708","durationMs":3.924042,"attributes":{},"events":[],"links":[],"exit":{"_tag":"Failure","cause":"PlatformError: NotFound: ChildProcess.spawn (claude --version)\n    at Module.systemError (file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/node_modules/effect/dist/PlatformError.js:166:39)\n    at file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/node_modules/@effect/platform-node-shared/dist/internal/utils.js:28:24\n    at toPlatformError (file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js:25:54)\n    at ChildProcess.<anonymous> (file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js:230:26)\n    at ChildProcess.emit (node:events:509:28)\n    at ChildProcess._handle.onexit (node:internal/child_process:293:12)\n    at onErrorNT (node:internal/child_process:508:16)\n    at process.processTicksAndRejections (node:internal/process/task_queues:90:21)\n    at runClaudeCommand (Alpha)\n    at runClaudeCommand (definition) (Alpha)\n    at checkClaudeProviderStatus (file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/apps/server/dist/bin.mjs:35850:25)\n    at checkClaudeProviderStatus (definition) (Alpha)\n    at applySnapshot (file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/apps/server/dist/bin.mjs:35730:83)\n    at applySnapshot (definition) (Alpha)\n    at refreshSnapshot (Alpha)\n    at refreshSnapshot (definition) (Alpha)\n    at makeManagedServerProvider (file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/apps/server/dist/bin.mjs:35851:27)\n    at makeManagedServerProvider (definition) (Alpha) {\n  [cause]: Error: spawn claude ENOENT\n      at ChildProcess._handle.onexit (node:internal/child_process:287:19)\n      at onErrorNT (node:internal/child_process:508:16)\n      at process.processTicksAndRejections (node:internal/process/task_queues:90:21)\n}"}}
./server.trace.ndjson:700:{"type":"effect-span","name":"runClaudeCommand","traceId":"44268f6226c0d4244da2de086f9d7590","spanId":"05ca7af5acaf1a1b","parentSpanId":"443295f522e19a4c","sampled":true,"kind":"internal","startTimeUnixNano":"1781445626412229750","endTimeUnixNano":"1781445626420151875","durationMs":7.922125,"attributes":{},"events":[],"links":[],"exit":{"_tag":"Failure","cause":"PlatformError: NotFound: ChildProcess.spawn (claude --version)\n    at Module.systemError (file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/node_modules/effect/dist/PlatformError.js:166:39)\n    at file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/node_modules/@effect/platform-node-shared/dist/internal/utils.js:28:24\n    at toPlatformError (file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js:25:54)\n    at ChildProcess.<anonymous> (file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js:230:26)\n    at ChildProcess.emit (node:events:509:28)\n    at ChildProcess._handle.onexit (node:internal/child_process:293:12)\n    at onErrorNT (node:internal/child_process:508:16)\n    at processTicksAndRejections (node:internal/process/task_queues:90:21)\n    at runNextTicks (node:internal/process/task_queues:69:3)\n    at listOnTimeout (node:internal/timers:567:9)\n    at runClaudeCommand (Alpha)\n    at runClaudeCommand (definition) (Alpha)\n    at checkClaudeProviderStatus (file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/apps/server/dist/bin.mjs:35850:25)\n    at checkClaudeProviderStatus (definition) (Alpha)\n    at applySnapshot (file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/apps/server/dist/bin.mjs:35730:83)\n    at applySnapshot (definition) (Alpha)\n    at refreshSnapshot (Alpha)\n    at refreshSnapshot (definition) (Alpha)\n    at makeManagedServerProvider (file:///Applications/T3%20Code%20(Alpha).app/Contents/Resources/app.asar/apps/server/dist/bin.mjs:35851:27)\n    at makeManagedServerProvider (definition) (Alpha) {\n  [cause]: Error: spawn claude ENOENT\n      at ChildProcess._handle.onexit (node:internal/child_process:287:19)\n      at onErrorNT (node:internal/child_process:508:16)\n      at processTicksAndRejections (node:internal/process/task_queues:90:21)\n      at runNextTicks (node:internal/process/task_queues:69:3)\n      at listOnTimeout (node:internal/timers:567:9)\n      at process.processTimers (node:internal/timers:541:7)\n}"}}

t3_logs.zip
t3_console.log
T3_network.har.zip
T3_Trace-20260614T154437.json.gz

Screenshots, recordings, or supporting files

No response

Workaround

No response

Activity

  1. added
    bugSomething is broken or behaving incorrectly.
    needs-triageIssue needs maintainer review and initial categorization.
    on Jun 14, 2026
  2. carlrosell commented on Jun 16, 2026

    @carlrosell

    I have the exact same issue:

    Image
  3. StiensWout commented on Jun 16, 2026

    @StiensWout
    Contributor

    @carlrosell @bmangust
    I did some digging through the attached logs/HAR. This does not look like the backend failing to start.

    Evidence:

    • Desktop bootstrap reaches backend ready.
    • The main window is created.
    • The HAR shows http://127.0.0.1:3774/, the bundled JS, CSS, icon, and fonts loading successfully.
    • The only failed request in the HAR is:

    https://clerk.t3.codes/npm/@clerk/ui@1/dist/ui.browser.js
    net::ERR_TIMED_OUT after ~36s.

    Possible cause:
    The desktop renderer wraps the whole app in DesktopClerkProvider when T3 Connect public config is present. That provider currently waits for Clerk’s optional UI script before rendering children. If that script is blocked, slow, or unreachable, the entire app can stay blank even though core T3 Code and the local backend are working.

    Things to test:

    1. From the affected machine/network, check whether this URL loads in a browser:
      https://clerk.t3.codes/npm/@clerk/ui@1/dist/ui.browser.js

    2. Try the desktop app on a different network, or with VPN/proxy/content filtering disabled, to see whether the white screen disappears.

  4. PhmnPh commented on Jun 16, 2026

    @PhmnPh

    I get the same white screen after updating to latest version

  5. StiensWout commented on Jun 17, 2026

    @StiensWout
    Contributor

    double of #3042

  6. juliusmarminge commented on Jun 20, 2026

    @juliusmarminge
    Member

    The attached HAR and follow-up diagnosis identify the same remote Clerk UI dependency tracked in #3042. Closing this as a duplicate; the root path was removed by merged #3092.

    This was closed as part of a large repo-wide maintenance sweep. If you think it's still relevant, please reopen.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething is broken or behaving incorrectly.needs-triageIssue needs maintainer review and initial categorization.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions