diff --git a/gradle.properties b/gradle.properties
index 53a8de2..b11fef0 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -29,6 +29,7 @@
 baksmali_version=2.2.7
 
 # JS
+kotlin.js.compiler=both
 gradle_node_version=1.2.0
 node_version=8.9.3
 npm_version=5.7.1
@@ -43,3 +44,7 @@
 
 # Site deneration
 jekyll_version=4.0
+
+# JS IR baceknd sometimes crashes with out-of-memory
+# TODO: Remove once KT-37187 is fixed
+org.gradle.jvmargs=-Xmx2g
\ No newline at end of file
diff --git a/gradle/compile-js-multiplatform.gradle b/gradle/compile-js-multiplatform.gradle
index a7da5c6..e09e8e2 100644
--- a/gradle/compile-js-multiplatform.gradle
+++ b/gradle/compile-js-multiplatform.gradle
@@ -6,7 +6,16 @@
 
 kotlin {
     targets {
-        fromPreset(presets.js, 'js')
+        fromPreset(presets.js, 'js') {
+            // Enable built-in test runner only for IR target.
+            // These runners don't support changing js module name change.
+            if (js.hasProperty("irTarget")) {
+                irTarget.nodejs()
+                irTarget?.compilations['main']?.dependencies {
+                    api "org.jetbrains.kotlinx:atomicfu-js:$atomicfu_version"
+                }
+            }
+        }
     }
 
     sourceSets {
@@ -41,12 +50,16 @@
     kotlinOptions.moduleKind = 'umd'
 }
 
+
 task populateNodeModules(type: Copy, dependsOn: compileTestKotlinJs) {
     // we must copy output that is transformed by atomicfu
     from(kotlin.targets.js.compilations.main.output.allOutputs)
     into "$node.nodeModulesDir/node_modules"
 
-    def configuration = configurations.jsTestRuntimeClasspath
+    def configuration = configurations.hasProperty("legacyjsTestRuntimeClasspath")
+            ? configurations.legacyjsTestRuntimeClasspath
+            : configurations.jsTestRuntimeClasspath
+
     from(files {
         configuration.collect { File file ->
             file.name.endsWith(".jar") ?
diff --git a/gradle/publish-bintray.gradle b/gradle/publish-bintray.gradle
index c8dd8f1..d4bbe69 100644
--- a/gradle/publish-bintray.gradle
+++ b/gradle/publish-bintray.gradle
@@ -89,8 +89,8 @@
                 break
         }
 
-        // disable metadata everywhere, but in native modules
-        if (type == 'maven' || type == 'metadata' || type == 'jvm' || type == 'js') {
+        // disable metadata everywhere, but in native and js modules
+        if (type == 'maven' || type == 'metadata' || type == 'jvm') {
             moduleDescriptorGenerator = null
         }
     }
diff --git a/gradle/test-mocha-js.gradle b/gradle/test-mocha-js.gradle
index 464898e..60969f9 100644
--- a/gradle/test-mocha-js.gradle
+++ b/gradle/test-mocha-js.gradle
@@ -19,7 +19,9 @@
     if (project.hasProperty("teamcity")) args += ['--reporter', 'mocha-teamcity-reporter']
 }
 
-jsTest.dependsOn testMochaNode
+def legacyjsTestTask = project.tasks.findByName('legacyjsTest') ? legacyjsTest : jsTest
+
+legacyjsTestTask.dependsOn testMochaNode
 
 // -- Testing with Mocha under headless Chrome
 
@@ -89,5 +91,5 @@
     if (project.hasProperty("teamcity")) args += ['--reporter', 'mocha-teamcity-reporter']
 }
 
-jsTest.dependsOn testMochaJsdom
+legacyjsTestTask.dependsOn testMochaJsdom
 
diff --git a/js/example-frontend-js/build.gradle b/js/example-frontend-js/build.gradle
index ff62455..dc4dfd2 100644
--- a/js/example-frontend-js/build.gradle
+++ b/js/example-frontend-js/build.gradle
@@ -5,6 +5,24 @@
 apply plugin: 'kotlin-dce-js'
 apply from: rootProject.file('gradle/node-js.gradle')
 
+// Workaround resolving new Gradle metadata with kotlin2js
+// TODO: Remove once KT-37188 is fixed
+try {
+    def jsCompilerType = Class.forName("org.jetbrains.kotlin.gradle.targets.js.JsCompilerType")
+    def jsCompilerAttr = Attribute.of("org.jetbrains.kotlin.js.compiler", jsCompilerType)
+    project.dependencies.attributesSchema.attribute(jsCompilerAttr)
+    configurations {
+        matching {
+            it.name.endsWith("Classpath")
+        }.forEach {
+            it.attributes.attribute(jsCompilerAttr, jsCompilerType.legacy)
+        }
+    }
+} catch (java.lang.ClassNotFoundException e) {
+    // org.jetbrains.kotlin.gradle.targets.js.JsCompilerType is missing in 1.3.x
+    // But 1.3.x doesn't generate Gradle metadata, so this workaround is not needed
+}
+
 dependencies {
     compile "org.jetbrains.kotlinx:kotlinx-html-js:$html_version"
 }
