  WebAssembly (Wasm) is a binary instruction format designed for secure and
efficient execution within sandboxed environments - predominantly web apps and
browsers - to facilitate performance, security, and flexibility of web
programming languages. In recent years, Wasm has gained significant attention
from academic research community and industrial development projects to
engineer high-performance web applications. Despite the offered benefits,
developers encounter a multitude of issues rooted in Wasm (e.g., faults,
errors, failures) and are often unaware of their root-causes that impact the
development of web applications. Wasm developers require knowledge, documented
as empirically rooted guidelines, patterns, documents etc., that help them to
understand, analyse, and resolve the issues that currently lacks in existing
research and practice. To this end, we conducted an empirical study that mines
and documents practitioners' knowledge expressed as 385 issues from 12
open-source Wasm projects deployed on GitHub and 354 question-answer posts via
Stack Overflow. Our study led to the first-of-its-kind taxonomies of issues
faced by developers and their underlying causes in Wasm-based applications.
Issues faced by developers arise from 'Infrastructure, Integration and
Compatibility Aspects' (28.16%), 'Language Features and Documentation Errors'
(18.00%), along with 'Code Implementation and Build failures' (13.83%). The
results indicate that 'Syntactic and Semantic Errors' (25.77%), 'Configuration
and Compatibility Constraints' (20.1%), and 'Operational Limitations' (12.98%)
are the principal causes of these issues. The study provides a taxonomical
classification of issues and their causes, offering empirically derived
guidelines, that can inform researchers and developers to systematically
design, develop, and refactor Wasm-based applications.
