Native Swift, for the Apple ecosystem
We write Swift for Apple's platforms, and we share what we learn.
Every app we make is native: Swift and SwiftUI on Apple's own frameworks, with no web view wrapper and no cross-platform layer. The tools and write-ups on this site come from the same work: things we needed while building and shipping, checked against Apple's documentation, then published for anyone to use.
How we build
A few habits that show up in every app.
- Swift and SwiftUI on Apple's frameworks, such as Vision, VideoToolbox, HealthKit and WatchKit
- Your data stays on your device, so the apps work without an account
- Each screen is designed and tested by hand on real devices
Free tools for Swift and Apple platform developers
They run in your browser and upload nothing. Each one cites the Apple page its rules come from.
- App Store metadata checkerCheck your App Store name, subtitle and keywords for character limits, wasted keywords, price words like "Free" and Android mentions.
- App Store screenshot sizesEvery accepted iPhone, iPad, Mac, TV, Vision Pro and Watch screenshot size; check files for wrong sizes and alpha channels and resize them.
- App preview video checkerCheck an App Store preview video against Apple's specs: 15–30 s, 30 fps, 886 × 1920 and the other accepted sizes, 500 MB, H.264 and stereo sound.
- Privacy manifest generatorTick boxes to build a valid PrivacyInfo.xcprivacy with required reason codes, tracking domains and collected data, or paste one to check it.
- Entitlements generator and checkerBuild an Xcode .entitlements file from capabilities, or paste one or codesign output to catch wrong values, debug keys and missing App Sandbox.
- App privacy label builderAnswer App Store Connect's App Privacy questions, merge your SDKs' privacy manifests and preview the label your product page will show.
- App Store submission checklistAn interactive pre-submit checklist for iOS and Mac apps: build, listing, screenshots, purchases and review notes, each step linked to the tool that checks it.
- App Store Connect limitsName, subtitle, keyword and description lengths, screenshot and preview counts, TestFlight testers, build sizes, in-app purchase fields and offer codes, each linked to Apple's page.
- String Catalog translation progressDrop a Localizable.xcstrings to see translated, needs review, new, stale and missing counts per language, with a CSV of what is left.
- Provisioning profile viewerSee what's inside a .mobileprovision: app ID, team, expiry, profile type, entitlements, device UDIDs and certificate fingerprints. Nothing is uploaded.
- IPA inspectorDrop an .ipa to see Info.plist essentials, permission strings, privacy manifests, frameworks, architectures and what takes up the space. Nothing is uploaded.
- App icon generator for XcodeOne 1024 px picture → AppIcon.appiconset with Contents.json for iOS, macOS and watchOS.
- AASA validatorFetch apple-app-site-association from your domain and Apple's CDN, then check JSON errors, app IDs and which rule a URL matches.
- JSON to Swift CodablePaste JSON and get Codable structs with optionals, CodingKeys and Date handling worked out.
- Xcode build settings and .xcconfig checkerSearch every build setting Apple documents with its type and allowed values, and check an .xcconfig file for lines that make Xcode ignore it, URLs cut by // and typos.
- Plist converterConvert property lists between XML, binary and JSON, with a tree view of every value's type.
- App Store Connect API token generatorSign an ES256 JWT for the App Store Connect API from your .p8 key, Key ID and Issuer ID, with a ready curl command. The key never leaves the page.
- Info.plist permission stringsTick what your app uses and get the NS…UsageDescription keys with clear EN/ZH purpose strings, or paste an Info.plist to check it.
- App Store screenshot generatorTurn raw app screenshots into App Store images with a headline, a background and an optional device outline, at exact iPhone, iPad and Mac sizes.
- iPhone and iPad screen sizesEvery iPhone and iPad size from Apple's guidelines in points and pixels, with scale and screenshot class.
- .strings to String CatalogTurn .strings and .stringsdict into one .xcstrings with comments and plurals kept, or split a catalog back.
- App Review rejection decoderPaste Apple's rejection message and see each guideline it cites, what it means, how to fix it, and a draft reply.
- Xcode and SDK requirementsToday's minimum Xcode and SDK for App Store uploads, Apple's upcoming deadlines, and every Xcode's SDKs, macOS and Swift.
- APNs push notification testerBuild and check a push payload and headers for every push type, sign the provider token from your .p8 key in the browser, and get a ready curl command.
- Apple certificate viewerRead a .cer, .pem or .p12: certificate type, Team ID, issuer, expiry, fingerprints, and whether the private key matches.
- App Review Guidelines indexFind any App Review Guideline by number or word, with links to Apple's text and our guides.
- Swift DateFormatter testerType a dateFormat pattern and see what DateFormatter prints for any date, locale and time zone, with every symbol, presets and YYYY/DD/hh traps.
- Apple developer resources90 official Apple pages for indie iOS and Mac developers, from enrolling to getting paid, with a line on when to use each. Searchable in English and Chinese.
- Xcode colour set generatorMake asset-catalog .colorset folders with Dark and High Contrast versions, sRGB or Display P3, Swift code and a contrast check.
- App Store JWS decoderDecode and verify signedPayload, transactions and renewal info: Apple chain check, readable dates, prices and notification types.
- Crash report readerPaste an .ips or .crash report to see the exception in plain words, the crashed thread with your own frames marked, and ready atos commands to symbolicate it.
- ExportOptions.plist generatorBuild the ExportOptions.plist that xcodebuild -exportArchive reads, with archive and export commands, or check one for old method names, wrong types and ignored keys.
- Info.plist checkerPaste or drop an app's Info.plist, XML or binary, to see what App Store Connect refuses: version formats, bundle ID, blank purpose strings, launch screen (ITMS-90870), Mac category, export compliance.
- App Store link builderBuild campaign links with pt, ct and mt, custom product page, write-a-review and offer code links and the Smart App Banner tag; the campaign token is checked against Apple's 30-character rule.
- ITMS upload error lookupPaste the App Store Connect upload error email or Xcode output to see what each ITMS code means and what to change, with the Apple page each entry was read on.
- Notarization log readerPaste the notarytool log to see why a Mac app failed notarization, grouped and in fix order, with Apple's explanation, the fix and a command to check each problem.
- StoreKit configuration file viewerOpen a .storekit file to see every in-app purchase and subscription, then check it for duplicate IDs, empty names, missing languages and App Store Connect limits.
Questions
- Are your apps really native Swift?
- Yes. They are written in Swift and SwiftUI and use Apple's frameworks directly. None of them is a web app in a wrapper or built on a cross-platform toolkit.
- Is your code open source?
- The apps are closed source. Lexa, an offline English vocabulary trainer written in SwiftUI, is open source under the MIT licence, and its code is on GitHub for you to read and reuse.
- Where do the tools get their rules?
- From Apple's own pages: App Store Connect Help, technotes such as TN3208, the Xcode build settings definitions and the App Review Guidelines. Each tool links the page behind each message, and says when a rule is only reported by developers and not written down by Apple.
- I found a mistake in one of the tools.
- Please tell us. The tools are checked against real files and Apple's pages, and a wrong rule is something we want to fix quickly. Use the Contact link at the bottom of any page.