<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/webassembly-an-introduction-1iycvposp" -->

---
title: WebAssembly: an introduction | daily.dev
description: WebAssembly (WASM) is a low-level binary format browsers run natively, compiled to from languages like Rust, C, C++, and Go rather than written directly. It...
canonical: https://daily.dev/posts/webassembly-an-introduction-1iycvposp
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: WebAssembly: an introduction | daily.dev
og:description: WebAssembly (WASM) is a low-level binary format browsers run natively, compiled to from languages like Rust, C, C++, and Go rather than written directly. It...
og:url: https://daily.dev/posts/webassembly-an-introduction-1iycvposp
og:image: https://api.daily.dev/og/posts/1IyCvPoSp.png
og:image:alt: WebAssembly: an introduction
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.

# WebAssembly: an introduction

**[Flavio Copes](https://daily.dev/sources/flaviocopes)** · 4 min read · 3 upvotes · 0 comments

## Summary

WebAssembly (WASM) is a low-level binary format browsers run natively, compiled to from languages like Rust, C, C++, and Go rather than written directly. It complements JavaScript rather than replacing it, handling CPU-heavy tasks like image processing, games, and running SQLite in the browser (companies like Figma and Adobe use it this way). All modern browsers and Node.js since version 8 support it. WebAssembly 3.0 (September 2025) added garbage collection, exception handling, and 64-bit memory, enabling languages like Kotlin and Dart. WASI 0.3, shipped in 2026, added native async support to the Component Model, letting compiled modules run on servers and at the edge via runtimes like Wasmtime, though support varies by host (e.g., Cloudflare Workers' WASI support is experimental). A minimal example shows loading and calling a .wasm module from JavaScript using fetch and WebAssembly.instantiateStreaming.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://flaviocopes.com/webassembly>

## Questions this post answers

### What new features did WebAssembly 3.0 add?

WebAssembly 3.0, released September 2025, added garbage collection, exception handling, and 64-bit memory support. Garbage collection support removes the need to ship a custom GC inside every compiled module, which makes it practical to compile languages like Kotlin and Dart to WebAssembly without extra runtime overhead.

_Track new WebAssembly capabilities like this on daily.dev as you plan which languages to compile to the browser._

### Does WASI support work the same across all WebAssembly runtimes like Cloudflare Workers?

No, WASI support varies by host. Cloudflare Workers can run WebAssembly but its WASI support is experimental and only implements some system calls, so a module built against the WASI spec does not automatically run unchanged on every WASM host; compatibility must be checked per runtime, such as Wasmtime versus Cloudflare Workers.

_Compare runtime support gaps like this on daily.dev before betting a WASM deployment on WASI portability._

### How do I load and run a compiled .wasm file from JavaScript?

Fetch the .wasm file and pass the response to WebAssembly.instantiateStreaming, then call the exported function on the resulting instance, for example instance.exports.add(2, 3). This requires the server to send the application/wasm content type and CORS headers for cross-origin files; otherwise, fetch the bytes as an arrayBuffer and use WebAssembly.instantiate instead.

_Developers wiring up WebAssembly modules for the first time can revisit practical breakdowns like this on daily.dev._

## Similar posts on daily.dev

- [WebAssembly: The Web’s Fourth Language](https://daily.dev/posts/webassembly-the-web-s-fourth-language-twkny7sfg) · Medium · 3 upvotes · 0 comments
- [WebAssembly is everywhere. Here’s how it works](https://daily.dev/posts/webassembly-is-everywhere-here-s-how-it-works-d8uxjessm) · The New Stack · 2 upvotes · 0 comments
- [The 7 Walls JavaScript Hits — and How WebAssembly Gets Past Them](https://daily.dev/posts/the-7-walls-javascript-hits-and-how-webassembly-gets-past-them-isxmm7isd) · DEV · 2 upvotes · 0 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: [#webdev](https://daily.dev/tags/webdev), [#javascript](https://daily.dev/tags/javascript), [#rust](https://daily.dev/tags/rust), [#webassembly](https://daily.dev/tags/webassembly)

[View this post on daily.dev](https://daily.dev/posts/webassembly-an-introduction-1iycvposp)

```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":"WebAssembly: an introduction","url":"https://daily.dev/posts/webassembly-an-introduction-1iycvposp","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/webassembly-an-introduction-1iycvposp"},"datePublished":"2026-08-14T06:53:37.500Z","dateModified":"2026-09-14T06:18:11.135Z","description":"WebAssembly (WASM) is a low-level binary format browsers run natively, compiled to from languages like Rust, C, C++, and Go rather than written directly. It...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/7219243bb6b6113ecc90bd933965a4ef?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/7219243bb6b6113ecc90bd933965a4ef?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Flavio Copes","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":"Flavio Copes","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/1f2dbd275797411bbd37bfdaaf0951a9","url":"https://daily.dev/sources/flaviocopes"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/webassembly-an-introduction-1iycvposp","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":3},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"webdev,javascript,rust,webassembly","timeRequired":"PT4M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Flavio Copes","item":"https://daily.dev/sources/flaviocopes"},{"@type":"ListItem","position":3,"name":"WebAssembly: an introduction"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/webassembly-an-introduction-1iycvposp#faq","mainEntity":[{"@type":"Question","name":"What new features did WebAssembly 3.0 add?","acceptedAnswer":{"@type":"Answer","text":"WebAssembly 3.0, released September 2025, added garbage collection, exception handling, and 64-bit memory support. Garbage collection support removes the need to ship a custom GC inside every compiled module, which makes it practical to compile languages like Kotlin and Dart to WebAssembly without extra runtime overhead. Track new WebAssembly capabilities like this on daily.dev as you plan which languages to compile to the browser."}},{"@type":"Question","name":"Does WASI support work the same across all WebAssembly runtimes like Cloudflare Workers?","acceptedAnswer":{"@type":"Answer","text":"No, WASI support varies by host. Cloudflare Workers can run WebAssembly but its WASI support is experimental and only implements some system calls, so a module built against the WASI spec does not automatically run unchanged on every WASM host; compatibility must be checked per runtime, such as Wasmtime versus Cloudflare Workers. Compare runtime support gaps like this on daily.dev before betting a WASM deployment on WASI portability."}},{"@type":"Question","name":"How do I load and run a compiled .wasm file from JavaScript?","acceptedAnswer":{"@type":"Answer","text":"Fetch the .wasm file and pass the response to WebAssembly.instantiateStreaming, then call the exported function on the resulting instance, for example instance.exports.add(2, 3). This requires the server to send the application/wasm content type and CORS headers for cross-origin files; otherwise, fetch the bytes as an arrayBuffer and use WebAssembly.instantiate instead. Developers wiring up WebAssembly modules for the first time can revisit practical breakdowns like this on daily.dev."}}]}
```

