diff --git a/Cargo.lock b/Cargo.lock
index 44c9085..d5ae13f 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -3704,6 +3704,7 @@ dependencies = [
  "strafesnet_session",
  "strafesnet_settings",
  "strafesnet_snf",
+ "wasm-bindgen-futures",
  "wgpu",
  "winit",
 ]
diff --git a/strafe-client/Cargo.toml b/strafe-client/Cargo.toml
index 1e6445a..8ff6a0b 100644
--- a/strafe-client/Cargo.toml
+++ b/strafe-client/Cargo.toml
@@ -28,5 +28,6 @@ strafesnet_rbx_loader = { path = "../lib/rbx_loader", registry = "strafesnet", o
 strafesnet_session = { path = "../engine/session", registry = "strafesnet" }
 strafesnet_settings = { path = "../engine/settings", registry = "strafesnet" }
 strafesnet_snf = { path = "../lib/snf", registry = "strafesnet", optional = true }
+wasm-bindgen-futures = "0.4.49"
 wgpu = "24.0.0"
 winit = "0.30.7"
diff --git a/strafe-client/src/main.rs b/strafe-client/src/main.rs
index 8778f81..961f075 100644
--- a/strafe-client/src/main.rs
+++ b/strafe-client/src/main.rs
@@ -9,5 +9,8 @@ mod graphics_worker;
 const TITLE:&'static str=concat!("Strafe Client v",env!("CARGO_PKG_VERSION"));
 
 fn main(){
+	#[cfg(target_arch="wasm32")]
+	wasm_bindgen_futures::spawn_local(setup::setup_and_start(TITLE));
+	#[cfg(not(target_arch="wasm32"))]
 	pollster::block_on(setup::setup_and_start(TITLE));
 }