Why Flowo's Settings Have No Search Yet
By Mykhailo Boichuk · Chief Technology Officer
In short
Flowo's settings screen has no search field, and BBMM Technologies has not built one. The root screen holds nine fixed rows in three labelled groups, every destination is one tap away, and each row carries a subtitle or a footer that says what it controls. Search becomes worth its cost when a setting sits more than one level deep or when labels stop being enough in all seven languages.
Flowo has no settings search
The Flowo settings screen contains no search field, no filter and no index of its rows. We checked our own code before writing this: the settings directory has a root screen, the pages it pushes and a shared list component, and none of them accepts a search query.
Search does exist elsewhere in the app. The task list has a search capsule and so does the braindump screen. Those lists grow with use and have no upper bound. The settings list is written by us and its length is under our control, so we treat a long settings list as a design problem to fix at the source.
This article describes how the screen is organised so that search has not been needed, and the conditions under which we would build it.
Nine rows in three groups
The root settings screen in a release build has nine fixed rows under three headers. The groups are:
- Planning: My day, Categories, Session Length.
- Tools: Focus, Mindful Pause.
- General: Language, Date & Time, Appearance, Help & Support.
Two more areas frame those groups. The Flowo Pro status sits at the top of the screen. Managing, pausing and restoring a purchase sit at the bottom under Account, next to the invite and code rows.
A developer group with planner diagnostics exists in the same file. It is compiled only into debug builds, so it never adds length to the screen people use.
Planning comes first among the groups because those rows change what the scheduler does with a day. Language, date format and appearance are set once and sit lower.
One level of depth
Every setting in Flowo is reachable with one tap from the root screen, followed by at most one pushed page. Date & Time is a page with three rows: Date Format, Month Format and 24-Hour Clock. Appearance holds the theme control, the accent picker, Reduce Transparency and the navigation order editor. A comment in our code gives the reason these two became pages of their own: they are set once, then never scrolled past again.
Help & Support collects everything a person looks for when something is wrong or when they want to leave: the guides, the support page, six legal and privacy rows including data export, and account deletion.
The root screen itself now owns two values directly, the session length and the language. Everything else lives on the page that owns it. That split keeps each page short, which is the property search would otherwise have to compensate for.
Rows that explain themselves
Each settings row is built from one shared component with an icon tile, a title, an optional subtitle and an optional trailing value. The subtitle wraps onto more lines when it is long. It is never truncated, because a cut-off explanation sends people into the page just to find out what the page is.
The subtitles are written as descriptions of effect. Categories reads "What the planner schedules around". My day reads "Set the rhythm of your day". The Language row shows the current language as its trailing value, and Session Length shows the current number of minutes.
Groups can carry a footer. The Planning group uses its footer to explain session length as the minimum time block for a task. We moved that sentence out of the row because a subtitle squeezed beside a value was hard to read.
We also removed things that carried no information. The My day row once had a strip of seven weekday chips beneath it. A row of muted letters told nobody what to do, so the subtitle now does that job in words. A notifications tile was removed from this screen after it proved unreliable to tap on some devices; notification permission is requested at first launch.
Each group is drawn as one rounded surface with hairline separators, the way iOS Settings draws grouped sections. On an iPad the list keeps a readable column 600 points wide and is centred, so rows do not stretch across the whole display.
Seven languages
Flowo ships in seven languages: Ukrainian, English, Arabic, German, Spanish, French and Hebrew. Every settings label, subtitle and footer exists in all seven, and two of them read right to left.
A test in our suite enforces this. It checks that every locale has the same keys as English, that placeholders match, that no value is empty, and that right-to-left locales are registered. A settings row cannot ship with a missing translation.
The language picker is generated from the list of shipped locales. An earlier version used a hand-kept map with five entries, which left German and Spanish translated and impossible to select. The Language row also shows the language the app is actually rendering in, including the case where the device locale decides.
What would make us add search
We would add settings search when the structure above stops holding. The signals we watch for are concrete:
- A setting that needs two pushed pages to reach.
- A root screen that no longer fits in about two phone screens of scrolling.
- Two rows whose titles could plausibly mean the same thing in any of the seven languages.
- Support messages asking where a setting is.
Before building search we would first try to regroup or remove rows, because that helps every person on the screen and search helps only those who type.
If we do build it, the design is already constrained by what exists. The index would be the localised title, subtitle and footer of each row in the current language. A result would be the row itself, tappable in place, and never only the name of the page that contains it. The main rows already carry stable keys in code, such as the ones for language and session length, which gives a result something exact to point at.
Key takeaways
- Flowo's settings screen has no search field; search exists only in the task list and the braindump screen.
- The root settings screen has nine fixed rows in three groups: Planning, Tools and General.
- Every Flowo setting is reachable in one tap from the root screen plus at most one pushed page.
- Settings subtitles wrap and are never truncated, and group footers hold longer explanations.
- A localisation test requires every settings string in all seven languages before a build passes.
- The developer settings group is compiled only into debug builds.
Frequently asked questions
- Does Flowo have a search in settings?
- No. The Flowo settings screen has no search field or filter. It has nine fixed rows in three labelled groups, and every setting is at most one page away from the root screen.
- When does an app need settings search?
- Search starts to pay for itself when settings sit more than one level deep or when the root list is too long to scan. Below that size, clear grouping and descriptive subtitles do the same job for everyone, including people who never type a query.
- How many settings should fit on one screen?
- There is no fixed number. Flowo keeps nine rows on its root settings screen and moves set-once options such as date format and theme to their own pages. The test we apply is whether a person can read every row title without a long scroll.
- What should a settings search index?
- At minimum it should index each row's title and its description in the user's language. Synonyms make it far more useful and are also the expensive part, because they have to be written for every supported language. A result should open the control itself.
- Which languages does Flowo support?
- Flowo supports Ukrainian, English, Arabic, German, Spanish, French and Hebrew. Arabic and Hebrew are laid out right to left. The in-app language picker is generated from the list of shipped locales.
References
- Apple Human Interface Guidelines
- Flutter documentation: Internationalizing Flutter apps
- W3C: Understanding WCAG 2.2
- Flowo
About the author
Mykhailo Boichuk
Chief Technology Officer
Mykhailo builds the systems behind the apps. He works on macOS and iOS performance, and on the sync problems that come with software that has to run offline.