Guides

How to edit help text without a deploy

Someone spots a confusing sentence in your product. Fixing it should take a minute. Instead it takes a ticket, a branch, a review, a merge and a release, and it arrives on Thursday with everything else.

Nothing about that chain is wrong. It exists because the sentence is source code, and source code is deployed. The way out is to stop treating explanatory text as code, and there are four ways to do that, with different costs.

Why a text change costs a release

Help text in your repository inherits every property of the code around it. It gets reviewed by an engineer, it waits for the pipeline, it ships in a versioned artefact, and it can be rolled back with everything else. Those are the right properties for behaviour, and they are the wrong ones for a sentence that was simply unclear.

The cost shows up in three places. The developer spends an hour on a change that needed a minute of thought. The person who noticed the problem stops reporting them. And the text drifts, because improving it is never worth the process.

The options, cheapest first

A remote configuration service. Values under keys, fetched at runtime, changed from a console. Firebase Remote Config is the common choice, free up to a large daily fetch quota, and if your app already uses Firebase there is nothing to install. It stops fitting when the text needs structure, when the person editing should not also be able to flip a feature flag, or when parameters and characters run into the per-project limits.

Your own admin screen. A table, a form, an endpoint. Two or three days, and then the long tail of publishing, history, roles, caching and an editor. The arithmetic is here, including the cases where it is genuinely the right call.

A headless CMS. Real content modelling, draft and published states, localisation, and an API your app can read. You build the help model yourself, and restricted roles usually sit on the larger plans. What that costs.

A system built for help content. Topics with structure, a help key per screen, publishing as a deliberate act, and delivery over a public request. That is what we make, and the honest summary of the difference is that the publishing half is already there.

What "without a deploy" has to mean

Any of these removes the release from the loop. Whether it removes the problem depends on four things worth checking before you pick one.

Who may edit. If the only way to give someone edit access is to give them your admin, or your feature flags, or your marketing site, the change will not actually be delegated. It will keep coming back to a developer.

Finished versus in progress. Text that goes live as it is typed forces the writer to compose somewhere else and paste. A separate published state is what makes the editor usable by someone who is not brave.

How fast it appears. A change should be visible in minutes, and the number should be knowable. Our delivery caches for five minutes; a build-time sync means the next deploy, which is the thing you were trying to escape.

What happens when the text is absent. Every option above can be asked for a key that has nothing behind it. Decide once what your components do then, and make it show nothing rather than an empty box.

The order that works

Start with the ten sentences that generate questions, not with a migration of everything. Move those out of the repository, leave the rest where it is, and see whether the people who noticed the problems start fixing them.

If that habit takes hold, the rest follows on its own. If it does not, you have learned something cheaper than a project. How to manage in-app help sets out the four levels in full, and turning support tickets into in-app help is the method for choosing which ten.