Gum is a free, open source design & prototyping project written in C# and released under MIT. It has 620 GitHub stars, 81 forks and 20 open issues, and was last pushed 3 hours ago. On this registry it ranks #27 of 28 tracked projects in Design & Prototyping, with 5 head-to-head comparisons available.

What is Gum?

Gum is an MIT-licensed C# UI layout tool built on object-oriented principles, distributed as NuGet runtimes for MonoGame, KNI, raylib, SkiaSharp, MAUI and FNA, and intended for developers who need one flexible, inheritance-driven layout system across game engines and .NET platforms.

What it is

Gum is a general-purpose UI layout tool built on object-oriented principles. It supports inheritance, object instances, default and overriding variables, and states that are either categorized or uncategorized, all driven by what the project describes as an incredibly flexible layout engine. Layouts are exported as human-readable XML, and the tool itself can be extended either through MEF or by modifying the source code directly. It lives in the C# and .NET ecosystem, and its runtimes are published to NuGet with every package sharing the same version number so that they stay in sync.

The concrete problem Gum solves is layout authoring that would otherwise be written by hand per control and per platform. Because Gum produces general-purpose XML, a layout authored once can be consumed in virtually any C# environment, and integrations exist beyond the packaged runtimes for environments such as FlatRedBall, Meadow, Silk.NET, WPF and Avalonia. On top of the layout engine, Gum Forms controls look clean by default, and a single line of code restyles every control with a built-in theme, so the same UI can take on a completely different look without being rebuilt.

Key capabilities

  • Inheritance, object instances, and default or overriding variables form the core object model that layouts are authored against.
  • States, both categorized and uncategorized, let a single component carry multiple visual variations.
  • A layout engine the README describes as incredibly flexible handles positioning and sizing.
  • Exports human-readable XML, which is what makes the output portable across C# environments.
  • Extensible through MEF or by modifying the source code directly.
  • One-line theming with DarkProTheme.Apply(GraphicsDevice); restyles every Gum Forms control; shipped themes are DarkPro, Bubblegum, Neon, Retro 95 and Forest Glade.
  • Per-platform runtime packages: Gum.MonoGame, Gum.KNI, Gum.raylib, Gum.SkiaSharp, Gum.SkiaSharp.Maui and Gum.FNA, plus Gum.Shapes.MonoGame and Gum.Shapes.KNI add-ons for drawing rectangles, circles and other primitives. GumCore exists for integrating with a custom runtime.

Who uses it and how

  • Game developers targeting MonoGame or KNI, who install the runtime package plus the separate Shapes add-on when they need primitive drawing.
  • Developers on raylib, SkiaSharp and MAUI, where Shapes is built into the runtime rather than shipped as a separate package.
  • Teams working in FlatRedBall, Meadow, Silk.NET, WPF or Avalonia, which have integrations beyond the packaged runtimes listed in the README.
  • Prototypers, as reflected in the project topics alongside game-ui, layout, ui and xna.
  • Anyone consuming Gum through GumCore to wire the layout output into their own runtime.

Getting started

Install the NuGet package for the target platform — for example Gum.MonoGame, Gum.KNI, Gum.raylib, Gum.SkiaSharp or Gum.SkiaSharp.Maui — and add Gum.Shapes.MonoGame or Gum.Shapes.KNI alongside it on MonoGame and KNI. Documentation and tutorials are hosted at https://docs.flatredball.com/gum/.

How it compares

No list of paid products replaced by Gum is provided here, so the useful comparison is against the runtimes and integrations the facts themselves name: MonoGame, KNI, raylib, SkiaSharp, MAUI, FNA, FlatRedBall, Meadow, Silk.NET, WPF and Avalonia. Gum sits above those as the layout and styling layer, supplying one XML-based authoring model and one theming call rather than a different UI approach per platform.

When to use it — and when not to

Gum is a library rather than a service, so there is no database, storage or SMTP to operate; the maintenance burden is keeping NuGet package versions in sync and tracking upstream runtime changes. It is a poor fit for anyone who needs the Sokol backend: Gum.sokol is no longer published, versions up to 2026.9.2.1 remain on NuGet and still work but receive no further updates, and the source at Runtimes/SokolGum/ must be built against a hand-cloned Sokol.NET because that dependency is not actively maintained and its submodule tree broke git pull for the Gum repository. FNA users should also note that Shapes is explicitly not supported on that runtime.

project readme (upstream, from github) — read inline
gum-logo-normal-512

A general purpose UI layout tool built on object-oriented principles.

Join the chat Twitter Activity


image

Specifically it supports:

  • Inheritance
  • Object instances
  • Default/overriding variables
  • States (categorized and uncategorized)
  • Incredibly flexible layout engine

Gum exports to human-readable XML, and can be extended either using MEF or by modifying the source code directly.

Beautiful UI, styled in one line

Gum Forms controls look clean by default, and a single line of code restyles every control with a built-in theme — same UI, completely different look. Pick one of the shipped themes or author your own.

DarkProTheme.Apply(GraphicsDevice); // one line — every control restyled

DarkPro

Bubblegum

Neon

Retro 95

Forest Glade

Editor

See the full theme gallery and usage →

Tutorials and documentation can be found here:

https://docs.flatredball.com/gum/

Alt

Star History

Star History Chart

Contributors

Need Help?

The fastest way to get help is to ask in our Discord: https://discord.gg/uQSam6w36d

You can also post an issue: https://github.com/vchelaru/Gum/issues

You can also check the docs: https://docs.flatredball.com/gum/

Installation

Gum's runtimes are published to NuGet. Install the package for your platform. All packages share the same version number, so they stay in sync.

Platform Runtime Shapes
MonoGame NuGet NuGet
KNI NuGet NuGet
raylib NuGet Built-in
SkiaSharp NuGet Built-in
Maui NuGet Built-in
FNA NuGet (not supported)

Shapes is the recommended way to draw rectangles, circles, and other primitives in Gum. On MonoGame and KNI it ships as a separate add-on package (install it alongside the runtime); on the other platforms it's built into the runtime.

Sokol is no longer published. Gum.sokol versions up to 2026.9.2.1 remain on NuGet and still work, but receive no further updates: the backend depends on Sokol.NET, which is not actively maintained and whose submodule tree broke git pull for the Gum repo. The source still lives at Runtimes/SokolGum/ and builds against a hand-cloned Sokol.NET — see its README.

Gum produces general-purpose XML, so it can be used in virtually any C# environment. Beyond the packaged runtimes listed above, integrations also exist for environments such as FlatRedBall, Meadow, Silk.NET, WPF, and Avalonia. For integration details — or for using GumCore to integrate with your own runtime — see the main documentation: https://docs.flatredball.com/gum/

Frequently asked questions

Is Gum free to use?

Gum is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Gum do?

Flexible layout tool for creating UI on any platform

What is Gum written in?

Gum is primarily written in C#. Its source is publicly available at https://github.com/vchelaru/Gum, and it has 620 GitHub stars.