The Heading Layer of 22 App Panels: One Shell, One First Control, and Four Apps That Share a Shape
I work on OnePassApps, so this is our own build - and every control, every heading and every number below was measured on it today, in the visible Chrome on our own machine, signed out, across all 22 live app routes. An
I work on OnePassApps, so this is our own build - and every control, every heading and every number below was measured on it today, in the visible Chrome on our own machine, signed out, across all 22 live app routes.
An earlier post on this account counted how many app pages open a file input and which ones print the same accept list. That was the file-input layer. This one is a different layer, and it is the one a visitor meets first: the controls and the headings the panel itself puts on screen, before anything has been typed.
How this was measured
For each of the 22 /apps/<slug> routes: open the page, wait for the panel to render, clone the working area, drop the header, nav and aside elements, then read the named controls and the h1/h2/h3 headings still inside it, in document order.
The pages were read signed out - NewsFlow's own panel prints Sign in to sync while it works - so nothing below depends on an account.
The shell comes first on all 22 routes
On every one of the 22 routes, the first three named controls in the working area are the same three, and they belong to the shell rather than to the app:
Search everythingβ¦Ctrl KHelpAsk Sam
Only the fourth control is the app's own. That is the same on every route, from /apps/newsflow to /apps/screen-recorder.
What each app asks you to touch first
Set the shell's three aside and the first control the app itself offers differs by route. Here is all 22, in the order the panel puts them:
| Route | The first app control | Its label |
|---|---|---|
/apps/ambient-noise-mixer |
plain button | Steady hush |
/apps/calendar-maker |
file input | Choose calendar JSON file |
/apps/chart-maker |
plain button | Paste CSV |
/apps/citation-formatter |
file input | Choose bibliography JSON file |
/apps/cv-builder |
file input | Choose rΓ©sumΓ© JSON file |
/apps/email-signature |
textarea | Street, town, postcode |
/apps/focus-timer |
radio button | Pomodoro |
/apps/invoice-maker |
file input | Choose invoice JSON file |
/apps/label-maker |
radio button | Manual entries |
/apps/movie-tracker |
tab | Browse |
/apps/newsflow |
tab | Inbox |
/apps/paperkit |
plain button | Add PDFs |
/apps/password-generator |
radio button | Password |
/apps/qr-code-maker |
combobox | Content type |
/apps/screen-planner |
combobox | Screen size unit |
/apps/screen-recorder |
switch | System or tab audio |
/apps/signature-maker |
plain button | Undo |
/apps/social-card |
textarea | Headline |
/apps/subtitle-workbench |
plain button | Paste text |
/apps/teleprompter |
plain button | Load example script |
/apps/time-zone-planner |
plain button | Remove London |
/apps/word-counter |
textarea | Paste or type your text⦠|
Counted by kind, that is 4 routes whose first control is a file input, 7 a plain button, 3 a radio button, 3 a textarea, 2 a combobox, 2 a tab and 1 a switch.
Two of those firsts are worth reading twice. Remove London opens with the button Remove London, and Undo opens with Undo. Neither is the input the app exists for - a city search box and a signature canvas respectively - but both sit ahead of it in the panel.
The heading layer
The panel's own headings, route by route:
| Route | Headings | The headings, in order |
|---|---|---|
/apps/ambient-noise-mixer |
3 | Layers / Volume and sleep timer / Download |
/apps/calendar-maker |
5 | Layout and start / Page options / Events / Save your setup / Output |
/apps/chart-maker |
3 | Data / Chart / Export |
/apps/citation-formatter |
4 | Content / Style / Export / Sources |
/apps/cv-builder |
5 | About you / Experience / Education / Skills / Template |
/apps/email-signature |
5 | Content / Style / Export / Message background / If formatted copy is blocked |
/apps/focus-timer |
2 | Timer / Options |
/apps/invoice-maker |
6 or more | You and your client / Line items / Payment details and notes / Settings / From / Bill to |
/apps/label-maker |
4 | Content / Style / Export / Size and spacing |
/apps/movie-tracker |
6 or more (3 are live film titles) | its product name, then live content titles |
/apps/newsflow |
3 (2 are live story titles) | its product name, then live content titles |
/apps/paperkit |
3 | Source / Selection / Export |
/apps/password-generator |
3 | Type / Password settings / How many |
/apps/qr-code-maker |
2 | Content / Appearance |
/apps/screen-planner |
6 or more | Units / Screen A / Screen B / Seating / Measurements / Horizontal view from 2.5 m |
/apps/screen-recorder |
3 | Sources / Options / Your recording appears here |
/apps/signature-maker |
5 | Draw / Ink / Export / Export preview / Sign here |
/apps/social-card |
4 | Content / Style / Export / Type and colour |
/apps/subtitle-workbench |
3 | Source / Timing / Result |
/apps/teleprompter |
3 | Script / Display / Your script appears here |
/apps/time-zone-planner |
4 | Places / Date / Meeting / Meeting time |
/apps/word-counter |
3 | Text / Settings / Nothing to count yet |
Two of these 22 rows are not section headings at all. On /apps/newsflow and /apps/movie-tracker the panel carries the product name as its first heading and then live content titles - a story headline on NewsFlow, a film title on MovieMatcherAI - so their counts are not comparable with the other 20, and they are left out of the histogram below.
Across the other 20 routes: 2 routes prints 2 headings, 8 routes prints 3 headings, 4 routes prints 4 headings, 4 routes prints 5 headings, 2 routes prints 6 headings.
Three of those headings are not section names either. They are the panel's own empty-state line, written as a heading so it can hold the place of the content that is not there yet: Your script appears here on /apps/teleprompter, Nothing to count yet on /apps/word-counter and Your recording appears here on /apps/screen-recorder.
One shape, four times
Four routes open their panel with the identical first three headings - Content, Style, Export:
/apps/citation-formatter/apps/email-signature/apps/label-maker/apps/social-card
That is the shape of an app whose job is to take what you type, let you choose how it looks, and hand you a file. The other routes each name the same three jobs differently: /apps/chart-maker says Data, Chart, Export, and /apps/paperkit says Source, Selection, Export.
Seven routes carry a heading named exactly Export. Three more close their panel with an output section under another name - Output on /apps/calendar-maker, Download on /apps/ambient-noise-mixer and Result on /apps/subtitle-workbench. So ten routes end on a section that is about the output, and the word is Export in seven of them and something else in three.
The limits of this reading
One build, one day, read from the rendered panel of 22 routes while signed out. It says nothing about what those headings do after you sign in, nothing about the guide pages that sit beside them, and nothing about the order a keyboard walks them in. Where a route printed six or more headings, the table says so instead of guessing the seventh.
If you want to walk the same layer yourself, the apps are all under one membership and the browser does the work in the tab:
The written guides for the same apps are on one page:
I work on OnePassApps, and every control and every heading quoted above was read out of our own rendered panels today - not out of a page title, a meta description or a guide.
Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes β full credit and traffic to the original publisher.