Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Suite Desktop

Main differences between suite-web and suite-desktop builds

  • @trezor/connect API
    • suite-web
      • @trezor/connect is part of the JavaScript bundle as a regular module.
      • @trezor/connect imports from @trezor/suite are replaced to @trezor/connect-web see webpack config
    • suite-desktop
      • @trezor/connect is installed as regular node_module and works in nodejs context (electron main process).
      • @trezor/connect files are not hosted on the electron renderer context.
      • On the renderer context all @trezor/connect methods from are replaced by @trezor/ipc-proxy methods. see index
  • Firmware binaries
    • suite-web
      • newest firmware binaries are hosted at [url]/build/static/connect/data/firmware and they are downloaded using regular fetch API.
    • suite-desktop
      • firmware binaries are bundled as application resources in bin directory, full path depends on OS but it could be found on the as level as app.asar file, and they are downloaded using fs.readFile API. see @trezor/connect/src/utils/assets
  • Trezor Bridge (trezord)
  • Tor
  • Bluetooth transport

App ID and name by environment

EnvironmentApp IDApp nameUser data dir name
production (codesign)com.trezor.suiteTrezor Suite@trezor/suite-desktop
development (sldev)com.trezor.suite.devTrezor Suite Dev@trezor/suite-desktop-dev
local dev servercom.github.ElectronTrezor Suite Local@trezor/suite-desktop-local

Suite app name and ID are set by the environment so that Suite uses different user data dir and it's not mixed between environments. The main benefit is that you can switch back and forth between Suite dev versions without losing your remembered production wallets. One disadvantage of this solution is checking of other instance running is not so straightforward between environments.

Same concept (user data separated by environment) works on web out of the box (storage per domain name).

Note that locally built Suite is "development (sldev)", while "local dev server" is for yarn suite:dev:desktop.

If you want to run built Suite app with fresh data on every start (similarly to running Suite Web in an anonymous browser window), follow these instructions.

Debugging

See separate documentation for debugging with debugging instructions.

Logging

Logging can be enabled by running Suite with the command line flag --log-level=LEVEL (replace LEVEL with error, warn, info or debug based on the logging you wish to display). Additional command line flags can be found here.

More technical information can be found on the Desktop Logger page.

Shortcuts

Available shortcuts as provided by Electron:

namecommands
Reload appF5, Ctrl+R, Cmd+R
Hard Reload appShift+F5, Shift+Ctrl+R, Shift+Cmd+R
Restart appAlt+F5, Option+F5, Alt+Shift+R, Option+Shift+R
Open DevToolsF12, Cmd+Shift+I,Ctrl+Shift+I, Cmd+Alt+I, Ctrl+Alt+I

Runtime flags

See separate documentation for runtime-flags with runtime flags.

Extract application

MacOS

npx @electron/asar extract ./Trezor\ Suite.app/Contents/Resources/app.asar ./decompiled

NixOS

Run application to get mount-id like:

Trezor-Suite.AppImage installed in ~/.cache/appimage-run/e4f67ae8624c4079527c669d8a3c4bbc1dd00b83b2e1d15807a5863b11bd4f38

npx @electron/asar extract ~/.cache/appimage-run/[mount-id]/resources/app.asar ./decompiled