Skip to content

Development notes

An honest empty state is better than a fake article

How to write useful empty-state copy, keep meaningful navigation, and handle placeholder cards when a content site has no published articles, without confusing missing content with filtered results or loading failures.

林予晴
Published
  • Content engineering
  • UI copy
  • Empty states
  • Product decisions

The notes page has a finished layout, but the articles are not ready. It is tempting to add a few cards anyway: a plausible title, a summary, and a date would keep the page from looking empty.

But “Read article” means something. A reader who follows that link should find the content the title describes. The publication date beside it should belong to an article that was actually published. If neither exists, the card presents layout-test material as public content.

When we built this site’s notes section, we kept an empty state rather than turning the mockup’s titles and dates into article entries. That interface decision is the subject of this note: when there is no published content, the page should still explain what it offers and where readers can actually go.

A card’s fields imply that the content already exists

Article cards in a mockup are useful for testing title lengths, summary wrapping, and column counts. The question is whether readers can still recognize those cards as placeholders once they leave the mockup.

Suppose a card says “A redesign made the site faster” and includes a publication date and a “Read more” link. This is a hypothetical example, not an article or measurement from this site. If the body, measurements, and publication record are not ready, readers are nevertheless seeing an article link that claims a result.

Removing the date does not solve the problem. The title, summary, and clickable link already describe something available to read. Changing the link to # merely prevents the button from doing what it promises.

I would first ask where the card leads and whether that destination has a matching article body. A candidate topic without a body can stay in an internal topic list. It does not need to become a public article card just to fill the grid.

Say which kind of absence you mean

“There is no content yet” can be too vague. Unpublished articles, a language with no articles, and a search with no matching results call for different actions from the reader.

The following are copywriting examples. They do not mean this site has implemented search or dynamic loading. The language-specific example applies only while that language has no published articles:

Situation Possible wording What it should not imply
No published articles No articles have been published yet. The article body is loading and will appear shortly.
No articles in this language No articles have been published in English yet. There are no articles anywhere on the site.
No results after filtering No articles match the current filters. Try clearing them. The underlying content collection is empty.
Loading failed Articles could not be loaded right now. Please try again later. The author has not provided any content.

This site reads Markdown at build time and serves static pages. Its notes list does not fetch articles from a remote API after a reader opens the page. An empty state here is therefore not a loading message for an ongoing network request. A continuously animated skeleton would suggest that content is about to arrive when that is not what the page is doing.

When the original Traditional Chinese note was written on October 6, 2026, the English notes list used “No articles have been published in English yet.” The message limited its scope to published English articles; it did not deny the existence of the Traditional Chinese content. This describes the state recorded in the original note, not a claim that there are still no English articles.

Copy also needs to account for the promises it adds. “Content is being prepared” requires actual preparation work. “Updated next week” requires a confirmed plan. If all you know is that there are no articles, say that without adding a schedule that has not been decided.

Keep the page’s purpose, not a fake reading action

An empty state does not require the whole section to disappear. A title, an explanation of the content’s focus, and navigation can still tell readers what the page is for.

When this site’s notes list has no published articles, it keeps the page title, introduction, navigation to the home page, and the “About these notes” explanation. The list displays an empty state rather than generating fake article cards. The notes section on the home page has its own empty state and shows the “All notes” link only when articles are available.

These are two different situations. A full listing page can explain the intended content even while it has no articles. The home-page section instead avoids presenting “All notes” as an action that leads to articles available to read. This does not mean every empty list must hide its entry point. The decision depends on what the destination can offer.

If I add a next step to an empty state, I would make it an action the reader can actually take. If a site already has public work to show, it can offer “View work.” If articles exist in another language, it can explain that and link to that language’s list. These are design suggestions, not buttons currently provided by this site’s empty states.

Conversely, do not add “Notify me” just to make an empty state look complete if there is no subscription feature. Someone must also take responsibility for collecting submissions, storing the data, and sending later notifications.

Placeholder content can test a layout, but belongs in the right place

There is nothing wrong with testing an article layout using sample content. Long titles test wrapping, tables and code test mobile readability, and several test entries can help check pagination.

I would keep that material in a clearly identifiable mockup or an isolated test environment, away from the public article collection. If an unfinished interface needs to be shown, label it as a demonstration. Do not present invented topics, dates, or results as a publication record.

This is different from a real article draft. A draft already has a body awaiting review; it has simply not been approved for publication. Layout-test material may not even have an established article claim. Neither belongs directly in published content, but the work needed to get there is different.

This site already separates draft previews from production output. The pipeline is described in How to preview drafts without leaking them into the production build (Traditional Chinese). The point here is the result readers see: an article link on a public page should lead to content available for public reading.

Empty states need an editorial pass too

When articles exist, we check their titles, summaries, and links. When there are no articles, the message needs the same careful reading.

This site’s notes list shows an empty-state message when the collection of published articles in that language is empty. It does not merely check the array of regular articles on the current page. That distinction matters because featured articles have a separate section: an empty regular list does not necessarily mean the entire page has no articles.

During review, I would follow the reader’s actions and check:

  • Does the message describe the whole site, the current language, or a particular set of filters?
  • Does the page contain other content that “No articles” incorrectly dismisses?
  • Do the remaining links provide what their labels promise?
  • Does the copy imply an unconfirmed update date, subscription feature, or translation progress?

Drafts should also stay out of the public home page, lists, and sitemap. A “Draft” label on a card cannot replace filtering the public collection.

These checks can establish whether the content and interface agree. They cannot establish that readers trust the site more or that the empty state improves conversion. This project has no related user research or outcome measurements.

Once articles are ready, let them replace the message

By the time the original note was written on October 6, 2026, this site’s notes section had published Traditional Chinese articles. The Traditional Chinese home page and list showed those articles instead of the earlier empty state. Each language, including English and Japanese, displays whatever published content is available in that language. An empty state is not a permanent decoration; it should disappear when the data changes.

I would define completion this way: when an article is available for public reading, show its matching title, summary, and genuine reading link. When none is available, keep a message that accurately describes the situation. If there is only one article, show one. Do not duplicate cards to fill the columns.

The layout can be ready first. Public content should take its place only once the article body and publication requirements are ready.

Scope of this note

This note draws on the implementation of this site’s home page and notes lists, the empty-state copy for each language, queries for published articles, and the content decisions made when the notes section was established. Search, loading failures, and alternative actions in the examples are design scenarios, not claims that the site provides those features or that those failures occurred. Subscription-related copy is likewise a design example, not an implemented feature. No claim is made that this approach has produced traffic, trust, or business results. Other notes cover multilingual article routes and the publishing pipeline; this one focuses on empty-state copy and the actions offered to readers.