Using Godot for GUI App Development

9 min read Original article ↗

Last edited: November 05, 2025


Table of Contents


Introduction

Godot has some serious untapped potential when it comes to creating GUI applications for desktop and mobile. I've been saying this ever since Godot 4 came out, but now after releasing GodotOS, I feel like I finally know enough about Godot to talk about it. So let's talk about it!

The short version is that Godot is great for app development, but there are some caveats and things that can really be improved. Overall, I would definitely recommend it, even if it's just to mess around and give it a try.

Using a game engine for making applications...?

Using Godot to make desktop apps isn't as wild as it sounds. Godot has a ton of built-in tools that make creating a complex user interface really easy. There are a lot of examples of fantastic apps made in Godot such as Dungeondraft, Material Maker, Pixelorama, Lorien, and Bosca Ceoil Blue.

But the showcase for Godot is... Well... Godot itself! The editor was made almost entirely using its own UI system. It's a testament to how powerful and flexible the tools are.

Fun fact: Tesla's mobile application is also apparently made using Godot.

Why use Godot for app development?

There's a ton of GUI frameworks and tools out there, but there are a lot of benefits that Godot offers that I can't seem to find elsewhere. I can talk about it for ages but here are the bullet points:

  • Godot's visual editor is very intuitive: Anchoring, creating containers, rapid prototyping becomes a breeze. You can visually create everything and immediately write the code in one place.
  • Godot is very developer-friendly: No setting up complex dev environments, the godot engine is a ~60MB download that comes with everything you need, including a very nice built-in code editor. GDScript is also a very easy language to use which is great for UI/UX devs, and a lot nicer than the popular alternatives like HTML/CSS/Javascript or (god forbid) Python. You also don't need to learn any extra markup/styling languages because all the theming happens in the editor.
  • It's effortlessly cross-platform: Godot supports pretty much every platform including mobile and the web (assuming you're using the compatibility renderer which you should be for UI dev). Exporting your project takes a second. Building for Linux, Windows, and whatever else is basically instant (and again, needs no setup).
  • Godot is fast by default: One of the perks of being a game engine is that it tends to be fast with very little stutter. Having tons of UI elements, complex animations, and even shaders shouldn't hurt performance. Looking at you, Electron. Note that it's probably not lighter than native apps using a compiled language.
  • It's free & open source: Most good dev tools are these days, but it's still nice to mention that you'll never have to pay anything to use it, and can always edit Godot's source code if you have really advanced use cases.
  • Godot makes dynamic UI easy: This is a big one. Something I've always struggled with in web development and my (brief) ventures into desktop GUI like Qt is dynamically moving things or making custom widgets.

There's a lot to like here. I'm also a big fan of the way the Node system works and encourages composition over having one giant singleton managing the state of everything.

Did I say rapid prototyping already?

Dynamic UIs are really cool and underappreciated

I want to talk a bit about how much I love smooth, dynamic user interfaces. Back in ~2008, a ton of websites and apps were made with Flash rather than the typical HTML/CSS/JS tech stack used today. They were really cool because Flash excelled at being dynamic. Elements slide around the screen, things had pretty animations, and it wasn't as rigid as modern day apps. It also ran like trash and had glaring security issues, but my nostalgia goggles don't care.

My point is, ever since Flash died we never really got anything like it. Modern GUI frameworks make it hard (or in some cases impossible) to move things around in the screen without breaking the layout. It's definitely possible, and people have made literally everything with Javascript, but it's much more difficult than it should be. Also, deviating from current functionality would probably mean having to learn yet another library or framework, and nobody wants that...

To illustrate what I mean: I made a small application called Morse Code Simulator. Making the UI was the easy part, and I ended up finishing the project in roughly 2 weeks.

Things like the paper animation, spawning a floating text to confirm copying to clipboard, and a settings overlay would be a pain to make anywhere else. If I had used a web development framework, it would have taken me way more time and effort. If it were a native UI framework, I would've given up already.

I know, I know. Some of you are wondering if this even matters or if anyone cares. For me, it definitely is important to have the freedom to create whatever I want rather than rely on default, boring widgets.

