This website uses cookies.
By using and further navigating this website you accept this. Detailed information about the use of cookies on this website is available by clicking on more information.
Ok, don't show again

Publishing Safari Extensions: A Step-by-Step Guide

Getting your extension published for Safari browser is largely different compared to the one for Chrome or Firefox.

Up until September 2019, we had the Safari Extensions Gallery. It played exactly the same role for Safari as Chrome Web Store does for Chrome and addons.mozilla.org (aka AMO) for Firefox: it served as a central hub where developers would upload their creations and users would enjoy hassle-free 1-click installs of their favorite extensions. The initial registration process was a bit more involved for developers compared to Chrome Web Store and AMO, but after that, the support cycle felt familiar: we would pack the extension into a .safariextz file, upload it to a special form at Safari Extensions Gallery website and wait for the approval from Apple's team.

However, now Safari Extensions Gallery is deprecated, and Apple's preferred way of delivering products to their Mac users is via the Mac App Store. Safari extensions now must be packed inside the native macOS apps, so if you want your Safari extension to be easily available for your users, you will have to play by Mac apps publishing rules.

Learning them bit by bit can be overwhelming. Luckily, we at Besttoolbars have successfully transitioned a whole slew of our customers' Legacy Safari Extensions to Mac App Store and developed a bunch from scratch, so we can teach you the most essential things you need to know.

Anton Istomin
macOS software developer

Enrolling in the Apple Developer Program

Firstly, you need to create an Apple ID and enroll in the Apple Developer Program. This will give you access to Apple's resources for publishing apps for all of their platforms: macOS, iOS, watchOS, and tvOS. That said, if your team has, say, an iOS app, then you're already enrolled and you may skip this section.

Please note, that Apple charges an annual fee for enrollment, so allocate your budget. Membership in the Program costs $99/year, unless you're enrolling into an Apple Developer Enterprise Program, which will cost you $299/year. You most likely want the former, as the latter simply allows you to develop apps for your company's internal use.

Also keep it in mind that any data collected by Google Analytics or any other tracking mechanism, must comply with AMO latest policy. You need to create a consent page (aka control mechanism for data collection), which is shown at install time. The consent page should contain a choice accompanied by the data collection summary. The choice to send data shouldn't be enabled by default.

Here is an example of how to create a page within the add-on blog.mozilla.org.
Also, the summary of the data collection should be mentioned in the add-on description and privacy policy.

For more information, refer to developer.mozilla.org

Tip: before enrolling, get an iPhone or a Mac if you have neither! Enrolling in the Apple Developer Program requires you to own an Apple device with two-factor authentication enabled.

When enrolling as a company, you will have to provide some basic info about your company for Apple, as listed on their enrollment page:
After having enrollment form filled out and a $99 payment submitted, you will have to wait for an approval email from Apple. It's never been longer than 3 to 4 days in our experience, but different sources report wait times as long as two weeks, so stay patient and check your inbox from time to time.

Naturally, given the amount of time simply waiting for approval may take, we advise you to enroll in the Apple Developer Program as early as possible. You definitely don't want to do that one day before the planned release date.

Inviting a Developer to Your Team

After you've enrolled, you will mainly interact with App Store publishing services using the App Store Connect website. This is the dashboard where you manage your team, apps, agreements, see install counts for your products etc.

Before you can publish an extension, a developer must first upload a build to App Store Connect using Xcode. To be able to do that, they must be a part of your App Store Connect team. To invite a developer to your team, open App Store Connect main page, then click Users and Access menu item.
On the Users and Access page, click the plus icon.
A dialog window will appear. Fill out the first name, last name, and email (1), tick Admin in Roles section (2), then click Invite (3). What does the Admin role mean? Users with Admin role have essential permissions needed for building and publishing apps without having you jumping through tedious hoops. Some people are concerned if an Admin user could take over their Apple Developer Program account—the answer is no, they can't. Only you as the Account Holder have the ultimate power over your Apple Developer Program account. Here is a detailed table of all Apple Developer Program roles and their permissions if you wish to know exactly what Admin users are capable of doing.On the Users and Access page, click the plus icon.
When developer accepts the invitation, they will become a part of your team and will be able to upload a build of the extension to App Store Connect for publishing.

Submitting App for Review

When your app is all polished and ready for shipping, you'll want to submit it for a review to eventually get it published in the Mac App Store. Here's what you need to have handy for submitting the app:

  • Screenshots. Up to 10 images in any of the following resolutions: 1280x800, 1440x900, 2560x1600, 2880x180. Avoid JPEG images as they suffer from compression artifacts (i.e. they look bad), PNG images work best. If your extension is already published in Chrome Web Store or AMO, reusing screenshots from there is fine.

  • Text description. Up to 4,000 characters.

  • Notes for reviewer. Very important! Provide test account credentials, explain how to use the extension, what's its purpose, what graphical elements are injected at which websites, and why, and how to see them. No need to explain every feature, just make sure the reviewer knows where to look to see that app actually works and is doing something useful.

  • Privacy policy. Get one written if you don't have one yet, it's a must-have. It must be also published on your website. There should be a separate privacy policy written specifically for your extension—using a privacy policy that only applies to your website may lead to rejection either during the initial review process or at some point in the future.

When you've prepared all of these, click the My Apps button on the App Store Connect main page.
Click on your app to begin filling out the publishing form.
Publishing form is pretty straight forward to navigate and has a lot of help as popups to guide you through.

Note: you will notice that no matter what you do app's icon never gets changed from the unattractive wireframe default thing. It's a normal behavior. The icon is included inside the app's build, so you don't need to manually set it anywhere, and it will render properly after the app passes review.

When you're done, click Submit for Review button. You may issue additional edits to your submissions after you do, so don't worry if you realize you need to make some corrections afterward.

The review usually takes from 1 to 2 business days. After that, you either receive a rejection email and need to correct issues the reviewer points out, or the app successfully makes it to the store and you're golden.

Conclusion

We hope this guide will help you not to get lost in the process of publishing a Safari Extension. To recap, here are the 3 key points for painless Mac App Store deployment:

  1. Set up your accounts as soon as possible.

  2. Prepare your resources early: descriptions, screenshots, and privacy policy.

  3. Be patient.

Previous articles

Successful cases, development life hacks and guaranteed ways to increase user retention and profit growth.

LETS DISCUSS YOUR OPPORTUNITIES!
PLEASE, FILL IN THE FORM

Our goal is to understand your challenge and provide a solution that satisfies your expectations. This ends up in close and long term relations with our clients.
By submitting you agree with the Privacy Policy statement