https://kotlinlang.org logo
Join Slack
Powered by
# ios
  • v

    Vivek Gupta

    05/27/2025, 10:33 AM
    Can anyone guide/share a demo setup/steps for adding KMM support on existing iOS project ?
    a
    t
    • 3
    • 2
  • r

    Raphael TEYSSANDIER

    05/29/2025, 10:19 PM
    I'm trying to publish a lib that use Room 2.7.1 to maven central, but will using
    publishAndReleaseToMavenCentral
    on github actions. But I get an error for iOS:
    Copy code
    > Task :xxx:compileKotlinIosSimulatorArm64
    e: file:///Users/runner/work/xxx/xxx/xxx/build/generated/ksp/metadata/commonMain/kotlin/io/dot/lorraine/db/XXXConstructor.kt:5:24 'actual object XXXConstructor : RoomDatabaseConstructor<XXXDB>' has no corresponding expected declaration
    e: file:///Users/runner/work/xxx/xxx/xxx/build/generated/ksp/metadata/commonMain/kotlin/io/dot/xxx/db/XXXConstructor.kt:5:24 XXXConstructor: expect and corresponding actual are declared in the same module.
    > Task :xxx:compileCommonMainKotlinMetadata FAILED
    e: file:///Users/runner/work/xxx/xxx/xxx/build/generated/ksp/metadata/commonMain/kotlin/io/dot/xxx/db/XXXConstructor.kt:6:23 'actual fun initialize(): XXXDB' has no corresponding expected declaration
    e: file:///Users/runner/work/xxx/xxx/xx/src/commonMain/kotlin/io/dot/xxx/db/XXXConstructor.kt:6:24 XXXConstructor: expect and corresponding actual are declared in the same module.
    Any idea how to fix it ?
    p
    • 2
    • 5
  • m

    Muaz KADAN

    06/01/2025, 8:26 AM
    Hi, if I want to use compose resources from a KMP module in iOS Do we have something that does what this function does out of the box?
    Copy code
    fun StringResource.localized(): String {
        return runBlocking { getString(this@localized) }
    }
    k
    d
    d
    • 4
    • 5
  • a

    Anant Kumar Gupta

    06/07/2025, 4:21 AM
    Hello guyz, Has anyone encountered this? Is it something to worry about, or is there a better way to safely handle
    CGImage
    in Kotlin/Native? Warning - Cannot access class 'cnames. structs. CGImage' in the expression type. While it may work, this case indicates a configuration mistake and can lead to avoidable compilation errors, so it may be forbidden soon. Check your module classpath for missing or conflicting dependencies.
    Copy code
    fun generateVideoThumbnailIOS(
        uri: String
    ): ImageBitmap? = memScoped {
        val nsUrl = NSURL.Companion.fileURLWithPath(uri.removePrefix("file://"))
        val asset = AVURLAsset.URLAssetWithURL(nsUrl, null)
        val generator = AVAssetImageGenerator(asset)
        generator.appliesPreferredTrackTransform = true
        val requestedTime = CMTimeMake(1, 1).useContents { readValue() }
        val actualTime: CMTime = alloc<CMTime>()
        val errorPtr = alloc<ObjCObjectVar<NSError?>>()
        val cgImage = generator.copyCGImageAtTime(
            requestedTime = requestedTime,
            actualTime = actualTime.ptr,
            error = errorPtr.ptr
        ) ?: run {
            println("Error: ${errorPtr.value?.localizedDescription}")
            return@memScoped null
        }
    
        val uiImage = UIImage.imageWithCGImage(cgImage)
        val nsData = uiImage.pngRepresentation() ?: return@memScoped null
        val length = nsData.length.toInt()
        val bytePtr = nsData.bytes?.reinterpret<ByteVar>() ?: return@memScoped null
        val byteArray = bytePtr.readBytes(length)
        val finalThumbnail = Image.makeFromEncoded(byteArray).toComposeImageBitmap()
        return@memScoped finalThumbnail
    }
    👀 1
    f
    • 2
    • 1
  • j

    Jasmin

    07/04/2025, 8:47 AM
    Hello 👋 I’m building an KMP Lib. I have assets under
    commonMain/resources/files/frontend
    . How do I need to configure Gradle to bundle these assets in the XCFramework and access them via
    NSBundle
    ? I know it must be possible somehow, because of the composeResources, which are getting correctly included. Here is my current access code:
    val basePath = NSBundle.mainBundle.resourcePath + "/files/frontend/"
    Every help is appreciated 🙂
    f
    • 2
    • 2
  • m

    Max

    07/05/2025, 11:18 AM
    ⚡⚡⚡ ️Question about performance on iOS Given I use purely KMP (no CMP) on iOS. Ui is in SwiftUi, then from my understanding all the Kotlin codes gets compiled into native binaries, as does Objective C. 1. there should be no performance impact if my business/data layer are in Kotlin or Objective C, right? 2. there should also be no battery impact kmp vs objective c, Or am i missing something? People who already use KMP in production: how do you rate performance?
    ✅ 1
    a
    j
    k
    • 4
    • 7
  • m

    Mario

    07/08/2025, 8:09 AM
    Hi all - I think it's impossible to use
    AVCaptureVideoDataOutputSampleBufferDelegateProtocol
    because both its method definitions are the same, just with different names:
    Copy code
    public expect interface AVCaptureVideoDataOutputSampleBufferDelegateProtocol : platform.darwin.NSObjectProtocol {
        @kotlin.commonizer.ObjCCallable @kotlinx.cinterop.ObjCMethod public open expect fun captureOutput(output: platform.AVFoundation.AVCaptureOutput, didOutputSampleBuffer: kotlinx.cinterop.CPointer<cnames.structs.opaqueCMSampleBuffer>? /* from: platform.CoreMedia.CMSampleBufferRef? */, fromConnection: platform.AVFoundation.AVCaptureConnection): kotlin.Unit { /* compiled code */ }
    
        @kotlin.commonizer.ObjCCallable @kotlinx.cinterop.ObjCMethod public open expect fun captureOutput(output: platform.AVFoundation.AVCaptureOutput, didDropSampleBuffer: kotlinx.cinterop.CPointer<cnames.structs.opaqueCMSampleBuffer>? /* from: platform.CoreMedia.CMSampleBufferRef? */, fromConnection: platform.AVFoundation.AVCaptureConnection): kotlin.Unit { /* compiled code */ }
    }
    When I try to implement it, I get the following error:
    Copy code
    object : NSObject(), AVCaptureVideoDataOutputSampleBufferDelegateProtocol {
            override fun captureOutput(
                output: AVCaptureOutput,
                didOutputSampleBuffer: CMSampleBufferRef?,
                fromConnection: AVCaptureConnection
            ) {
                super.captureOutput(output, didOutputSampleBuffer, fromConnection)
            }
        }
    Copy code
    The corresponding parameter in the supertype 'AVCaptureVideoDataOutputSampleBufferDelegateProtocol' is named 'didDropSampleBuffer'. This may cause problems when calling this function with named arguments.
    d
    • 2
    • 2
  • a

    Anmol Verma

    07/17/2025, 5:21 PM
    https://kotlinlang.slack.com/archives/C3PQML5NU/p1752770413738959 Hi Folks, need some help with this error
  • g

    GNKumar

    07/22/2025, 4:11 AM
    Hi, Devs Does anyone have any idea , how to unzip the file using Swift without using any CocoaPods?
    a
    • 2
    • 2
  • k

    Kashismails

    07/29/2025, 8:52 AM
    🧵HAs anyone updated to macOs 26? getting this when building with xcode 26
    j
    • 2
    • 9
  • x

    xxfast

    08/06/2025, 1:19 AM
    Has anyone seen this error before? Not sure why im started seeing this all the sudden - all i did was to restart xcode
    Copy code
    Execution failed for task ':connect:compileKotlinIosArm64'.
    > Error while evaluating property 'kotlinNativeProvider$kotlin_gradle_plugin_common.kotlinNativeBundleVersion$kotlin_gradle_plugin_common' of task ':connect:compileKotlinIosArm64'.
    Showing All Messages
       > java.nio.file.FileAlreadyExistsException: /Users/User/.konan/kotlin-native-prebuilt-macos-x86_64-2.2.0/tools/konan_lldb.py
    r
    • 2
    • 3
  • f

    Fernando

    08/11/2025, 6:18 PM
    Hi! Quick question: I want to move my
    iosApp
    into an
    apps
    directory. I was able to move everything else but the iOS project, for some reason, it won't work. I've tried moving it with the Terminal, but it will not allow me to run the iOS project from the IDE (trough the Kotlin Multiplatform Project) Does anybody knows how can I move it while being able to run it from the IDE?
    p
    p
    • 3
    • 4
  • e

    Excellence kawej

    08/13/2025, 10:48 AM
    Hi everyone...
  • e

    Excellence kawej

    08/13/2025, 10:55 AM
    I'm getting this error while trying to implement Google authentication with Firebase:
    /Users/ctrltech/StudioProjects/Tmaterials/iosApp/iosApp/FirebaseBridge.swift:37:69 Trailing closure passed to parameter of type 'String' that does not accept a closure
    Here is my implementation:
    Copy code
    import Foundation
    import FirebaseCore
    import Firebase
    import FirebaseAuth
    import GoogleSignInSwift
    import GoogleSignIn
    
    @objc class FirebaseBridge: NSObject {
        @objc static func configureFirebase() {
            if <http://FirebaseApp.app|FirebaseApp.app>() == nil {
                FirebaseApp.configure()
            }
        }
    
        @objc static func isUserSignedIn() -> Bool {
            return Auth.auth().currentUser != nil
        }
    
        @objc static func signOut() {
            try? Auth.auth().signOut()
        }
    
        @objc static func signInWithGoogle(presenting: UIViewController, completion: @escaping (FirebaseUserWrapper?, Error?) -> Void) {
            guard let clientID = <http://FirebaseApp.app|FirebaseApp.app>()?.options.clientID else {
                completion(nil, NSError(domain: "NoClientID", code: 0))
                return
            }
    
            let config = GIDConfiguration(clientID: clientID)
            GIDSignIn.sharedInstance.signIn(withPresenting: presenting) { result in //error happens here
                switch result {
                case .success(let signInResult):
                    let user = result.user
                    guard let idToken = user.idToken?.tokenString else {
                        completion(nil, NSError(domain: "MissingIdToken", code: 1))
                        return
                    }
                    let accessToken = user.accessToken.tokenString
    
                    guard let idToken = idToken else {
                        completion(nil, NSError(domain: "MissingIdToken", code: 1))
                        return
                    }
    
                    let credential = GoogleAuthProvider.credential(withIDToken: idToken, accessToken: accessToken)
    
                    Auth.auth().signIn(with: credential) { authResult, error in
                        if let error = error {
                            completion(nil, NSError(domain: error.localizedDescription, code: 1))
                        } else if let firebaseUser = authResult?.user {
                            completion(FirebaseUserWrapper(user: firebaseUser), nil)
                        } else {
                            completion(authResult?.user.uid, nil)
                        }
                    }
                case .failure(let error):
                    if let error = error {
                        completion(nil, error)
                        return
                    }
    
                    guard let result = result else {
                        completion(nil, NSError(domain: "GoogleSignInError", code: 1))
                        return
                    }
                }
            }
        }
    }
    
    @objc class FirebaseUserWrapper: NSObject {
        let uid: String
        let email: String?
        let displayName: String?
        
        init(user: User) {
            self.uid = user.uid
            self.email = user.email
            self.displayName = user.displayName
        }
    }
    a
    • 2
    • 2
  • m

    Mirzamehdi

    08/28/2025, 5:38 PM
    https://github.com/GitLiveApp/firebase-kotlin-sdk/issues/750#issuecomment-3197274509 is iosX64 deprecated already?
    a
    r
    a
    • 4
    • 12
  • m

    Mirzamehdi

    08/31/2025, 3:46 PM
    Why it is like when I want to change something in iosMain target, Android Studio starts to freeze, I guess it is not only me 😄. And this happens especially when something needs to be imported and it is missing. Any way to improve this ?
    c
    • 2
    • 1
  • v

    Vadim Briliantov

    09/01/2025, 11:03 AM
    Koog 0.4.0 is out! It comes with the
    iOS
    support now! The most advanced JVM framework for building AI agents is now also the first AI framework in the world that brings full-scale agentic flows to backend, browser, WebAssembly, Android — and iOS 🔥
    🍎 4
  • a

    Alexis

    09/02/2025, 12:54 PM
    Hello, Has anyone successfully use a kmp module within a swift local package? I've followed the instructions in the documentation here: https://www.jetbrains.com/help/kotlin-multiplatform-dev/multiplatform-spm-local-integration.html But I get the following error when compiling from XCode:
    Exited with status code 127
    , and when looking at the report's details, I see this:
    /var/folders/ms/rzc7s4cj287gp9gvj1cs_ng00000gn/T/SchemeScriptAction-bjyy1r.sh: line 3: ./gradlew: No such file or directory
    . My folder structure is the following: • my_app_kmp ◦ shared (kmp modules) ◦ umbrella (umbrella module for ios) ◦ androidApp ◦ iosApp ▪︎ App ▪︎ Packages • feature_package Here's the script I've put in Edit Scheme > Build > Pre-Actions > New Run Script Action
    *cd* ..
    ./gradlew :umbrella:embedAndSignAppleFrameworkForXcode
    My umbrella's module build.gradle.kts contains this:
    Copy code
    kotlin {
        ...
        val xcfName = "Shared"
        listOf(
            iosX64(),
            iosArm64(),
            iosSimulatorArm64()
        ).forEach { target ->
            target.binaries.framework {
                export(projects.shared.data)
                export(projects.shared.di)
                export(projects.shared.domain)
                export(projects.shared.presentation)
                baseName = xcfName
                isStatic = true
            }
        }
        ...
    }
    And when trying to build from Android Studio I simply get this error:
    Build failed with 0 errors and 1 warning in 196 ms
    Anyone has an idea what I might be missing? EDIT: Looks like
    $SRCROOT
    is not available in pre actions, so I had to use something like that:
    *cd* "$(dirname "$PROJECT_FILE_PATH")/.."
    ✅ 2
  • d

    darkmoon_uk

    09/09/2025, 7:38 AM
    ⁉️ What happened to resolution of Kotlin/iOS symbols in IntelliJ in recent versions - performance fell off a cliff, the IDE's practically hanging when editing iOS source-set 😬 Same for others?
    f
    • 2
    • 1
  • e

    Edgars Malahovskis

    09/17/2025, 6:54 AM
    Anyone succeeded running kmp with latest xcode/toolchain tools and macos 26? I am running into issues for cinterop. Error log in 🧵
    f
    • 2
    • 7
  • t

    Thierry Kh

    09/18/2025, 1:47 PM
    Hello. Anyone for whom the following code doesn't work on iOS 18? It only opens "Apps" settings and not the actual app settings. It works well on iOS 15.
    Copy code
    val settingsUrl = NSURL.URLWithString(UIApplicationOpenSettingsURLString)
    settingsUrl?.let {
        UIApplication.sharedApplication.openURL(it, emptyMap<Any?, Any?>(), null)
    }
    m
    m
    • 3
    • 6
  • m

    MarkRS

    09/19/2025, 2:24 PM
    Storekit2 Looking in the prebuilt native libraries (for 2.2.20) it looks (to my not very experienced eye) that the library only contains StoreKit1 definitions, they're SK<Name> structures rather than just <Name>, for example there's no "Product" structure, only "SKProduct". Presumably this explains why I can't import platform.storekit.Product into the isoMain folder of my shared module. Have I just misunderstood? Where are the storekit2 definitions?
    a
    • 2
    • 3
  • p

    Pearce Keesling

    09/19/2025, 3:13 PM
    Have we gotten any word or roadmap on when xcode 26 is supposed to be officially supported?
    j
    f
    • 3
    • 10
  • c

    Colton Idle

    09/26/2025, 3:33 PM
    I updated a few things from my cmp app from a few weeks ago. namely i updated from compose multiplatform 1.8.1 to 1.9.0 and from kotlin 2.1.21 to 2.2.20 and now I get this issue when trying to build in xcode. i also updated things like AGP and gradle version. i now get this error.
    a
    • 2
    • 14
  • t

    Thierry Kh

    09/26/2025, 5:25 PM
    I've recently published a CMP app on the App Store. I don't have a recent iOS device. On my iphone 6s, navigation and animations can be choppy, which is to be expected on such an old device. It's not super smooth on simulators but it's correct, totally acceptable. I've had feedback that my app can be slow at times on an iphone 13. In comparison it's super smooth on my pixel 8a. My question is, as of today, are performances poorer on iOS devices compared to Android ones when it comes to CMP? It wouldn't surprise me, but is it a fact? I feel like there isn't much that I can do to improve performances.
    c
    a
    +2
    • 5
    • 30
  • x

    xxfast

    09/29/2025, 1:23 AM
    Hi all. Has anyone encountered this issue? For context im serving a KMP module over SPM to a different xcode project, and seems like there's a version conflict somewhere 🤔
    Copy code
    Failed to build module; this SDK is not supported by the compiler (the SDK is built with 'Apple Swift version 6.1 effective-5.10 (swiftlang-6.1.0.110.21 clang-1700.0.13.3)', while this compiler is 'Apple Swift version 6.1.2 effective-5.10 (swiftlang-6.1.2.1.2 clang-1700.0.13.5)'). Please select a toolchain which matches the SDK.
  • m

    Mateus Bauer

    10/02/2025, 1:03 AM
    Android CMP "EXCEPTION: DIDN'T FIND CLASSNAME FOR 'ISA' KEY" The project ‘iosApp’ is damaged and cannot be opened. Examine the project file for invalid edits or unresolved source control conflicts. Path: /Users/myuser/Documents/myproject/iosApp/iosApp.xcodeproj Exception: didn't find classname for 'isa' key Has anyone experienced this? My friend can build it just fine, he even zipped his project and I'm jealous, but I can't open the project in my xcode.
    a
    • 2
    • 3
  • f

    Fernando

    10/08/2025, 9:19 AM
    Hello everyone, I have a question about how does the Kotlin, in the iOS sourceset, generates or gets access to the
    platform
    package, and how does it gets autogenerated? 🤔 I wanted to do some experiments to use the new FoundationModels directly from Kotlin, but I don't seem to have access to that package. Does it auto generate, do I need to wait for a new kotlin release that comes with that interop? I'm using kotlin 2.3.0-Beta1 (just for test)
    f
    y
    • 3
    • 9
  • a

    Alex Styl

    10/13/2025, 12:47 PM
    I would like to access new APIs added in ios 26. how do i specify the version in my kotlin ios target? PS: the APIs I want to access is from Uikit
    f
    p
    • 3
    • 7
  • c

    Colton Idle

    10/15/2025, 2:45 PM
    How the bump to latest macOS, xcode, ios, etc? any issues or can i update all of those to use with kmp? mostly xcode is the one to worry about i suppose
    f
    • 2
    • 3