Cross-platform desktop apps
Some software belongs on the desktop: tools that work with local files, run in the background, need to keep working offline, or simply get used all day and should feel like part of the machine. We build those for macOS, Windows, and Linux from one codebase — without shipping an entire browser to every user.
Start a projectWhen a desktop app is the right shape
The web has absorbed most of what used to require installed software, and that is usually the right outcome. Desktop still wins in a specific set of cases: heavy local file work, hardware the browser cannot reach, background processes that must keep running when no window is open, genuine offline operation, and the ordinary but underrated advantage of being an icon someone already has open rather than a tab they have to find.
If none of those apply, we will tell you a web application will serve you better and cost less to distribute. Installers, signing certificates, and update channels are real ongoing overhead, and they should buy you something.
Megabytes, not hundreds of megabytes
The usual objection to cross-platform desktop software is that it is bloated, and historically that was fair — bundling a browser engine with every application means a trivial tool arrives as a very large download and sits in memory like a second browser.
Tauri takes the other approach: it uses the webview already installed on the operating system and pairs it with a compiled Rust core. The result is an application that downloads in single figures rather than triple, starts quickly, and does not make your users wonder why a note-taking tool is using two gigabytes of RAM.
Where the Rust layer earns its place
Interface code stays in React, where it is fast to build and easy to change. The Rust side handles what a webview cannot do safely or quickly: file system access, native menus and tray integration, background tasks, local databases, and anything CPU-bound enough that JavaScript would stutter. Keeping that boundary deliberate is what makes the application maintainable by a team that is mostly comfortable in TypeScript.
Signed, notarised, and updating itself
An unsigned desktop application presents the user with a security warning, and most people stop there — so distribution is part of building it, not a step afterwards. We set up Apple notarisation, Windows code signing, and Linux packaging, and wire an auto-update channel so shipping a fix does not depend on every user noticing and re-downloading.
All of it runs from CI and is handed over with the rest. A release should be something your team can do on a Tuesday afternoon without anyone holding their breath.
Common questions
- Why Tauri rather than Electron?
- Electron ships a full copy of Chromium with every application, which is why a simple tool becomes a 150MB download and holds several hundred megabytes of memory. Tauri uses the webview already present on the operating system, so the same application ships in single-digit megabytes. Electron is still the right answer when you need identical rendering on every platform down to the pixel — but that is a narrower requirement than it is usually treated as.
- Do we need Rust expertise on our team to maintain it?
- Usually not much. Most application logic lives in the React front end, and the Rust layer handles the things a browser cannot — file system access, native menus, background work, and OS integration. We keep that layer small and well documented for exactly this reason.
- Can it share code with our web application?
- Often a great deal of it. If you already have a React front end, the interface layer typically transfers with modest changes, and the desktop build adds what only a desktop can do. That is usually the strongest argument for this approach over building something separate.
- What about code signing and distribution?
- Both are part of the work, not an afterthought. Apple notarisation, Windows signing, and an auto-update channel are set up and running in CI before handover. An unsigned desktop application triggers a security warning that most people will not click through, so this is not optional in practice.
Have something worth building?
Tell us what you are trying to ship and what is in the way. We reply within one business day.
Start a conversation