I also made a Doom mod launcher which I'm very fond of if you're looking for another example.

Why you maybe shouldn't use Godot for GUI development yet

Let's not get too excited, there's a lot of things that Godot isn't very good at and some may be deal breakers for some people.

Previously I talked here about the lack of accessibility options, but since Godot 4.5, it now has screen-reader support.

I also talked about my frustrations with text rendering, but Godot 4.5 also now scales text beautifully with the window scale and added real SVG support so that your icons look nice regardless of screen DPI.

The biggest issue, I think, is that the theme editor is awkward to use and definitely not as powerful as something like CSS. Things have gotten way better the last two releases, but it still has a ways to go. Using theme type variations is still more of a hassle than it needs to be. I talk more about it in a Godot proposal.

On the topic of theming, a lot of animations will have to be done manually by you. Say you want a button to smoothly go from grey to blue when you hover over it. There aren't really any built-in animations, you'll have to manually tween the button's color yourself. The good news is that doing things yourself is very easy and very powerful, but it's probably not as convenient as having a million built-in options in something like CSS. I can write a whole post on my thoughts about the theme system, but let's move on...

Making web apps with Godot 4 isn't 100% viable yet. The web export's binary size is bigger than I'd like. Compressed, a small project takes up about 8MB in size. Uncompressed, it balloons to over 30MB. I've made a detailed post about minifying Godot's size, but even if you're willing to recompile export templates for the best results, it's still much bigger than creating something in JavaScript directly.

Other annoyances:

  • Direct children of containers can't be moved or animated. You can circumvent this by having its parent be a Control node. This PR fixes this but there isn't enough consensus that this is the best way to do it (so it's unlikely to get merged soon).
  • You can't optimize an export template specifically for UI. There is a PR that can allow you to disable 2D nodes but it's not merged yet. Speaking of, having to recompile export templates to optimize builds for size can be very annoying. One of my big wishes for Godot in the future is for it to be able to disable the 2D or 3D sides of the engine on project export and not need lots of tinkering. I can understand why it's not totally feasible though.

All of this might sound like a lot, but in the grand scheme of things Godot definitely does more right than wrong. Aside from not being able to animate inside containers and theming being annoying, my other notes are pretty minor.

The secret sauce: GDExtension

One specific thing that really has a lot of potential is GDExtension: Godot's tech for running external code and libraries. It's currently experimental and lacks some documentation, but there's already a lot of extensions being made. Of course, there's already Rust bindings.

This could potentially mean you would use any programming language you'd like, and easily import any programs that already exist and use Godot as just a UI editor. Very nice!

Keep in mind that if you're just implementing a terminal app, you can always just use OS.Execute() instead.

Technical notes you should know

An important thing to keep in mind when researching Godot is that Godot 4 came out early 2023, and it overhauls pretty much everything in the engine. As such, there's a lot of outdated information on what Godot can and can't do. Some things that Godot 4 can do that it (maybe) previously couldn't includes:

  • Multi-window support (Shout to Windowkill for pushing the limits on what's possible)
  • Support for Right-to-Left languages
  • Transparent window support, including mouse passthrough
  • Godot 4.3 added Wayland support for Linux
  • Godot 4.3 allows you to create web-apps without needing any special headers
  • Godot 4.5 added screen-reader support
  • Godot 4.5 now scales text and SVGs according to the screen scaling/DPI

The last important thing you need to know is that you'll want to turn on Low Processor Mode in the project settings. This makes it so that the screen only refreshes if something changes, as opposed to the default behavior where it would refresh every frame (which is typical for games).

Conclusion

In the end, choosing the right dev tools for you will always be opinionated. As someone that was never a fan of modern GUI frameworks, Godot was everything I wanted: simple, powerful, hassle-free.

It won't be everybody's cup of tea, and I don't expect it to be the "next big thing", but I can definitely see Godot start rising in popularity as a serious production-ready tool for making GUI applications. Looking forward to seeing more cool stuff made with it.


This post took some time and effort. If this was helpful at all, please consider donating.

#potofhoney #gamedev #guide #tech