# Does/will Kotlin/JS support inline classes?

**URL:** <https://discuss.kotlinlang.org/t/does-will-kotlin-js-support-inline-classes/17088>\
**Category:** JavaScript\
**Created:** [April 12, 2020, 4:33pm UTC](https://discuss.kotlinlang.org/t/does-will-kotlin-js-support-inline-classes/17088 "2020-04-12T16:33:47Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![tango24](https://avatars.discourse-cdn.com/v4/letter/t/74df32/32.png) [@tango24](https://discuss.kotlinlang.org/u/tango24)\
**Post date:** [April 12, 2020, 4:33pm UTC](https://discuss.kotlinlang.org/t/does-will-kotlin-js-support-inline-classes/17088/1 "2020-04-12T16:33:47Z")

</div>

The topic says it all. Any information on this?

---

<div class="post-metadata">

**Author:** ![darksnake](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/darksnake/32/2479_2.png) [@darksnake](https://discuss.kotlinlang.org/u/darksnake)\
**Post date:** [April 12, 2020, 7:09pm UTC](https://discuss.kotlinlang.org/t/does-will-kotlin-js-support-inline-classes/17088/2 "2020-04-12T19:09:31Z")

</div>

What do you mean by support? Code with inline-classes works fine in JS.

---

<div class="post-metadata">

**Author:** ![Anton.Bannykh](https://avatars.discourse-cdn.com/v4/letter/a/4491bb/32.png) [@Anton.Bannykh](https://discuss.kotlinlang.org/u/Anton.Bannykh)\
**Post date:** [April 13, 2020, 9:37am UTC](https://discuss.kotlinlang.org/t/does-will-kotlin-js-support-inline-classes/17088/3 "2020-04-13T09:37:03Z")

</div>

The IR compiler actually does inline the inline classes, whereas the old compiler treats inline classes as normal ones. Is that what you are asking about?

AFAIK interop with JS for inline classes is not designed yet, but you may expect some progress on that in 1.4.

---

<div class="post-metadata">

**Author:** ![ivan.kubyshkin](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/ivan.kubyshkin/32/7066_2.png) [@ivan.kubyshkin](https://discuss.kotlinlang.org/u/ivan.kubyshkin)\
**Post date:** [April 13, 2020, 10:46am UTC](https://discuss.kotlinlang.org/t/does-will-kotlin-js-support-inline-classes/17088/4 "2020-04-13T10:46:00Z")

</div>

[https://youtrack.jetbrains.com/issue/KT-30224](https://youtrack.jetbrains.com/issue/KT-30224)

---

<div class="post-metadata">

**Author:** ![tango24](https://avatars.discourse-cdn.com/v4/letter/t/74df32/32.png) [@tango24](https://discuss.kotlinlang.org/u/tango24)\
**Post date:** [April 13, 2020, 1:39pm UTC](https://discuss.kotlinlang.org/t/does-will-kotlin-js-support-inline-classes/17088/5 "2020-04-13T13:39:33Z")

</div>

It depends what you mean by “works fine”. They compile, but they don’t inline (not on stable), not for me.

---

<div class="post-metadata">

**Author:** ![tango24](https://avatars.discourse-cdn.com/v4/letter/t/74df32/32.png) [@tango24](https://discuss.kotlinlang.org/u/tango24)\
**Post date:** [April 13, 2020, 1:40pm UTC](https://discuss.kotlinlang.org/t/does-will-kotlin-js-support-inline-classes/17088/6 "2020-04-13T13:40:02Z")

</div>

Thank you, I will try the 1.4 EAP

---

<div class="post-metadata">

**Author:** ![tango24](https://avatars.discourse-cdn.com/v4/letter/t/74df32/32.png) [@tango24](https://discuss.kotlinlang.org/u/tango24)\
**Post date:** [April 13, 2020, 2:02pm UTC](https://discuss.kotlinlang.org/t/does-will-kotlin-js-support-inline-classes/17088/7 "2020-04-13T14:02:05Z")

</div>

Maybe I’m still doing something wrong.  
Tried with 1.4 M1 in IDE and in playground.

```auto
inline class InlineClass(val value: Int)
fun main() { println(InlineClass(2).value) }

```

still generates JS

```auto
  function main() {
    println((new InlineClass(2)).value);
  }

```

Am I missing something?

---

<div class="post-metadata">

**Author:** ![darksnake](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/darksnake/32/2479_2.png) [@darksnake](https://discuss.kotlinlang.org/u/darksnake)\
**Post date:** [April 13, 2020, 2:14pm UTC](https://discuss.kotlinlang.org/t/does-will-kotlin-js-support-inline-classes/17088/8 "2020-04-13T14:14:37Z")

</div>

Inline classes often do not inline even in JVM. I am not sure that there is a significant win from inlining classes in JS. Boxing is handled by the VM anyway. You could probably save something on the code size though.

---

<div class="post-metadata">

**Author:** ![tango24](https://avatars.discourse-cdn.com/v4/letter/t/74df32/32.png) [@tango24](https://discuss.kotlinlang.org/u/tango24)\
**Post date:** [April 13, 2020, 3:19pm UTC](https://discuss.kotlinlang.org/t/does-will-kotlin-js-support-inline-classes/17088/9 "2020-04-13T15:19:07Z")

</div>

I think a debate on usefulness of inline classes would just repeat what has been said lots of times before.  
Some like them, some don’t.

---

<div class="post-metadata">

**Author:** ![darksnake](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/darksnake/32/2479_2.png) [@darksnake](https://discuss.kotlinlang.org/u/darksnake)\
**Post date:** [April 13, 2020, 4:06pm UTC](https://discuss.kotlinlang.org/t/does-will-kotlin-js-support-inline-classes/17088/10 "2020-04-13T16:06:21Z")

</div>

It is not about liking, it is about working. On JVM they are more often not inlined than they are. In current state they usage and benefits from it are significantly limited.
