<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">Thanks so much for this Michael! I think this also paves the way for us to start introducing demonstrator projects into QGIS.org so that we can better showcase QGIS cartography. I have asked Lova to start looking into creating some initial prototypes.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">Regards</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">Tim</div></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Mon, Jan 19, 2026 at 11:12 AM Michael Schmuki via QGIS-PSC <<a href="mailto:qgis-psc@lists.osgeo.org">qgis-psc@lists.osgeo.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Dear PSC<br>
<br>
This email serves as the follow-up report for the "Adopt<br>
wasm32-emscripten as a build target for QGIS" QEP. The implementation<br>
phase took place between December 2025 and the first half of January<br>
2026. Many thanks to Matthias for his contribution to the quest to<br>
bring QGIS to the browser and for carrying out most of the work.<br>
<br>
An update will be posted to the developers list once qgis-js 4.0.0 is<br>
officially released on npm. And I would love to give an update of the<br>
project in Laax.<br>
<br>
Thanks for supporting this QEP through the grant program.<br>
<br>
--<br>
<br>
Original QEP Date: 2025/03/10<br>
Author: Michael Schmuki (@boardend, michael at opengis dot ch)<br>
Follow-up Date: 2026/01/19<br>
<br>
Status<br>
- Approved: April 28, 2025<br>
- Discussion: <a href="https://github.com/qgis/QGIS-Enhancement-Proposals/pull/335" rel="noreferrer" target="_blank">https://github.com/qgis/QGIS-Enhancement-Proposals/pull/335</a><br>
<br>
Deliverables<br>
- Integration of qgis-js patches into main QGIS repository: Done<br>
- Adopting wasm32-emscripten as a build target in CMake/vcpkg: Done<br>
- CI test on Github Actions for Emscripten compatibility: Done<br>
- New major version of qgis-js based on QGIS 3.44/4.0: In Progress<br>
<br>
Upstream Changes<br>
All patches required for WebAssembly support have been merged into the<br>
QGIS repository (tracking issue:<br>
<a href="https://github.com/qgis/qgis-js/issues/39" rel="noreferrer" target="_blank">https://github.com/qgis/qgis-js/issues/39</a>):<br>
- <a href="https://github.com/qgis/QGIS/pull/64075" rel="noreferrer" target="_blank">https://github.com/qgis/QGIS/pull/64075</a> - Make it optional to build<br>
with EXIV2 (@m-kuhn, merged 2025-11-27)<br>
- <a href="https://github.com/qgis/QGIS/pull/64109" rel="noreferrer" target="_blank">https://github.com/qgis/QGIS/pull/64109</a> - Add WITH_AUTH (@m-kuhn,<br>
merged 2025-12-04)<br>
- <a href="https://github.com/qgis/QGIS/pull/64114" rel="noreferrer" target="_blank">https://github.com/qgis/QGIS/pull/64114</a> - Allow compiling when Qt is<br>
built without the timezone feature (@m-kuhn, merged 2025-12-06)<br>
- <a href="https://github.com/qgis/QGIS/pull/64175" rel="noreferrer" target="_blank">https://github.com/qgis/QGIS/pull/64175</a> - Add missing includes<br>
(@m-kuhn, merged 2025-12-04)<br>
- <a href="https://github.com/qgis/QGIS/pull/64188" rel="noreferrer" target="_blank">https://github.com/qgis/QGIS/pull/64188</a> - More optional deps - Qt<br>
Positioning, PDAL (@m-kuhn, merged 2025-12-08)<br>
- <a href="https://github.com/qgis/QGIS/pull/64386" rel="noreferrer" target="_blank">https://github.com/qgis/QGIS/pull/64386</a> - Make core build with<br>
Emscripten for WASM (@m-kuhn, merged 2026-01-01)<br>
- <a href="https://github.com/microsoft/vcpkg/pull/49039" rel="noreferrer" target="_blank">https://github.com/microsoft/vcpkg/pull/49039</a> - [qtkeychain] fix<br>
emscripten build (@m-kuhn, merged 2025-12-22)<br>
- <a href="https://github.com/frankosterfeld/qtkeychain/pull/286" rel="noreferrer" target="_blank">https://github.com/frankosterfeld/qtkeychain/pull/286</a> - Fix build<br>
with emscripten (@m-kuhn, merged 2026-01-06)<br>
- <a href="https://github.com/microsoft/vcpkg/pull/48489" rel="noreferrer" target="_blank">https://github.com/microsoft/vcpkg/pull/48489</a> - [libpq] explicitly<br>
disable emscripten support (@m-kuhn, merged 2025-11-27)<br>
<br>
Pending (not yet merged):<br>
- <a href="https://github.com/qgis/QGIS/pull/64469" rel="noreferrer" target="_blank">https://github.com/qgis/QGIS/pull/64469</a> - WASM fixes and qgis_bench<br>
tests for browser & Node.js (@boardend, open)<br>
- <a href="https://github.com/qgis/qgis-js/pull/54" rel="noreferrer" target="_blank">https://github.com/qgis/qgis-js/pull/54</a> - Update to QGIS 4.0<br>
(@boardend, open (further testing ongoing))<br>
- <a href="https://github.com/microsoft/vcpkg/pull/49429" rel="noreferrer" target="_blank">https://github.com/microsoft/vcpkg/pull/49429</a> - [qtbase] Fix<br>
qt.toolchain.cmake corruption for Emscripten builds (@boardend, open)<br>
- <a href="https://github.com/microsoft/vcpkg/pull/49339" rel="noreferrer" target="_blank">https://github.com/microsoft/vcpkg/pull/49339</a> - [qtbase] Add new<br>
feature wasm-exceptions (@m-kuhn, closed)<br>
<br>
Summary of Changes<br>
- Emscripten build support - Complete integration including CI<br>
workflow, vcpkg configuration, and toolchain support<br>
- Optional authentication subsystem (WITH_AUTH) - Makes QCA dependency<br>
optional with stub implementations when disabled<br>
- Optional EXIV2 dependency (WITH_EXIV2) - EXIV2 is unavailable for<br>
Emscripten due to missing inih library support in vcpkg<br>
- Optional Qt Positioning and PDAL (WITH_QTPOSITIONING, WITH_PDAL) -<br>
More granular control over dependencies<br>
- Qt timezone compatibility - Allows compilation when Qt is built<br>
without timezone support (common in WASM builds)<br>
- Missing includes - Fixed header includes required for WASM compilation<br>
<br>
Outcome<br>
- QGIS now officially supports the wasm32-emscripten build target<br>
- All qgis-js patches have been upstreamed - qgis-js no longer<br>
requires any QGIS patches. This allows for easier creation of new<br>
qgis-js version in coordination with new QGIS versions.<br>
- GitHub Actions CI ensures ongoing Emscripten compatibility<br>
- Foundation laid for future WebAssembly-based QGIS applications<br>
- Collaboration with upstream (dependency packages) in order to<br>
improve the ecosystem and create sustainable fixes<br>
<br>
Next Steps<br>
- Release new major version 4 of qgis-js based on upstream QGIS, time<br>
aligned with QGIS 4.0.0 in February 26 (currently tracked in<br>
<a href="https://github.com/qgis/qgis-js/pull/54" rel="noreferrer" target="_blank">https://github.com/qgis/qgis-js/pull/54</a>)<br>
- Explore expanded API surface for qgis-js<br>
- Community exploration of additional WASM possibilities (QGIS<br>
Processing, PyQGIS in browser, QgsQuick port)<br>
<br>
Funding<br>
The resources allocated through the QGIS Grant 2025 have been fully<br>
utilized. Development will continue, though the pace may vary<br>
depending on available funding.<br>
This is still early-stage work - laying the foundation and solving the<br>
initial challenges required to bring QGIS to the browser.<br>
<br>
--<br>
<br>
Michael Schmuki<br>
<br>
Full-Stack Developer<br>
Team QGIS & Industry Solutions<br>
<br>
<a href="mailto:michael@opengis.ch" target="_blank">michael@opengis.ch</a><br>
<a href="http://opengis.ch" rel="noreferrer" target="_blank">opengis.ch</a><br>
_______________________________________________<br>
QGIS-PSC mailing list<br>
<a href="mailto:QGIS-PSC@lists.osgeo.org" target="_blank">QGIS-PSC@lists.osgeo.org</a><br>
<a href="https://lists.osgeo.org/mailman/listinfo/qgis-psc" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/qgis-psc</a><br>
</blockquote></div><div><br clear="all"></div><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr"><br><div><div style="color:rgb(34,34,34)">Tim Sutton</div><div style="color:rgb(34,34,34)"><b>Kartoza Cofounder<br></b><span style="color:rgb(32,33,36);text-align:center">Tim is a member of the QGIS Project Steering Committee</span><b><br></b></div><div style="color:rgb(34,34,34)"><b><br></b></div><div style="color:rgb(34,34,34)"><b>T </b>: +27(0) 87 809 2702 <b>E </b>:<b> </b><a href="mailto:tim@kartoza.com" style="color:rgb(17,85,204)" target="_blank">tim@kartoza.com</a> <b>W</b> : <a href="http://kartoza.com/" style="color:rgb(17,85,204)" target="_blank">kartoza.com</a><br></div><div style="color:rgb(34,34,34)"><br></div><div style="color:rgb(34,34,34)"><div><i><img src="https://kartoza.com/files/KartozaEmailSignature.gif" width="420" height="77"><br></i></div><div><i><br></i></div><div><i>This email and any attachments are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you </i><div><i>have received this email in error, please notify the sender immediately and delete it from your system. Unauthorised use, disclosure, or copying</i></div><div><i>of the contents is prohibited.</i></div></div></div></div></div></div>