GitHub - shokk/ThreadsExtension: A safari extension for Threads · GitHub
Skip to content

shokk/ThreadsExtension

Repository files navigation

Share to Threads - Safari Extension

A Safari extension for macOS that allows you to quickly share the current webpage URL to Threads.

Features

  • Share any webpage URL to Threads with one click
  • Pre-populated text field with the current page URL
  • Edit the text before posting
  • Supports both light and dark mode
  • Keyboard shortcut: Cmd+Enter to post

Requirements

  • macOS 13.0 or later
  • Safari 16.0 or later
  • Threads account

Installation

Install from the Mac App Store


Mac App Store Submission Checklist

Pre-Submission Requirements

Apple Developer Account

  • Active Apple Developer Program membership ($99/year)
  • App Store Connect account set up
  • Certificates and provisioning profiles configured

Xcode Project Configuration

  • Bundle Identifier set (com.shokk.ThreadsExtension)
  • Version number set (1.0)
  • Build number set (1)
  • Deployment target set (macOS 13.0+)
  • App Sandbox enabled
  • Hardened Runtime enabled
  • App category set (Social Networking)

Code Signing

  • Create App Store distribution certificate in Apple Developer Portal
  • Create App Store provisioning profile for main app
  • Create App Store provisioning profile for extension
  • In Xcode: Set signing to "Manual" for release builds
  • Select the App Store provisioning profiles

App Icons (Required Sizes)

  • 16x16 @1x (16pt)
  • 16x16 @2x (32pt)
  • 32x32 @1x (32pt)
  • 32x32 @2x (64pt)
  • 128x128 @1x (128pt)
  • 128x128 @2x (256pt)
  • 256x256 @1x (256pt)
  • 256x256 @2x (512pt)
  • 512x512 @1x (512pt)
  • 512x512 @2x (1024pt)

Note: For best quality, provide a 1024x1024 PNG icon and let Xcode generate all sizes.

App Store Connect Setup

App Information

  • Create new app in App Store Connect
  • Set primary language
  • Set app name: "Share to Threads"
  • Set subtitle (optional, max 30 characters)
  • Set privacy policy URL (REQUIRED)
  • Set app category: Social Networking

App Privacy

  • Complete App Privacy questionnaire in App Store Connect
  • Data types collected: None (this extension only opens URLs)
  • No tracking implemented

Screenshots (Required)

Mac App Store requires screenshots at these resolutions:

  • 1280 x 800 pixels (minimum)
  • 1440 x 900 pixels
  • 2560 x 1600 pixels (Retina)
  • 2880 x 1800 pixels (Retina)

Tip: Take screenshots showing:

  1. The extension popup with a URL ready to share
  2. Safari with the extension icon visible in the toolbar

App Description

  • Write compelling description (up to 4000 characters)
  • Add keywords (up to 100 characters, comma-separated)
  • Prepare promotional text (optional, up to 170 characters)
  • Add "What's New" text for updates

Support Information

  • Support URL
  • Marketing URL (optional)
  • Privacy Policy URL (REQUIRED for all apps)

Privacy Policy Requirements

Since this app:

  • Accesses the current webpage URL
  • Opens threads.net in a new tab

You need a privacy policy that states:

  1. What data is accessed (current tab URL)
  2. How the data is used (to share to Threads)
  3. No data is collected, stored, or transmitted to any server except threads.net
  4. No analytics or tracking

Sample Privacy Policy Statement:

Share to Threads accesses the URL of your current Safari tab solely to pre-populate the sharing dialog. This URL is only sent to threads.net when you choose to post. No data is collected, stored, or shared with any third parties. No analytics or tracking is implemented.

Build and Archive

  1. In Xcode, select Product > Archive
  2. Wait for the archive to complete
  3. In the Organizer window, click Distribute App
  4. Select App Store Connect
  5. Choose Upload (or Export for manual upload)
  6. Follow the prompts to upload

Post-Upload

  • Build processing (usually 5-30 minutes)
  • Add build to app version in App Store Connect
  • Submit for review
  • Wait for App Review (typically 24-48 hours)

Common Rejection Reasons to Avoid

  1. Missing privacy policy - Required for all apps
  2. Broken links - Test all URLs in your app listing
  3. Incomplete metadata - Fill out all required fields
  4. Placeholder content - Remove all "Lorem ipsum" or test text
  5. Missing app functionality - App must work as described
  6. Incorrect screenshots - Must accurately represent the app

Version Updates

For future updates:

  1. Increment MARKETING_VERSION (e.g., 1.0 → 1.1)
  2. Increment CURRENT_PROJECT_VERSION (e.g., 1 → 2)
  3. Update "What's New" text
  4. Archive and upload new build

Development

Project Structure

ThreadsExtension/
├── ThreadsExtension/                 # Main app container
│   ├── Assets.xcassets/              # App icons and assets
│   ├── Resources/                    # App resources
│   ├── AppDelegate.swift
│   └── ViewController.swift
├── ThreadsExtension Extension/       # Safari extension
│   ├── Resources/
│   │   ├── manifest.json             # Extension manifest
│   │   ├── popup.html/css/js         # Extension popup
│   │   ├── background.js             # Background script
│   │   └── images/                   # Extension icons
│   ├── Info.plist
│   └── SafariWebExtensionHandler.swift
└── ThreadsExtension.xcodeproj

Building

# Open in Xcode
open ThreadsExtension.xcodeproj

# Or build from command line
xcodebuild -project ThreadsExtension.xcodeproj -scheme ThreadsExtension -configuration Release

License

Copyright © 2024. All rights reserved.

About

A safari extension for Threads

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors