A step-by-step guide to preparing, submitting, and selling Tickr on the Mac App Store.
- Apple Developer Account ($99/year) — developer.apple.com
- Xcode installed (latest stable version)
- Mac with macOS 13.0+ for building
- App icon (already included in
Tickr/Assets.xcassets/AppIcon.appiconset/)
- Enroll in the Apple Developer Program at developer.apple.com/programs/enroll
- Accept agreements in App Store Connect → Agreements, Tax, and Banking
- Set up banking — add your bank account and tax information for payments
- Open Xcode → Settings → Accounts → add your Apple ID
- Select your team → Manage Certificates
- Click + → Apple Distribution certificate
- Also create a Mac App Distribution certificate and a Mac Installer Distribution certificate
- Go to developer.apple.com/account/resources/identifiers
- Click + → App IDs → App
- Set:
- Description:
Tickr - Bundle ID: Explicit →
com.tickr.app - Capabilities: check App Sandbox and Outgoing Connections (Client)
- Description:
- Click Continue → Register
- Go to developer.apple.com/account/resources/profiles
- Click + → Mac App Store → Mac App Distribution
- Select App ID:
com.tickr.app - Select your Apple Distribution certificate
- Name it:
Tickr Mac App Store - Download and double-click to install
Ensure Tickr/Info.plist has these required fields (most are already set):
<key>CFBundleName</key>
<string>Tickr</string>
<key>CFBundleDisplayName</key>
<string>Tickr</string>
<key>CFBundleIdentifier</key>
<string>com.tickr.app</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSMinimumSystemVersion</key>
<string>13.0</string>
<key>LSUIElement</key>
<true/>Important:
CFBundleVersionmust be incremented for every upload to App Store Connect.
Tickr/Tickr.entitlements must include:
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>The App Sandbox is required for Mac App Store distribution.
Ensure no debug/test paths remain. The app already stores data in UserDefaults (sandboxed container), so no changes needed.
The App Store requires builds signed with Xcode — swiftc builds cannot be submitted.
- Open
Tickr.xcodeprojin Xcode - Select the Tickr target → Signing & Capabilities
- Set:
- Team: your Apple Developer team
- Bundle Identifier:
com.tickr.app - Signing: Automatically manage signing (or select your provisioning profile)
- Ensure the entitlements file is set in Build Settings → Code Signing Entitlements →
Tickr/Tickr.entitlements - Set Build Settings → Code Signing Identity →
Apple Distribution
- Select Product → Archive (or Cmd+Shift+B with Archive scheme)
- Wait for the build to complete
- The Organizer window opens with your archive
- Go to appstoreconnect.apple.com
- Click My Apps → + → New App
- Fill in:
- Platform: macOS
- Name:
Tickr - Primary Language: English (U.S.)
- Bundle ID:
com.tickr.app - SKU:
tickr-macos-1(any unique string)
- Click Create
- Category: Finance
- Secondary Category: Utilities (optional)
- Content Rights: Does not contain third-party content that requires rights
- Age Rating: 4+ (no objectionable content)
- Go to Pricing and Availability
- Set your price tier:
- Free — no charge
- Paid — select a price tier (e.g., Tier 1 = $0.99, Tier 3 = $2.99, Tier 5 = $4.99)
- Free with In-App Purchases — if you plan to add premium features later
- Select availability (all territories, or specific countries)
You need screenshots for the Mac App Store listing:
- Required: At least one screenshot
- Sizes: 1280x800, 1440x900, 2560x1600, or 2880x1800 pixels
- Recommended: 3-5 screenshots showing key features
Capture these from the running app:
- Menu bar ticker
- Dropdown with stocks and categories
- Expanded stock with news and earnings
- Settings window
- Chart view
Tip: Use Cmd+Shift+4 to capture specific areas, or Cmd+Shift+5 for window capture.
Suggested App Store description:
Tickr puts real-time stock prices in your macOS menu bar.
FEATURES
• Live stock ticker in the menu bar with customizable display
• Organize unlimited stocks into categories
• Interactive charts: 1W, 1M, YTD, 1Y, 5Y
• Latest news headlines for each stock
• Next earnings call dates
• Market cap, volume, 52-week range, sector info
• Color-coded gains (green) and losses (red)
• Configurable refresh intervals (15s to 30min)
• Sort categories by name, price, or performance
• Click any stock to open Yahoo Finance
PRIVACY
• No account required
• No personal data collected
• Optional anonymous analytics (opt-out in Settings)
• Full transparency — see exactly what's tracked
Tickr uses Yahoo Finance for stock data. Prices may be delayed up to 15 minutes depending on the exchange.
stocks, ticker, menu bar, finance, portfolio, watchlist, market, investing, quotes, NYSE, NASDAQ
Set this to your GitHub repo: https://github.com/h4ux/Tickr
Required. Create a simple privacy policy page. You can use your GitHub repo's SECURITY.md:
https://github.com/h4ux/Tickr/blob/main/SECURITY.md
Or create a dedicated privacy policy page on GitHub Pages or any static hosting.
- In the Organizer (after archiving), select your archive
- Click Distribute App
- Select App Store Connect
- Select Upload
- Follow the prompts (signing, entitlements check)
- Wait for upload to complete
# Export the archive to a .pkg
xcodebuild -exportArchive \
-archivePath build/Tickr.xcarchive \
-exportPath build/export \
-exportOptionsPlist ExportOptions.plist
# Upload to App Store Connect
xcrun altool --upload-app \
-f build/export/Tickr.pkg \
-t macos \
-u "your-apple-id@email.com" \
-p "@keychain:AC_PASSWORD"Note: Store your app-specific password in Keychain:
xcrun altool --store-password-in-keychain-item "AC_PASSWORD" \ -u "your-apple-id@email.com" \ -p "xxxx-xxxx-xxxx-xxxx"Generate an app-specific password at appleid.apple.com → Security → App-Specific Passwords.
- Download Transporter from the Mac App Store
- Sign in with your Apple ID
- Drag the
.pkgfile into Transporter - Click Deliver
- Go to App Store Connect → your app → macOS version
- Select the uploaded build
- Fill in:
- What's New:
Initial release - Review Notes:
Tickr is a menu bar stock ticker app. To test: launch the app, it appears in the menu bar. Click to see stocks. Open Settings to add/remove tickers. - Sign-In Required: No
- What's New:
- Click Submit for Review
- Review typically takes 24-48 hours (can be longer)
- Common rejection reasons for menu bar apps:
- Guideline 4.0 - Design: Ensure the app has meaningful functionality beyond a web wrapper
- Guideline 2.1 - Performance: App must work reliably
- Guideline 5.1.1 - Data Collection: Must have a privacy policy if collecting any data
- Guideline 2.4.5 - Apple Sites: Don't scrape Apple services (we use Yahoo/Google, so this is fine)
- If rejected, read the rejection reason carefully, fix the issue, and resubmit
- Increment
CFBundleVersioninInfo.plist(e.g.,1→2) - Update
CFBundleShortVersionStringfor user-facing version (e.g.,1.0.0→1.1.0) - Archive and upload the new build
- Create a new version in App Store Connect
- Submit for review
- App Store Connect → Analytics: downloads, impressions, conversion rate
- App Store Connect → Ratings and Reviews: respond to user reviews
- PostHog dashboard: app usage analytics (if configured)
- Apple Developer Account active and agreements signed
- Bundle ID
com.tickr.appregistered - App signed with Apple Distribution certificate
- App Sandbox enabled with
network.cliententitlement -
CFBundleVersionis unique for this upload - No hardcoded API keys in submitted code (
Secrets.swiftuses placeholder for App Store builds) - App icon at all required sizes (already in asset catalog)
- At least 1 screenshot uploaded to App Store Connect
- Description, keywords, category, and pricing set
- Privacy policy URL provided
- Support URL provided
- Tested on macOS 13.0+ (minimum deployment target)
- App quits cleanly, no crashes on launch
- Menu bar item appears and is functional
| Item | Cost |
|---|---|
| Apple Developer Program | $99/year |
| Apple's commission on paid apps | 30% (15% for small business < $1M revenue) |
| Free apps | No commission |