xterm.js iOS Compatibility

Terminal Agent Mobile Support

Mobile terminal coverage

This page documents the iOS/Safari edge cases the demo already handles, then links to the implementation pattern for each one.

Soft keyboard bridge

A hidden textarea focuses on tap so iPhone and iPad keyboards open reliably.

Input proxy for mobile Safari

Input is routed through a text control path instead of relying only on terminal keydown events.

Shifted character support

Characters such as #, ", and @ flow through the same proxy used for normal text.

Touch-friendly paste

The demo exposes an explicit paste action for clipboard use on mobile devices.

Renderer stability path

The implementation avoids fragile mobile canvas assumptions and keeps layout responsive.

Try it on your iPhone

Interactive terminal demo with all iOS fixes applied

Attach an existing tmux session

Choose from live tmux ls targets over secure WebSocket

Dependenciespackage.json
@xterm/xterm >= 5.3.0
@xterm/addon-fit
node-pty (server-side)
socket.io or ws (WebSocket bridge)

These packages form the foundation for a cross-platform terminal implementation.

Validated Against

iOS 16-17 Safari

iPad Safari

(split-screen)

Chrome on iOS

(same WebKit)

Quick Reference

1Use rendererType: 'dom'
2Add hidden input for keyboard
3Listen to visualViewport.resize
4Use 100dvh for height
5Handle touch paste manually

xterm.js iOS Compatibility Guide

Based on terminal agent runtime specs