LogoCompile

Where Compile graduates ship code

Stripe
Shopify
Notion
Linear
Vercel
Figma
Supabase
Raycast
Stripe
Shopify
Notion
Linear
Vercel
Figma
Supabase
Raycast
12-week cohort · Starts March 10

From `Hello, World`to App Store Reviewin 12 Weeks.

Production-grade Swift and iOS engineering — real Core Data stacks, async networking layers, and App Store submission pipelines. Built for developers who already ship code elsewhere.

847
Graduates hired
94%
Completion rate
12w
To production
4.9★
Average rating
// Student Journeys

Real developers.
Real outcomes.

Every case study below is a real student — their starting point, what they built, and where they landed.

Marcus Webb, iOS engineer working on a MacBook with Xcode open showing Swift code
Java → Swift

Marcus Webb

Backend Java developer at a fintech firm, 6 years experience. Never written a line of Swift.

Built during course

Real-Time Transit App

MapKit integration, live GTFS feed parsing, CoreLocation permissions flow, offline caching with Core Data.

Outcome

Hired as iOS Engineer at Stripe

3 months after completing the course. First commit to production codebase on day 4.

Priya Nair, mobile developer reviewing health app UI on iPhone and MacBook
Bootcamp → App Store

Priya Nair

Bootcamp grad who could build a to-do app but froze at architecture decisions.

Built during course

HealthKit Widget

HealthKit data pipeline, SwiftUI widget extension, background fetch, CloudKit sync.

Outcome

22,000 downloads in 60 days

Shipped solo on App Store. Featured in Health & Fitness category.

Daniel Osei, engineering team lead reviewing code on a large monitor
Team Lead → Reviewer

Daniel Osei

Engineering team lead at a SaaS company. Needed Swift fluency to review iOS PRs.

Built during course

Async Networking Layer

URLSession with async/await, Combine publishers, retry logic, certificate pinning, mock server for tests.

Outcome

Unblocked his iOS team

Reduced review turnaround from 4 days to same-day. Team velocity up 40%.

Sofia Reyes, senior iOS developer smiling at camera with code on screen behind her
Kotlin → Swift

Sofia Reyes

Android developer (Kotlin/Jetpack Compose), 4 years. Wanted to expand to cross-platform.

Built during course

Shared Architecture App

SwiftUI + Kotlin Multiplatform exploration, shared domain logic, platform-specific UI layers.

Outcome

Senior iOS role at Shopify

Leveraged Kotlin knowledge to master Swift in 8 weeks. Promoted within 6 months.

// Curriculum

Six modules.
One production app.

Each module builds on the last. By week 12, you have a live app on the App Store, not a portfolio of half-finished tutorials.

Week 1–2Free
01

Swift Foundations for Experienced Devs

Not another beginner tutorial

Optionals as a type system featureValue vs reference semanticsProtocol-oriented designasync/await from first principles
class="token-comment">// Protocol-oriented approach
protocol DataFetchable {
  associatedtype Response: Decodable
  func fetch() async throws -> Response
}

struct UserService: DataFetchable {
  typealias Response = [User]
  
  func fetch() async throws -> [User] {
    let (data, _) = try await URLSession
      .shared.data(from: .usersEndpoint)
    return try JSONDecoder().decode(
      [User].self, from: data)
  }
}
9:41 AM
Users
Marcus Webb →
Priya Nair →
Daniel Osei →
3 users loaded
Week 3–4
02

Architecture That Scales

The module where it clicks

MVVM with Combine publishersCoordinator patternDependency injection containersTesting boundaries
class="token-comment">// MVVM + Combine
final class UserListViewModel: ObservableObject {
  @Published var users: [User] = []
  @Published var isLoading = false
  
  private let service: any DataFetchable
  private var cancellables = Set()
  
  init(service: some DataFetchable) {
    self.service = service
  }
  
  func loadUsers() {
    isLoading = true
    Task { @MainActor in
      users = try await service.fetch()
      isLoading = false
    }
  }
}
9:41 AM
Dashboard
● Loading users...
Architecture layer ✓
DI container ✓
Refresh
Week 5–6
03

Core Data & Persistence

Production data stacks

NSPersistentCloudKitContainerMigration strategiesBackground context patternsFetch request optimization
class="token-comment">// Production Core Data stack
final class PersistenceController {
  static let shared = PersistenceController()
  
  let container: NSPersistentCloudKitContainer
  
  var viewContext: NSManagedObjectContext {
    container.viewContext
  }
  
  func newBackgroundContext() 
    -> NSManagedObjectContext {
    let ctx = container.newBackgroundContext()
    ctx.mergePolicy = 
      NSMergeByPropertyObjectTrumpMergePolicy
    return ctx
  }
}
9:41 AM
Trips
iCloud sync ↑
Offline cached ✓
1,204 records
+ New Trip
Week 7–8
04

MapKit & Real-Time Data

The capstone begins

MKMapView with custom annotationsGTFS real-time feedsCoreLocation permissions UXPolyline rendering performance
class="token-comment">// Custom map annotation
final class TransitAnnotation: NSObject, 
  MKAnnotation {
  dynamic var coordinate: CLLocationCoordinate2D
  let vehicleId: String
  let routeColor: UIColor
  
  init(vehicle: Vehicle) {
    coordinate = vehicle.location
    vehicleId = vehicle.id
    routeColor = vehicle.route.color
  }
}

