Kotlin objects in native are reference counted, so if the number of references to them goes to zero, they are released. "Frozen" objects have atomic reference counting, and normal objects have non-atomic reference counting. If you create a Kotlin object from Swift, I don't think the Kotlin object itself would have anything special about it, so passing it to another thread would likely be problematic, but I haven't tested that, so I can't say for sure. But my guess is, no, you can't. With regards to "as thread safe as C", the data integrity and "thread safety" isn't so much the big problem as is memory management. If you pass non-frozen data around threads in Kotlin native you can have memory leaks and/or over-deallocation.