  Quality assurance is of great importance for deep learning (DL) systems,
especially when they are applied in safety-critical applications. While quality
issues of native DL applications have been extensively analyzed, the issues of
JavaScript-based DL applications have never been systematically studied.
Compared with native DL applications, JavaScript-based DL applications can run
on major browsers, making the platform- and device-independent. Specifically,
the quality of JavaScript-based DL applications depends on the 3 parts: the
application, the third-party DL library used and the underlying DL framework
(e.g., TensorFlow.js), called JavaScript-based DL system. In this paper, we
conduct the first empirical study on the quality issues of JavaScript-based DL
systems. Specifically, we collect and analyze 700 real-world faults from
relevant GitHub repositories, including the official TensorFlow.js repository,
13 third-party DL libraries, and 58 JavaScript-based DL applications. To better
understand the characteristics of these faults, we manually analyze and
construct taxonomies for the fault symptoms, root causes, and fix patterns,
respectively. Moreover, we also study the fault distributions of symptoms and
root causes, in terms of the different stages of the development lifecycle, the
3-level architecture in the DL system, and the 4 major components of
TensorFlow.js framework. Based on the results, we suggest actionable
implications and research avenues that can potentially facilitate the
development, testing, and debugging of JavaScript-based DL systems.
