Официальное демо от Apple по интеграции агентов и MCP в Xcode, очень рад что Apple двигается в сторону сообщества а не только пилит свои модели. Xcode 26.3 получил поддержку агентов. Это не автодополнение и не чат в IDE, а режим, где агент может выполнять многошаговые задачи внутри проекта, пробовать собрать проект и самостоятельно анализировать ошибки и исправлять их.
Ключевая идея
Что конкретно умеет агент в Xcode 26.3:
При этом Xcode 26.3 открывает свои возможности через Model Context Protocol (MCP), то есть теоретически можно подключать совместимые инструменты/агентов
Почему это важно?
Кому зайдёт больше всего
Xcode 26.3 делает следующий шаг: от подскажи строку к выполни задачу в проекте. И это выглядит как самый практичный апгрейд IDE-помощника за долгое время
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤3
Досмотрел сегодня увлекательное интервью Питера Стейнбергера. Это создатель PDF-фреймворк PSPDFKit который был невероятно популярным. История классического пути в iOS разработку - впервые увидел iPhone, впечатлился возможностями и создал приложения для iOS 2. После чего работа в Nokia, успех пет-проекта, выгорание и возрождение интереса к разработке с приходом AI. Мои хайлайты:
Развитие продукта
Культура команды
Возвращение к работе
Структура приложений
Влияние ИИ на разработку ПО
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍2
Разбираем хайп и что реально делать дальше. По комьюнити разошлась фраза "Avoid using Combine…" из системного prompt-файла Xcode 26.3 для агентного кодинга: там инструментам советуют избегать Combine и предпочитать async/await-версии API. Apple Combine не убивала официально, Combine продолжает жить в официальной документации и доступен как фреймворк. Никакого публичного deprecated/removed заявления в источниках уровня Apple здесь нет. Но вот эпоха реактивного программирования действительно подходит к концу, многие так и не успели его освоить. Агент, который пишет код, распространяет паттерны по проекту. Если в подсказке не использовать Combine, он будет продавливать Concurrency-стиль везде, куда дотрагивается. Почему так?
AsyncSequence/async/awaitCombine не умер официально, но Apple явно проталкивает concurrency-first. Это сигнал -
Combine не будет ключевым в новом мире агентовPlease open Telegram to view this post
VIEW IN TELEGRAM
Xcode 26 3 принёс agentic coding. Из коробки интегрированы Claude Code и Codex, но можно подключить и свой агент через MCP мост. Как это сделать детально разбирается в статье на примере Gemini. В результате Xcode сможет выполнять многошаговые задачи в проекте через Xcode инструменты. Удивительно что Gemini не завезли в Xcode, учитывая что Apple выбрала Gemini для новой Siri
Шаги подключения
gemini mcp add xcode-tools xcrun mcpbridge.gemini/settings.json с командой xcrun и аргументом mcpbridgeПолезные команды внутри Gemini
/mcp list показать доступные инструменты/mcp desc описание инструментовPlease open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Часто iOS разработчики легкомысленно относятся к универсальным ссылкам, открыли первый туториал, прошли все шаги и готово. Если один раз все работало, на этом полномочия заканчиваются. На самом деле комплексно это про инфраструктуру, кеши, валидацию и регрессии, которые вы увидите только когда ссылок станет много, доменов несколько, а приложения локализованы. И это еще мы не упоминаем нюансы с удалением приложений и наличием нескольких приложений с одинаковыми универсальными ссылками (привет банкам под санкциями)
Недавно наткнулся на разбор Universal Links at scale — и там ровно те боли, о которых обычно молчат. Что ломается чаще всего, когда вы выходите за пределы туториалов
1. Никто не валидирует по схеме
JSON Schema + CI, иначе тестированием ссылок будут заниматься ваши пользователи
2. Между вами и девайсом стоит Apple CDN
Автоматическая проверка + алерты обязательно должна быть автоматизирована
3. Матчинг паттернов - это не regex
*, ?, ?*, *?Обязательно нужно написать тесты на реальные URL и корректно реализовать matching
4. substitutionVariables - спасение для локалей, но ад для проверки
Расширение переменных до matching + регрессионный набор URL
5. percent-encoding и спецсимволы
Заранее фиксируйте правила генерации ссылок и тестируйте как у пользователя
От себя еще добавлю - требуется реализовать клиентские алерты, которые будут отлавливать некорректные диплинки и рассказать команде о том что выходит за рамки iOS, и как настроить проверки на CI т.к. при сбое на CDN все равно виновато будет iOS приложение, а значит и надежность на наших плечах
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2
Anthropic выложила бесплатные курсы по освоению ИИ. Внутри 300 лекции и практические заданий. Если вы уже трогали Xcode agents - можно начать с Introduction to MCP потом Claude Code in Action. Anthropic параллельно ведёт публичный репозиторий курсов на GitHub где видно что они развивают образовательную линейку в открытую. Есть те кто уже прошел? На сколько вам показались полезными?
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
Опыт миграции с ObservableObject на
@Observable. Что ломается и где подстелить соломку. Главная идея - переход от пуш модели, где объект кричит я изменился к пулл модели, где SwiftUI тихо отслеживает только то к чему реально прикасались во время рендера. Основные места, требующие внимания: @State private var vm = HeavyVM() выглядит как замена @StateObject но init будет дергаться при каждом пересчете body и это может жечь CPU и повторно запускать сайд эффекты. Решением является .task который запустится сразу и будет работать асинхронноРодительский
observable содержит вложенный observable и UI внезапно не обновляется если view наблюдает только за родителем а изменения происходят глубоко внутри вложенных. Чтобы это справить нужно сделать доступ более гранулярным и передавать вниз именно нужный узел графа плюс использовать @Bindable в конкретной view которая должна обновлятьсяЕсли есть список элементов, свойства которых меняются, это игнорируется. Чтобы это исправить внутри List по items лучше создавать
bindable копию элемента массива прямо в скоупе перечисления и дальше использовать уже его (последний скриншот)Новая ментальная модель, если ее принять то апдейты становятся точнее а перерисовки меньше но первые недели почти у всех будет ощущение что UI сломался
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1👌1