01 The problem
Shipping Software Is Only Half The Job
Desktop software has an obstacle web apps never face: it has to get onto someone's machine, past the
operating system, and then stay current there. A team that only builds for the browser tends to
discover this in the last week of the project, which is the worst possible time.
-
The OS refuses to run it
Unsigned builds get a scary warning on Windows and are effectively blocked on macOS. Most people never click past it.
Not signed
-
Every user is on a different version
No update channel, so a fix only reaches whoever revisits the download page. You end up supporting all of them at once.
Version drift
-
It freezes on the real workload
Heavy processing on the interface thread. On the test file it was instant. On the customer's 900MB file the window stops responding.
Blocking
-
Local data with no way back
Everything in one file on one machine, no backup, no export and no migration path. One failed drive and the work is gone.
Data loss
On the web, you fix it and refresh.
On the desktop, the fix has to reach every machine you shipped to.
So signing, installers, update channels and background processing are part of the build from the
beginning. They are not polish at the end, they are what makes the software usable at all.
02 The honest question
Do You Actually Need A Desktop App?
Plenty of things people ask us to build for the desktop would be better as a web application, and we
would rather say that on the first call than halfway through. The dividing line is simple: does the
software need the machine it runs on, or just a screen?
Build it for the desktop
When the software needs the machine
- Large local files, video, CAD, datasets
- Serial, USB or specialised peripherals
- Processing that needs real CPU or GPU
- Must work with no connection at all
- Data that is not permitted to leave the site
- Runs all day, every day, as a main tool
or
Build it for the web instead
When it only needs a screen
- People use it from anywhere, on any device
- Sharing and collaboration are the point
- Occasional use, where installing is friction
- Everything already lives in the cloud
- IT will not approve new installed software
- You need to ship changes daily
Sometimes the answer is both: a web application for everyone, plus a desktop companion for the people
doing the heavy work. If that is the right shape for your product, we will lay it out on the call and
tell you which half to build first. Our web development work
covers the other side.
03 The scope
What We Actually Build
An installer your users can run, an app that behaves like it belongs on their operating system, and a
release process that gets fixes to them without anyone having to ask.
01
The application
Software that feels native on each platform, not ported to it.
Interface
- Native menus, shortcuts and window behaviour
- Multi-window and multi-monitor support
- System tray, notifications and badges
- Drag and drop, clipboard, file associations
- Dark mode and OS accessibility settings
- Keyboard-first workflows for daily use
02
Data & the machine
The reason it is a desktop app in the first place.
Local
- Embedded local database and schema migrations
- File system access, watching and bulk import
- Encryption at rest for sensitive data
- Serial, USB and peripheral integration
- Background workers for heavy processing
- Backup, export and restore paths
03
Sync & integration
Optional, but usually where the value compounds.
Connected
- Offline-first sync with conflict resolution
- Licensing and activation
- Single sign-on and directory integration
- APIs into your existing systems
- On-premise and network share support
- Usage telemetry, only where you allow it
04
Distribution
Everything between a finished build and a working install.
Release
- Windows code signing certificates
- macOS signing and Apple notarisation
- Installers: MSI, DMG, AppImage, deb
- Auto-update channel with rollback
- Silent deployment for IT departments
- Crash reporting and release runbook
04 The process
How A Build Runs
Installers exist from early on, not from the last week. If you cannot install it, you cannot really
tell us whether it works.
-
01
Week 0
Discovery
What the software does, which machines it runs on, what hardware and files it touches, and
whether IT has a say in what gets installed.
-
02
Week 1
Architecture
Framework choice, the local data model, the threading model for heavy work, and how
updates will reach users. Decided together, because they constrain each other.
-
03
Week 2
Installable early
A signed build you can actually install on your own machines within the first couple of
weeks, so signing and packaging are proven while they are still easy to fix.
-
04
Ongoing
Feature by feature
Each feature built and packaged across all target platforms before the next begins, so
nothing accumulates a Linux-shaped surprise for the end.
-
05
Before release
Real machines, real files
Testing on the OS versions your users actually run, with files at their real size, plus a
restore drill and an upgrade test from the previous version.
-
06
Release
Ship & hand over
Signed installers, a live update channel, crash reporting, and the documentation your team
needs to cut the next release without us.
Technologies We Use
The framework follows the workload. Interface-heavy tools, tight memory budgets and native
integrations all point in different directions, and we explain which one your product is.
Cross-Platform
Electron
Tauri
Qt
React
Vue.js
Rust
Windows
.NET
WPF
C#
WinUI
MSI / MSIX
macOS & Linux
Swift
SwiftUI
GTK
AppImage
Notarisation
Data & Delivery
SQLite
PostgreSQL
IndexedDB
Code signing
Auto-update
CI/CD
05 Who builds it
People Who Have Shipped Installers, Not Just Builds
NoCubical is a small, senior studio. The engineers on your call are the ones writing the software, and
they have been through code signing, notarisation and update channels enough times to plan for them.
10+ years
Hands-on experience per engineer, across agencies, product companies and enterprises. No juniors learning on your budget.
Senior by default
Small by design. The person answering your questions in week one is still reachable in month six.
Built, shipped, maintained
Software we released and then kept updating across OS versions, which is where you learn what actually breaks. See how we work.
Your code, your certificates
The repository and the signing certificates are registered to your company. No build step only
we can run, and no release that depends on us being available.
Your idea stays yours
We will sign a mutual Non-Disclosure Agreement any time you want one, at no cost. You can
read the exact document we use before you ask for it.
Frequently Asked Questions
Should this be a desktop app or a web app?
Desktop when the software needs the machine: large local files, connected hardware, serial or USB devices, heavy processing, or genuine full offline operation. Web when people need to reach it from anywhere and share it easily. If a web app would serve you better we will say so on the first call, because a desktop app nobody wants to install is an expensive way to solve a browser problem.
Do you handle code signing and notarisation?
Yes. Unsigned desktop software triggers a warning on Windows and is effectively blocked on macOS, and most people will not click past it. We set up the certificates, sign every build, run Apple notarisation, and wire it into the release pipeline so the signing happens automatically rather than being something someone remembers to do.
How do users get updates?
Through a built-in auto-update channel: the app checks for a new version, downloads it in the background and applies it on the next restart. Without that, a fix only reaches the people who happen to visit your download page, and you end up supporting every version you ever released at the same time.
Can one codebase really cover Windows, macOS and Linux?
Yes for the great majority of the work, with a genuinely platform-specific layer for the parts that differ: file dialogs, menus, notifications, drivers, installers and signing. What one codebase does not remove is the need to test on all three, because the differences that matter are usually in exactly those edges.
Can it talk to hardware or existing systems?
Yes, and it is often the reason a desktop app is the right answer. Serial and USB devices, scanners, printers, scales, cameras, instruments, local databases, network shares and on-premise servers are all reachable from a desktop process in a way a browser tab is not allowed to be.
Does it have to be online at all?
No. We design offline-first when that is what you need: everything stored locally, fully usable with no connection, and syncing when a network appears. That is a real requirement for field work, secure sites, factory floors and anywhere the connection cannot be relied on.
- Free first call, technical, no obligation
- An honest read on whether desktop is the right choice
- Mutual NDA on request, before the first call
- Source code and signing certificates in your name