Sagar Khurana
03/16/2026, 8:26 AM<canvas> via Skia/WASM. Google's crawler sees an empty page - no text, links, headings, or semantic HTML. For any business reliant on SEO, this is a serious problem.
I've been exploring alternatives that let me stay in Kotlin and reuse my commonMain business logic (repositories, models, API clients, mappers):
1. Ktor + kotlinx.html + HTMX + Tailwind CSS - Server-rendered HTML, ideal for SEO, all Kotlin. Ktor 3.2 even offers an official HTMX module. This seems the most mature option.
2. Kobweb - Compose HTML with SSG, but I've heard it can be complicated to set up.
3. Kilua - Compose Runtime-based with SSR support, but it's still in early stages.
My questions for the community:
- Are there any plans from JetBrains to improve SEO for Compose for Web? (e.g., SSR support, HTML fallback, pre-rendering?)
- Has anyone launched a production website with SEO requirements using any of these approaches? What was your experience?
- For those who chose Ktor + HTMX over Compose for Web for SEO reasons - how much of your KMP code could you share?
Would love to hear how others are managing this. It seems like a gap in the KMP story - we can share code across Android, iOS, desktop, and web, but the web target isn’t indexable by search enginesS.
03/16/2026, 9:46 AMSagar Khurana
03/16/2026, 9:56 AMS.
03/16/2026, 10:02 AMSagar Khurana
03/16/2026, 10:04 AMcommonMain via a jvmMain target. No shared library publishing, no code duplication. The UI is the only part that changes, and honestly, for web SEO, you want semantic HTML anyway, not a UI framework abstraction.
The maturity of each component is what convinced meS.
03/16/2026, 10:09 AMRobert Jaros
03/16/2026, 10:41 AMSagar Khurana
03/16/2026, 10:47 AMRobert Jaros
03/16/2026, 10:58 AMRobert Jaros
03/16/2026, 10:59 AMRobert Jaros
03/16/2026, 11:02 AMRobert Jaros
03/16/2026, 11:05 AMSagar Khurana
03/16/2026, 11:16 AMShreck Ye
04/07/2026, 1:59 PM