Кейс · продуктовый дизайн

Tabrara iOS

Приложение продавца Tabrara было только на Android. Я перенёс его на iPhone по правилам iOS

Работал один, от требований до передачи в разработку

Задача

Перенести приложение продавца с Android на iPhone с теми же функциями

Решение

Навигация, компоненты и жесты iOS, вход через Apple, подписка через App Store и удаление аккаунта

Результат

52 экрана в двух темах, дизайн‑система и спецификации для разработчиков

  • 44

    функции Android перенесены на iOS

  • 15

    решений с записанной причиной

  • 69

    исправлений по ревью из 80 замечаний

  • 8

    изученных приложений для продавцов

  • 52

    экрана в пяти разделах

Почему iPhone

В Tabrara продавцы ведут интернет-магазин с телефона: каталог, заказы, отчёты и команду. Приложение было только на Android, поэтому с iPhone работать было нельзя. А растёт сервис за счёт рекомендаций продавцов друг другу, и каждый продавец с iPhone выпадал из этой цепочки

Остаётся как на Android

  • Все функции продавца
  • Цвета, иллюстрации и состав экранов
  • Данные и сервер

Меняется под iOS

  • Навигация и жесты по Human Interface Guidelines
  • Системные компоненты в стиле Liquid Glass
  • Иконки SF Symbols и шрифт SF Pro

Без этого не пройти ревью App Store

  1. Вход через Apple
  2. Подписка через покупки Apple
  3. Удаление аккаунта в приложении

В работу не входили веб-витрина покупателя, iPad и новые функции из стратегии роста

Как шла работа

После ревью работа возвращается туда, где найдена проблема: в дизайн-систему, экраны, тексты или состояния

  1. Исследование

    • Требования
    • Аудитория и данные
    • Аналоги

    Результат

    Бриф и вопросы команде

  2. Проектирование

    • Сценарии
    • Навигация
    • Карта экранов

    Результат

    15 сценариев, 52 экрана

  3. Визуальный дизайн

    • Дизайн-система
    • Экраны
    • Тексты
    • Состояния

    Результат

    598 кадров в двух темах

  4. Проверка и передача

    • Ревью разделов
    • Спецификации

    Результат

    6 документов

Что я изучил

До экранов разобрал исходный Android, приложения для продавцов и требования Apple

  • Макеты Android

    Все пять разделов последней версии. Где вариантов было несколько, например список товаров и онбординг, выбирал сам и записывал причину

  • 8 приложений для продавцов

    Ecwid, Shopify, Ozon Seller, Etsy Seller, Square и другие. Кнопки действия в строке заказа нет ни у кого: статус меняют на экране заказа

  • Apple и iOS 26

    Что меняет Liquid Glass в навигации и какие пункты ревью App Store влияют на экраны: вход, подписка и удаление аккаунта

Главная находка

Телефон и адрес в карточке заказа

Ни одно из 8 приложений не показывает их в списке заказов. А в опросе продавцов Tabrara телефон, имя и адрес выбирали чаще всего. Поэтому в карточке iOS они стоят первыми, а номер заказа и время ушли на второй план

Заказы, товары, отчёты и магазин

Заказы стоят первыми, потому что с ними продавец работает каждый день. В списках заказов и товаров таб-бар сворачивается при прокрутке

Путь заказа на схеме переходов: Принять, Отметить собранным, Завершить

Решение 1

Что поменялось при переходе на iOS

Функции те же, что на Android, а путь к ним другой. Каждое отличие я записал с причиной

AndroidiOS
Плавающая кнопка «+»Кнопка «+» в навбаре
Меню «⋮» у строкиСвайпы и контекстное меню
Своя шторка «Поделиться»Системное меню «Поделиться»
«Выйти» и «Удалить» в меню «⋮»Внизу настроек, где их ищут на iOS
Диалоги MaterialАлерты, шторки и листы действий
Roboto и Material SymbolsSF Pro и SF Symbols

Решение 3

Вес до грамма

Продавец написал в поддержку, что двух знаков после запятой мало. На дорогом товаре каждый недовес стоит денег

