Розробка розширення для браузера Safari (Safari Extension)
Розширення для Safari — технічно найскладніший тип браузерного розширення. Apple вимагає нативної оболонки для Mac або iOS, підпису через Apple Developer Program та схвалення App Store. Проте це єдиний спосіб легально розширити функціональність Safari — особливо на iOS, де Safari залишається безальтернативним браузером для будь-якого WebKit-движка. Ми спеціалізуємося на розробці розширень для Safari з 2019 року: за цей час випустили понад 40 проєктів у Mac App Store та App Store для iOS. Гарантуємо проходження App Review з першої спроби.
Багато клієнтів стикаються з несподіваними труднощами: несумісність API, суворі вимоги Apple до підпису, тривалий App Review. Ми допомагаємо обійти ці граблі. Наші інженери мають сертифікацію Apple Developer та знають усі підводні камені. Зв'яжіться з нами для оцінки вашого проєкту — ми підготуємо точний кошторис за 1 день.
Як конвертувати Chrome Extension у Safari?
Apple надає інструмент safari-web-extension-converter.
xcrun safari-web-extension-converter ./my-chrome-extension \ --project-location ./safari-project \ --app-name "My Extension" \ --bundle-identifier com.example.my-extension \ --swift Після конвертації потрібно:
- Виправити несумісні API.
- Налаштувати іконки (10+ розмірів).
- Підписати через Apple Developer Program.
Порада: використовуйте webextension-polyfill для уніфікації API — це скорочує час на адаптацію на 40%.
Що робити з несумісними API?
Safari не підтримує chrome.scripting.executeScript (MV3) до Safari 16, chrome.declarativeNetRequest — лише з 15.4, chrome.sidePanel — тільки Chrome. Рішення: використовуйте browser.* API з поліфілом. В іншому Safari підтримує browser.storage, browser.tabs, browser.runtime.sendMessage, browser.webNavigation, browser.cookies.
Особливості:
-
browser.storage.syncсинхронізується через iCloud між Mac та iOS. - Content Security Policy суворіша — уникайте
eval. - Background Service Worker може завершуватися агресивно — зберігайте стан у
chrome.storage.session.
Архітектурні варіанти
Ми обираємо Safari Web Extension (MV3) — сучасний стандарт останніх років. Safari App Extension дає більше нативних можливостей, але вимагає Swift/ObjC і не кроссплатформенний. Content Blocker — лише для блокування контенту.
| Тип | Складність | Платформи | Коли використовувати |
|---|---|---|---|
| Safari Web Extension (MV3) | Середня | Mac, iOS | Рекомендований для більшості |
| Safari App Extension | Висока | Mac | Потрібні нативні API |
| Content Blocker | Низька | Mac, iOS | Тільки блокування контенту |
Структура проєкту на Xcode
MyApp.xcodeproj ├── MyApp/ # Застосунок-оболонка │ ├── AppDelegate.swift │ └── ContentView.swift └── MyApp Extension/ # Розширення ├── manifest.json ├── background.js ├── content.js ├── popup.html └── Resources/ Застосунок-оболонка повинен мати мінімальний UI — зазвичай екран з інструкцією по активації розширення. Ми гарантуємо, що ваше розширення буде прийняте в App Store з такою структурою.
iOS-розширення: унікальна перевага
Safari на iOS підтримує розширення з iOS 15. Це ринок, недоступний для Chrome/Firefox. Нативна взаємодія через SFSafariExtensionViewController та міст browser.runtime.sendNativeMessage. Згідно з офіційною документацією Apple, розширення для Safari працюють на всіх пристроях з iOS 15 та новіше.
Підпис та публікація в App Store
# Архів для App Store xcodebuild -scheme "MyApp" -configuration Release \ -archivePath build/MyApp.xcarchive archive xcodebuild -exportArchive \ -archivePath build/MyApp.xcarchive \ -exportPath build/export \ -exportOptionsPlist ExportOptions.plist Вимоги:
- Apple Developer Program ($99/рік).
- Підпис Mac App + entitlements.
- App Review: 1–7 днів (в середньому 3 дні).
- Основний застосунок не повинен бути «пустим» — ми додаємо корисний екран.
| Вимога | Опис |
|---|---|
| Apple Developer Program | $99/рік, обов'язкова підписка |
| Підпис Mac App | Developer ID або Mac App Store |
| Entitlements | Включити Safari Extension |
| App Review | 1-7 днів, може бути повторний |
Порівняння: конвертація готового Chrome-розширення в Safari займає в 3 рази менше часу, ніж розробка з нуля, а вартість знижується на 50-60%.
Типові помилки та їх вирішення
Service Worker завершується
Використовуйте `chrome.storage.session` для зберігання стану — це запобігає втраті даних при перезапуску.CORS у Content Script
Перенаправляйте fetch через Background — це вирішує проблему.Розширення не з'являється на iOS
Переконайтеся, що застосунок-оболонка запущено хоча б один раз, потім увімкніть розширення в Налаштуваннях.Що входить у роботу?
- Аудит існуючого розширення (якщо є).
- Створення Xcode-проєкту з оболонкою.
- Конвертація та виправлення несумісностей.
- Налаштування іконок та метаданих.
- Тестування на Mac та iOS (реальних пристроях).
- Підготовка до публікації в App Store.
- Допомога з проходженням App Review.
- Документація та передача вихідних кодів.
Терміни та вартість
Конвертація — від 5 до 8 робочих днів. Розробка з нуля (Mac + iOS) — від 15 до 25 днів. Вартість розраховується індивідуально, залежить від складності та обсягу. Замовте розробку розширення для Safari вже сьогодні — отримайте консультацію інженера перед стартом.







