




Current iOS app (Russian): play queue, offline sharing, downloads, profile and a what’s-new card.
My role
- I write most of the iOS app: about 97% of the 830+ commits in the iOS repository.
- I own features end to end, from design notes and architecture to App Store release and crash follow-up.
- I port features from the Android app when they land there first, so both apps behave the same way.
Approach
- SwiftUI with MVVM and a coordinator, split into Data, Domain and Presentation layers with Resolver for DI.
- Realm for the offline library, Alamofire for the API, an AVFoundation-based player for audio and video with Picture in Picture.
- App extensions for a home screen widget, Siri play-media intents and rich notifications, plus a CarPlay scene.
- A release check script and a migration harness that run before every release.
Architecture
Surfaces
iPhone appCarPlay sceneWidgetSiri extensionNotification serviceLive Activity
Presentation
SwiftUI viewsViewModelsCoordinator
Domain
Player controllerDownload serviceSiri intentsAnalytics service
Data
RepositoriesAlamofire APISTOMP chatRealmMedia cache
Packages
OfflineTransferKitSwiftAudioHLS downloads
Result
- Version 2.7.11 is live on the App Store.
- 1,100+ automated tests guard downloads, CarPlay, migrations and session handling.
- The crash types that reached users in 2.7.8–2.7.10 are now blocked by the release check before submission.
Stack
SwiftSwiftUIUIKitCombineasync/awaitAVFoundationRealmAlamofireCarPlayWidgetKitSiriKitActivityKitNetwork.frameworkFirebase CrashlyticsSwift TestingCocoaPodsSPM
Want the short version?
Everything on one or two pages, with contacts.
