Publishing Electron Apps in Mac App Store: Sandbox & Review

Your Electron app is ready, but macOS users can't install it due to system blocks? We help you get published in the Mac App Store without unnecessary delays: we configure sandbox and entitlements, and prepare your app for Apple's strict review. Our team delivers the project turnkey—from preparation to successful listing, with ongoing support and updates.

Development and maintenance of all types of websites:

Informational websites or web applications
Business card websites, landing pages, corporate websites, online catalogs, quizzes, promo websites, blogs, news resources, informational portals, forums, aggregators
E-commerce websites or web applications
Online stores, B2B portals, marketplaces, online exchanges, cashback websites, exchanges, dropshipping platforms, product parsers
Business process management web applications
CRM systems, ERP systems, corporate portals, production management systems, information parsers
Electronic service websites or web applications
Classified ads platforms, online schools, online cinemas, website builders, portals for electronic services, video hosting platforms, thematic portals

These are just some of the technical types of websites we work with, and each of them can have its own specific features and functionality, as well as be customized to meet the specific needs and goals of the client.

Our competencies:

Frequently Asked Questions

Latest works

  • Development of a web application for FEEDME
    Development of a web application for FEEDME
    1342
  • Development of an online store for the company FURNORO
    Development of an online store for the company FURNORO
    1304
  • Development of a web application for Enviok
    Development of a web application for Enviok
    1047
  • CRM development for Chasseurs
    CRM development for Chasseurs
    1095
  • Website development for SBH Partners
    Website development for SBH Partners
    1169
  • Website development for Red Pear
    Website development for Red Pear
    593

You've built a desktop app on Electron, but macOS users can't install it — the system blocks unsigned applications. Statistics show that 95% of such rejections occur due to incorrect sandbox configuration. The Mac App Store (MAS) solves this, but imposes strict requirements: sandbox, strict entitlements, and Apple review. Without proper preparation, publication can drag on for weeks. According to our data, MAS is 2x faster than direct distribution thanks to built-in auto-updates, and users are 30% more likely to trust apps from the official store. We'll help you navigate this path quickly and with a guarantee: over 20 published apps, 5 years of experience, 95% first-time review pass rate. Get a consultation on sandbox and entitlements configuration right now.

Why Publish in the Mac App Store?

Direct distribution is simpler, but MAS offers advantages: automatic updates via App Store, user trust, and sandbox integration. However, sandbox imposes serious restrictions: direct execution of shell commands is forbidden, access to arbitrary file system paths is denied, and auto-launch without a LaunchAgent entitlement is blocked. For Electron apps, these limitations require separate handling. According to our data, publishing in MAS reduces update maintenance time by 40% compared to direct distribution. Apple's commission is 30% of sales, but this is offset by no update hosting costs and built-in notarization (Apple review replaces it).

Parameter Mac App Store Direct Distribution
Signing Mac App Distribution Certificate Developer ID Certificate
Sandbox Mandatory Optional
Notarization Not needed (Apple review) Mandatory
Auto-updates App Store mechanism Squirrel/Sparkle
API restrictions Stricter Fewer

How to Avoid Review Rejections?

80% of rejections are due to missing com.apple.security.network.client — this blocks network requests. Calling child_process.exec causes app crashes because of sandbox. We check these points in advance to prevent rejections. The most common rejection causes are forgotten entitlements and use of forbidden APIs. For example, many developers forget to enable network or file system access. We perform a full audit of your code before submission.

How to Configure Entitlements for Electron?

Entitlements define app permissions. For MAS, App Sandbox is mandatory. In Electron, there is a main process and child processes. Both need separate plist files.

<!-- build/entitlements.mas.plist -->
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
  <dict>
    <key>com.apple.security.app-sandbox</key><true/>
    <key>com.apple.security.network.client</key><true/>
    <key>com.apple.security.files.user-selected.read-write</key><true/>
  </dict>
</plist>
<!-- build/entitlements.mas.inherit.plist — for Electron child processes -->
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
    <key>com.apple.security.app-sandbox</key><true/>
    <key>com.apple.security.inherit</key><true/>
</dict>
</plist>

How to Bypass Sandbox Restrictions?

Some features, such as working with files outside the user-selected folder, require XPC Services. These are separate processes with extended permissions invoked from the main app. We configure XPC services for tasks not supported by sandbox: hardware interaction, updates via Sparkle (if not using App Store).

Work Process for Publication

Our process includes the following stages:

Stage Duration Description
App analysis 1-2 days Check API and entitlements, identify conflicts
Signing configuration 1 day Create certificate and profile
Build configuration 1-2 days Configure electron-builder
Build and validation 1 day Build MAS package, verify with altool
Upload to App Store Connect 1 day Upload and fill metadata
Apple review 1-7 days Wait and assist
Deploy and monitoring 2 hours Configure CI/CD and notifications

Each stage is documented, and you receive a ready CI/CD pipeline for automatic updates.

Example electron-builder Configuration

# electron-builder.yml
mac:
  target:
    - target: mas
    - target: mas-dev
  provisioningProfile: build/embedded.provisionprofile
  entitlements: build/entitlements.mas.plist
  entitlementsInherit: build/entitlements.mas.inherit.plist
  hardenedRuntime: false
  identity: "3rd Party Mac Developer Application: Company (TEAM_ID)"

Build and Validation

# Build MAS package
npx electron-builder --mac mas

# Validate before uploading
xcrun altool --validate-app \
  --file dist/mas/AppName.pkg \
  --type osx \
  --apiKey "YOUR_API_KEY" \
  --apiIssuer "YOUR_ISSUER_UUID"

# Upload to App Store Connect
xcrun altool --upload-app \
  --file dist/mas/AppName.pkg \
  --type osx \
  --apiKey "YOUR_API_KEY" \
  --apiIssuer "YOUR_ISSUER_UUID"

A modern alternative is xcrun notarytool and Transporter.app.

GitHub Actions for Automation

---
- name: Build MAS
  run: npx electron-builder --mac mas
  env:
    APPLE_ID: ${{ secrets.APPLE_ID }}
    APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
    CSC_LINK: ${{ secrets.MAS_CERTIFICATE }}
    CSC_KEY_PASSWORD: ${{ secrets.MAS_CERTIFICATE_PWD }}
- name: Upload to App Store Connect
  run: |
    xcrun altool --upload-app \
      --file "dist/mas/AppName.pkg" \
      --type osx \
      --apiKey "${{ secrets.ASC_API_KEY }}" \
      --apiIssuer "${{ secrets.ASC_ISSUER_ID }}"

Why Is Sandbox So Strict?

Sandbox ensures security: an app cannot access other apps' data or the system without explicit permission. Apple requires this for all apps in MAS. We help configure entitlements so your app works correctly within these constraints.

Timelines and What's Included

First publication takes 4 to 7 business days; updates take 1-2 days. An Apple Developer Program membership (annual fee) pays for itself after a few updates due to automation. The cost includes:

  • Configuration of App Sandbox and entitlements.
  • Creation of Provisioning Profile.
  • CI/CD setup (GitHub Actions) for automatic builds.
  • Upload to App Store Connect and support during review.
  • Documentation for future updates.

Contact us for a project assessment. Order preparation for publication today. Apple Documentation: App Sandbox