App development

Principles of mobile interface design

A mobile interface is driven by one thumb, on a screen its user is often holding while standing and half distracted, so every design decision has to pass through those two constraints. Four things build it: thumb reach, hierarchy, feedback and consistency, and only the first and part of the second have numbers.

  • Lesson 3 of 8
  • Beginner
  • Free, no signup

The four pillars of a mobile interface

The first pillar has published numbers. The other three do not, and get checked by looking at the app itself.

A usable mobile interfaceone thumb, on the move, interruptible at any moment
  • Thumb reach

    The primary action in the comfortable zone. Target size at least 24 by 24 CSS pixels per WCAG, and 48 by 48 units per Android guidance.

  • Hierarchy

    One primary action per screen. A small screen has no room for two actions of equal weight.

  • Feedback

    An immediate sign of the tap, even when the server answers late. Otherwise the button gets pressed twice.

  • Consistency

    Error, loading and empty states look the same on every screen.

Satisfying all four does not guarantee the app gets used. If what the app does is not needed, a flawless interface will not help.

Last checked: Facts and tool names in this lesson are re-checked against their sources on this date.

Where does a mobile interface differ from a desktop one?

In three ways, and none of the three is technical. First, the input: a mouse pointer is a point and a thumb is a soft blob; what a mouse hits precisely, a thumb misses half the time. Second, the posture: a desktop user is sitting and a mobile user is usually walking or waiting. Third, interruption: on a phone a call or a notification arrives at any moment, and the user comes back and has to work out where they were.

A mobile interface is the same visible, touchable layer, but under those three constraints. Everything else follows from there: why one primary action per screen, why the main buttons sit low, why the form is short, why the loading state matters.

Four pillars do the job. Thumb reach says what can be hit without shifting the phone in your hand. Hierarchy says where the eye lands first. Feedback says how the screen shows that something is happening after a tap. Consistency says one pattern stays the same across every screen.

One thing up front so the rest of the lesson is clear: the principles of interface design apply on mobile too and we are not repeating them here. If you have not read the basics, the principles of user interface design are the place to start, and this lesson covers only what mobile adds or changes.

A black phone with a red fan of light over its lower screen, green squares inside it and blue squares out of reach

How far does the thumb reach, and how big should a target be?

Hold the phone in one hand and swing your thumb without shifting it. The screen falls into four zones: the comfortable zone low down on the same side as the hand, the stretch zone in the middle and near the top, the far corner you have to slide the phone in your hand to reach, and the top bar, which on a large phone is effectively out of one handed reach. The primary action of a screen belongs in the first zone, and a dangerous action such as delete goes deliberately where it is harder to hit.

Target size, though, is not a guess, because it has numbers and the numbers are published. WCAG 2.2, criterion 2.5.8, says the target for pointer inputs is at least 24 by 24 CSS pixels, with the exceptions it lists itself: a smaller target with enough spacing around it, or where the same function is available another way on the page, or where the target sits inside a sentence. Android own accessibility guidance gives a larger number: at least 48 by 48 density independent pixels, with at least 8 units of separation between two targets, and it explains that 48 units works out at roughly nine physical millimetres on any screen.

That same Google page carries a point more useful than the number itself: the touch target extends beyond the visual bounds of the element. An icon that looks 24 units across becomes a 48 unit target through the padding around it. So you do not have to make the button big and ugly; you have to make the area that listens for the touch big.

And a warning about the number everybody quotes. "Apple says 44 by 44 points" is a sentence repeated in every article on mobile design in English and in Persian. We searched Apple Human Interface Guidelines today: the layout page, the accessibility page, the buttons page, the gestures page. The number is not written on any of them as a minimum touch target. The only place we found 44 points was a table of button sizes for visionOS, which is a different thing. So it is not that the number is wrong; we could not find a live source for it, and we would rather say we do not know than put words in Apple mouth. The numbers you can cite are the two above.

The four zones of a screen, from the thumb point of view

  • The comfortable zone

    Low on the screen, on the side of the hand. Where the primary action and the tab bar go.

  • The stretch zone

    The middle and the near top. Fine for content, not for a button used often.

  • The far corner

    Reaching it means sliding the phone in your hand. A good place for a dangerous action such as delete.

  • The top bar

    Effectively out of one handed reach on a large phone. A title yes, a frequently used button no.

One hand

This split assumes the phone is held in one hand. A user typing with two hands has a different map, and you do not know which one they are.

Should I follow the platform convention or use my own design?

Short answer: anything the user moves around with belongs to the platform, and anything that is your brand belongs to you. How the back button behaves, the edge swipe gesture, where the tab bar sits, how the keyboard acts and what the date picker looks like are all things your user has met a thousand times before installing your app. Change them and you have not been creative; you have taken away something the user already knew.

Colour, illustration, the tone of the copy, the onboarding screen and the product card are yours, and there being like everyone else buys you nothing. The practical boundary is simple: if changing something forces the user to learn it again, do not change it.

