One IDE vs. the Right Tool: Android Studio's Boundary Trade-off
Android Studio keeps cross-platform Kotlin run and debug in one workspace but hands Swift editing to Xcode. This explainer maps the benefit, cost, and condition behind that boundary.
Loading…
Topic
10 posts about Kotlin Multiplatform. Every summary links to the original.
See the idea
Android Studio keeps cross-platform Kotlin run and debug in one workspace but hands Swift editing to Xcode. This explainer maps the benefit, cost, and condition behind that boundary.
The Good Stuff
Paid picks we use ourselves. Links carry a referral code — a subscription through one earns us a commission at no extra cost to you.
Newest first
Auth0 released its official Kotlin Multiplatform SDK for Android and iOS, enabling unified authentication logic in shared common code. Developers write login, logout, token management, and direct API calls once in commonMain using Kotlin suspend functions and a sealed Result type for exhaustive error handling. Native security is maintained through platform-specific implementations: Android uses Keystore-backed DataStore and Custom Tabs, iOS uses Keychain and ASWebAuthenticationSession, with Swift async/await interop via SKIE. The SDK is available on Maven Central as com.auth0.kmp:auth0:1.0.0-beta.1 as a single artifact or separate modules, requiring Kotlin 2.3.21, Android minSdk 24, and iOS 14.0+. It includes a Credentials Manager for token storage and automatic renewal, and supports advanced features including WebAuthn passkeys, DPoP token binding, custom storage, and configurable retry with fixed or exponential backoff.
The Kotlin Toolchain 0.13 provides a unified CLI entry point for building JVM, Android, iOS, multiplatform, and server-side applications with declarative configuration. It introduces the kotlin new command for interactive project creation, improved iOS onboarding with automatic simulator setup, and Android SDK auto-provisioning on IDE import. New features include Swift Package Manager dependency support for Apple platforms, multiplatform library publication with Compose Resources and SwiftPM metadata, and Kotlin/Native compiler caching for faster rebuilds. The toolchain is designed for both developers and AI agents, with a Hot Reload MCP server and dedicated AI agent skills included in official Kotlin agent skills. The team recommends the toolchain for new KMP projects and plans future milestones like brew installation, out-of-the-box AI skills, and streamlined app store publishing.
Kotlin Multiplatform’s current compilation scheme can cause IDE and compiler disagreements or unexpected resolution of platform-specific declarations from common source sets. In Kotlin 2.5.0-Beta1, an optional separate compilation approach aligns compiler behavior with IDE analysis, making common code resolve only against metadata KLIB declarations. This also eliminates issues like overload selection differing by target and type inference failures in platform code. Separate compilation is experimental and disabled by default, enabled by adding kotlin.kmp.separateCompilation=true to gradle.properties. Known issues include problems with cinterop commonization and single-target modules; library authors must publish metadata KLIBs for the feature to work correctly.
The post describes the design of a new TeamCity integration for Kotlin Multiplatform (KMP) developers building iOS apps. The integration addresses common pain points: iOS builds require macOS infrastructure, Apple signing is complex, and there is no guided path from IDE to CI/CD. The solution provides a progressive onboarding flow within the IDE, starting with a tooltip after the first Git push. The flow generates four configuration files (teamcity.yaml, Fastfile, Appfile, Gemfile) and runs a build and tests on a hosted macOS agent, then guides the developer through a single form for Apple signing and TestFlight publishing, and finally automates the pipeline on GitHub pushes. TeamCity Cloud provides hosted macOS agents and a free starting tier, so no Mac is required. The design was validated through usability sessions and focuses on meeting the developer at the right moment with minimal configuration.
Ktor 3.6.0 introduces experimental typed authentication with full type safety, including role-based access and anonymous users, plus a dedicated OpenID Connect plugin that supports sessions and auto-refreshing tokens, and experimental HTTP/3 support for the Netty engine via QUIC. Request-parameter conversion now supports Kotlin’s Uuid, Byte, and unsigned numeric types, while receive() accepts nullable types, deprecating receiveNullable(), and more flexible routing syntax. The ContentNegotiation plugin gains a ContentTypeMergeStrategy.SkipIfPresent to preserve explicit Accept headers. Kotlin Multiplatform projects benefit from the ktor-client-engine-defaults artifact and file-based HttpCache storage using kotlinx-io Path, simplifying cross-platform configuration. Additional improvements include respondHtmlPartial for partial HTML output, asynchronous DNS resolution for the CIO engine, and WebRTC support for JVM.
ADK for Kotlin 1.0 is announced as a general availability release for building AI agents with Kotlin across Android, JVM server applications, and Java-integrated systems. The release targets a production-ready toolkit while preserving an idiomatic, lightweight, composable approach, and it reaches feature parity with ADK 1.0 Core, including hierarchical agents, context compaction, human-in-the-loop confirmation, resumable sessions, annotated tools, and Java interoperability. A Kotlin Multiplatform core stays agnostic to model backends, session providers, and memory systems, while Android extensions support LiteRT-LM, ML Kit (beta), Firebase AI Logic, Room, AppSearch, and file artifacts. The database incident example combines compile-time KSP-generated function schemas, suspend-capable @Tool functions, and dynamically loaded SKILL.md playbooks with progressive disclosure. The release provides 1.0.0 dependencies, documentation, a repository, and sample applications.
Kotlin 2.4.20 is released with updates spanning the standard library, Kotlin/Native, Kotlin/Wasm, Kotlin/JS, Gradle, build tools, and the compiler. The standard library adds coroutine stack trace recovery, collection equality and uniqueness checks, and new kotlin.test assertion overloads. Kotlin/Native gains Swift export features, improved incremental compilation, and generated Package.swift files, while Kotlin/Wasm adds Wasmtime support in the Kotlin Gradle plugin and changes to require() handling in @JsFun declarations. Kotlin/JS introduces a browser-testing DSL, suspend-lambda exports as async functions, and improved data-class exportability. The release also supports Gradle 9.7.0, adds Build tools API targets, and provides the kotlinr runner command and a separate native image; it is available through updated IDEs, build scripts, or the command-line compiler.
Kotlin Toolchain 0.12.0 extends its multiplatform build and publishing capabilities with multiplatform library publication, preview support for Wasm applications, command-line Compose Hot Reload, and broader IDE and terminal improvements. Libraries use the existing publishing configuration and produce a common API, per-platform artifacts, sources, module metadata, plus commonized and platform-specific cinterop bindings; Compose Multiplatform resources are not yet included. wasm-js/app modules can be built into ready-to-use web applications, run with kotlin run, customized through resources, and supplied transitive npm dependencies from Kotlin Multiplatform libraries. The release also reduces default Maven Central files, supports Compose Hot Reload through an MCP server, and recommends project-root-relative // dependencies while retaining the older syntax. It raises minimum compilation requirements to JDK 17 and Kotlin 2.2.20, updates bundled versions including Kotlin 2.4.10 and JDK 25, and recommends IntelliJ IDEA 2026.2.1 or newer for the latest features.
TeamCity 2026.2 makes pipelines generally available on TeamCity Cloud and On-Premises, moving them beyond the Early Access Program and adding branch-aware editing, failure-tolerant job execution, promotion, job debugging, and VCS-unbound workflows. The release also expands AI capabilities: AI Assistant supports Bring Your Own Key for Anthropic, OpenAI, Google Gemini, other supported models, or a local LLM, while MCP adds pipeline management tools and OAuth/PKCE authorization. Additional changes include configurable retries for failed dependencies, IDEA plugin improvements, GitHub pull-request matching by source branch, and a choice of server- or agent-side Kotlin DSL compilation. The pipeline MCP post and delete tools require manually enabled Brave mode, and DSL compilation on agents is described as less restricting and more secure but subject to trade-offs. Bug-fix updates 2025.11.8 and 2026.1.4 also ship.
Shopify’s Point of Sale team describes how its React Native strategy changed after limitations appeared in complex UI and background synchronization. The team kept complicated views in React Native, improving rendering with why-did-you-render, React DevTools Profiler, Application Performance Index measurements, memoization, lazy renders, and Reanimated 2 for drag-and-drop interactions. For background jobs, it built a native job manager with Kotlin Multiplatform Modules, sharing synchronization logic in common/ while isolating platform-specific file, database, networking, preferences, and threading code through libraries or wrappers and exposing it through React Native native modules. The resulting implementation shared approximately 95% of its code and reduced a medium-sized store’s initial sync from at least 30 seconds to 2–3 seconds, while the article notes KMM’s learning curve and recommends a separate library project for clearer boundaries and isolated sandbox testing.