class="token-comment">// Batch update without full reload
func updateAnnotations(_ vehicles: [Vehicle]) {
  mapView.removeAnnotations(staleAnnotations)
  mapView.addAnnotations(freshAnnotations)
}
9:41 AM
Transit
🗺 Live map view
14 buses nearby
Route 42 → 3 min
Track
Week 9–10
05

SwiftUI & WidgetKit

Beyond the main app

App Intents frameworkWidget timeline providersLive ActivitiesHealthKit data pipeline
class="token-comment">// WidgetKit timeline provider
struct TransitProvider: TimelineProvider {
  func getTimeline(
    in context: Context,
    completion: @escaping (Timeline) -> Void
  ) {
    Task {
      let arrivals = try await 
        TransitService.shared.nextArrivals()
      
      let entries = arrivals.map { arrival in
        TransitEntry(
          date: arrival.fetchedAt,
          nextBus: arrival
        )
      }
      completion(Timeline(
        entries: entries,
        policy: .atEnd
      ))
    }
  }
}
9:41 AM
Home Screen
⬛ Widget preview
Next: Route 42
Arrives: 4 min
Add Widget
Week 11–12
06

App Store Submission Pipeline

Ship it. For real.

Fastlane automationTestFlight beta strategyApp Review guidelines in practicePost-launch monitoring with MetricKit
# Fastlane Matchfile + Deliverfile
# automated signing & submission

lane :release do
  ensure_git_status_clean
  
  increment_build_number(
    build_number: latest_testflight_build_number + 1
  )
  
  match(type: "appstore")
  
  run_tests(scheme: "CompileApp")
  
  build_app(
    scheme: "CompileApp",
    export_method: "app-store"
  )
  
  upload_to_app_store(
    submit_for_review: true,
    automatic_release: false
  )
end
✓ Build 47
TestFlight
Build processing ✓
In Review...
🎉 Ready for Sale
View on Store

// Module 01 ends here. Your app compiles. It runs. It fetches data. But the architecture won't scale past 3 screens — and you'll feel it. Module 02 shows you exactly why, and exactly how to fix it. Start Module 01 free →

// Outcomes

Numbers don't
lie about architecture.

847

Graduates hired

at companies you recognize

94%

Completion rate

vs 13% industry average

4.2M

Total app downloads

by Compile graduates

12w

Median time to hire

after course completion

CORE DATA · ASYNC/AWAIT · MAPKIT · SWIFTUI · WIDGETKIT · APP STORE · COMBINE · URLSESSION · HEALTHKIT · FASTLANE ·CORE DATA · ASYNC/AWAIT · MAPKIT · SWIFTUI · WIDGETKIT · APP STORE · COMBINE · URLSESSION · HEALTHKIT · FASTLANE ·CORE DATA · ASYNC/AWAIT · MAPKIT · SWIFTUI · WIDGETKIT · APP STORE · COMBINE · URLSESSION · HEALTHKIT · FASTLANE ·CORE DATA · ASYNC/AWAIT · MAPKIT · SWIFTUI · WIDGETKIT · APP STORE · COMBINE · URLSESSION · HEALTHKIT · FASTLANE ·CORE DATA · ASYNC/AWAIT · MAPKIT · SWIFTUI · WIDGETKIT · APP STORE · COMBINE · URLSESSION · HEALTHKIT · FASTLANE ·CORE DATA · ASYNC/AWAIT · MAPKIT · SWIFTUI · WIDGETKIT · APP STORE · COMBINE · URLSESSION · HEALTHKIT · FASTLANE ·CORE DATA · ASYNC/AWAIT · MAPKIT · SWIFTUI · WIDGETKIT · APP STORE · COMBINE · URLSESSION · HEALTHKIT · FASTLANE ·CORE DATA · ASYNC/AWAIT · MAPKIT · SWIFTUI · WIDGETKIT · APP STORE · COMBINE · URLSESSION · HEALTHKIT · FASTLANE ·CORE DATA · ASYNC/AWAIT · MAPKIT · SWIFTUI · WIDGETKIT · APP STORE · COMBINE · URLSESSION · HEALTHKIT · FASTLANE ·CORE DATA · ASYNC/AWAIT · MAPKIT · SWIFTUI · WIDGETKIT · APP STORE · COMBINE · URLSESSION · HEALTHKIT · FASTLANE ·
// In Their Words

The code speaks.
So do they.

Marcus Webb, iOS Engineer at Stripe
Hired 11 weeks after starting

iOS Engineer

Marcus Webb · Stripe

"I'd been writing Java for 6 years. Module 03's Core Data section alone was worth the entire price — it's the kind of thing you'd only learn after 2 years on an iOS team."
01 / 04
// Pricing

Start free.
Pay when it clicks.

Audit

$0Module 01 only

Full access to Module 01. No credit card. No expiry.

Complete Module 01 (Weeks 1–2)
Protocol-oriented Swift foundations
Async/await from first principles
Project starter codebase
Community Discord access
Most Popular

Full Cohort

$897one-time

All 6 modules, live cohort, code review from instructors.

All 6 modules (12 weeks)
Live weekly code review sessions
Instructor PR feedback
App Store submission walkthrough
Job placement support
Lifetime access + future updates
Certificate of completion

Team

$2,400up to 3 engineers

For engineering leads who want to upskill their whole iOS team.

Everything in Full Cohort
Private team Slack channel
Architecture review session
Custom onboarding for your stack
Invoicing available

All prices in USD · Cohort starts March 10, 2026 · 14-day refund policy