A point contractors usually mention late: keeping the platform convention is cheaper, not more expensive. Standard Android and iOS components already work with the system font size, with dark mode, with a screen reader and with right to left. A hand built copy of the same component has to rebuild all of that, and usually does not. Where you genuinely need a custom component, budget for all those states, not only for the happy one.

And a position you rarely see on a sales page: if your budget is tight, implement the conventions properly first and go after visual distinctiveness second. An app whose interface is ordinary but correct gets used more than one that is distinctive but confusing.

Which decisions belong to the platform and which to you

The platform decides

  • How back behaves and the edge swipe gesture
  • Where the tab bar sits and how navigation is structured
  • Keyboard behaviour and the date picker
  • Dark mode and the system font size
  • Mirroring the layout for right to left

You decide

  • Colour, illustration and the shape of the product card
  • The tone of the copy and the names of sections
  • The onboarding screen and the first run path
  • The empty state and the words written in it
  • What you write in a notification

There is no red cross here because neither column is wrong. The mistake is moving one item from one column into the other.

Where does a Persian screen break on a phone?

Right to left is not finished by one line of CSS, and this is where most Persian apps limp. Apple Human Interface Guidelines carry a whole page on right to left, and several of its rules are exactly the ones we keep running into in practice.

First, numbers. Apple says the order of the digits inside a specific number is never reversed: a phone number, a card number and the number 541 keep the same order in any direction. But the order of numerals that show progress or counting must be reversed, because the control itself has been mirrored. Those two rules look alike and in practice they are opposites.

Second, paragraph direction. Apple rule is that a block of three lines or more aligns to its own language rather than to the page direction, so an English paragraph inside a Persian screen stays left aligned; otherwise the start of every line gets lost. One and two line text goes with the page direction.

Third, icons. The back arrow has to point right in Persian, but a clock, a logo and a checkmark are never mirrored, and neither is an icon that genuinely points at a physical direction. Apple even makes a point that is rarely written down anywhere: Arabic and Hebrew text looks too small next to uppercased Latin because it has no capitals, and increasing it by about two points restores the balance. The same holds for Persian.

Fourth, something invisible on desktop that shows up immediately on a phone: the numeric keyboard. If your input does not convert Persian digits to Latin before validating, a user typing their number on a Persian keyboard gets an invalid number message and has no idea why. That is a design error, not a user error.

The things that only show themselves on a Persian phone screen

Persian mobile screen review sheetright to left

Check these

  • The number input converts Persian digits before validating
  • Phone and card numbers keep their digit order unreversed
  • The progress bar and the slider are mirrored
  • An English paragraph inside a Persian screen stays left aligned
  • The app opens at the largest system font size with nothing clipped

Do not do these

  • Mirroring the clock, the logo and the checkmark
  • Writing a second stylesheet just for right to left
  • Putting a frequently used button in the far top corner
  • Building a custom date picker when the system one is enough

No automated tool finds any of these. Hand the phone to someone who reads Persian and ask them to sign up once.

The states nobody ever draws in the first pass

Any screen that fetches data has at least five states, and the first design usually shows one of them. The empty state, when there is nothing yet. The loading state, while it is coming. The error state, when it did not come. The offline state, which is common on mobile and rare on desktop. And the full state, the picture that got drawn in Figma.

That is what feedback means. After a tap, a mobile user must see a sign within a fraction of a second that the tap registered, even if the server takes two seconds to answer. Without that sign the same button gets pressed again and you have a duplicate order. Offline is a real state on a phone rather than an edge case: the lift, the underground, the car park.

Consistency can be counted here too. Pick one pattern for showing an error across the whole app and use it everywhere. If one screen puts the error above the form, another under the field and a third inside a floating message, the user has to hunt for the error every time.

And the last item, which is really the first thing to do: open the app on your own phone with the system font size turned up and in sunlight. Most of the problems listed in this lesson surface in that one minute, long before any formal review.

The fast path, with AI

There is a mechanical job people spend hours on and models are genuinely good at: converting the physical direction properties in a stylesheet into logical ones, so the interface goes right to left without a second file. It needs no judgement except in a few cases, so a fast cheap model of the Gemini Flash class is enough here and a frontier model is a waste; our current pick sits in the AI section of this site. You do the judgement step yourself, and it is named below.

  1. Pull the candidate list with one grep rather than by eye. The pattern: margin-left, margin-right, padding-left, padding-right, border-left, border-right, bare left and right, and text-align with a value of left or right.
  2. Give the model the grep output with line numbers and run the recipe below. Do not hand over the whole file; only the matched lines are needed and the answer comes back shorter and more accurate.
  3. The third column of the answer is the judgement step and it is yours: confirm or reject every line the model marked as needing to stay physical. Icons and rotated arrows usually live in that column.
  4. Apply the changes and open the screen in both directions, not only in Persian. A correct conversion leaves the English intact too; if something moved in the left to right view, you changed its position rather than its direction.

