Why I Chose Go to Build a Terminal UI Framework

Why I Chose Go to Build a Terminal UI Framework

When I started building a terminal UI framework, I had a choice: use Rust, C++, or Go.

I chose Go, and after months of development, I think it was the right decision.

Here are the main reasons.

1. Simplicity Scales

A UI framework is more than drawing boxes on a screen. It involves rendering, layouts, event handling, focus management, state, keyboard input, and much more.

Go’s simple syntax makes it much easier to reason about these systems. I spend more time solving UI problems and less time dealing with language complexity.

2. Fast Development

One of Go’s biggest strengths is developer productivity.

The edit → build → run cycle is incredibly fast, which is important when you’re making hundreds of small changes while designing a UI framework.

3. Concurrency Feels Natural

Terminal applications often need to handle multiple things at once:

  • User input

  • Rendering

  • Background tasks

  • Network requests

  • Timers

Goroutines and channels make these tasks straightforward without introducing unnecessary complexity.

4. Excellent Cross-Platform Support

A terminal framework should work everywhere.

Go makes it easy to compile for Linux, macOS, and Windows from the same codebase with minimal platform-specific code.

5. A Strong Standard Library

Go’s standard library already provides many of the tools needed for framework development:

  • File handling

  • Networking

  • Synchronization

  • Testing

  • Profiling

  • Context management

This reduces external dependencies and keeps the project simpler.

6. Readable Code Matters

Frameworks are long-term projects.

Readable code makes maintenance easier—not just for me, but for anyone who wants to contribute in the future.

Go encourages consistency, which becomes increasingly valuable as a project grows.

7. Great Tooling

The Go ecosystem includes excellent built-in tools:

  • go test

  • go fmt

  • go vet

  • Benchmarking

  • Profiling with pprof

Having these tools available by default improves code quality without requiring a complicated setup.


Building a terminal UI framework has taught me that language choice is about more than performance.

For this kind of project, I value:

  • Simplicity

  • Productivity

  • Maintainability

  • Cross-platform support

  • Strong tooling

Go provides a good balance of all of these.

I’m curious to hear from other Go developers:

If you were building a terminal UI framework today, would you choose Go? Why or why not?
retUI - A GO Terminal Framework