Как я перестал верстать чеки в коде и написал визуальный редактор шаблонов для Flutter

Я решил, что хватит это терпеть, и написал pdf_kit_editor — визуальный конструктор, который отделяет дизайн документа от данных.

Мобильная ОС компании Apple

Я решил, что хватит это терпеть, и написал pdf_kit_editor — визуальный конструктор, который отделяет дизайн документа от данных.

В новом выпуске замена циклов рекурсией и Android на десктопах, нарезание Android-монолита и промпт-контракты, снижение комиссии в Play Store, потери органики и что с этим делать, скрытый bottleneck сборок и многое другое. Заходите!

2026 год. У вас 8–16 ядер в ноутбуке. M-чипы летают.
Swift компилируется параллельно.
Вы нажимаете ⌘B – и одно ядро уныло крутится на 100% загрузки, пока остальные отдыхают.
Добро пожаловать в мир однопоточной компиляции Asset Catalog’а.
В этой статье я покажу, почему Asset Catalog тормозит сборку и как заставить Xcode использовать больше ядер CPU. Пошагово и с примерами.

Привет, Хабр! Пишу от лица Мастерской IT.ru по запросу команды MyBox и ее лидера Вовы. Ребята столкнулись с задачей, которая тяжко решается - так что предлагаем ее спецам с Хабра за, естественно, награду. Подарим Mac Mini на 1 ТБ SSD за успешное решение.
Что за задача?
Есть проект MyBox - защищенное персональное облако на базе Apple Mac mini. Устройство должно уметь предоставить удалённому узлу подписанный Apple «аттестат», подтверждающий, что на устройстве запущено приложение с конкретным хешем бинарника.

Swift известен системой pattern matching. Большинство разработчиков используют её в switch, иногда в if case или guard case. Но в языке есть ещё одна конструкция, которую многие никогда не видели — for case let.
Интересно, что даже разработчики с несколькими годами опыта часто о ней не знают. Более того, в официальной документации Apple она упоминается лишь вскользь, потому что технически это не отдельная фича языка, а комбинация существующих механизмов. Тем не менее, эта конструкция может заметно упростить код.
В этой статье я хочу разобраться:

В работе постоянно сталкиваешься с багами. В топе самых неприятных — крэш. Еще хуже — когда он неочевидный, и сразу сложно сказать, откуда "растут ноги". В этой статье попробуем воспользоваться LLDB для разбора проблемы на реальном примере.

Привет, Flutter-разработчики! 👋
Февраль — это тот месяц, когда экосистема не просто жила, а перестраивалась. Два ключевых релиза, публичный вектор развития на 2026, неожиданный 3D-движок от Toyota и тонна полезных материалов!

Большинство разработчиков думают об офлайн-режиме в последнюю очередь - когда приложение уже готово, дизайн согласован, а PM давит на дедлайн. В результате пользователь видит белый экран, зависший спиннер или, что хуже - молча потерянные данные. Эта статья про то, как выстроить честный UX для состояний без сети: от психологии тревоги до кода с экспоненциальным откатом, от визуального языка ошибок до стратегий разрешения конфликтов. Всё это пригодится при разработке любого мобильного или веб-приложения, которое работает в условиях нестабильного соединения - а таких большинство.

В новом дайджесте новая статья про шейдеры Metal и переход от Dagger к Metro, 10 фич в Android-приложение за один заход и лучшая производительность Flutter, новый подход к прогнозированию погоды, настройка конвейера доставки и многое другое. Заходите!
Если вы когда-нибудь разрабатывали мессенджер, то наверняка сталкивались с задачей выбора фотографий и видео для отправки. На первый взгляд кажется, что Apple предоставляет всё необходимое: UIImagePickerController, PHPickerViewController. Но стоит только копнуть чуть глубже, и оказывается, что стандартные компоненты не покрывают и половины того, что нужно в реальном продукте.

Я не разработчик, но теперь у меня есть своё приложение в App Store, которое помогло мне больше ходить и в прошлом месяце я прошёл 500 000 шагов. В этой статье рассказываю как я к этому пришёл и какие инструменты помогли ускорить путь.

