<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/kotlin-wasm-interop-with-javascript-iseexc6k4" -->

---
title: Kotlin/Wasm interop with Javascript | daily.dev
description: Kotlin/Wasm provides bi-directional interoperability with JavaScript. From the JS side, you can call Kotlin functions annotated with @JsExport, though only...
canonical: https://daily.dev/posts/kotlin-wasm-interop-with-javascript-iseexc6k4
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Kotlin/Wasm interop with Javascript | daily.dev
og:description: Kotlin/Wasm provides bi-directional interoperability with JavaScript. From the JS side, you can call Kotlin functions annotated with @JsExport, though only...
og:url: https://daily.dev/posts/kotlin-wasm-interop-with-javascript-iseexc6k4
og:image: https://api.daily.dev/og/posts/isEexc6K4.png
og:image:alt: Kotlin/Wasm interop with Javascript
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Kotlin/Wasm interop with Javascript

**[Touchlab](https://daily.dev/sources/touchlab)** · 7 min read · 0 upvotes · 0 comments

## Summary

Kotlin/Wasm provides bi-directional interoperability with JavaScript. From the JS side, you can call Kotlin functions annotated with @JsExport, though only top-level functions and primitive types/strings are supported — complex Kotlin types cannot be exported. From the Kotlin side, you can access JS code using the external modifier, the @JsFun annotation, or the js() function to embed JavaScript directly. Built-in packages like kotlinx.browser provide pre-declared external types for common browser APIs. The article also explains how the Kotlin compiler generates glue code to bridge both worlds, and covers workarounds for limitations like name collisions using @JsName.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://touchlab.co/kotlin-wasm-js-interop>

## Similar posts on daily.dev

- [Kotlin 2.3.20 harmonizes with C, JavaScript/Typescript](https://daily.dev/posts/kotlin-2-3-20-harmonizes-with-c-javascript-typescript-hddvbwasn) · InfoWorld · 4 upvotes · 0 comments
- [minikotlin — a Kotlin compiler that runs in a browser tab](https://daily.dev/posts/minikotlin-a-kotlin-compiler-that-runs-in-a-browser-tab-pasm6hcj4) · Hacker News · 0 upvotes · 0 comments
- [Webassembly is here](https://daily.dev/posts/webassembly-is-here-5bakrrggx) · Quartex Pascal · 32 upvotes · 1 comments
- [WebAssembly Still Expanding Frontend Uses 10 Years Later](https://daily.dev/posts/webassembly-still-expanding-frontend-uses-10-years-later-5vvkxh8ef) · The New Stack · 0 upvotes · 0 comments

---

Tags: [#javascript](https://daily.dev/tags/javascript), [#kotlin](https://daily.dev/tags/kotlin), [#webassembly](https://daily.dev/tags/webassembly)

[View this post on daily.dev](https://daily.dev/posts/kotlin-wasm-interop-with-javascript-iseexc6k4)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Kotlin/Wasm interop with Javascript","url":"https://daily.dev/posts/kotlin-wasm-interop-with-javascript-iseexc6k4","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/kotlin-wasm-interop-with-javascript-iseexc6k4"},"datePublished":"2026-08-02T07:15:21.407Z","dateModified":"2026-08-02T07:36:39.560Z","description":"Kotlin/Wasm provides bi-directional interoperability with JavaScript. From the JS side, you can call Kotlin functions annotated with @JsExport, though only...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/dbba107b9178993104c193eb3d4c182f?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/dbba107b9178993104c193eb3d4c182f?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Touchlab","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Touchlab","logo":"https://media.daily.dev/image/upload/s--CQ0u6GwB--/f_auto,q_auto/v1785654902/logos/touchlab?_a=BAMAMicg0","url":"https://daily.dev/sources/touchlab"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/kotlin-wasm-interop-with-javascript-iseexc6k4","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"javascript,kotlin,webassembly","timeRequired":"PT7M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Touchlab","item":"https://daily.dev/sources/touchlab"},{"@type":"ListItem","position":3,"name":"Kotlin/Wasm interop with Javascript"}]}
```

