Lex Melnykow Head of Web

    Desktop Application Development: Definition and Challenges

    Today, web and mobile apps dominate the technology landscape, making one almost forget that there is desktop app development too.

    Yet there are cases when adding desktop to the list of your supported platforms is sensible — for example, when a product is resource-heavy, needs to work offline, or handles computationally-taxing tasks.

    Did you know? Surf develops mobile apps on Flutter, too!

    Learn about our mobile development services

    What is desktop app development?

    In short, desktop app development is the process of building a program that runs directly on top of the operating system (such as Windows or macOS).

    On the other end of the spectrum is web and mobile development — building apps that run in the browser and portable gadgets such as phones, tablets, or even smart wearables.

    Lot’s of modern companies have desktop versions of their applications.

    Figma — a widely-used prototyping and web design tool — is one such example. Although their web app is feature-full, too, our designers agree that the desktop version handles large files smoother.


    Productivity and project management tools, such as Trello, Notion and Jira commonly offer desktop versions.

    Some businesses choose to offer both a fully-fledged desktop app and a simplified online version. But In some cases, a web app alone will more than suffice.

    With 12+ years of experience in building custom solutions, we know how to make them effective

    Learn about our work

    Benefits of desktop applications

    Any application type (whether it is a web, desktop, or mobile app)  has its  uses. For example, web applications can be really handy for working remotely, while desktop apps are often preferred in corporate environments where data security and access control are top priorities.

    Security. Desktop applications have an edge here because they can be installed on workstations with tight access controls. This is particularly important for apps that handle sensitive information. For instance, an accounting software that fetches data from a server via a virtual private network creates a closed ecosystem that is more secure than a web application.

    Usability. Applications that actively engage with the local file system may not be the best fit for web architecture — they require explicit user permission every time they need to save a file. This could lead to a poor user experience, especially for apps that manipulate files a lot, such as a fintech program that manages invoices in local storage. 

    Performance. Desktop applications offer unparalleled performance, especially when it comes to computationally-heavy tasks. Because they have direct access to the graphics card, they’re ideal for handling tasks that rely heavily on the GPU, such as video-editing or 3D modeling, at a high level. The same is true for big-data processing or machine-learning, which can be incredibly resource-intensive.

    Availability.  If a desktop app doesn’t rely on data outside of your network, it can still work seamlessly even without an internet connection. This ensures that the app will continue to work no matter what, which can be particularly important in situations where downtime simply isn’t an option. Take, for instance, a restaurant Point of Sale (POS) system that won’t stop working even if there’s a network problem.

    Desktop development challenges

    The main challenges lie in the added complexity and cost.

    • Unfamiliar tools. Building a desktop version of your product may require adopting an entirely new set of IDEs, frameworks, and libraries. Unless your team already has the necessary experience, you will have to hire new talent, which will increase development cost.
    • Platform discrepancies. Making sure the client looks the same and functions the same across multiple operating systems isn’t an easy task. For instance, popular UI libraries for Windows and macOS use entirely different design approaches — to make them identical requires rewriting the code — sometimes in a different language for each platform — which is a lengthy and expensive process.

    Wrapping up

    Modern cross-platform SDKs like Flutter, which Surf specializes in, help to solve both of the above challenges without a significant performance impact. If you are thinking of developing a desktop application, we’d be happy to help. Let’s start by discussing your project.