Search interfaces accumulate tiny contradictions. One screen says “Filter,” another says “Refine,” a chip uses an internal category name, and the empty state tells users to “try again” without saying what to change. Each string looks harmless alone; together they make the product feel harder to understand.
CopyDoc can export Figma text to a spreadsheet, support bulk edits, and sync approved content back into designs. For search and filters, that makes it possible to review the language as one connected system rather than hunting through frames one layer at a time.
Map the query journey, not just the search box
Start with the states a user can reach:
- untouched search field;
- typing and suggestions;
- recent or saved searches;
- results with a count;
- filters closed and open;
- selected filter chips;
- sort menu and current sort;
- zero results from a query;
- zero results caused by filters;
- partial or corrected matches;
- loading, failure, and offline states;
- clearing one filter or resetting everything.
Include desktop and mobile variants if controls move or collapse. If a supported state is missing from Figma, flag a design-content gap rather than borrowing copy from an unrelated flow.
Export a copy inventory with context
Select the relevant frames and export their text with CopyDoc. In the review spreadsheet, add columns for screen, component, state, user action, source string, proposed string, owner, status, and notes.
Layer names are not always enough context. A string like “All” could mean all categories, all dates, or all owners. Add the visible label, nearby controls, and a link or identifier for the Figma frame. Where the same component appears repeatedly, mark whether the copy should be globally consistent or intentionally contextual.
Do not bulk replace short words such as “in,” “all,” or “clear” without scope. Search interfaces contain many repeated strings whose meanings differ.
Choose a small controlled vocabulary
Agree on terms for the actions and objects users see. Typical decisions include:
| Decision | Questions to settle |
|---|---|
| Search object | Are users searching products, records, people, files, or everything? |
| Narrowing | Does the product say filter, refine, or narrow? |
| Removal | Does “Clear” affect one field, all filters, or the full query? |
| Ordering | Is it sort by relevance, newest, price, or a domain-specific label? |
| Results | Is a count exact, approximate, or unavailable while loading? |
Use familiar user language instead of taxonomy copied from a database. If the backend calls a field content_type, the interface may need “Type.” Preserve important distinctions, though: “owner” and “created by” are not interchangeable if they reflect different data.
The broader Figma terminology audit workflow helps establish product-wide vocabulary. This pass focuses on how terms combine while a user forms, narrows, and recovers a query.
Write empty states that diagnose the problem
Not all zero-result states are the same.
For an unmatched query, repeat the query when safe and offer concrete recovery: check spelling, use fewer terms, or search another scope. When filters remove all results, show which constraints are active and provide an action to clear or change them. For a genuinely empty collection, explain how content gets there rather than suggesting different keywords.
Avoid promising that nothing exists when the system may have incomplete indexing or inaccessible results. “No results in this workspace” is more precise than “No results anywhere.” Error states should not masquerade as empty states; a failed request needs retry or status guidance.
Test strings against real data
Create prototype examples for:
- one result and many results;
- a very large or approximate result count;
- long query text and long filter values;
- multiple selected chips wrapping to another line;
- conflicting filters;
- permission-limited results;
- special characters and pasted URLs;
- translated labels longer than English;
- a screen reader’s likely announcement order.
Review truncation deliberately. A visually tidy ellipsis may hide the difference between two similarly named filters. Tooltips are not a universal repair, especially on touch devices.
Sync carefully and review the diff
After approval, sync the selected spreadsheet changes back into Figma. Work in a controlled selection or duplicate branch first. Review every changed layer, including component instances and hidden states. Confirm that resizing did not cover icons, move controls off-screen, or change responsive behavior.
Use stable identifiers rather than row order if the spreadsheet will be edited or sorted by multiple reviewers. Lock formula or ID columns, and keep a snapshot of the approved source so later changes are auditable.
The stale product copy audit is useful for broader freshness checks. Search and filter copy needs an additional state-based review because two individually current strings can still give conflicting instructions when shown together.
Final audit checklist
Before handoff, confirm that action labels have predictable scope, counts use correct singular and plural forms, filter names match visible data, and zero-result messages distinguish query, filter, permissions, and errors. Test mobile wrapping, keyboard labels, focus order, and translated expansion. Finally, compare the implemented interface with the approved copy source; a clean Figma file does not prove production strings were updated.
CopyDoc removes the mechanical work of collecting and returning dozens of strings. The valuable judgment is the vocabulary model: helping users understand what is being searched, what is narrowing the results, and what they can do next when the answer is empty.
