Skip to main content
IronRDP supports WebAssembly (WASM) as a first-class target, enabling full-featured RDP clients that run directly in web browsers. The ironrdp-web crate provides WASM bindings, and the web-client directory contains a production-ready Web Component and demo client.

Architecture

The web stack consists of:
  • ironrdp-web - Rust WASM bindings compiled with wasm-pack
  • iron-remote-desktop - Reusable Web Component (framework-agnostic)
  • iron-remote-desktop-rdp - TypeScript implementation of RDP-specific logic
  • iron-svelte-client - Demo Svelte-based RDP client

Building the WASM Module

Using the WASM Bindings

Basic TypeScript Example

Rendering to HTML5 Canvas

Handling Input Events

Using the Web Component

The iron-remote-desktop Web Component provides a complete RDP client:

Web Component API

Svelte Integration

The iron-svelte-client demonstrates full integration:

Advanced Features

Clipboard Support

Custom Network Transport

Replace the default WebSocket transport:

Touch Input Support

Connection via Gateway

Connect through a Devolutions Gateway or websockify proxy:

Performance Optimization

WASM Streaming

Worker Thread Processing

Request Animation Frame

Debugging

Enable Console Logging

Browser DevTools

Deployment

Static Hosting

Deploy to any static host (Netlify, Vercel, GitHub Pages):

Headers Configuration

For WASM to work, configure CORS headers:

Service Worker Caching

Browser Compatibility

IronRDP WASM works on:
  • ✅ Chrome/Edge 90+
  • ✅ Firefox 88+
  • ✅ Safari 15+
  • ✅ Mobile browsers (iOS Safari, Chrome Android)
Requires:
  • WebAssembly
  • WebSocket (or alternative transport)
  • Canvas API
  • ES Modules

Production Examples

Devolutions ships production IronRDP web clients in:
  • Devolutions Gateway - Standalone web interface (free, since v2024.1.0)
  • Devolutions Server - Self-hosted credential manager
  • Devolutions Hub - Cloud-based credential manager

Next Steps