«Для весового товара сделать ещё одну цифру для граммовки. У вас стоит после запятой две цифры, а надо 3, а то когда товар достаточно дорогой, существенный минус идёт при постоянном недоборе»
Продавец Tabrara, обращение в поддержку
  • Минимум и шаг

    Продавец сам задаёт минимальный заказ и шаг для покупателя

  • Три знака

    Вес вводится с точностью до грамма, степпер стал шире

  • Правка состава

    Точный вес после взвешивания. Если заказ оплачен, приложение предупредит о новой сумме

  • Сумма считается от точного веса

    1 200 ₽ × 0,485 кг

    582 ₽

Что рассматривал

  • Отказался

    Граммы до килограмма

    Меньше 1 кг в граммах, больше в килограммах. Две единицы в одном поле, легко ошибиться в тысячу раз

  • Отказался

    Отдельное поле веса

    Точный вес в поле рядом со степпером. Строка весового товара становится выше и сложнее остальных

  • Выбрал

    Широкий степпер

    Тот же контрол, что у штучных товаров, только шире, и вес с тремя знаками. Минус: цена в строке переносится на две строки

Решение 4

Tabrara PRO на iPhone

Экраны подписки нельзя перенести с Android как есть. Покупка идёт через Apple, и у Apple свои требования к условиям, восстановлению покупок и удалению аккаунта

  • Пейвол

    Цена, автопродление и «Восстановить покупки»

  • PRO с Android

    Подписка, купленная на Android, работает и на iPhone. Покупать второй раз не нужно

  • Удаление аккаунта

    Прямо в приложении. Подписку Apple оно не отменяет, об этом предупреждает баннер

  • Уведомления

    Разрешение спрашиваем после первой отправки ссылки на магазин, когда польза понятна

Пункты App Store Review Guidelines: 3.1.1 (покупки в приложении), 3.1.2 (подписки) и 5.1.1(v) (удаление аккаунта)

Цвета и темы

Цвета и иллюстрации пришли из Android. Типографика, иконки и системные компоненты следуют iOS. Светлая и тёмная темы: два режима одних переменных

ТокенСветлаяТёмная
bg/⁠grouped#F1EDEB#141313
surface/⁠card#FFFFFF#201F1F
text/⁠primary#1C1B1B#E5E2E0
accent/⁠tint#005E1B#9FD49B
accent/⁠fill#CCFF77#A8E735

1,1 : 1

Салатовый на светлом фоне не читается как текст. Он остался только заливкой кнопок и чипов с тёмной подписью

7,6 : 1

Тёмно-зелёный стал акцентом: ссылки, активная вкладка, иконки

  • Новый
  • Подтверждён
  • Собран
  • Завершён
  • Отменён

Статус заказа всегда подписан словом. Цвет только помогает

Что нашло ревью и что я исправил

Каждый раздел проверен по Human Interface Guidelines, WCAG, дизайн-системе, текстам, состояниям и паритету с Android. Три примера из раздела «Заказы»

  • WCAG 1.4.11

    Кружок выбора не был виден

    2,71 → 5,09

    Обводка на серой группе не дотягивала до контраста 3:1. Поднял тон токена и проверил обе темы

  • Паритет с Android

    В поиске пропал фильтр по статусам

    На Android выдачу можно сузить до новых заказов. Вернул ряд чипов со счётчиками

  • HIG

    Меню расходилось с системным

    В iOS 26 иконки в меню стоят слева. Перестроил компонент по киту Apple и вернул пункт «Добавить в контакты»

Что получают разработчики

Пиксели и отступы видны в Dev Mode. Спецификация отвечает на то, чего там нет: переходы, поведение, состояния, данные, тексты и допущения

  • Библиотека дизайн-системы

    Переменные двух тем, текстовые стили, компоненты

  • Макеты

    598 кадров: каждый экран в светлой и тёмной теме, со всеми состояниями

  • Спецификации разделов

    Заказы, товары, отчёты, вход, магазин и подписка

  • Тексты и состояния

    Глоссарий, подписи VoiceOver, 232 пронумерованных состояния

Компонент → SwiftUI

tab-barTabView
nav-barnavigationTitle + toolbar
sheet.sheet + presentationDetents
alert.alert
action-sheet.confirmationDialog
list-rowList(.insetGrouped)
bar-chartSwift Charts
toastсвой оверлей

Каждый экран со всеми состояниями

Загрузка, пусто, нет сети, ошибка действия и изменения с другого устройства. Всего описано 232 состояния и крайних случая