iOS Development Resources From Scratch to App Store

Resources for iOS development from setup to App Store distribution.

Setup

Remove storyboard: Link
gitignore

Package

Package Manager

SPM
Organize, manage, and edit Swift packages.

Mint
A package manager that installs and runs Swift command line tool packages.

Common Packages

SnapKit

A Swift Autolayout DSL for iOS & OS X

Kingfisher

A lightweight, pure-Swift library for downloading and caching images from the web.

RxSwift

Reactive Programming in Swift

R.swift

Strong typed, autocompleted resources like images, fonts and segues in Swift projects

Lottie

An iOS library to natively render After Effects vector animations

Issue: https://github.com/mac-cain13/R.swift/issues/815
Solution: Use Run Script + Mint, instead of plugin product (RswiftGenerateInternalResources) for generating code.

Tools

UI

Lookin

You can inspect and modify views in iOS app via Lookin, just like UI Inspector in Xcode, or another app called Reveal.

Lottie JSON Editor
Lottie edit and preview

Code

SwiftLint

A tool to enforce Swift style and conventions.

SwiftFormat

SwiftFormat is a code library and command-line tool for reformatting Swift code on macOS, Linux or Windows.

Build

Xcode-Build-Server

This repo aims to integrate xcode with sourcekit-lsp and support all the languages (swift, c, cpp, objc, objcpp) xcode supports, so I can develop iOS with my favorate editor.

xcbeautify

xcbeautify is a little beautifier tool for xcodebuild.

Design

Human Interface Guidelines

Coding Style

Trim trailing spaces in Xcode

Git

Commit messages convention

Add tags to build

1
2
git tag v1.2.0  # Version 1.2.0
git tag b10 # Build 10

Distribution

fastlane

Change version code, then fastlane beta

1
2
3
bundle exec fastlane beta
bundle exec fastlane generate_icon
bundle exec fastlane validate

Update

1
fastlane update_fastlane

Fastfile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
default_platform(:ios)

# Mac Catalyst lanes (root-level: same app, macOS variant)
desc "Build Mac Catalyst version of the app"
lane :catalyst do
Dir.chdir("..") do
sh("python3 Scripts/analyze_localization.py")
end

build_app(
scheme: "ProjectName",
clean: true,
destination: "generic/platform=macOS",
skip_package_ipa: true,
export_method: "app-store",
catalyst_platform: "macos",
output_directory: "./build/Catalyst",
xcargs: "ONLY_ACTIVE_ARCH=YES -skipPackagePluginValidation"
)
end

platform :ios do
desc "Push a new beta build to TestFlight"
lane :beta do
# Change to project root for scripts
Dir.chdir("..") do
# Check localization completeness
sh("python3 Scripts/analyze_localization.py")
end

# Increment build number
# increment_build_number(xcodeproj: "ProjectName.xcodeproj")

# Build and upload
# Use export_method: "app-store" for TestFlight
# With automatic signing, Xcode will automatically use/create the App Store distribution profile
# Note: Make sure you've opened the project in Xcode at least once so it can download
# the App Store distribution provisioning profile from your Apple Developer account
build_app(
scheme: "ProjectName",
export_method: "app-store"
)
# upload_to_testflight
end

desc "Generate app icon from source image"
lane :generate_icon do
appicon(
appicon_image_file: 'fastlane/metadata/app_icon.png',
appicon_devices: %i[ipad iphone ios_marketing],
appicon_path: 'ProjectName/Assets.xcassets'
)
end

desc "Run pre-build validations"
lane :validate do
# Change to project root for scripts
Dir.chdir("..") do
sh("python3 Scripts/analyze_localization.py")
end
end
end

Apple

App Store Preview Images

AI

Claude Code

Claude Skill: https://github.com/CharlesWiltgen/Axiom

Apple

App Store Connect: https://appstoreconnect.apple.com/
Developer Account: https://developer.apple.com/account
iCloud Dashboard: https://developer.apple.com/icloud/dashboards/

Articles

View App data: https://developer.apple.com/forums/thread/21660
Disable dark mode: https://sarunw.com/posts/how-to-disable-dark-mode-in-ios/
Hit-Testing: https://smnh.me/hit-testing-in-ios
Use Cursor for iOS development: https://dimillian.medium.com/how-to-use-cursor-for-ios-development-54b912c23941