Каталог Swift Playgrounds
Swift Playgrounds скорее мертвы, чем живы – но если вы хотите немного поиграть с ними, то вот каталог примеров от сообщества разной степени сложности.
Swift Playgrounds скорее мертвы, чем живы – но если вы хотите немного поиграть с ними, то вот каталог примеров от сообщества разной степени сложности.
❤12👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Шесть лет эволюции приложения карт на watchOS
David Smith – возможно, самый опытный разработчик под watchOS, написал классную ретроспективу про то, как он в течение шесть лет постепенно эволюционировал дизайн своего приложения с картами, и как он постепенно пришел к своей идеальной форме.
David Smith – возможно, самый опытный разработчик под watchOS, написал классную ретроспективу про то, как он в течение шесть лет постепенно эволюционировал дизайн своего приложения с картами, и как он постепенно пришел к своей идеальной форме.
👍17🔥8❤2
Миграция 97 тысяч строк ObjC на Swift
Яндекс Браузер с помощью LLM автоматизировали миграцию с ObjC на Swift, и поделились своим процессом и, главное, переиспользуемыми промптами – их можно посмотреть на GitHub.
Яндекс Браузер с помощью LLM автоматизировали миграцию с ObjC на Swift, и поделились своим процессом и, главное, переиспользуемыми промптами – их можно посмотреть на GitHub.
Хабр
За два месяца вместо года: как мы переписали 97 тысяч строк кода с Objective-C на Swift
Миграция большого iOS-проекта с Objective-C на Swift кажется понятной задачей ровно до тех пор, пока не начинаешь считать объём. В нашем случае это были 10 тысяч файлов, сотни тысяч строк кода и...
👎57👍11💅7🔥5❤1
Про сложности заработка на пет-проекте
Наверное каждый мобильный разработчик когда-то задумывался про то, чтобы вырваться из корпоративного рабства, и начать красить кнопки уже чисто для души, делая классные приложения, и зарабатывая на этом $5-10-15k MRR или даже больше.
Но в реальности все не так классно – 80% сил уходит не на приятное написание кода, а на маркетинг, самые интересные вам идеи на самом деле никому не нужны, а менталочка находится на эмоциональных качелях.
Наверное каждый мобильный разработчик когда-то задумывался про то, чтобы вырваться из корпоративного рабства, и начать красить кнопки уже чисто для души, делая классные приложения, и зарабатывая на этом $5-10-15k MRR или даже больше.
Но в реальности все не так классно – 80% сил уходит не на приятное написание кода, а на маркетинг, самые интересные вам идеи на самом деле никому не нужны, а менталочка находится на эмоциональных качелях.
Хабр
Сейчас сделаю приложение и заработаю на нем. АХАХАХАХАХ, удачи
За полгода я сделал мобильное приложение, получил 2000 установок и… 8 платных подписок по $6. Причем одна из подписок — моя. При этом у меня есть основная работа. То...
👎19💅11👍3❤2
Закрываем луп в iOS
Чем больше всего ваш агент может проверять самостоятельно, тем меньше вам придется вмешиваться в его работу. Вот несколько идей:
👉Чтобы агент мог быстрее итерировать вокруг отдельных SwiftUI компонентов, используйте библиотеку Playbook, аналог известного в веб разработке Storybook.
👉Для тестирования полной логики приложения, включая навигацию, поддержите возможность запускать его с любого экрана через кастомные схемы запуска с моками.
👉Обязательно дайте агенту доступ к логам и аутпуту xcodebuild.
Чем больше всего ваш агент может проверять самостоятельно, тем меньше вам придется вмешиваться в его работу. Вот несколько идей:
👉Чтобы агент мог быстрее итерировать вокруг отдельных SwiftUI компонентов, используйте библиотеку Playbook, аналог известного в веб разработке Storybook.
👉Для тестирования полной логики приложения, включая навигацию, поддержите возможность запускать его с любого экрана через кастомные схемы запуска с моками.
👉Обязательно дайте агенту доступ к логам и аутпуту xcodebuild.
nadol.dev
Closing the loop on iOS
What it takes to make an iOS agent verify its own work in the running app, instead of trusting a green test suite.
👍15👎9
App Explorer – генератор карты экранов
App Explorer – CLI тул вокруг Claude Code, который делает следующее:
👉Открывает на клаудном устройстве ваше приложение и протыкивает там все интерактивные элементы.
👉Каждый экран скриншотится.
👉Генерируется отчет с картой всех переходов.
App Explorer – CLI тул вокруг Claude Code, который делает следующее:
👉Открывает на клаудном устройстве ваше приложение и протыкивает там все интерактивные элементы.
👉Каждый экран скриншотится.
👉Генерируется отчет с картой всех переходов.
GitHub
GitHub - RevylAI/app-explorer: Map every screen and user path in a mobile app — interactive navigation maps with screenshots
Map every screen and user path in a mobile app — interactive navigation maps with screenshots - RevylAI/app-explorer
👍27💅3👎1
DebugSwift – набор хелперов для дебага
DebugSwift – пакет с кучей разных фичей, облегчающих разные аспекты дебага. Из интересного – инспектор HTTP и WebSocket запросов с возможностью их модификации, оверлей с перфомансными метриками, трекинг ре-рендеринга SwiftUI.
DebugSwift – пакет с кучей разных фичей, облегчающих разные аспекты дебага. Из интересного – инспектор HTTP и WebSocket запросов с возможностью их модификации, оверлей с перфомансными метриками, трекинг ре-рендеринга SwiftUI.
GitHub
GitHub - DebugSwift/DebugSwift: A toolkit to make debugging iOS applications easier 🚀
A toolkit to make debugging iOS applications easier 🚀 - DebugSwift/DebugSwift
👍24🔥4💅3❤1
Вышла стабильная версия Cupertino
В январе я уже делился с вами ссылкой на Cupertino – MCP сервер, который отдает всю информацию из доков Apple как контекст вашему агенту. Вышла его стабильная версия. Главное изменение – поиск стал выдавать гораздо более точные результаты. В статье довольно много деталей про то, как перерабатывали алгоритмы поиска и ранжирования, советую почитать!
В январе я уже делился с вами ссылкой на Cupertino – MCP сервер, который отдает всю информацию из доков Apple как контекст вашему агенту. Вышла его стабильная версия. Главное изменение – поиск стал выдавать гораздо более точные результаты. В статье довольно много деталей про то, как перерабатывали алгоритмы поиска и ранжирования, советую почитать!
Aleahim.com
Cupertino v1.0.0 "First Light"
First release stable across crawl, index, rank, serve, and distribute. Search that finally returns the right answer, one bundle, MCP spec 2025-11-25.
💅32
Делаем спиннер в Claude Code более айосерским
Если вы пользовались Claude Code, то видели его спиннер – набор фраз, которые отображаются, пока он выполняет работу. Так вот, их можно кастомизировать и заменять на свои! Держите подборку айосных фраз, чтобы чувствовать себя как дома.
Если вы пользовались Claude Code, то видели его спиннер – набор фраз, которые отображаются, пока он выполняет работу. Так вот, их можно кастомизировать и заменять на свои! Держите подборку айосных фраз, чтобы чувствовать себя как дома.
GitHub
GitHub - artemnovichkov/vibe-spinner: 104 English dev meme phrases for Claude Code spinner
104 English dev meme phrases for Claude Code spinner - artemnovichkov/vibe-spinner
1👎37👍6💅4❤1
Как написать Epub читалку
Статья про то, почему WKWebView может быть недостаточно для того, чтобы рендерить epub-файлы, и в каких случаях кастомный рендеринг движок будет работать лучше.
Статья про то, почему WKWebView может быть недостаточно для того, чтобы рендерить epub-файлы, и в каких случаях кастомный рендеринг движок будет работать лучше.
chang-jui-lin.github.io
From WebView to CoreText: Building a Native EPUB Reader for iOS | Yuedu Reader Engineering
How CJK vertical writing pushed Yuedu Reader away from WebView and toward a custom CoreText rendering engine.
🔥8👍1💅1
RocketSim CLI для автоматизации симулятора
Для RocketSim, оболочки над iOS симулятором с кучей дополнительных фичей, сделали CLI, который можно дать в руки агентам. В результате тратится заметно меньше токенов, а тапы становятся более точными.
Примеры промптов:
Для RocketSim, оболочки над iOS симулятором с кучей дополнительных фичей, сделали CLI, который можно дать в руки агентам. В результате тратится заметно меньше токенов, а тапы становятся более точными.
Примеры промптов:
Use /rocketsim to open Settings and navigate to General.
Use /rocketsim to launch my app and complete the onboarding flow.
Use /rocketsim to test the login flow with user@example.com and verify that the home screen appears.
Use /rocketsim to open this deep link and confirm the correct screen is shown.
SwiftLee
AI-Powered Xcode Simulator Automation (token-efficient)
Explore Xcode Simulator Automation for efficient app development using AI-powered agents and optimized CLI solutions.
👍29🔥10❤7👎4
Новые фичи accessibility
Как водится, первыми обновлениями новой версии iOS, про которые мы узнаем, становятся новые фичи accessibility:
👉VoiceOver и Magnifier теперь используют Apple Intelligence, чтобы генерировать детальное описание того, что они видят.
👉Voice Control теперь понимает естественный язык, и можно описывать все действия примерно, без указания конкретных названий элементов.
👉К любым видео автоматически генерируются субтитры.
Приз за самую бесполезную фичу уходит поддержке Vehicle Motion Cues на visionOS – представили себе толпы людей, которые носят Vision Pro в автомобиле? Вот и я нет.
Как водится, первыми обновлениями новой версии iOS, про которые мы узнаем, становятся новые фичи accessibility:
👉VoiceOver и Magnifier теперь используют Apple Intelligence, чтобы генерировать детальное описание того, что они видят.
👉Voice Control теперь понимает естественный язык, и можно описывать все действия примерно, без указания конкретных названий элементов.
👉К любым видео автоматически генерируются субтитры.
Приз за самую бесполезную фичу уходит поддержке Vehicle Motion Cues на visionOS – представили себе толпы людей, которые носят Vision Pro в автомобиле? Вот и я нет.
Apple Newsroom
Apple unveils new accessibility features, and updates with Apple Intelligence
Apple announced major accessibility updates powered by Apple Intelligence, including new capabilities for VoiceOver, Magnifier, and Voice Control.
❤8👍3💅2
Программный скролл в SwiftUI
Разбираемся со всеми нюансами того, как программно устанавливать позицию скролла с использованием API, появившихся в iOS 17 и 18.
Разбираемся со всеми нюансами того, как программно устанавливать позицию скролла с использованием API, появившихся в iOS 17 и 18.
Nil Coalescing
Modern SwiftUI APIs for programmatic scrolling
Master programmatic scroll control in SwiftUI using defaultScrollAnchor(_:), scrollPosition(_:anchor:), and ScrollPosition to configure, drive, and read scroll position in your apps.
🔥19
This media is not supported in your browser
VIEW IN TELEGRAM
Лучший сетап для камеры на симуляторе
На фронтальную камеру стримится поток с камеры ноутбука, а задняя камера показывает все окна, находящиеся за симулятором. В таком режиме можно тестировать и распознавание лиц, и QR кодов, и что угодно еще.
Настроить такой сетап можно с помощью приложения SimCam.
На фронтальную камеру стримится поток с камеры ноутбука, а задняя камера показывает все окна, находящиеся за симулятором. В таком режиме можно тестировать и распознавание лиц, и QR кодов, и что угодно еще.
Настроить такой сетап можно с помощью приложения SimCam.
🔥78👍7💅1
AgentKitten – агентский фреймворк на Swift
Если вам надо писать нативных агентов для Apple платформ – посмотрите на AgentKitten. В целом все агентские фреймворки очень похожи, примитивы все вроде на месте, так что может стать хорошей альтернативой условному LangChain.
Если вам надо писать нативных агентов для Apple платформ – посмотрите на AgentKitten. В целом все агентские фреймворки очень похожи, примитивы все вроде на месте, так что может стать хорошей альтернативой условному LangChain.
GitHub
GitHub - fbeeper/agentkitten: Swift package for building provider-agnostic AI agents on Apple platforms.
Swift package for building provider-agnostic AI agents on Apple platforms. - fbeeper/agentkitten
👍12👎2
Прячем вьюшки со скриншота
Если вы хотите отображать какой-то SwiftUI элемент в приложении, но прятать его на скриншотах, при записи видео или стриминге, задача становится не очень тривиальной. В статье разбирается, какой приватный API может с этим помочь.
Если вы хотите отображать какой-то SwiftUI элемент в приложении, но прятать его на скриншотах, при записи видео или стриминге, задача становится не очень тривиальной. В статье разбирается, какой приватный API может с этим помочь.
知阅百微 见微知著
Hide SwiftUI Views from Screenshot | 知阅百微 见微知著
Hide specific SwiftUI views from screenshots and screen recordings without wrapping them in a secure text field
👍25
DebugSnapshots – новая библиотека от Pointfree
Pointfree выпустили новую библиотеку, которая позволяет легко трекать любые изменения в данных, содержащихся в классе, ставить брейкпойнты на их изменения и в целом дебажить. Все, что нужно сделать – добавить макрос.
Pointfree выпустили новую библиотеку, которая позволяет легко трекать любые изменения в данных, содержащихся в классе, ставить брейкпойнты на их изменения и в целом дебажить. Все, что нужно сделать – добавить макрос.
www.pointfree.co
DebugSnapshots: Public beta
DebugSnapshots is now in public beta! After incubating in Point-Free Beta Previews, it is the first library to graduate to the public, bringing exhaustive testing and focused debugging tools to reference types, @Observable models, and more.
👍19👎3
AdaEngine – новый игровой движок на Swift
AdaEngine – 2D игровой движок, построенный вокруг паттерна Entity Component System. Есть поддержка физики, кастомных шейдеров и описания интерфейса на SwiftUI.
Только-только вышел первый публичный релиз, если есть вопросы, пишите автору – @SpectralDragon.
AdaEngine – 2D игровой движок, построенный вокруг паттерна Entity Component System. Есть поддержка физики, кастомных шейдеров и описания интерфейса на SwiftUI.
Только-только вышел первый публичный релиз, если есть вопросы, пишите автору – @SpectralDragon.
adaengine.org
A simple and scalable game engine built in Swift.
🔥35👍7❤5💅2👎1
Работаем с TimelineView
TimelineView позволяет свертстать вьюшку, которая будет реагировать не только на изменения данных, но и на изменение времени. В статье разбирается, как с ней правильно работать, в том числе как организовывать анимации и настраивать частоту обновлений.
TimelineView позволяет свертстать вьюшку, которая будет реагировать не только на изменения данных, но и на изменение времени. В статье разбирается, как с ней правильно работать, в том числе как организовывать анимации и настраивать частоту обновлений.
Nil Coalescing
Refreshing and animating views using TimelineView in SwiftUI
Build SwiftUI views that update periodically or continuously, without relying on explicit state changes, to create dynamic interfaces and visual effects.
👍16💅2
Goodnotes в браузере на Swift
Команда Goodnotes решила портировать приложение в браузер, сохранив все возможные фичи и оптимизации. В итоге они решили не переписывать его на JS, а использовать SwiftWasm. В посте они детально разбирают получившуюся архитектуру, проблемы, и результаты по реюзу еода и перфомансу.
Команда Goodnotes решила портировать приложение в браузер, сохранив все возможные фичи и оптимизации. В итоге они решили не переписывать его на JS, а использовать SwiftWasm. В посте они детально разбирают получившуюся архитектуру, проблемы, и результаты по реюзу еода и перфомансу.
1🔥20👍5💅3