Copy-ready recipe

These lines come from a CSS file and each one carries a physical direction property. The goal is for the interface to work right to left without writing a second file.

For every line give exactly three columns and write no extra commentary:
1) The line number and the line itself, unchanged.
2) The suggested logical replacement, if one exists: margin-inline-start, margin-inline-end, padding-inline-start, padding-inline-end, border-inline-start, border-inline-end, inset-inline-start, inset-inline-end, and text-align with a value of start or end.
3) One word: "logical" or "keep physical". Any line that points at a real physical direction, such as a border turned into an arrow with rotate, or an icon that means "to the right", must get "keep physical".

Rules:
- When you are not sure about a line, put "keep physical" and give the reason in the third column in ten words at most.
- Delete no line and add no new one.
- Give no opinion on colour, size or class names.

Lines:
{grep output}

Before you trust the output: Do not believe the third column, read it. The model does not know which border was turned into an arrow by rotate and which is a decorative rule, because it has seen one line of the file. We ran this same grep against this site own stylesheet and exactly one case had to stay physical; finding it was a human job, not a model one. Check the finished conversion by eye at the end too, in both directions.

AI in this kind of work

In mobile interface design AI works for two jobs and not for one. It works for mechanical passes over interface code, such as the direction conversion above, or writing out the empty, loading and error states of a component that nobody draws in the first pass. It does not work for deciding which action is the primary action of a screen; that answer comes from the business, not from a design pattern.

Tools that actually help

  • Gemini A cost effective pick for a mechanical pass over stylesheet lines, and it reads images too. Google own page says the Gemini web app runs in over 230 countries and territories, and Iran is not on that list.
  • Claude A better answer when you want the forgotten states of a component written out as code. Iran is on neither of Anthropic two supported-countries lists; we read that on Anthropic own page.
  • Accessibility Scanner Not an AI, and deliberately here: it actually measures touch target size on an Android phone. Google own page says the tool can only account for the use of TouchDelegate from Android 10 onwards, so on older versions it may report an enlarged target anyway.

Where it backfires

The main risk here is not plagiarism, it is unearned confidence. A model does not compute a contrast ratio from an image and does not know the real size of a touch target either, because that size depends on padding that lives in the code rather than in the picture. It will still give a firm opinion on both. The W3C own Easy Checks guidance says automated review does not replace human review, and that sentence was written about tools more precise than a language model.
The second risk is specific to mobile: generating a whole screen design with a model gives you output that looks like a thousand other apps, and on mobile that costs more than on the web because the user sees your app next to the icons of thirty others. Our position: put the model on the code and on the states, not on the visual decision. For how each tool can be paid for from Iran, see the buying guide.

Sources: W3C: Understanding SC 2.5.8 Target Size (Minimum) W3C WAI: Easy Checks Android Accessibility Help: Touch target size Anthropic: supported countries Google: where Gemini Apps are available

Where this advice stops

This lesson is about an app used with one hand while moving. For a tablet, for an app that sits in a stand, and for an industrial app whose user is wearing gloves, the thumb map is meaningless and the target has to be larger rather than more precise. Second, none of the numbers on this page say anything about beauty; a screen that meets every size can still be bad. Third, we said nothing about games: on mobile games most of the rules in this lesson are broken deliberately, and that field has rules of its own.

From our own work

One visual decision on our own site cost the mobile menu fifty pixels of width, and we had to confine that decision to desktop. The rgb.ir header bar has a glass effect built with backdrop-filter, and in main.css it is switched on only above 1101 pixels. The reason is written and measured in the comment on that block: backdrop-filter turns the element into a containing block, so the mobile dropdown, which is position: absolute with inset-inline: 0, sticks to the inside of the bar instead of the full page width. The number is in the comment: 390 pixels became 340.
The second example is the same kind of thing. Tables of three or more columns on this site turn into cards below 780 pixels, and they are selected with :has(thead th:nth-child(3)) in the CSS rather than with a class added by JavaScript. The reason is exactly the feedback point made in this lesson: if the layout waits for a script, the page shifts after the first paint. JavaScript writes each cell label, but the height is reserved in advance with min-height so that it is identical before and after the script runs.

Real follow-up questions

Is mobile interface design the same as responsive web design?

No, but they overlap a lot. Responsive design means one page coming out right at different widths and is mostly a layout problem. Mobile interface design means deciding about things that only exist on a phone: the thumb, touch, interruption, being offline.

Should the primary button go at the top of the screen or the bottom?

At the bottom, if it is meant to be pressed. The top of a large phone is out of one handed reach and is better used for the title and information. The exception is a button that should not be easy to press, such as deleting an account.

Do we need a second version of the interface to make the app right to left?

No, and if you built one you probably took a wrong turn. Standard Android and iOS components mirror themselves, and on the web the logical properties do the same job. What genuinely remains is deciding a handful of special cases: which icon mirrors, which number keeps its order, and which paragraph aligns to its own language.