From Logic to Toolchains: An Empirical Study of Bugs in the TypeScript Ecosystem
TianYi Tang, Saba Alimadadi, Nick Sumner
TL;DR
The paper investigates faults in the TypeScript ecosystem through a large-scale empirical study of 633 bug-related artifacts from 16 open-source projects. It builds an empirically grounded taxonomy of 11 bug categories, combining manual labeling with a few-shot embedding model, and links fault types to project attributes and build-system complexity using non-parametric statistics. A longitudinal comparison with JavaScript suggests that static typing reduces runtime and type-errors but shifts fragility toward toolchains, configuration, and asynchronous integration issues. The work provides a public dataset and analysis pipeline, highlighting ecosystem-level reliability challenges and offering guidance for testing, debugging, and tooling improvements in typed web development.
Abstract
TypeScript has rapidly become a popular language for modern web development, yet its effect on software faults remains poorly understood. This paper presents the first large-scale empirical study of bugs in real-world TypeScript projects. We analyze 633 bug reports from 16 popular open-source repositories to construct a taxonomy of fault types, quantify their prevalence, and relate them to project characteristics such as size, domain, and dependency composition. Our results reveal a fault landscape dominated not by logic or syntax errors but by tooling and configuration faults, API misuses, and asynchronous error-handling issues. We show that these categories correlate strongly with build complexity and dependency heterogeneity, indicating that modern failures often arise at integration and orchestration boundaries rather than within algorithmic logic. A longitudinal comparison with JavaScript studies shows that while static typing in TypeScript has reduced traditional runtime and type errors, it has shifted fragility toward build systems and toolchains. These findings offer new insight into how language design and ecosystem evolution reshape the fault profiles of large-scale software systems.
