# Swift for Wasm July 2026 Updates

**URL:** <https://forums.swift.org/t/swift-for-wasm-july-2026-updates/88673>\
**Category:** Swift for WebAssembly\
**Tags:** embedded\
**Created:** [July 31, 2026, 12:09pm UTC](https://forums.swift.org/t/swift-for-wasm-july-2026-updates/88673 "2026-07-31T12:09:17Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Max\_Desiatov](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/max_desiatov/32/20654_2.png) [@Max\_Desiatov](https://forums.swift.org/u/Max_Desiatov)\
**Post date:** [July 31, 2026, 12:09pm UTC](https://forums.swift.org/t/swift-for-wasm-july-2026-updates/88673/1 "2026-07-31T12:09:17Z")

</div>

Notable changes this month: work on an Emscripten-hosted Swift toolchain; IRGen gained a fix for async typed throws miscompiles on wasm32; WasmKit implemented the Relaxed SIMD and extended-const proposals along with shared linear memory, and now supports Embedded Swift in its core engine, with an example running on an ESP32-C6; JavaScriptKit 0.56.1 fixed the Embedded Swift event loop; and ElementaryUI released 0.4.1, 0.5.0 with SVG support, and 0.6.0 focused on binary size optimizations. Two Swift web frameworks were announced on the forums.

Many thanks to @kateinoigakukun, @krodak, @owenv, @sliemeobn, @wfltaylor for contributions!

## Forum Discussions

- [SwiftWeb: full-stack web apps in Swift](https://forums.swift.org/t/swiftweb-full-stack-web-apps-in-swift-wasm-client-islands-and-distributed-actors-developer-preview/88343): a developer preview that renders pages to HTML on the server and ships interactive parts as Wasm client islands, with distributed actors for client-server calls.
- [Swiflow, a frontend stack for the web in Swift](https://forums.swift.org/t/presenting-swiflow-a-frontend-stack-for-the-web-in-swift-wasm/87971): another take on a Swift frontend stack targeting Wasm.
- [TinyString for Embedded Swift, Wasm, and the world](https://forums.swift.org/t/announcing-tinystring-for-embedded-swift-wasm-and-the-world/88399): a small-footprint string type usable where the standard `String` is too heavy.
- [Wasm-optimized JSON-parsing library](https://forums.swift.org/t/wasm-optimized-json-parsing-library-no-foundation/88365): a Foundation-free parser, reported by its author at 154 KB object size and 1.4x faster than the Foundation parser.

## [Swift Toolchain](https://github.com/swiftlang/swift)

Work on `main` split between cross-building the compiler for an Emscripten host, which also required making immediate mode optional and the compiler's data structures 32-bit-safe, and target-side fixes for async typed throws on wasm32 and Embedded key paths.

- Add CMake for Emscripten-hosted compiler [swift#90334](https://github.com/swiftlang/swift/pull/90334);
- Add build-script products for Emscripten-hosted toolchain [swift#90337](https://github.com/swiftlang/swift/pull/90337);
- Make immediate mode (`-interpret`) an optional build feature [swift#90329](https://github.com/swiftlang/swift/pull/90329);
- Fix Emscripten libc module under C++ interop, add UUID support [swift#90332](https://github.com/swiftlang/swift/pull/90332);
- Make the compiler's data structures 32-bit-safe [swift#90326](https://github.com/swiftlang/swift/pull/90326);
- IRGen: fix async typed throws miscompiles on Wasm [swift#89715](https://github.com/swiftlang/swift/pull/89715);
- Emscripten host: fix path leaks [swift#90760](https://github.com/swiftlang/swift/pull/90760);
- Fix Emscripten build regressions [swift#90601](https://github.com/swiftlang/swift/pull/90601);
- Fix Emscripten build and Wasm test suite issues [swift#90801](https://github.com/swiftlang/swift/pull/90801);
- Embedded: skip the key path non-public property check in SILVerifier [swift#91059](https://github.com/swiftlang/swift/pull/91059);
- Use object libraries in place of relocatable objects for WebAssembly [swift-build#1554](https://github.com/swiftlang/swift-build/pull/1554);

## [JavaScriptKit](https://github.com/swiftwasm/JavaScriptKit)

[0.56.1](https://github.com/swiftwasm/JavaScriptKit/releases/tag/0.56.1) fixes `JavaScriptEventLoop` for Embedded Swift on development toolchain snapshots, where `clock.enqueue` is no longer available and Embedded Swift has neither `ContinuousClock` nor `SuspendingClock` to fall back on. On `main`, `@JSFunction` gained JS-snippet imports through `from: .module(...)`, so JS code can be shipped as the source of an import, alongside a few BridgeJS fixes:

- Fix `JavaScriptEventLoop` for Embedded Swift in `main` toolchain snapshots [#784](https://github.com/swiftwasm/JavaScriptKit/pull/784);
- Add JS-snippet support using `from: .module("/path/to/js-module.js")` syntax [#792](https://github.com/swiftwasm/JavaScriptKit/pull/792);
- BridgeJS: fix issues exporting nested types [#783](https://github.com/swiftwasm/JavaScriptKit/pull/783);
- BridgeJS: unify optional stack encoding to presence-flag form [#786](https://github.com/swiftwasm/JavaScriptKit/pull/786);
- BridgeJS: fix syntax error in generated JS [#789](https://github.com/swiftwasm/JavaScriptKit/pull/789);
- BridgeJS: fix argument order for stack-lowered imported parameters [#794](https://github.com/swiftwasm/JavaScriptKit/pull/794);

## [WasmKit](https://github.com/swiftwasm/WasmKit)

[0.3.1](https://github.com/swiftwasm/WasmKit/releases/tag/0.3.1) is a bug-fix release for compatibility with current `swift-system` versions. On `main` two more proposals were implemented, Relaxed SIMD and extended-const, and shared linear memory from the threads proposal now works on macOS and Linux. Embedded Swift support also landed: optional pieces sit behind package traits, and the core engine now runs on an ESP32-C6. On the Component Model front, `WITExtractor` was reimplemented on SwiftSyntax to improve SwiftBuild support.

- Add Relaxed SIMD proposal implementation [#373](https://github.com/swiftwasm/WasmKit/pull/373);
- Support extended-const arithmetic in constant expressions [#371](https://github.com/swiftwasm/WasmKit/pull/371);
- Add shared memory support for mprotect-able platforms [#380](https://github.com/swiftwasm/WasmKit/pull/380);
- Add `MultiThread` trait and `PlatformMutex` wrapper [#390](https://github.com/swiftwasm/WasmKit/pull/390);
- WasmParser: add `FileSystem` trait to allow omitting file system helpers [#369](https://github.com/swiftwasm/WasmKit/pull/369);
- Move `StatsCollector` behind an `EngineStats` package trait [#388](https://github.com/swiftwasm/WasmKit/pull/388);
- Make `_CWasmKit` headers portable to non-Clang compilers [#389](https://github.com/swiftwasm/WasmKit/pull/389);
- Add a `wat2wasm` example compatible with Embedded Swift [#273](https://github.com/swiftwasm/WasmKit/pull/273);
- SwiftSyntax-based `WITExtractor` re-implementation [#381](https://github.com/swiftwasm/WasmKit/pull/381);
- Defensive WIT overlay symbols qualification [#384](https://github.com/swiftwasm/WasmKit/pull/384);
- Debugger: fix step-into for calls with arguments, add `qWasmGlobal` [#385](https://github.com/swiftwasm/WasmKit/pull/385);
- Move byte-stream offset control out of the I/O sources [#379](https://github.com/swiftwasm/WasmKit/pull/379);
- Upgrade `swift-system` dependency version [#376](https://github.com/swiftwasm/WasmKit/pull/376);
- Add printable core types and a typed `Trap` kind in `WasmKitError` [#391](https://github.com/swiftwasm/WasmKit/pull/391);
- Remove `ImportError` and restrict `ResourceLimiter` to class types [#393](https://github.com/swiftwasm/WasmKit/pull/393);
- Replace `EntityHandle` `@dynamicMemberLookup` with explicit accessors [#394](https://github.com/swiftwasm/WasmKit/pull/394);
- Support Embedded Swift in the core engine [#395](https://github.com/swiftwasm/WasmKit/pull/395);
- Add an ESP32 example with a portable smoke test [#396](https://github.com/swiftwasm/WasmKit/pull/396);
- Add `--argv0` and `--dir host::guest` mapping to `wasmkit run` [#392](https://github.com/swiftwasm/WasmKit/pull/392);
- Drop the `swift-system` dependency from `WasmParser` and `WasmKit` [#397](https://github.com/swiftwasm/WasmKit/pull/397);

## [ElementaryUI](https://github.com/elementary-swift/elementary-ui)

Three releases: [0.4.1](https://github.com/elementary-swift/elementary-ui/releases/tag/0.4.1) upgrades to JavaScriptKit 0.56, [0.5.0](https://github.com/elementary-swift/elementary-ui/releases/tag/0.5.0) adds dynamic SVG views, and [0.6.0](https://github.com/elementary-swift/elementary-ui/releases/tag/0.6.0) with binary size improvements. As with earlier releases, existing projects need to reinstall the bundled `BrowserRuntime` npm package and clear the Vite dev cache (see the release notes for the exact commands).

- Upgrade to JavaScriptKit 0.56 [#111](https://github.com/elementary-swift/elementary-ui/pull/111);
- Add support for SVG [#112](https://github.com/elementary-swift/elementary-ui/pull/112);
- More strippable FLIP and transition handling [#114](https://github.com/elementary-swift/elementary-ui/pull/114);
- Various size and speed optimizations [#115](https://github.com/elementary-swift/elementary-ui/pull/115);
- Leaner transition system [#116](https://github.com/elementary-swift/elementary-ui/pull/116);
- Improved code size [#117](https://github.com/elementary-swift/elementary-ui/pull/117);
- Fix size regression [#118](https://github.com/elementary-swift/elementary-ui/pull/118);

* * *

Thank you for reading, and please feel free to add any comments or suggestions if we missed anything!

If you'd like to catch up with changes from previous months, here's a list of relevant updates:

- [June 2026](https://forums.swift.org/t/swift-for-wasm-june-2026-updates/87820);
- [May 2026](https://forums.swift.org/t/swift-for-wasm-may-2026-updates/86981);
- [April 2026](https://forums.swift.org/t/swift-for-wasm-april-2026-updates/86371);
- [March 2026](https://forums.swift.org/t/swift-for-wasm-march-2026-updates/85725);
- [February 2026](https://forums.swift.org/t/swift-for-wasm-february-2026-updates/85046).
