{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,7,1]],"date-time":"2026-07-01T04:01:56Z","timestamp":1782878516106,"version":"3.54.5"},"reference-count":57,"publisher":"Association for Computing Machinery (ACM)","issue":"4","license":[{"start":{"date-parts":[[2025,4,26]],"date-time":"2025-04-26T00:00:00Z","timestamp":1745625600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"DOI":"10.13039\/501100001809","name":"National Science Foundation of China","doi-asserted-by":"crossref","award":["62372398, 72342025, and U20A20173"],"award-info":[{"award-number":["62372398, 72342025, and U20A20173"]}],"id":[{"id":"10.13039\/501100001809","id-type":"DOI","asserted-by":"crossref"}]},{"DOI":"10.13039\/501100012226","name":"Fundamental Research Funds for the Central Universities","doi-asserted-by":"crossref","award":["226-2022-00064"],"award-info":[{"award-number":["226-2022-00064"]}],"id":[{"id":"10.13039\/501100012226","id-type":"DOI","asserted-by":"crossref"}]},{"DOI":"10.13039\/501100001321","name":"National Research Foundation","doi-asserted-by":"crossref","award":["NRF-NRFI08-2022-0002"],"award-info":[{"award-number":["NRF-NRFI08-2022-0002"]}],"id":[{"id":"10.13039\/501100001321","id-type":"DOI","asserted-by":"crossref"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Softw. Eng. Methodol."],"published-print":{"date-parts":[[2025,5,31]]},"abstract":"<jats:p>Code evolution is prevalent in software ecosystems, which can provide many benefits, such as new features, bug fixes, security patches, while still introducing breaking changes that make downstream projects fail to work. Breaking changes cause a lot of effort to both downstream and upstream developers: downstream developers need to adapt to breaking changes and upstream developers are responsible for identifying and documenting them. In the NPM ecosystem, characterized by frequent code changes and a high tolerance for making breaking changes, the effort is larger.<\/jats:p>\n          <jats:p>For better comprehension of breaking changes in the NPM ecosystem and to enhance breaking change detection tools, we conduct a large-scale empirical study to investigate breaking changes in the NPM ecosystem. We construct a dataset of explicitly documented breaking changes from 381 popular NPM projects. We find that 95.4% of the detected breaking changes can be covered by developers\u2019 documentation, and 19% of the breaking changes cannot be detected by regression testing. Then in the process of investigating source code of our collected breaking changes, we yield a taxonomy of JavaScript- and TypeScript-specific syntactic breaking changes and a taxonomy of major types of behavioral breaking changes. Additionally, we investigate the reasons why developers make breaking changes in NPM and find three major reasons, i.e., to reduce code redundancy, to improve identifier names, and to improve API design, and each category contains several sub-items.<\/jats:p>\n          <jats:p>We provide actionable implications for future research, e.g., automatic naming and renaming techniques should be applied in JavaScript projects to improve identifier names, future research can try to detect more types of behavioral breaking changes. By presenting the implications, we also discuss the weakness of automatic renaming and breaking change detection approaches, such as the lack of support for public identifiers and various types of breaking changes.<\/jats:p>","DOI":"10.1145\/3702991","type":"journal-article","created":{"date-parts":[[2024,11,2]],"date-time":"2024-11-02T15:26:49Z","timestamp":1730561209000},"page":"1-23","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":6,"title":["Toward Better Comprehension of Breaking Changes in the NPM Ecosystem"],"prefix":"10.1145","volume":"34","author":[{"ORCID":"https:\/\/orcid.org\/0000-0001-7627-1294","authenticated-orcid":false,"given":"Dezhen","family":"Kong","sequence":"first","affiliation":[{"name":"The State Key Laboratory of Blockchain and Data Security, Zhejiang University, 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":"School of Information Systems, Singapore Management University, 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":"The State Key Laboratory of Blockchain and Data Security, Zhejiang University, Hangzhou, 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":"School of Information Systems, Singapore Management University, Singapore, Singapore"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2025,4,26]]},"reference":[{"key":"e_1_3_2_2_2","unstructured":"Clirr. 2024. Clirr. Retrieved from https:\/\/clirr.sourceforge.net"},{"key":"e_1_3_2_3_2","unstructured":"Conventional Commits. 2024. Conventional commits. Retrieved from https:\/\/www.conventionalcommits.org\/en\/v1.0.0"},{"key":"e_1_3_2_4_2","unstructured":"Mozilla. 2024. Destructuring assignment. Retrieved from https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Operators\/Destructuring_assignment"},{"key":"e_1_3_2_5_2","unstructured":"Dont-break developers. 2024. dont-break. Retrieved from https:\/\/www.npmjs.com\/package\/dont-break"},{"key":"e_1_3_2_6_2","unstructured":"ECMAScript team. 2015. ECMAScript 2015. Retrieved from https:\/\/262.ecma-international.org\/6.0\/"},{"key":"e_1_3_2_7_2","unstructured":"ESLint developers. 2024. ESLint. Retrieved from https:\/\/eslint.org"},{"key":"e_1_3_2_8_2","unstructured":"Mozilla. 2024. Inheritance and the prototype chain. Retrieved from https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Inheritance_and_the_prototype_chain"},{"key":"e_1_3_2_9_2","unstructured":"JSHint developers. 2024. JSHint. Retrieved from https:\/\/jshint.com"},{"key":"e_1_3_2_10_2","unstructured":"PiDiff developers. 2024. PiDiff. Retrieved from https:\/\/github.com\/rohanpm\/pidiff"},{"key":"e_1_3_2_11_2","unstructured":"RevAPI developers. 2024. RevAPI. Retrieved from https:\/\/revapi.org"},{"key":"e_1_3_2_12_2","unstructured":"Semantic Versioning. 2024. Semantic versioning. Retrieved from https:\/\/semver.org"},{"key":"e_1_3_2_13_2","doi-asserted-by":"publisher","DOI":"10.1145\/3106237.3106267"},{"key":"e_1_3_2_14_2","doi-asserted-by":"publisher","DOI":"10.1145\/2950290.2950325"},{"key":"e_1_3_2_15_2","doi-asserted-by":"publisher","DOI":"10.1145\/3447245"},{"key":"e_1_3_2_16_2","doi-asserted-by":"publisher","DOI":"10.1007\/s10664-019-09756-z"},{"key":"e_1_3_2_17_2","doi-asserted-by":"publisher","DOI":"10.1109\/SANER.2018.8330249"},{"key":"e_1_3_2_18_2","first-page":"97","volume-title":"Proceedings of the 2000 International Conference on Software Maintenance","author":"Caprile and Tonella","year":"2000","unstructured":"Caprile and Tonella. 2000. Restructuring program identifier names. In Proceedings of the 2000 International Conference on Software Maintenance. IEEE, 97\u2013107."},{"key":"e_1_3_2_19_2","first-page":"1","volume-title":"36th European Conference on Object-Oriented Programming (ECOOP 2022)","volume":"222","author":"Chakraborty Madhurima","year":"2022","unstructured":"Madhurima Chakraborty, Renzo Olivares, Manu Sridharan, and Behnaz Hassanshahi. 2022. Automatic root cause quantification for missing edges in javascript call graphs. In 36th European Conference on Object-Oriented Programming (ECOOP 2022), Karim Ali and Jan Vitek (Eds.), Vol. 222, Schloss Dagstuhl - Leibniz-Zentrum f\u00fcr Informatik, 1\u201328."},{"key":"e_1_3_2_20_2","doi-asserted-by":"publisher","DOI":"10.1007\/s10664-020-09904-w"},{"key":"e_1_3_2_21_2","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2019.2952130"},{"key":"e_1_3_2_22_2","doi-asserted-by":"publisher","DOI":"10.1109\/ESEM.2011.36"},{"key":"e_1_3_2_23_2","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2019.2918315"},{"key":"e_1_3_2_24_2","doi-asserted-by":"publisher","DOI":"10.1145\/3196398.3196401"},{"key":"e_1_3_2_25_2","doi-asserted-by":"publisher","DOI":"10.1007\/s10664-017-9589-y"},{"key":"e_1_3_2_26_2","doi-asserted-by":"publisher","DOI":"10.1145\/3510003.3510141"},{"key":"e_1_3_2_27_2","doi-asserted-by":"publisher","DOI":"10.1109\/ISSRE55969.2022.00052"},{"key":"e_1_3_2_28_2","doi-asserted-by":"publisher","DOI":"10.1145\/2509136.2509520"},{"key":"e_1_3_2_29_2","doi-asserted-by":"publisher","DOI":"10.1145\/3468264.3468571"},{"key":"e_1_3_2_30_2","doi-asserted-by":"publisher","DOI":"10.1109\/ASE51524.2021.9678905"},{"key":"e_1_3_2_31_2","doi-asserted-by":"publisher","DOI":"10.1145\/3643782"},{"key":"e_1_3_2_32_2","doi-asserted-by":"publisher","DOI":"10.1145\/3597926.3598147"},{"key":"e_1_3_2_33_2","doi-asserted-by":"publisher","DOI":"10.1145\/2025113.2025125"},{"key":"e_1_3_2_34_2","doi-asserted-by":"publisher","DOI":"10.1145\/2635868.2635904"},{"key":"e_1_3_2_35_2","doi-asserted-by":"publisher","DOI":"10.1109\/COMPSAC.2009.151"},{"key":"e_1_3_2_36_2","doi-asserted-by":"publisher","DOI":"10.1109\/PROC.1980.11805"},{"key":"e_1_3_2_37_2","doi-asserted-by":"publisher","DOI":"10.1145\/3510003.3510142"},{"key":"e_1_3_2_38_2","doi-asserted-by":"publisher","DOI":"10.1145\/3597926.3598092"},{"key":"e_1_3_2_39_2","doi-asserted-by":"publisher","DOI":"10.1145\/2858965.2814272"},{"key":"e_1_3_2_40_2","doi-asserted-by":"publisher","DOI":"10.1007\/s10664-023-10315-w"},{"key":"e_1_3_2_41_2","first-page":"1","volume-title":"32nd European Conference on Object-Oriented Programming (ECOOP 2018)Schloss Dagstuhl - Leibniz-Zentrum f\u00fcrInformatik","volume":"109","author":"Mezzetti Gianluca","year":"2018","unstructured":"Gianluca Mezzetti, Anders M\u00f8ller, and Martin Toldam Torp. 2018. Type regression testing to detect breaking changes in Node. js libraries. In 32nd European Conference on Object-Oriented Programming (ECOOP 2018). Todd D. Millstein (Ed.), Vol. 109, Schloss Dagstuhl - Leibniz-Zentrum f\u00fcrInformatik, 1\u201324."},{"key":"e_1_3_2_42_2","doi-asserted-by":"publisher","DOI":"10.1145\/3338906.3338940"},{"key":"e_1_3_2_43_2","doi-asserted-by":"publisher","DOI":"10.1145\/3092703.3092721"},{"key":"e_1_3_2_44_2","doi-asserted-by":"publisher","DOI":"10.1016\/j.jss.2022.111588"},{"key":"e_1_3_2_45_2","doi-asserted-by":"publisher","DOI":"10.1145\/2896587"},{"key":"e_1_3_2_46_2","doi-asserted-by":"publisher","DOI":"10.1109\/ASE.2015.27"},{"key":"e_1_3_2_47_2","doi-asserted-by":"publisher","DOI":"10.1109\/ICSM.2012.6405296"},{"key":"e_1_3_2_48_2","doi-asserted-by":"publisher","DOI":"10.1016\/j.jss.2016.04.008"},{"key":"e_1_3_2_49_2","doi-asserted-by":"publisher","unstructured":"Brittany Reid. 2020. NPM Package Information from Libraries.io. DOI: 10.5281\/zenodo.3898749","DOI":"10.5281\/zenodo.3898749"},{"key":"e_1_3_2_50_2","doi-asserted-by":"publisher","DOI":"10.1109\/MSR.2017.14"},{"key":"e_1_3_2_51_2","doi-asserted-by":"publisher","DOI":"10.1145\/2950290.2950292"},{"key":"e_1_3_2_52_2","doi-asserted-by":"publisher","DOI":"10.1145\/2393596.2393656"},{"key":"e_1_3_2_53_2","doi-asserted-by":"publisher","DOI":"10.1145\/3510003.3510205"},{"key":"e_1_3_2_54_2","doi-asserted-by":"publisher","DOI":"10.1145\/3485136"},{"key":"e_1_3_2_55_2","doi-asserted-by":"publisher","DOI":"10.1145\/3576037"},{"key":"e_1_3_2_56_2","doi-asserted-by":"publisher","DOI":"10.1109\/SANER.2017.7884616"},{"key":"e_1_3_2_57_2","doi-asserted-by":"publisher","DOI":"10.1145\/3551349.3556956"},{"key":"e_1_3_2_58_2","doi-asserted-by":"publisher","DOI":"10.1109\/SANER48275.2020.9054800"}],"container-title":["ACM Transactions on Software Engineering and Methodology"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3702991","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3702991","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T01:10:18Z","timestamp":1750295418000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3702991"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,4,26]]},"references-count":57,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2025,5,31]]}},"alternative-id":["10.1145\/3702991"],"URL":"https:\/\/doi.org\/10.1145\/3702991","relation":{},"ISSN":["1049-331X","1557-7392"],"issn-type":[{"value":"1049-331X","type":"print"},{"value":"1557-7392","type":"electronic"}],"subject":[],"published":{"date-parts":[[2025,4,26]]},"assertion":[{"value":"2024-04-17","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2024-10-11","order":2,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2025-04-26","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}