All 60 tasks, level by level
The real graded iOS Development tasks the portal assigns, grouped into three levels.
The portal assigns these iOS Development tasks. Finish Level 1 before Level 2 and Level 2 before Level 3. Your mentor may mark some tasks as required for the certificate.
Level 1: Foundations (24 tasks)
| Task | What to do |
|---|---|
| Set up Xcode or a Swift playground | Install Xcode (or Swift Playgrounds / an online Swift compiler if you have no Mac) and run your first Swift program. Note your setup in a repo named ios-internship. |
| Swift basics | Write examples of let/var, optionals, if let, guard, structs, enums and closures. |
| Collections and functions | Use arrays, dictionaries and sets with map, filter and reduce to solve 5 small problems. |
| Structs vs classes | Explain value vs reference types with code that proves the difference. |
| Protocols | Define a protocol, make two types conform, and use it through a protocol type. |
| First SwiftUI view | Build a profile screen in SwiftUI with VStack, HStack, Image, Text and Button. |
| State in SwiftUI | Build a counter and a form using @State and @Binding. |
| Lists and navigation | Show a List of items and open a detail screen with NavigationStack. |
| Layout and modifiers | Recreate a real app's settings screen using spacing, padding, frames and modifiers. |
| Assets and dark mode | Add app icons, colours and images to the asset catalogue with dark mode variants. |
| Error handling | Use throws, do/try/catch and Result in a small parsing example. |
| Swift Package Manager | Add one Swift package dependency to a project and use it. |
| Swift generics | Write a generic stack and a generic function with constraints. |
| Extensions | Add useful extensions to String, Date and Array and test them. |
| Enums with associated values | Model network results and screen states with enums. |
| SwiftUI forms | Build a settings form with toggles, pickers and steppers. |
| Sheets and alerts | Present sheets, full-screen covers and alerts in the right situations. |
| Custom view modifiers | Write reusable view modifiers for card style and error banners. |
| SF Symbols | Use SF Symbols with rendering modes and variable colours. |
| Animations | Add implicit and explicit animations and a matched geometry effect. |
| Previews | Write previews for light, dark, large text and different devices. |
| Git for Xcode projects | Set up a .gitignore for Xcode and explain project file merge conflicts. |
| Localisation | Localise your app into an Indian language with a String Catalog. |
| App icon and launch screen | Add an app icon and a launch screen. |
Level 2: Building real features (20 tasks)
| Task | What to do |
|---|---|
| MVVM with ObservableObject | Move screen logic into a view model using @Observable or ObservableObject. |
| Networking with URLSession | Load JSON from a public API with async/await and Codable, with loading and error states. |
| Images from the network | Load remote images with AsyncImage, with placeholder and failure views. |
| Persistence | Save favourites with SwiftData or Core Data and show them on a separate tab. |
| User settings | Store preferences with @AppStorage and apply them across the app. |
| Tab bar app | Organise the app into three tabs with their own navigation. |
| Concurrency | Load two API calls in parallel with async let and explain actors and the main thread. |
| Unit tests | Write XCTest or Swift Testing tests for your view model and model parsing. |
| Permissions | Request photo library or location permission with a clear usage description. |
| Firebase or Sign in with Apple | Add sign-in with Firebase Authentication or Sign in with Apple. |
| Search and filtering | Add searchable lists with scopes and tokens. |
| Pagination | Load more items as the user scrolls a list. |
| Camera and photos | Pick and display photos with PhotosPicker. |
| MapKit | Show places on a map with annotations and user location. |
| Combine or async sequences | Debounce search input with Combine or AsyncSequence. |
| Dependency injection | Inject services into view models with protocols for testing. |
| Keychain | Store a login token securely in the Keychain. |
| Error handling UI | Show friendly network, server and empty states. |
| Analytics and crash reports | Add Firebase Analytics and Crashlytics (or a similar free tool). |
| Deep links | Open a specific screen from a URL scheme or universal link. |
Level 3: Professional work and capstone (16 tasks)
| Task | What to do |
|---|---|
| Offline support | Cache API data locally and show it when the network is off. |
| UI tests | Write XCUITest tests for your main user flow. |
| Performance with Instruments | Profile the app with Instruments, fix a slow view or memory issue and record the result. |
| Accessibility | Support Dynamic Type and VoiceOver labels, and test with VoiceOver on. |
| Push notifications | Set up local notifications (and remote ones if you have a developer account) that open the right screen. |
| Widgets | Build a home screen widget with WidgetKit showing data from your app. |
| Release preparation | Prepare an archive for TestFlight: signing, version numbers, privacy manifest and screenshots. |
| Capstone: complete iOS app | Ship a complete SwiftUI app (API, persistence, sign-in, tests, accessibility) with a README, screenshots and demo video. |
| Background tasks | Refresh data in the background with BackgroundTasks. |
| Swift Concurrency in depth | Use task groups, cancellation and MainActor correctly in a real feature. |
| App Intents and Shortcuts | Expose an app action to Siri and Shortcuts with App Intents. |
iPad and multitasking | Make your app adapt to iPad with NavigationSplitView. |
| Privacy | Write a privacy manifest and App Store privacy labels for your app. |
| Performance | Fix list scrolling or image memory issues found with Instruments. |
| App Store listing | Prepare screenshots, description, keywords and review notes. |
| Capstone 2: app for a real user | Build an iOS app for a real user's need, test it with them through TestFlight (or on device) and document their feedback and your changes. |