Привет всем! Я — Майя, контент-менеджер, опять к вам с очередным обзором.
Если открываете календарь на iPhone и всё равно что-то забываете — вам сюда.
В этой статье разберу 12 календарей для iOS — простые бесплатные и «комбайны» с задачами.
Этот обзор для тех, кому нужен удобный календарь для планирования на айфон: учёба, работа, созвоны, дедлайны, семейные дела.
В конце — таблица сравнения, чтобы не перечитывать весь обзор, если времени нет. И вопрос, чтобы понять, кто чем пользуется и почему.

Если вы разрабатываете iOS-приложение с виджетом, Watch-компаньоном (это приложение для Apple Watch, которое работает в паре с основным приложением на iPhone) или Share Extension - рано или поздно вам придётся передавать данные между процессами. App Groups - стандартный механизм для этого, и на первый взгляд он прост: добавил capability, написал UserDefaults(suiteName:), поехали. Но именно эта кажущаяся простота и создаёт проблемы. Данные лежат в незашифрованном контейнере, любое приложение из вашей команды может их прочитать, а валидация входящих данных почти никогда не делается. Давайте же рассмотрим, как правильно настроить App Groups, что реально можно туда класть, какие риски существуют и как организовать безопасный обмен (в том числе с примером передачи токена авторизации между приложением и виджетом).

Как превратить ваше приложение в инклюзивный продукт, который используют ВСЕ - от слабовидящих до людей с когнитивными нарушениями. Плюс секретные фишки, о которых молчит документация Apple.
Это руководство создано не для того, чтобы вы просто поставили галочку в Jira. Мы поговорим о том, как код может стать мостом или стеной для миллионов людей.

Все говорят, что AI заменит разработчиков. Я решил зайти с другой стороны — написать AI-агента, который заменит пользователей. Альфа версию для macOS уже зарелизил.
Послдение полгода работали с коллегой над двумя приложениями, одно десктопное (по ссылке выше), другое на 4 платформы — android, ios, web, backend. Много чего повидали, хочу поделиться опытом.
Дисклеймер. Статья содержит последствия массового использования expect/actual, сцены жестокого обращения с XCode и эпизоды длительного ожидания нотаризации на релизных сборках под OSX. Не рекомендуется лицам, планирующим запуск KMP-проекта на несколько платформ без предварительной консультации с психотерапевтом.

В этом выпуске бесконечная история сторибордов и расцвет «достаточно хорошей» архитектуры в Android, Baseline Profiles и шейдеры, мягкая обводка текста, мобильный геймдев нулевых и многое другое. Заходите!

В этой, уже 3 по счету статье мы переходим к самому важному месту во всей архитектуре Capacitor — к плагинам.
Именно плагины делают из WebView полноценное мобильное приложение. С ними у Вас появляется доступ к камере, файловой системе, push-уведомлениям, Bluetooth и т.д.
В статье разберем:
как устанавливаются официальные плагины;
как работать с community-плагинами;
как мигрировать с Cordova;
и главное — как написать собственный плагин с нуля на реальном примере отправки SMS.

Если ведёте дела в iPhone и хотите, чтобы важное не выпадало из головы, напоминалки — самый простой способ держать день под контролем. Это актуально и для личных задач, и для работы, и для учёбы, особенно если привыкли реагировать на уведомления сразу.
В этой статье разберу, когда достаточно встроенных Apple «Напоминаний», а когда лучше поставить отдельное приложение: дам понятные критерии выбора, соберу ТОП‑8 под разные сценарии и покажу таблицу сравнения.

Вы когда-нибудь открывали приложение, где переход между экранами выглядит так, будто интерфейс собрали на коленке за час до дедлайна? Экран мигает, элементы прыгают, анимация тормозит и вы инстинктивно хотите закрыть это безобразие. Проблема не в том, что разработчик не умеет делать анимации. Проблема в том, что он не понимает, как работает восприятие пользователя.
Давайте же разберем как делать переходы в iOS-приложениях так, чтобы они не раздражали, не ломали флоу и не заставляли пользователя думать "что-то пошло не так". Выясним почему 60 FPS - это не всегда гладко, как избежать типичных багов вроде джанка и мигания, правильно использовать matchedGeometryEffect, писать кастомные переходы без костылей и отлаживать всё это дело до идеального состояния. В конце разберём реальный кейс - переход от списка к детальной странице без единого моргания экрана.

Ниже — разбор алгоритма, который рисует аккуратную "плашку" под выделенным текстом, даже если текст переносится на несколько строк.
Пример кода в проекте сделан на Flutter, но сама идея не привязана к Dart.
Весь код и текст этой статьи можно найти тут на GitHub.