{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,10,2]],"date-time":"2026-10-02T10:39:22Z","timestamp":1790937562907,"version":"4.1.0"},"reference-count":47,"publisher":"Association for Computing Machinery (ACM)","issue":"ISSTA","license":[{"start":{"date-parts":[[2025,6,22]],"date-time":"2025-06-22T00:00:00Z","timestamp":1750550400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/legalcode"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Proc. ACM Softw. Eng."],"published-print":{"date-parts":[[2025,6,22]]},"abstract":"<jats:p>JavaScript libraries are characterized by their widespread use, frequent code changes, and a high tolerance for backward-incompatible changes. Awareness of such breaking changes can help developers adapt to version updates and avoid negative impacts. Several tools have been targeted to or can be used to detect breaking change detection in the JavaScript community. However, these tools detect breaking changes in different ways, and there are currently no systematic reviews of these approaches. From a preliminary study on popular JavaScript libraries, we find that existing approaches, including simple regression testing, model-based testing, and type differencing, cannot detect many breaking changes but can produce plenty of false positives. We discuss the reasons for missing breaking changes and producing false positives.<\/jats:p>\n                  <jats:p>\n                    Based on the insights from our findings, we propose a new approach named\n                    <jats:sc>Diagnose<\/jats:sc>\n                    that iteratively constructs an object relation graph based on API exploration and forced execution-based type analysis.\n                    <jats:sc>Diagnose<\/jats:sc>\n                    then refine the graphs and reconstruct the graphs in the newer versions of the libraries to detect breaking changes. By evaluating the approach on the same set of libraries used in the preliminary study, we find that\n                    <jats:sc>Diagnose<\/jats:sc>\n                    can detect many more breaking changes (60.2%) and produce fewer false positives. Therefore,\n                    <jats:sc>Diagnose<\/jats:sc>\n                    is suitable for practical use.\n                  <\/jats:p>","DOI":"10.1145\/3728980","type":"journal-article","created":{"date-parts":[[2025,6,22]],"date-time":"2025-06-22T10:52:56Z","timestamp":1750589576000},"page":"2340-2361","source":"Crossref","is-referenced-by-count":3,"title":["More Effective JavaScript Breaking Change Detection via Dynamic Object Relation Graph"],"prefix":"10.1145","volume":"2","author":[{"ORCID":"https:\/\/orcid.org\/0000-0001-7627-1294","authenticated-orcid":false,"given":"Dezhen","family":"Kong","sequence":"first","affiliation":[{"name":"Zhejiang University, The State Key Laboratory of Blockchain and Data Security, Hangzhou, China"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-7273-6709","authenticated-orcid":false,"given":"Jiakun","family":"Liu","sequence":"additional","affiliation":[{"name":"Singapore Management University, School of Information Systems, Singapore, Singapore"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-2906-0598","authenticated-orcid":false,"given":"Chao","family":"Ni","sequence":"additional","affiliation":[{"name":"Zhejiang University, School of Software Technology, Ningbo, China"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-4367-7201","authenticated-orcid":false,"given":"David","family":"Lo","sequence":"additional","affiliation":[{"name":"Singapore Management University, School of Information Systems, Singapore, Singapore"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-1846-0921","authenticated-orcid":false,"given":"Lingfeng","family":"Bao","sequence":"additional","affiliation":[{"name":"Zhejiang University, The State Key Laboratory of Blockchain and Data Security, Hangzhou, China"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2025,6,22]]},"reference":[{"key":"e_1_3_1_2_2","doi-asserted-by":"publisher","unstructured":"Christopher Bogart Christian K\u00e4stner James Herbsleb and Ferdian Thung. 2016. How to break an API: cost negotiation and community values in three software ecosystems. In Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering. 109\u2013120. https:\/\/doi.org\/10.1145\/2950290.2950325 10.1145\/2950290.2950325","DOI":"10.1145\/2950290.2950325"},{"key":"e_1_3_1_3_2","doi-asserted-by":"publisher","DOI":"10.1145\/3447245"},{"key":"e_1_3_1_4_2","doi-asserted-by":"publisher","DOI":"10.1109\/SANER.2018.8330249"},{"key":"e_1_3_1_5_2","doi-asserted-by":"publisher","DOI":"10.4230\/DARTS.8.2.7"},{"key":"e_1_3_1_6_2","unstructured":"Clirr. 2024. Clirr. https:\/\/clirr.sourceforge.net."},{"key":"e_1_3_1_7_2","doi-asserted-by":"publisher","unstructured":"Fernando Cristiani and Peter Thiemann. 2021. Generation of typescript declaration files from javascript code. In Proceedings of the 18th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes. 97\u2013112. https:\/\/doi.org\/10.1145\/3475738.3480941 10.1145\/3475738.3480941","DOI":"10.1145\/3475738.3480941"},{"key":"e_1_3_1_8_2","doi-asserted-by":"publisher","DOI":"10.1109\/ESEM.2011.36"},{"key":"e_1_3_1_9_2","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2019.2918315"},{"key":"e_1_3_1_10_2","unstructured":"DefinitelyTyped. 2025. DefinitelyTyped. https:\/\/github.com\/definitelytyped\/definitelytyped."},{"key":"e_1_3_1_11_2","unstructured":"Dont-break. 2024. Dont-break. https:\/\/github.com\/bahmutov\/dont-break."},{"key":"e_1_3_1_12_2","unstructured":"Dts-gen. 2025. Dts-gen. https:\/\/www.npmjs.com\/package\/dts-gen."},{"key":"e_1_3_1_13_2","doi-asserted-by":"publisher","DOI":"10.1109\/ISSRE55969.2022.00052"},{"key":"e_1_3_1_14_2","unstructured":"ESLint. 2025. ESLint. https:\/\/eslint.org."},{"key":"e_1_3_1_15_2","doi-asserted-by":"publisher","unstructured":"Asger Feldthaus and Anders M\u00f8ller. 2014. Checking correctness of TypeScript interfaces for JavaScript libraries. In Proceedings of the 2014 ACM International Conference on Object Oriented Programming Systems Languages & Applications. 1\u201316. https:\/\/doi.org\/10.1145\/2660193.2660215 10.1145\/2660193.2660215","DOI":"10.1145\/2660193.2660215"},{"key":"e_1_3_1_16_2","doi-asserted-by":"publisher","unstructured":"Liang Gong Michael Pradel and Koushik Sen. 2015. Jitprof: Pinpointing jit-unfriendly javascript code. In Proceedings of the 2015 10th joint meeting on foundations of software engineering. 357\u2013368. https:\/\/doi.org\/10.1145\/2786805.2786831 10.1145\/2786805.2786831","DOI":"10.1145\/2786805.2786831"},{"key":"e_1_3_1_17_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-78813-5_37"},{"key":"e_1_3_1_18_2","doi-asserted-by":"publisher","unstructured":"Simon Holm Jensen Magnus Madsen and Anders M\u00f8ller. 2011. Modeling the HTML DOM and browser API in static analysis of JavaScript web applications. In Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering. 59\u201369. https:\/\/doi.org\/10.1145\/2025113.2025125 10.1145\/2025113.2025125","DOI":"10.1145\/2025113.2025125"},{"key":"e_1_3_1_19_2","unstructured":"JSHint. 2024. JSHint. https:\/\/jshint.com."},{"key":"e_1_3_1_20_2","doi-asserted-by":"publisher","unstructured":"Vineeth Kashyap Kyle Dewey Ethan A Kuefner John Wagner Kevin Gibbons John Sarracino Ben Wiedermann and Ben Hardekopf. 2014. JSAI: A static analysis platform for JavaScript. In Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering. 121\u2013132. https:\/\/doi.org\/10.1145\/2635868.2635904 10.1145\/2635868.2635904","DOI":"10.1145\/2635868.2635904"},{"key":"e_1_3_1_21_2","doi-asserted-by":"publisher","unstructured":"Jeremy Katz. 2020. Libraries.io Open Source Repository and Dependency Metadata. https:\/\/doi.org\/10.5281\/zenodo.3626071 10.5281\/zenodo.3626071","DOI":"10.5281\/zenodo.3626071"},{"key":"e_1_3_1_22_2","doi-asserted-by":"publisher","unstructured":"Kyungtae Kim I Luk Kim Chung Hwan Kim Yonghwi Kwon Yunhui Zheng Xiangyu Zhang and Dongyan Xu. 2017. J-force: Forced execution on JavaScript. In Proceedings of the 26th international conference on World Wide Web. 897\u2013906. https:\/\/doi.org\/10.1145\/3038912.3052674 10.1145\/3038912.3052674","DOI":"10.1145\/3038912.3052674"},{"key":"e_1_3_1_23_2","doi-asserted-by":"publisher","unstructured":"Dezhen Kong Jiakun Liu Lingfeng Bao and David Lo. 2024. Towards Better Comprehension of Breaking Changes in the NPM Ecosystem. ACM Transactions on Software Engineering and Methodology (2024). https:\/\/doi.org\/10.1145\/3702991 10.1145\/3702991","DOI":"10.1145\/3702991"},{"key":"e_1_3_1_24_2","unstructured":"Dezhen Kong Jiakun Liu Chao Ni David Lo and Lingfeng Bao. 2025. Diagnose Website. https:\/\/github.com\/cstimkong\/diagnose."},{"key":"e_1_3_1_25_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-662-54494-5_6"},{"key":"e_1_3_1_26_2","doi-asserted-by":"publisher","DOI":"10.1145\/3656424"},{"key":"e_1_3_1_27_2","doi-asserted-by":"publisher","DOI":"10.1145\/2858965.2814272"},{"key":"e_1_3_1_28_2","doi-asserted-by":"publisher","DOI":"10.4230\/DARTS.4.3.8"},{"key":"e_1_3_1_29_2","doi-asserted-by":"publisher","DOI":"10.1145\/3428255"},{"key":"e_1_3_1_30_2","doi-asserted-by":"publisher","unstructured":"Anders M\u00f8ller and Martin Toldam Torp. 2019. Model-based testing of breaking changes in Node. js libraries. In Proceedings of the 2019 27th ACM joint meeting on european software engineering conference and symposium on the foundations of software engineering. 409\u2013419. https:\/\/doi.org\/10.1145\/3338906.3338940 10.1145\/3338906.3338940","DOI":"10.1145\/3338906.3338940"},{"key":"e_1_3_1_31_2","unstructured":"Mozilla. 2025. JavaScript Instanceof Operator. https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Operators\/instanceof."},{"key":"e_1_3_1_32_2","unstructured":"Mozilla. 2025. JavaScript Symbol. https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Symbol."},{"key":"e_1_3_1_33_2","unstructured":"Mozilla. 2025. JavaScript Symbol.iterator. https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Symbol\/iterator."},{"key":"e_1_3_1_34_2","unstructured":"Mozilla. 2025. JavaScript Symbol.toPrimitive. https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Symbol\/toPrimitive."},{"key":"e_1_3_1_35_2","unstructured":"Mozilla. 2025. JavaScript Symbol.toStringTag. https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Symbol\/toStringTag."},{"key":"e_1_3_1_36_2","doi-asserted-by":"publisher","unstructured":"Benjamin Barslev Nielsen Martin Toldam Torp and Anders M\u00f8ller. 2021. Modular call graph construction for security scanning of Node.js applications. In Proceedings of the 30th ACM SIGSOFT International Symposium on Software Testing and Analysis. 29\u201341. https:\/\/doi.org\/10.1145\/3460319.3464836 10.1145\/3460319.3464836","DOI":"10.1145\/3460319.3464836"},{"key":"e_1_3_1_37_2","unstructured":"NodeJS. 2025. Node.js Event. https:\/\/nodejs.org\/api\/events.html."},{"key":"e_1_3_1_38_2","doi-asserted-by":"publisher","unstructured":"Changhee Park Sooncheol Won Joonho Jin and Sukyoung Ryu. 2015. Static Analysis of JavaScript Web Applications in the Wild via Practical DOM Modeling (T). In 2015 30th IEEE\/ACM International Conference on Automated Software Engineering (ASE). 552\u2013562. https:\/\/doi.org\/10.1109\/ASE.2015.27 10.1109\/ASE.2015.27","DOI":"10.1109\/ASE.2015.27"},{"key":"e_1_3_1_39_2","unstructured":"Pidiff. 2024. Pidiff. https:\/\/github.com\/rohanpm\/pidiff."},{"key":"e_1_3_1_40_2","doi-asserted-by":"publisher","DOI":"10.5555\/2818754.2818795"},{"key":"e_1_3_1_41_2","doi-asserted-by":"publisher","DOI":"10.1016\/J.JSS.2016.04.008"},{"key":"e_1_3_1_42_2","unstructured":"RevAPI. 2024. RevAPI. https:\/\/revapi.org."},{"key":"e_1_3_1_43_2","unstructured":"SemVer. 2025. Semantic Versioning. http:\/\/semver.org."},{"key":"e_1_3_1_44_2","doi-asserted-by":"publisher","DOI":"10.1109\/MSR.2017.14"},{"key":"e_1_3_1_45_2","doi-asserted-by":"publisher","unstructured":"Chungha Sung Markus Kusano Nishant Sinha and Chao Wang. 2016. Static DOM event dependency analysis for testing web applications. In Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering. 447\u2013459. https:\/\/doi.org\/10.1145\/2950290.2950292 10.1145\/2950290.2950292","DOI":"10.1145\/2950290.2950292"},{"key":"e_1_3_1_46_2","doi-asserted-by":"publisher","DOI":"10.1145\/3576037"},{"key":"e_1_3_1_47_2","doi-asserted-by":"publisher","unstructured":"Lyuye Zhang Chengwei Liu Zhengzi Xu Sen Chen Lingling Fan Bihuan Chen and Yang Liu. 2022. Has my release disobeyed semantic versioning? Static detection based on semantic differencing. In Proceedings of the 37th IEEE\/ACM International Conference on Automated Software Engineering. 1\u201312. https:\/\/doi.org\/10.1145\/3551349.3556956 10.1145\/3551349.3556956","DOI":"10.1145\/3551349.3556956"},{"key":"e_1_3_1_48_2","doi-asserted-by":"publisher","DOI":"10.1109\/SANER48275.2020.9054800"}],"container-title":["Proceedings of the ACM on Software Engineering"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3728980","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,8,23]],"date-time":"2026-08-23T13:54:50Z","timestamp":1787493290000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3728980"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,6,22]]},"references-count":47,"journal-issue":{"issue":"ISSTA","published-print":{"date-parts":[[2025,6,22]]}},"alternative-id":["10.1145\/3728980"],"URL":"https:\/\/doi.org\/10.1145\/3728980","relation":{},"ISSN":["2994-970X"],"issn-type":[{"value":"2994-970X","type":"electronic"}],"subject":[],"published":{"date-parts":[[2025,6,22]]}}}