SwiftStreamingMarkdown - рендеринг Markdown с поддержкой стриминга
SwiftStreamingMarkdown - библиотека от Microsoft для рендеринга Markdown текста, поддерживающая плавную потоковую обработку.
• Плавные и производительные переходы при поступлении нового текста
• Нативный рендеринг встроенных и блочных формул LaTeX
• Интерфейс встроенных ссылок на источники для ответов LLM
• Гибкая настройка типографики, тем оформления и контекстных меню iOS
• Встроенные инструменты для аналитики и отслеживания взаимодействий
SwiftStreamingMarkdown на GitHub: https://github.com/microsoft/SwiftStreamingMarkdown
Платформа: iOS
⭐️: 223
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
SwiftStreamingMarkdown - библиотека от Microsoft для рендеринга Markdown текста, поддерживающая плавную потоковую обработку.
• Плавные и производительные переходы при поступлении нового текста
• Нативный рендеринг встроенных и блочных формул LaTeX
• Интерфейс встроенных ссылок на источники для ответов LLM
• Гибкая настройка типографики, тем оформления и контекстных меню iOS
• Встроенные инструменты для аналитики и отслеживания взаимодействий
SwiftStreamingMarkdown на GitHub: https://github.com/microsoft/SwiftStreamingMarkdown
Платформа: iOS
⭐️: 223
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
•
(iOS Ru) Архитектура, перформанс, дебаг: как мы делали медиаленту•
(iOS Ru) SwiftSyntax: пишем свой DI framework•
(iOS En) iOS 27 Style Glass Sliders Using SwiftUI•
(iOS En) What's new in Swift and SwiftUI (WWDC 2026)•
(iOS En) Setting up Gemini in Xcode's Coding Agent•
(iOS En) Swift Macros Demystified: Build a Freestanding Expression Macro•
(iOS En) Weather App Style Sticky Scroll Section Using SwiftUI•
(And En) How to understand Play’s expanded billing options and lower fees•
(And En) Is THIS How Android Apps Communicate In Future? - Exploring the NEW AppFunctions•
(And En) NEW Scoped ViewModels API in Jetpack Compose•
(Crs Ru) Как мы внедряли Compose Multiplatform в Я.Team•
(Crs Ru) yx_state + yx_scope + yx_navigation: единый стек Flutter-приложений•
(Dev Ru) T-Shape мобильный разработчик•
(Dev Ru) Найм в эпоху AI — собеседования, IT найм, рынок трудаПрошлогодние видео:
•
(iOS Ru) Молот и наковальня iOS-разработчика•
(iOS Ru) А так ли нужны акторы в Swift Concurrency?•
(iOS Ru) Реактивный Swift Concurrency•
(And Ru) Эти фичи Kotlin меняют правила игры•
(And Ru) Что не так с Android разработкой?•
(And Ru) Эволюция Android тестов с Marathon Test RunnerPlease open Telegram to view this post
VIEW IN TELEGRAM
Composables UI - коллекция компонентов для Jetpack Compose и Compose Multiplatform
Composables UI — это набор современных, accessible компонентов для Jetpack Compose и Compose Multiplatform.
Jetpack Compose построен на основе Material Compose, реализации языка дизайна Google Material Design в Compose. Material Compose — отличная отправная точка для создания приложений с помощью Compose. Но он также воспринимается как библиотека компонентов, разработанная для создания приложений Google. Его сложно настраивать как в плане стиля, так и в плане пользовательского опыта. Вам либо нужно принять дизайнерские решения Material, либо перестраивать те же компоненты самостоятельно.
В то же время Jetpack Compose развивается за пределами Android благодаря Compose Multiplatform от JetBrains. Но Material Design выглядит неуместно за пределами Android, особенно на iOS. Material Compose также не разработан с учетом использования курсора. В результате приложения могут казаться слишком большими на настольных компьютерах и в веб-браузере.
Именно эту проблему решает Composables UI, используя следующие принципы:
• Универсальность: компоненты автоматически адаптируются к возможностям устройства, таким как сенсорный ввод, ввод с мыши и клавиатуры.
• Открытый исходный код: код под лицензией MIT, который легко модифицировать.
• Красивые настройки по умолчанию: авторы тщательно продумывают дизайн, чтобы вы могли создавать современные приложения для всех платформ без специальных навыков проектирования.
• Возможность копирования и вставки: каждый компонент находится в отдельном файле, поэтому вы можете скопировать его напрямую.
Composables UI на GitHub: https://github.com/composablehorizons/composables-ui
Платформа: Android/кроссплатформа
⭐️: 37
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Composables UI — это набор современных, accessible компонентов для Jetpack Compose и Compose Multiplatform.
Jetpack Compose построен на основе Material Compose, реализации языка дизайна Google Material Design в Compose. Material Compose — отличная отправная точка для создания приложений с помощью Compose. Но он также воспринимается как библиотека компонентов, разработанная для создания приложений Google. Его сложно настраивать как в плане стиля, так и в плане пользовательского опыта. Вам либо нужно принять дизайнерские решения Material, либо перестраивать те же компоненты самостоятельно.
В то же время Jetpack Compose развивается за пределами Android благодаря Compose Multiplatform от JetBrains. Но Material Design выглядит неуместно за пределами Android, особенно на iOS. Material Compose также не разработан с учетом использования курсора. В результате приложения могут казаться слишком большими на настольных компьютерах и в веб-браузере.
Именно эту проблему решает Composables UI, используя следующие принципы:
• Универсальность: компоненты автоматически адаптируются к возможностям устройства, таким как сенсорный ввод, ввод с мыши и клавиатуры.
• Открытый исходный код: код под лицензией MIT, который легко модифицировать.
• Красивые настройки по умолчанию: авторы тщательно продумывают дизайн, чтобы вы могли создавать современные приложения для всех платформ без специальных навыков проектирования.
• Возможность копирования и вставки: каждый компонент находится в отдельном файле, поэтому вы можете скопировать его напрямую.
Composables UI на GitHub: https://github.com/composablehorizons/composables-ui
Платформа: Android/кроссплатформа
⭐️: 37
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Хардкорная агентская разработка под iOS, часть 1: отдельный Mac Mini для агентов
Я не раз ловил себя на мысли, что я уже давно только и делаю, что жму “allow”, “allow everytime”, редко вникая в суть того, что спрашивает агент, но полностью доверить агенту делать всё, что ему заблагорассудится, мне как-то боязно. Всё-таки на основном макбуке много личных и рабочих данных, которые агент может случайно (или через prompt injection) удалить или слить в сеть. Стрёмно. Поэтому я какое-то время играл в игру “я типа читаю, что ты у меня спрашиваешь”.
Хотя правильное решение — запуск агента в режиме YOLO (в случае
Это первая статья цикла. Здесь — базовая настройка Mac Mini и вся возня с SSH, чтобы YOLO-агент работал на отдельной машине без ручного ввода паролей и переживал разрывы сети. Специфику iOS-разработки (git worktree, параллельное тестирование, idb, прогон приложения, грабли симулятора и прочее) я вынес в следующие части, так что статья будет полезна не только iOS-разработчикам, но и всем, кто хочет запускать YOLO-агентов и не париться о безопасности. С некоторыми оговорками, разумеется, подробности ниже.
Статья: https://habr.com/ru/articles/1052174/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Я не раз ловил себя на мысли, что я уже давно только и делаю, что жму “allow”, “allow everytime”, редко вникая в суть того, что спрашивает агент, но полностью доверить агенту делать всё, что ему заблагорассудится, мне как-то боязно. Всё-таки на основном макбуке много личных и рабочих данных, которые агент может случайно (или через prompt injection) удалить или слить в сеть. Стрёмно. Поэтому я какое-то время играл в игру “я типа читаю, что ты у меня спрашиваешь”.
Хотя правильное решение — запуск агента в режиме YOLO (в случае
claude — с флагом --dangerously-skip-permissions). И тогда при правильной постановке задачи агент может часами сам работать и делать то, что нужно, уведомляя меня только по выполнении.Это первая статья цикла. Здесь — базовая настройка Mac Mini и вся возня с SSH, чтобы YOLO-агент работал на отдельной машине без ручного ввода паролей и переживал разрывы сети. Специфику iOS-разработки (git worktree, параллельное тестирование, idb, прогон приложения, грабли симулятора и прочее) я вынес в следующие части, так что статья будет полезна не только iOS-разработчикам, но и всем, кто хочет запускать YOLO-агентов и не париться о безопасности. С некоторыми оговорками, разумеется, подробности ниже.
Статья: https://habr.com/ru/articles/1052174/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
Искусственный интеллект провел со мной собеседование на должность iOS-разработчика
Две недели назад я искал новые возможности для заработка и наткнулся на платформу экспертов micro1.
Идея у неё простая: вы используете свои профессиональные знания, чтобы помогать в обучении нового поколения моделей искусственного интеллекта.
Я ввёл в поиске «iOS» и нашёл две вакансии iOS-разработчика. Требования были вполне привычными: знание Swift, UIKit и SwiftUI, несколько лет опыта, почасовая оплата.
Я отправил заявку. В тот момент я ещё не понимал, кто — или что именно — будет проводить со мной собеседование.
Статья: https://apptractor.ru/info/articles/iskusstvennyy-intellekt-provel-so-mnoy-sobesedovanie-na-dolzhnost-ios-razrabotchika.html
Платформа: собеседование
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Две недели назад я искал новые возможности для заработка и наткнулся на платформу экспертов micro1.
Идея у неё простая: вы используете свои профессиональные знания, чтобы помогать в обучении нового поколения моделей искусственного интеллекта.
Я ввёл в поиске «iOS» и нашёл две вакансии iOS-разработчика. Требования были вполне привычными: знание Swift, UIKit и SwiftUI, несколько лет опыта, почасовая оплата.
Я отправил заявку. В тот момент я ещё не понимал, кто — или что именно — будет проводить со мной собеседование.
Статья: https://apptractor.ru/info/articles/iskusstvennyy-intellekt-provel-so-mnoy-sobesedovanie-na-dolzhnost-ios-razrabotchika.html
Платформа: собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
Copy-on-Write в Swift: подготовка к собеседованию
За годы я сидел по обе стороны стола: и как кандидат, и как собеседующий — в том числе на позиции в крупные продуктовые компании. И именно Copy-on-Write раз за разом оказывался той темой, на которой видно разницу между «слышал слово» и «понимаю механизм». Тема звучит обманчиво просто — «копируем только при записи», — но крупняк любит докапываться до формулировок: не «массив копируется по значению», а когда именно копируется буфер, что проверяется перед записью, почему у функции проверки именно такая сигнатура. Один неаккуратный оборот — и за него тут же цепляются уточняющим вопросом.
Сразу скажу про планку ожиданий, чтобы снять тревогу: на практике от кандидата редко хотят академически точного описания рантайма Swift до последнего бита. Хотят, чтобы вы держали в голове рабочую модель («struct снаружи, общий буфер с refcount внутри, копия на первой записи в разделяемый буфер») и могли её развернуть на пару уровней вглубь, не плавая в базовых понятиях вроде семантики значения и ссылки. Сидя по другую сторону стола, я отсекаю не тех, кто не знает внутренностей компилятора, а тех, кто путается в фундаменте и выдаёт заученные фразы, под которыми ничего нет. Поэтому статья идёт от фундамента к деталям: сначала то, что обязательно надо понимать, потом то, чем можно приятно удивить.
Статья: https://habr.com/ru/articles/1052522/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
За годы я сидел по обе стороны стола: и как кандидат, и как собеседующий — в том числе на позиции в крупные продуктовые компании. И именно Copy-on-Write раз за разом оказывался той темой, на которой видно разницу между «слышал слово» и «понимаю механизм». Тема звучит обманчиво просто — «копируем только при записи», — но крупняк любит докапываться до формулировок: не «массив копируется по значению», а когда именно копируется буфер, что проверяется перед записью, почему у функции проверки именно такая сигнатура. Один неаккуратный оборот — и за него тут же цепляются уточняющим вопросом.
Сразу скажу про планку ожиданий, чтобы снять тревогу: на практике от кандидата редко хотят академически точного описания рантайма Swift до последнего бита. Хотят, чтобы вы держали в голове рабочую модель («struct снаружи, общий буфер с refcount внутри, копия на первой записи в разделяемый буфер») и могли её развернуть на пару уровней вглубь, не плавая в базовых понятиях вроде семантики значения и ссылки. Сидя по другую сторону стола, я отсекаю не тех, кто не знает внутренностей компилятора, а тех, кто путается в фундаменте и выдаёт заученные фразы, под которыми ничего нет. Поэтому статья идёт от фундамента к деталям: сначала то, что обязательно надо понимать, потом то, чем можно приятно удивить.
Статья: https://habr.com/ru/articles/1052522/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
BlazeDB - нативная для Swift встраиваемая база данных для локального хранения данных
BlazeDB - встраиваемая зашифрованная однопроцессная документная база данных для Swift с ACID-транзакциями, восстановлением после сбоев на основе журнала предзаписи и шифрованием AES-256-GCM при хранении. Для каждой базы данных создаётся отдельный зашифрованный файл. Не требует отдельного сервера и обязательных сетевых запросов.
BlazeDB на GitHub: https://github.com/Mikedan37/BlazeDB
Платформа: iOS
⭐️: 13
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
BlazeDB - встраиваемая зашифрованная однопроцессная документная база данных для Swift с ACID-транзакциями, восстановлением после сбоев на основе журнала предзаписи и шифрованием AES-256-GCM при хранении. Для каждой базы данных создаётся отдельный зашифрованный файл. Не требует отдельного сервера и обязательных сетевых запросов.
BlazeDB на GitHub: https://github.com/Mikedan37/BlazeDB
Платформа: iOS
⭐️: 13
Please open Telegram to view this post
VIEW IN TELEGRAM
Лента роликов на iOS: опыт работы с AVPlayer
В T-Инвестициях на iOS лента коротких роликов — это 90% трафика, именно ее оптимизации мы уделяем больше всего внимания. В первой версии пользователи могли ждать старта видео больше 15 секунд. Мы разобрались в ограничениях AVPlayer, оптимизировали буферизацию и снизили задержки на 12% в хвосте распределения. Рассказываю, как мы улучшали пользовательский опыт и почему AVPlayer не лучшее решение для ленты роликов.
Статья: https://habr.com/ru/companies/tbank/articles/1053402/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
В T-Инвестициях на iOS лента коротких роликов — это 90% трафика, именно ее оптимизации мы уделяем больше всего внимания. В первой версии пользователи могли ждать старта видео больше 15 секунд. Мы разобрались в ограничениях AVPlayer, оптимизировали буферизацию и снизили задержки на 12% в хвосте распределения. Рассказываю, как мы улучшали пользовательский опыт и почему AVPlayer не лучшее решение для ленты роликов.
Статья: https://habr.com/ru/companies/tbank/articles/1053402/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
Внедрение Gemini Nano в реальное приложение: ограничения, о которых никто не предупреждает
Я выпустил Android-приложение, ежедневные аналитические данные которого формируются Gemini Nano, работающим полностью на телефоне — без облака, без подсказок и вывода данных за пределы устройства. В документации интеграция казалась тривиальной. В производственной среде возникли три сложных момента, которые изменили мою архитектуру. Вот описание, которое я хотел бы иметь до начала работы.
Статья: https://apptractor.ru/info/articles/gemini-nano-real.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Я выпустил Android-приложение, ежедневные аналитические данные которого формируются Gemini Nano, работающим полностью на телефоне — без облака, без подсказок и вывода данных за пределы устройства. В документации интеграция казалась тривиальной. В производственной среде возникли три сложных момента, которые изменили мою архитектуру. Вот описание, которое я хотел бы иметь до начала работы.
Статья: https://apptractor.ru/info/articles/gemini-nano-real.html
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
Laydr - file-based типобезопасная система навигации
Laydr — это file-based типобезопасная система навигации для Compose Multiplatform и Android-приложений на Compose. Структура приложения описывается через наглядный каталог
Laydr пригодится, когда навигация в Kotlin-приложении превратилась в сеть скопированных строк маршрутов, дублирующейся настройки графа, повторного разбора аргументов, обёрток макетов, реестров вкладок и устаревшего связующего кода. Маршруты становятся понятной структурой каталогов, Laydr генерирует предсказуемую навигационную обвязку, а интерфейс на Compose, состояние, данные, доступ к зависимостям, навигационные элементы и платформенные правила остаются явно описанными в коде приложения.
Laydr на GitHub: https://github.com/mobiletoly/laydr
Платформа: Android/кроссплатформа
⭐️: 7
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Laydr — это file-based типобезопасная система навигации для Compose Multiplatform и Android-приложений на Compose. Структура приложения описывается через наглядный каталог
routes/, а Laydr генерирует Kotlin-маршруты, билдеры путей, карты маршрутов, локальные Compose-точки входа и интеграцию с Navigation 3 — всё то, что при ручной поддержке со временем обычно начинает расходиться и устаревать.Laydr пригодится, когда навигация в Kotlin-приложении превратилась в сеть скопированных строк маршрутов, дублирующейся настройки графа, повторного разбора аргументов, обёрток макетов, реестров вкладок и устаревшего связующего кода. Маршруты становятся понятной структурой каталогов, Laydr генерирует предсказуемую навигационную обвязку, а интерфейс на Compose, состояние, данные, доступ к зависимостям, навигационные элементы и платформенные правила остаются явно описанными в коде приложения.
Laydr на GitHub: https://github.com/mobiletoly/laydr
Платформа: Android/кроссплатформа
⭐️: 7
Please open Telegram to view this post
VIEW IN TELEGRAM
XCUI, Tests & Robots. Разбираем нативную автоматизацию iOS на винтики. Часть 1
В прошлых статьях мы разобрались, как искать логи и креш‑отчёты на iOS‑устройствах — и делали это вручную. Этот навык остаётся базовым на проекте любого размера: без него невозможно понять причину сбоя. Но есть и вторая часть работы — сами проверки, то есть прогон пользовательских сценариев. Пока приложение небольшое, их можно прокликивать руками. По мере роста проекта количество однотипных проверок увеличивается, и повторять их вручную перед каждым релизом становится всё дороже.
Возникает логичный вопрос: можно ли автоматизировать именно эту рутину, чтобы проверки проходили без нашего участия, а нам лишь оставалось разобраться с причинами сбоев, если такие возникнут? Здесь нам помогут нативные автотесты на XCUITest. Они позволяют системно, а не от случая к случаю, прогонять пользовательские сценарии, отслеживать падения и проверять стабильность.
Этой статьёй мы открываем цикл о UI‑тестировании iOS приложений. Начнём с основ: разберёмся, какое место UI‑тесты занимают в пирамиде тестирования, познакомимся с инструментами и постепенно перейдём к построению устойчивых тестов с применением проверенных паттернов.
Статья: https://habr.com/ru/articles/1053724/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
В прошлых статьях мы разобрались, как искать логи и креш‑отчёты на iOS‑устройствах — и делали это вручную. Этот навык остаётся базовым на проекте любого размера: без него невозможно понять причину сбоя. Но есть и вторая часть работы — сами проверки, то есть прогон пользовательских сценариев. Пока приложение небольшое, их можно прокликивать руками. По мере роста проекта количество однотипных проверок увеличивается, и повторять их вручную перед каждым релизом становится всё дороже.
Возникает логичный вопрос: можно ли автоматизировать именно эту рутину, чтобы проверки проходили без нашего участия, а нам лишь оставалось разобраться с причинами сбоев, если такие возникнут? Здесь нам помогут нативные автотесты на XCUITest. Они позволяют системно, а не от случая к случаю, прогонять пользовательские сценарии, отслеживать падения и проверять стабильность.
Этой статьёй мы открываем цикл о UI‑тестировании iOS приложений. Начнём с основ: разберёмся, какое место UI‑тесты занимают в пирамиде тестирования, познакомимся с инструментами и постепенно перейдём к построению устойчивых тестов с применением проверенных паттернов.
Статья: https://habr.com/ru/articles/1053724/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Сам себе Шерлок: 7 способов найти логи и поймать баг на iOS
Привет, Хабр! Меня зовут Максим, и я тестирую мобильные приложения в ATI.SU. Знакома ситуация, когда кнопка не работает, приложение виснет, анимации тормозят, но при этом нет никаких...
Apple Container уже здесь, и он изменит ваш подход к iOS-разработке
Вы уже несколько лет пишете на Swift. Вы досконально знаете Xcode. Но в экосистеме Apple появился новый инструмент, который большинство разработчиков игнорируют — и те, кто очнётся раньше, будут создавать приложения быстрее, выпускать более чистые версии и отлаживать код эффективнее, чем все остальные.
Apple Container — это не просто новый фреймворк. Это значительный сдвиг в мышлении Apple относительно изоляции приложений, управления средами и рабочими процессами разработчиков. Мы разберёмся, что это такое на самом деле, почему это важно и как это реализовать уже сегодня.
Статья: https://apptractor.ru/info/articles/apple-container.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Вы уже несколько лет пишете на Swift. Вы досконально знаете Xcode. Но в экосистеме Apple появился новый инструмент, который большинство разработчиков игнорируют — и те, кто очнётся раньше, будут создавать приложения быстрее, выпускать более чистые версии и отлаживать код эффективнее, чем все остальные.
Apple Container — это не просто новый фреймворк. Это значительный сдвиг в мышлении Apple относительно изоляции приложений, управления средами и рабочими процессами разработчиков. Мы разберёмся, что это такое на самом деле, почему это важно и как это реализовать уже сегодня.
Статья: https://apptractor.ru/info/articles/apple-container.html
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
👎3
Apple Shipkit - готовая инфраструктура релизной инженерии для публикации приложений
Apple Shipkit - инструмент для выпуска релизов приложений для iOS и macOS. Подписание кода, CI через GitHub Actions для запросов на слияние, новые сертификаты для каждого релиза CI, загрузка в TestFlight, отправка в App Store — всё это уже настроено. Не зависит от UI-фреймворка, сетевого стека или уровня хранения данных.
Впервые выпускаете приложение для iOS или Mac? Начните с
Используете ИИ-агентов для разработки приложений (Claude Code, Cursor, Codex и т. д.)? Начните с файла
Apple Shipkit на GitHub: https://github.com/indiagrams/apple-shipkit
Платформа: iOS
⭐️: 15
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Apple Shipkit - инструмент для выпуска релизов приложений для iOS и macOS. Подписание кода, CI через GitHub Actions для запросов на слияние, новые сертификаты для каждого релиза CI, загрузка в TestFlight, отправка в App Store — всё это уже настроено. Не зависит от UI-фреймворка, сетевого стека или уровня хранения данных.
Впервые выпускаете приложение для iOS или Mac? Начните с
docs/GETTING-STARTED.md — все необходимые условия, все действия Apple, 30–60 минут до первой сборки TestFlight.Используете ИИ-агентов для разработки приложений (Claude Code, Cursor, Codex и т. д.)? Начните с файла
AGENTS.md — инварианты расширяемости при создании форков, карта владения файлами, антипаттерны, которых следует избегать. Независимый от поставщика формат agents.md, один файл для всех основных агентов.Apple Shipkit на GitHub: https://github.com/indiagrams/apple-shipkit
Платформа: iOS
⭐️: 15
Please open Telegram to view this post
VIEW IN TELEGRAM
Как энергосбережение на Android мешало Seamless-авторизации
Недавно, внедряя в приложение новую фичу, мы столкнулись с тем, что она в упор отказывалась работать – но только на Android. Мы дебажили ее полторы недели, перепробовали все возможные варианты и закошмарили всех доступных операторов связи, прежде чем узнали, что все дело было… в энергосбережении.
Статья: https://habr.com/ru/companies/banki/articles/1052378/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Недавно, внедряя в приложение новую фичу, мы столкнулись с тем, что она в упор отказывалась работать – но только на Android. Мы дебажили ее полторы недели, перепробовали все возможные варианты и закошмарили всех доступных операторов связи, прежде чем узнали, что все дело было… в энергосбережении.
Статья: https://habr.com/ru/companies/banki/articles/1052378/
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Миграция приложения на Navigation 3: боль, переработки и хотфиксы
В начале 2026 года мы перевели наше Android-приложение, насчитывающее более 170 экранов, с Navigation 2 на Navigation 3.
Navigation 3 предлагает типобезопасные точки назначения, сохраняемые стеки возврата и более современный API навигации. В целом миграция оказалась относительно простой, но по ходу работы мы всё же столкнулись с несколькими неожиданными сложностями — от обработки нижних панелей (bottom sheet) до исправления сбоев, которые проявились только после выпуска приложения.
В этой статье я расскажу, почему мы решили перейти на Navigation 3, как организовали процесс миграции, с какими проблемами столкнулись и какие выводы сделали.
Если вы тоже планируете переход на Navigation 3, наш опыт может сэкономить вам время и избавить от нескольких головных болей.
Статья: https://apptractor.ru/info/articles/migratsiya-prilozheniya-na-navigation-3-bol-pererabotki-i-hotfiksy.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
В начале 2026 года мы перевели наше Android-приложение, насчитывающее более 170 экранов, с Navigation 2 на Navigation 3.
Navigation 3 предлагает типобезопасные точки назначения, сохраняемые стеки возврата и более современный API навигации. В целом миграция оказалась относительно простой, но по ходу работы мы всё же столкнулись с несколькими неожиданными сложностями — от обработки нижних панелей (bottom sheet) до исправления сбоев, которые проявились только после выпуска приложения.
В этой статье я расскажу, почему мы решили перейти на Navigation 3, как организовали процесс миграции, с какими проблемами столкнулись и какие выводы сделали.
Если вы тоже планируете переход на Navigation 3, наш опыт может сэкономить вам время и избавить от нескольких головных болей.
Статья: https://apptractor.ru/info/articles/migratsiya-prilozheniya-na-navigation-3-bol-pererabotki-i-hotfiksy.html
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
LeanType - конфиденциальная клавиатура для Android
LeanType — это форк HeliBoard, клавиатура с открытым исходным кодом, ориентированная на конфиденциальность и возможность индивидуальной настройки, основанная на AOSP/OpenBoard. Клавиатура предлагает гибридный подход: приватное, безопасное автономное ядро для повседневной работы с текстом, а также мощные возможности искусственного интеллекта, доступные по вашему желанию.
LeanType на GitHub: https://github.com/LeanBitLab/LeanType
Платформа: Android
⭐️: 517
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
LeanType — это форк HeliBoard, клавиатура с открытым исходным кодом, ориентированная на конфиденциальность и возможность индивидуальной настройки, основанная на AOSP/OpenBoard. Клавиатура предлагает гибридный подход: приватное, безопасное автономное ядро для повседневной работы с текстом, а также мощные возможности искусственного интеллекта, доступные по вашему желанию.
LeanType на GitHub: https://github.com/LeanBitLab/LeanType
Платформа: Android
⭐️: 517
Please open Telegram to view this post
VIEW IN TELEGRAM
•
(iOS En) Swift Attached Macros: Build a Real-World Member Macro from Scratch•
(iOS En) iOS 27 Apple Find My App UI •
(iOS En) What's new in SwiftUI for iOS 27•
(iOS En) Screen Capture iPhone (iOS 27) - Screen Capture Kit For iOS 27•
(And En) Build adaptive apps with Compose's new APIs•
(And En) Build for the wrist, the road, and the remote with Jetpack Compose and Gemini•
(And En) Build 3d experiences using Jetpack XR•
(And En) Optimize your app performance for the next generation of Android•
(And En) Creative video editing with Jetpack Media3 and Gemini•
(And En) Develop faster with Android Studio, AI and skills•
(And En) Build intelligent experience: Deep dive into AppFunctions•
(And En) Building Robust Applications with Testing - Android Developers Office Hours•
(And En) Sameer Samat on Android 17 and the Future of Intelligent Computing•
(And En) KotlinConf'26 Keynote•
(And En) Say Goodbye to Callbacks•
(Crs En) Sony’s KMP Journey: Scaling BLE & Hardware with Kotlin Multiplatform•
(Crs En) What's New in Compose Multiplatform•
(Crs En) Evolving Kotlin Language Defaults•
(Dev Ru) Безопасность, агенты и будущее разработки•
(Dev Ru) Почему капча больше не про светофоры — Smart Captcha, ML, антиботПрошлогодние видео:
•
(iOS Ru) Как побеждать в конкурсах от Telegram•
(And Ru) Как мы случайно ускорили релизную сборку в два раза•
(And Ru) Эталонный пример Android приложения от Google•
(And Ru) Gradle DSL изнутри•
(And Ru) Kotlin DSL как единый источник правды для решения многих задач•
(Crs Ru) Демо-интервью по Flutter с Middle-разработчикомPlease open Telegram to view this post
VIEW IN TELEGRAM
❤1
LoopScroll - бесконечно прокручиваемая постраничная навигация
LoopScroll - контрол для бесконечной прокрутки в iOS, построенный на основе
Особенности:
• Бесконечная прокрутка — плавная перемотка элементов в обоих направлениях
• Горизонтальная и вертикальная — переключение направления прокрутки с помощью одного свойства
• Автоматическая прокрутка — настраиваемая автоматическая прокрутка на основе таймера
• Привязка к странице — настраиваемая компоновка обеспечивает точную привязку к странице с учетом скорости нажатия
• Источник данных и делегат — привычные протоколы в стиле
• Совместимость с Objective-C — все публичные API доступны через
• Легковесный — нет внешних зависимостей, ~500 строк кода на Swift
LoopScroll на GitHub: https://github.com/iLiuChang/LoopScroll
Платформа: iOS
⭐️: 183
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
LoopScroll - контрол для бесконечной прокрутки в iOS, построенный на основе
UICollectionView. Поддерживает горизонтальную и вертикальную прокрутку, автоматическую прокрутку и привычный API делегата/источника данных.Особенности:
• Бесконечная прокрутка — плавная перемотка элементов в обоих направлениях
• Горизонтальная и вертикальная — переключение направления прокрутки с помощью одного свойства
• Автоматическая прокрутка — настраиваемая автоматическая прокрутка на основе таймера
• Привязка к странице — настраиваемая компоновка обеспечивает точную привязку к странице с учетом скорости нажатия
• Источник данных и делегат — привычные протоколы в стиле
UICollectionView• Совместимость с Objective-C — все публичные API доступны через
@objc• Легковесный — нет внешних зависимостей, ~500 строк кода на Swift
LoopScroll на GitHub: https://github.com/iLiuChang/LoopScroll
Платформа: iOS
⭐️: 183
Please open Telegram to view this post
VIEW IN TELEGRAM
UISlider изнутри: почему setValue не работает во время settle-анимации и как я это обошел
В iOS 26 у UISlider появился liquid-glass-вид и физика доводки (settle) после того, как пользователь отпускает палец. Если честно, я не проверял, как это выглядело в старых версиях и как оно работало, так как до iOS 26 ни в своих проектах, ни в тех, что я писал на работе, я не использовал стандартный компонент, так как его внешний вид никого не устраивал. У такой доводки есть побочный эффект: если в этот момент дернуть
Самое неприятное в этом баге было не само дёрганье, а ощущение, что публичный API говорит "значение поставлено”, а визуальный слой через кадр отвечает “нет, я лучше вернусь куда хотел”. Поэтому я отдельно разделю два пути: runtime-фикс для понимания механики и продовый обход (хотя в личном приложении я пошел бы в прод с фиксом).
Статья: https://habr.com/ru/articles/1055466/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
В iOS 26 у UISlider появился liquid-glass-вид и физика доводки (settle) после того, как пользователь отпускает палец. Если честно, я не проверял, как это выглядело в старых версиях и как оно работало, так как до iOS 26 ни в своих проектах, ни в тех, что я писал на работе, я не использовал стандартный компонент, так как его внешний вид никого не устраивал. У такой доводки есть побочный эффект: если в этот момент дернуть
setValue(_:animated:) извне, наш слайдер на один кадр едет в новую точку, а потом откатывается туда, куда его тянет settle. removeAllAnimations() не помогает: анимация идёт не через CABasicAnimation, а через property-driver на display link. Дальше про то, как я нашёл рабочий путь это исправить.Самое неприятное в этом баге было не само дёрганье, а ощущение, что публичный API говорит "значение поставлено”, а визуальный слой через кадр отвечает “нет, я лучше вернусь куда хотел”. Поэтому я отдельно разделю два пути: runtime-фикс для понимания механики и продовый обход (хотя в личном приложении я пошел бы в прод с фиксом).
Статья: https://habr.com/ru/articles/1055466/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
UISlider изнутри: почему `setValue` не работает во время settle-анимации и как я это обошел
В iOS 26 у UISlider появился liquid-glass-вид и физика доводки (settle) после того, как пользователь отпускает палец. Если честно, я не проверял, как это выглядело в старых версиях и как оно работало,...
Навигация в Jetpack Compose без магии: что на самом деле делают библиотеки навигации
Вы когда-нибудь задумывались, зачем нужны библиотеки для навигации в Jetpack Compose? Почему мы не можем просто взять
В статье разберём, как работают библиотеки навигации в Jetpack Compose и какие задачи они решают на примере библиотеки навигации Modo.
Статья: https://habr.com/ru/companies/hh/articles/1052310/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Вы когда-нибудь задумывались, зачем нужны библиотеки для навигации в Jetpack Compose? Почему мы не можем просто взять
mutableStateOf со списком экранов и переключаться между ними? Оказывается, если мы попробуем реализовать такой наивный подход, то столкнёмся с рядом проблем: rememberSaveable не работает, ViewModel не очищаются после ухода с экрана, Lifecycle не работает корректно и многое другое.В статье разберём, как работают библиотеки навигации в Jetpack Compose и какие задачи они решают на примере библиотеки навигации Modo.
Статья: https://habr.com/ru/companies/hh/articles/1052310/
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM