What Makes a Good App? The Things That Actually Matter.
Useful, fast, reliable, and honest: what good app development actually looks like, drawn from projects like the offline-first Nant Gwrtheyrn trail app.

Most apps fail not because they were badly coded, but because nobody thought carefully enough about what they were actually for.
The feature list gets long. The design gets complicated. The launch gets delayed. And when the app finally ships, users open it once, don’t immediately understand what they’re supposed to do, and never open it again.
I’ve seen this pattern enough times that I think about it at the start of every project. Here are the things I think actually matter.
It does one thing well
The best apps have a clear, singular purpose: something you can explain in a sentence. Not “it helps you manage your schedule, connect with colleagues, track your tasks, and share documents.” Just: it helps you do one specific thing, easily.
Scope creep is the enemy of good apps. Every additional feature adds complexity, increases the chance of something breaking, and makes it harder for a new user to understand what they’re supposed to do first. The most useful thing I do on many projects is help clients cut scope, not add to it.
It respects the user’s time
A good app does what it promises, quickly. It starts fast. It doesn’t make you wait. It doesn’t ask for permissions it doesn’t need, or send notifications you didn’t ask for, or require you to create an account before you’ve seen what you’re paying for.
These things sound obvious, but they require deliberate choices throughout development, and constant pressure in the other direction from the people who want to add features.
It works when things go wrong
Connections drop. Devices run out of battery. Users put apps in the background and come back hours later. A good app handles all of this gracefully.
Offline support is one of the most underrated things you can build into an app. When I built the Nant Gwrtheyrn trail app, offline-first wasn’t optional: the trails run through a Welsh valley with no reliable signal. But the principle applies anywhere. An app that degrades gracefully when connectivity drops is a more trustworthy app, full stop.
It’s honest
A good app doesn’t pretend to do more than it does. It doesn’t show you fake loading states to seem faster. It doesn’t hide errors behind generic “something went wrong” messages. It tells you what it knows, admits what it doesn’t, and gives you a way forward.
This applies to data handling too. Collect only what you need. Be clear about what you’re doing with it. Don’t bury the privacy policy in a wall of legal text nobody reads.
It gets out of the way
The goal of a good app is to let you do the thing you came to do as quickly and easily as possible, and then leave you alone. Not to engage you. Not to keep you in the app longer than you need to be. Just to be useful, and then get out of the way.
That’s what I’m trying to build every time. If you’re weighing up what your own app actually needs to get right, I’d be glad to talk it through.