I'm designing a cross-platform, desktop engineering app. I'm wondering whether I should make the apps follow native design practices (a la MS Office),or use the same ones for all platforms (a la Discord).

This has been discussed a few times for mobile apps, where different OSes create different usage habits:

Should we keep the native feel for a cross-platform app or not?

Should I be more worried about creating a consistent UI among platforms or creating native experiences?

However, different desktop platforms generally create similar usage habits. For example, most desktop apps have a menu at the top. On Windows, it lives at the top of the window. On Mac, it traditionally lives at the top of the screen. Linux is a somewhat mixed bag. So all users are accustomed to a menu somewhere at the top. Shortcut keys are generally the same as well (Ctrl/Cmd+C, Ctrl/Cmd+V, etc).

For this particular application, it’s quite likely that users will have the application on multiple platforms (I'm currently using similar software on both Windows and Linux). So there is an argument to be made for identical application interfaces.

Mac OS seems to be the odd man out in the industry, but as my application engine is already cross-platform, I'd like to support it.


  • 2
    Just a reminder that most users will use one or maybe two devices, and never see the alternate versions.
    – cloudworks
    Commented May 9, 2019 at 10:29

4 Answers 4


Desktop application design should be approached very differently than mobile applications. They are used in an entirely different context and users will have very different set of expectations from them.

Understand your users - People don't switch between different operating systems quite as much. If they do, they will be using them for very different purposes. (I used mac for work and windows for other purposes for a long time and it was a tedious switch to say the least - every single time).

Keeping this in mind, you should define a target audience and preferably reach out to these people to understand how they might use your product. If you find out that your users will not switch between the OS, you gan go with Native.

From a UI Design perspective, Going with native is a good options as:

  • You'll get better performance.
  • The design system will be reliable and you'll not have to build things from scratch.
  • Learning times for users will decrease as they will be familiar with the interface.
  • 1
    Altogether a good answer but you have one snag - creating a desktop application in most cases you don't care about UI performance. Unless it's an HTML/JS based framework.
    – jaskij
    Commented May 9, 2019 at 16:05
  • This: > reach out to these people to understand how they might use your product
    – Adriano
    Commented Feb 2, 2021 at 6:54

From an end-user perspective: There are some basic native interfaces that must be followed. Others are more flexible. (Although I use iOS and Android as examples, the same concepts apply to desktop apps.)

For example, iOS devices don't have standard navigation buttons, so apps typically place on-screen navigation buttons at the top of the screen. However, Android does have standard navigation buttons. iOS apps ported to Android that don't support standard navigation buttons simply exit when the back button is pressed. However, the action intended by the user is for the app to go to a previous screen. Neglecting such basic user expectations is a great way to cause frustration.

When applications are available on multiple platforms, such as iOS and Android, individual users often won't use the app on multiple platforms. (Who carries both iPhone and Android phones?) So the native behavior of the platform would be expected. Those who do frequently use different platforms are likely flexible enough to switch between the native interfaces of each platform. And as described above with the navigation buttons, non-native behavior is likely to cause frustration even among users who switch among different platforms.

  • If you are using a cross-platform toolkit, just let the toolkit manage the interface for you. I'd expect the "good" ones will manage the interfaces well enough to avoid basic user frustrations. For instance, the toolkit should be aware of the appropriate placement of menus on each OS. For instance, I use Linux with KDE. Programs that use the standard toolkits (KDE or GTK) will put menus where I want them (accessible in multiple places). Programs that do their own thing don't.

  • If you wish to develop a unified interface, consider building one from scratch (client-side decorations) so that it does not need to conform to preexisting user expectations on any platform. This is what web sites and games tend to do.


Coherence and cohesion. I think this is the kind of path a crossplatform needs. If you're using the app in a phone (I'm going to leave the IOS/Android question out for now) and need to change to pc, you would expect the platform have a coherence in UI and flows. A sudden change in this kind of coherence could lead to a temporal dazzled (like "well, How I can reach the point I was located in the phone?").

Using the same example you gave, if I enter to discord in my pc, call some friends, and have to change because I have to go, I expect to continue the call in the less time possible and get minimally dazzled because the change of pace.

If you want another example about this kind of coherence, think about progressive web apps. One of the advantages is having the same design (adapted, of course) in phone, web, desktop app...

So, I think you can use a new design or native, but If you had choose one, you have to be coherent.

I hope this helps you!


Your application should try to match with the OS where it is being used. That's what the users of that OS are used to and giving them something familiar is a big argument for doing that I think.

When Discord and others don't do that, I believe it's simply for technical reasons. They probably make it with Electron and just put it in a wrapper and show it anywhere like a web page.

So that gives you an excuse to do the same, but given the option, you should match the application to the OS.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.