# Compatibility This file is the canonical resource for compatibility goals for the libraries that make up Sinon.JS. ## Moving target: ES2023+ Sinon has historically been written as [ES5][es5], but starting from Sinon 10 (March 2021) we made the breaking change to allow more modern ECMAScript versions, starting with ECMAScript [2017][es2017]. This is not a fixed level: it will change in time without us updating it here (though we might, from time to time). The source version requires no transpiler or polyfills in supporting runtimes. For legacy runtimes, a transpiler can be used by dependent projects, but use of newer APIs might break. If you need to support older browsers, have a look at Sinon 9. ## Runtimes Sinon.JS aims at supporting the following runtimes (from our shared [eslint-config][shared-config]). ``` > 0.5% last 2 versions Firefox ESR not dead not IE 11 not op_mini all maintained node versions ``` The compatibility is enforced using [`eslint-plugin-compat`](https://www.npmjs.com/package/eslint-plugin-compat). To see what that means in practice, you can use https://browserslist.dev
## Previous supported Node.js The following table serves as an orientation if support for an older unsupported Node.js version is required. | Sinon.JS | supported Node.js | | :------: | :---------------: | | 18 | 18, 20, 22 | | 17 | 18, 20 | | 16 | 16, 18, 20 | | 15 | 14, 16, 18 | | 14 | 14, 16, 18 | | 13 | 12, 14, 16 | | 12 | 12, 14, 16 | | 11 | 12, 14 | | 10 | 10, 12, 14 | | 9 | 10, 12 | | 8 | 8, 10, 12 | [es5]: http://www.ecma-international.org/ecma-262/5.1/ [es2017]: https://262.ecma-international.org/8.0/ [shared-config]: https://github.com/sinonjs/eslint-config