Publishing WASM wheels to PyPI for use with Pyodide

Python on the web finally feels like Python on your machine For creators building tools in the browser, the bottleneck has always…

By AI Maestro June 14, 2026 2 min read
Publishing WASM wheels to PyPI for use with Pyodide

Python on the web finally feels like Python on your machine

For creators building tools in the browser, the bottleneck has always been distribution. Until recently, if you wanted to ship a Python package that ran inside Pyodide, you were stuck maintaining your own build pipeline, hosting files manually, and begging the core team to review every single upload. That era is over.

The Pyodide 314.0 release marks a turning point. Python packages designed for the browser can now be published directly to PyPI using standard wheels, just like those for Linux, macOS, or Windows. This removes the administrative burden from the Pyodide maintainers and unlocks a floodgate for the community. No more custom hosting; just build, upload, and run.

A test run with Luau

To prove the concept, I packaged my own experimental project: luau-wasm. Luau is a type-aware subset of Lua developed by Roblox, and while it compiles to WebAssembly, distributing it in the browser was previously a chore.

Using GitHub Actions and the latest cibuildwheel, I built a wheel tagged pyemscripten_2026_0_wasm32. This single file, weighing in at roughly 276KB, allows the browser to execute Luau code via Pyodide with zero friction.

Here is how a maker would use it in a browser environment:

import micropip
await micropip.install("luau-wasm")
import luau_wasm
print(luau_wasm.execute(r'''
local animals = {"fox", "owl", "frog", "rabbit"}
table.sort(animals, function(a, b) return #a < #b end)
for i, name in animals do print(i .. ". " .. name .. " (" .. #name .. ")") end
'''))

Developers can now drop this into their own demos or applications without worrying about version compatibility or manual deployment scripts.

Early adopters are already shipping

The shift is already happening. By querying PyPI’s public dataset on BigQuery, we identified 28 packages that have already adopted the new WebAssembly platform tags. These include significant libraries such as onnx, pydantic_core, uuid7-rs, and typst.

The list includes:

This change aligns with PEP 783, standardising how Python runtimes expose their ABI. The next few years will likely see this number explode as more libraries realise they no longer need a custom distribution channel to reach browser users.

Key takeaways

  • Pyodide 314.0 allows Python packages to be published directly to PyPI, eliminating the need for maintainers to host and manually review every wheel.
  • Creatives and developers can now distribute WebAssembly-based Python extensions using standard cp314-cp314-pyemscripten_2026_0_wasm32 tags.
  • Over 20 significant packages, including onnx and typst, are already shipping wheels compatible with browser-based Python execution.
  • The process is now identical to publishing native wheels for desktop, streamlining the workflow for anyone building tools for the web.

Stay ahead of AI. Get the most important stories delivered to your inbox — no spam, no noise.

Name
Scroll to Top