Help & Documentation
Frequently asked
questions
Everything you need to know about submitting and discovering playgrounds.
General
Swiftgrounds is a community-driven platform where developers and students can share and discover Swift Playground projects.
In January 2025, Apple removed the ability to subscribe to playground feeds directly from the Swift Playground app.
Swiftgrounds was built to fill that gap: a place where developers, educators, and students can continue sharing and discovering Swift Playground using the same subscription feed format that Apple originally designed.
In January 2025, Apple removed the ability to subscribe to playground feeds directly from the Swift Playground app.
Swiftgrounds was built to fill that gap: a place where developers, educators, and students can continue sharing and discovering Swift Playground using the same subscription feed format that Apple originally designed.
1Create an account and verify your domain.
2Host a JSON feed on your domain describing your playgrounds, with fields like title, description, difficulty level, and download URL.
3Go to your Feed page and submit the URL to your feed.
4Swiftgrounds fetches, parses, and displays your playgrounds automatically.
Apple Developer Documentation:
Publishing a Subscription
No. Swiftgrounds is a directory, not a hosting service. The goal is to replicate the experience Apple originally built into the Swift Playground app, where publishers hosted content on their own domain and the app subscribed to their feeds. That model gives creators full ownership and control over their work.
You host your playground files anywhere you like (GitHub Pages, your personal site, a CDN) and describe them in a JSON feed. Swiftgrounds reads that feed and makes your playgrounds discoverable. There’s no upload step, no storage limits, and no lock-in. Your content stays on your domain.
You host your playground files anywhere you like (GitHub Pages, your personal site, a CDN) and describe them in a JSON feed. Swiftgrounds reads that feed and makes your playgrounds discoverable. There’s no upload step, no storage limits, and no lock-in. Your content stays on your domain.
Feed format
Swiftgrounds uses the same JSON feed format originally defined by Apple for Swift Playground subscriptions.
Required feed-level fields:
Required document fields:
JSON
Required feed-level fields:
formatVersion, title, publisherName, feedIdentifier, contactURL, documentsRequired document fields:
title, overviewSubtitle, description, contentIdentifier, contentVersion, urlJSON
{
"title": "My Playgrounds",
"publisherName": "Your Name",
"feedIdentifier": "com.example.feed",
"contactURL": "https://example.com",
"formatVersion": "1.0",
"documents": [ ... ]
}
Apple Developer Documentation:
Creating a Subscription
Optional document fields include
The
detailSubtitle, difficultyLevel (beginner, intermediate, advanced, expert), publishedDate, lastUpdatedDate (ISO 8601), thumbnailURL (902×678px), bannerImageURL (1080×400px), previewImageURLs (800×600px), and additionalInformation.The
additionalInformation array stores extra metadata as name/value pairs, each with a name, value, and optional type field ("string" or "date").
Yes. To support multiple languages, your main feed URL points to a JSON object that maps locale IDs to localized feed files:
JSON
JSON
{
"en": "en-feed.json",
"fr": "fr-feed.json",
"es": "es-feed.json"
}
Each localized feed follows the standard format.
Apple Developer Documentation:
Localizing a Subscription Feed
Yes. Apple presented a full session on creating and publishing Swift Playground subscriptions at WWDC 2018. It covers the feed format in depth, including structuring chapters, adding resources, and hosting your feed.
The page on the Apple Developer website is now unlisted, but the video and slides are still accessible.
The page on the Apple Developer website is now unlisted, but the video and slides are still accessible.
Domain verification
Domain verification proves you own the domain where your feed is hosted. This prevents someone from submitting a feed from a domain they don’t control. Your feed URL must be hosted on your verified domain.
After adding your domain in Account settings, you’ll receive a verification code. You can verify using either method:
Method 1: Meta tag.
Add this to the
Create a file at
Method 1: Meta tag.
Add this to the
<head> of your homepage:
HTML
<meta name="swiftgrounds-verification" content="your-code">Method 2: Text file.
Create a file at
/.well-known/swiftgrounds-verification.txt containing your verification code.
GitHub Pages uses Jekyll by default, which ignores files and folders starting with a dot (like
Shell
.well-known). Fix it by adding an empty .nojekyll file at the root of your repository:Shell
touch .nojekyll git add .nojekyll git commit -m "Disable Jekyll processing" git pushAlternatively, use the meta tag method instead. It doesn’t require the
.well-known folder at all.
Account
Yes, but to prevent abuse, username changes are limited. After changing your username you’ll need to wait before you can change it again. The exact date when you can change it next is shown on your Account page.
Profile pictures are powered by Gravatar.
To update your picture, create or update your Gravatar account using the same email address you registered with on Swiftgrounds.
To update your picture, create or update your Gravatar account using the same email address you registered with on Swiftgrounds.
Deleting your account permanently removes all your data, including your profile, feed, playgrounds, and domain verification. This action cannot be undone.