4c50445a9a
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | Pending | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---|---|---|---| | [node](https://togithub.com/nodejs/node) | | minor | `18.17.1` -> `18.18.0` | | [![age](https://developer.mend.io/api/mc/badges/age/github-tags/node/v18.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/github-tags/node/v18.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/github-tags/node/18.17.1/v18.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/github-tags/node/18.17.1/v18.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@types/node](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped)) | devDependencies | patch | [`18.17.15` -> `18.17.18`](https://renovatebot.com/diffs/npm/@types%2fnode/18.17.15/18.17.18) | `18.18.1` (+2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/18.17.18?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/18.17.18?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/18.17.15/18.17.18?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/18.17.15/18.17.18?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>nodejs/node (node)</summary> ### [`v18.18.0`](https://togithub.com/nodejs/node/releases/tag/v18.18.0): 2023-09-18, Version 18.18.0 'Hydrogen' (LTS), @​ruyadorno [Compare Source](https://togithub.com/nodejs/node/compare/v18.17.1...v18.18.0) ##### Notable Changes - \[[`7dc731d4bf`](https://togithub.com/nodejs/node/commit/7dc731d4bf)] - **build**: sync libuv header change (Jiawen Geng) [#​48078](https://togithub.com/nodejs/node/pull/48078) - \[[`490fc004b0`](https://togithub.com/nodejs/node/commit/490fc004b0)] - **crypto**: update root certificates to NSS 3.93 (Node.js GitHub Bot) [#​49341](https://togithub.com/nodejs/node/pull/49341) - \[[`dd8cd97d4d`](https://togithub.com/nodejs/node/commit/dd8cd97d4d)] - **crypto**: update root certificates to NSS 3.90 (Node.js GitHub Bot) [#​48416](https://togithub.com/nodejs/node/pull/48416) - \[[`ea23870bec`](https://togithub.com/nodejs/node/commit/ea23870bec)] - **deps**: add missing thread-common.c in uv.gyp (Santiago Gimeno) [#​48078](https://togithub.com/nodejs/node/pull/48078) - \[[`88855e0b1b`](https://togithub.com/nodejs/node/commit/88855e0b1b)] - **deps**: upgrade to libuv 1.46.0 (Santiago Gimeno) [#​48078](https://togithub.com/nodejs/node/pull/48078) - \[[`fb2b80fca0`](https://togithub.com/nodejs/node/commit/fb2b80fca0)] - **deps**: upgrade to libuv 1.45.0 (Santiago Gimeno) [#​48078](https://togithub.com/nodejs/node/pull/48078) - \[[`249879e46c`](https://togithub.com/nodejs/node/commit/249879e46c)] - **doc**: add atlowChemi to collaborators (atlowChemi) [#​48757](https://togithub.com/nodejs/node/pull/48757) - \[[`e8dc7bde6a`](https://togithub.com/nodejs/node/commit/e8dc7bde6a)] - **doc**: add vmoroz to collaborators (Vladimir Morozov) [#​48527](https://togithub.com/nodejs/node/pull/48527) - \[[`a30f2fbcc1`](https://togithub.com/nodejs/node/commit/a30f2fbcc1)] - **doc**: add kvakil to collaborators (Keyhan Vakil) [#​48449](https://togithub.com/nodejs/node/pull/48449) - \[[`c39b7c240e`](https://togithub.com/nodejs/node/commit/c39b7c240e)] - **(SEMVER-MINOR)** **esm**: add `--import` flag (Moshe Atlow) [#​43942](https://togithub.com/nodejs/node/pull/43942) - \[[`a68a67f54d`](https://togithub.com/nodejs/node/commit/a68a67f54d)] - **(SEMVER-MINOR)** **events**: allow safely adding listener to abortSignal (Chemi Atlow) [#​48596](https://togithub.com/nodejs/node/pull/48596) - \[[`3a8586bee2`](https://togithub.com/nodejs/node/commit/3a8586bee2)] - **fs, stream**: initial `Symbol.dispose` and `Symbol.asyncDispose` support (Moshe Atlow) [#​48518](https://togithub.com/nodejs/node/pull/48518) - \[[`863bdb785d`](https://togithub.com/nodejs/node/commit/863bdb785d)] - **net**: add autoSelectFamily global getter and setter (Paolo Insogna) [#​45777](https://togithub.com/nodejs/node/pull/45777) - \[[`c59ae86ba0`](https://togithub.com/nodejs/node/commit/c59ae86ba0)] - **(SEMVER-MINOR)** **url**: add value argument to has and delete methods (Sankalp Shubham) [#​47885](https://togithub.com/nodejs/node/pull/47885) ##### Commits - \[[`d1f43317ea`](https://togithub.com/nodejs/node/commit/d1f43317ea)] - **benchmark**: add bar.R (Rafael Gonzaga) [#​47729](https://togithub.com/nodejs/node/pull/47729) - \[[`4f74be3c92`](https://togithub.com/nodejs/node/commit/4f74be3c92)] - **benchmark**: refactor crypto oneshot (Filip Skokan) [#​48267](https://togithub.com/nodejs/node/pull/48267) - \[[`fe9da9df0f`](https://togithub.com/nodejs/node/commit/fe9da9df0f)] - **benchmark**: add crypto.create\*Key (Filip Skokan) [#​48284](https://togithub.com/nodejs/node/pull/48284) - \[[`9cb18b3e9d`](https://togithub.com/nodejs/node/commit/9cb18b3e9d)] - **build**: do not pass target toolchain flags to host toolchain (Ivan Trubach) [#​48597](https://togithub.com/nodejs/node/pull/48597) - \[[`7dc731d4bf`](https://togithub.com/nodejs/node/commit/7dc731d4bf)] - **build**: sync libuv header change (Jiawen Geng) [#​48078](https://togithub.com/nodejs/node/pull/48078) - \[[`211a4f88a9`](https://togithub.com/nodejs/node/commit/211a4f88a9)] - **build**: update action to close stale PRs (Michael Dawson) [#​48196](https://togithub.com/nodejs/node/pull/48196) - \[[`cc33a1864b`](https://togithub.com/nodejs/node/commit/cc33a1864b)] - **child_process**: harden against prototype pollution (Livia Medeiros) [#​48726](https://togithub.com/nodejs/node/pull/48726) - \[[`b5df084e1e`](https://togithub.com/nodejs/node/commit/b5df084e1e)] - **child_process**: use addAbortListener (atlowChemi) [#​48550](https://togithub.com/nodejs/node/pull/48550) - \[[`611db8df1a`](https://togithub.com/nodejs/node/commit/611db8df1a)] - **child_process**: support `Symbol.dispose` (Moshe Atlow) [#​48551](https://togithub.com/nodejs/node/pull/48551) - \[[`490fc004b0`](https://togithub.com/nodejs/node/commit/490fc004b0)] - **crypto**: update root certificates to NSS 3.93 (Node.js GitHub Bot) [#​49341](https://togithub.com/nodejs/node/pull/49341) - \[[`dd8cd97d4d`](https://togithub.com/nodejs/node/commit/dd8cd97d4d)] - **crypto**: update root certificates to NSS 3.90 (Node.js GitHub Bot) [#​48416](https://togithub.com/nodejs/node/pull/48416) - \[[`b2bc839d4c`](https://togithub.com/nodejs/node/commit/b2bc839d4c)] - **crypto**: remove OPENSSL_FIPS guard for OpenSSL 3 (Richard Lau) [#​48392](https://togithub.com/nodejs/node/pull/48392) - \[[`c8da8c80b9`](https://togithub.com/nodejs/node/commit/c8da8c80b9)] - **deps**: update nghttp2 to 1.55.0 (Node.js GitHub Bot) [#​48746](https://togithub.com/nodejs/node/pull/48746) - \[[`7e04242dcb`](https://togithub.com/nodejs/node/commit/7e04242dcb)] - **deps**: update minimatch to 9.0.3 (Node.js GitHub Bot) [#​48704](https://togithub.com/nodejs/node/pull/48704) - \[[`ea23870bec`](https://togithub.com/nodejs/node/commit/ea23870bec)] - **deps**: add missing thread-common.c in uv.gyp (Santiago Gimeno) [#​48078](https://togithub.com/nodejs/node/pull/48078) - \[[`88855e0b1b`](https://togithub.com/nodejs/node/commit/88855e0b1b)] - **deps**: upgrade to libuv 1.46.0 (Santiago Gimeno) [#​48078](https://togithub.com/nodejs/node/pull/48078) - \[[`fb2b80fca0`](https://togithub.com/nodejs/node/commit/fb2b80fca0)] - **deps**: upgrade to libuv 1.45.0 (Santiago Gimeno) [#​48078](https://togithub.com/nodejs/node/pull/48078) - \[[`59fca4e09a`](https://togithub.com/nodejs/node/commit/59fca4e09a)] - **deps**: update acorn to 8.10.0 (Node.js GitHub Bot) [#​48713](https://togithub.com/nodejs/node/pull/48713) - \[[`bcb255d5a8`](https://togithub.com/nodejs/node/commit/bcb255d5a8)] - **deps**: V8: cherry-pick [`cb00db4`](https://togithub.com/nodejs/node/commit/cb00db4dba6c) (Keyhan Vakil) [#​48671](https://togithub.com/nodejs/node/pull/48671) - \[[`65a6c90fc6`](https://togithub.com/nodejs/node/commit/65a6c90fc6)] - **deps**: update acorn to 8.9.0 (Node.js GitHub Bot) [#​48484](https://togithub.com/nodejs/node/pull/48484) - \[[`6b6d5d91e9`](https://togithub.com/nodejs/node/commit/6b6d5d91e9)] - **deps**: update zlib to 1.2.13.1-motley-f81f385 (Node.js GitHub Bot) [#​48541](https://togithub.com/nodejs/node/pull/48541) - \[[`56249b0770`](https://togithub.com/nodejs/node/commit/56249b0770)] - **deps**: update googletest to [`ec4fed9`](https://togithub.com/nodejs/node/commit/ec4fed9) (Node.js GitHub Bot) [#​48538](https://togithub.com/nodejs/node/pull/48538) - \[[`8914a5204a`](https://togithub.com/nodejs/node/commit/8914a5204a)] - **deps**: update minimatch to 9.0.2 (Node.js GitHub Bot) [#​48542](https://togithub.com/nodejs/node/pull/48542) - \[[`1b960d9988`](https://togithub.com/nodejs/node/commit/1b960d9988)] - **deps**: update icu to 73.2 (Node.js GitHub Bot) [#​48502](https://togithub.com/nodejs/node/pull/48502) - \[[`f0e2e3c549`](https://togithub.com/nodejs/node/commit/f0e2e3c549)] - **deps**: update zlib to 1.2.13.1-motley-3ca9f16 (Node.js GitHub Bot) [#​48413](https://togithub.com/nodejs/node/pull/48413) - \[[`9cf8fe6b93`](https://togithub.com/nodejs/node/commit/9cf8fe6b93)] - **deps**: upgrade npm to 9.8.1 (npm team) [#​48838](https://togithub.com/nodejs/node/pull/48838) - \[[`d9ff473ff3`](https://togithub.com/nodejs/node/commit/d9ff473ff3)] - **deps**: upgrade npm to 9.8.0 (npm team) [#​48665](https://togithub.com/nodejs/node/pull/48665) - \[[`4a6177daad`](https://togithub.com/nodejs/node/commit/4a6177daad)] - **deps**: upgrade npm to 9.7.2 (npm team) [#​48514](https://togithub.com/nodejs/node/pull/48514) - \[[`104b58feb1`](https://togithub.com/nodejs/node/commit/104b58feb1)] - **deps**: update ada to 2.6.0 (Node.js GitHub Bot) [#​48896](https://togithub.com/nodejs/node/pull/48896) - \[[`7f7a125d78`](https://togithub.com/nodejs/node/commit/7f7a125d78)] - **deps**: update corepack to 0.19.0 (Node.js GitHub Bot) [#​48540](https://togithub.com/nodejs/node/pull/48540) - \[[`5e1eb451d1`](https://togithub.com/nodejs/node/commit/5e1eb451d1)] - **deps**: update corepack to 0.18.1 (Node.js GitHub Bot) [#​48483](https://togithub.com/nodejs/node/pull/48483) - \[[`3be53358bc`](https://togithub.com/nodejs/node/commit/3be53358bc)] - **deps**: add loong64 config into openssl gypi (Shi Pujin) [#​48043](https://togithub.com/nodejs/node/pull/48043) - \[[`555982c59e`](https://togithub.com/nodejs/node/commit/555982c59e)] - **deps**: upgrade npm to 9.7.1 (npm team) [#​48378](https://togithub.com/nodejs/node/pull/48378) - \[[`3c03ec0832`](https://togithub.com/nodejs/node/commit/3c03ec0832)] - **deps**: update simdutf to 3.2.14 (Node.js GitHub Bot) [#​48344](https://togithub.com/nodejs/node/pull/48344) - \[[`a2964a4583`](https://togithub.com/nodejs/node/commit/a2964a4583)] - **deps**: update ada to 2.5.1 (Node.js GitHub Bot) [#​48319](https://togithub.com/nodejs/node/pull/48319) - \[[`38f6e0d8cd`](https://togithub.com/nodejs/node/commit/38f6e0d8cd)] - **deps**: update zlib to [`982b036`](https://togithub.com/nodejs/node/commit/982b036) (Node.js GitHub Bot) [#​48327](https://togithub.com/nodejs/node/pull/48327) - \[[`f4617a4f81`](https://togithub.com/nodejs/node/commit/f4617a4f81)] - **deps**: add loongarch64 into openssl Makefile and gen openssl-loongarch64 (Shi Pujin) [#​46401](https://togithub.com/nodejs/node/pull/46401) - \[[`573eb4be12`](https://togithub.com/nodejs/node/commit/573eb4be12)] - **dgram**: socket add `asyncDispose` (atlowChemi) [#​48717](https://togithub.com/nodejs/node/pull/48717) - \[[`f3c4300e00`](https://togithub.com/nodejs/node/commit/f3c4300e00)] - **dgram**: use addAbortListener (atlowChemi) [#​48550](https://togithub.com/nodejs/node/pull/48550) - \[[`d3041df738`](https://togithub.com/nodejs/node/commit/d3041df738)] - **doc**: expand on squashing and rebasing to land a PR (Chengzhong Wu) [#​48751](https://togithub.com/nodejs/node/pull/48751) - \[[`249879e46c`](https://togithub.com/nodejs/node/commit/249879e46c)] - **doc**: add atlowChemi to collaborators (atlowChemi) [#​48757](https://togithub.com/nodejs/node/pull/48757) - \[[`42ecd46d1f`](https://togithub.com/nodejs/node/commit/42ecd46d1f)] - **doc**: fix ambiguity in http.md and https.md (an5er) [#​48692](https://togithub.com/nodejs/node/pull/48692) - \[[`e78824e053`](https://togithub.com/nodejs/node/commit/e78824e053)] - **doc**: add release key for Ulises Gascon (Ulises Gascón) [#​49196](https://togithub.com/nodejs/node/pull/49196) - \[[`1aa798d69f`](https://togithub.com/nodejs/node/commit/1aa798d69f)] - **doc**: clarify transform.\_transform() callback argument logic (Rafael Sofi-zada) [#​48680](https://togithub.com/nodejs/node/pull/48680) - \[[`d723e870a2`](https://togithub.com/nodejs/node/commit/d723e870a2)] - **doc**: mention git node release prepare (Rafael Gonzaga) [#​48644](https://togithub.com/nodejs/node/pull/48644) - \[[`a9a1394388`](https://togithub.com/nodejs/node/commit/a9a1394388)] - **doc**: fix options order (Luigi Pinca) [#​48617](https://togithub.com/nodejs/node/pull/48617) - \[[`989ea6858f`](https://togithub.com/nodejs/node/commit/989ea6858f)] - **doc**: update security release stewards (Rafael Gonzaga) [#​48569](https://togithub.com/nodejs/node/pull/48569) - \[[`f436ac1803`](https://togithub.com/nodejs/node/commit/f436ac1803)] - **doc**: update return type for describe (Shrujal Shah) [#​48572](https://togithub.com/nodejs/node/pull/48572) - \[[`fbe89e6320`](https://togithub.com/nodejs/node/commit/fbe89e6320)] - **doc**: run license-builder (github-actions\[bot]) [#​48552](https://togithub.com/nodejs/node/pull/48552) - \[[`f18b287bc3`](https://togithub.com/nodejs/node/commit/f18b287bc3)] - **doc**: add description of autoAllocateChunkSize in ReadableStream (Debadree Chatterjee) [#​48004](https://togithub.com/nodejs/node/pull/48004) - \[[`e2f3ed1444`](https://togithub.com/nodejs/node/commit/e2f3ed1444)] - **doc**: fix `filename` type in `watch` result (Dmitry Semigradsky) [#​48032](https://togithub.com/nodejs/node/pull/48032) - \[[`1fe75dc2b0`](https://togithub.com/nodejs/node/commit/1fe75dc2b0)] - **doc**: unnest `mime` and `MIMEParams` from MIMEType constructor (Dmitry Semigradsky) [#​47950](https://togithub.com/nodejs/node/pull/47950) - \[[`e1339d58e8`](https://togithub.com/nodejs/node/commit/e1339d58e8)] - **doc**: update security-release-process.md (Rafael Gonzaga) [#​48504](https://togithub.com/nodejs/node/pull/48504) - \[[`e8dc7bde6a`](https://togithub.com/nodejs/node/commit/e8dc7bde6a)] - **doc**: add vmoroz to collaborators (Vladimir Morozov) [#​48527](https://togithub.com/nodejs/node/pull/48527) - \[[`f8ba672c7b`](https://togithub.com/nodejs/node/commit/f8ba672c7b)] - **doc**: link to Runtime Keys in export conditions (Jacob Hummer) [#​48408](https://togithub.com/nodejs/node/pull/48408) - \[[`0056cb93e9`](https://togithub.com/nodejs/node/commit/0056cb93e9)] - **doc**: update fs flags documentation (sinkhaha) [#​48463](https://togithub.com/nodejs/node/pull/48463) - \[[`3cf3fb9479`](https://togithub.com/nodejs/node/commit/3cf3fb9479)] - **doc**: revise `error.md` introduction (Antoine du Hamel) [#​48423](https://togithub.com/nodejs/node/pull/48423) - \[[`7575d8b90e`](https://togithub.com/nodejs/node/commit/7575d8b90e)] - **doc**: add preveen-stack to triagers (Preveen P) [#​48387](https://togithub.com/nodejs/node/pull/48387) - \[[`820aa550a4`](https://togithub.com/nodejs/node/commit/820aa550a4)] - **doc**: refine when file is undefined in test events (Moshe Atlow) [#​48451](https://togithub.com/nodejs/node/pull/48451) - \[[`a30f2fbcc1`](https://togithub.com/nodejs/node/commit/a30f2fbcc1)] - **doc**: add kvakil to collaborators (Keyhan Vakil) [#​48449](https://togithub.com/nodejs/node/pull/48449) - \[[`239b4ea66f`](https://togithub.com/nodejs/node/commit/239b4ea66f)] - **doc**: mark `--import` as experimental (Moshe Atlow) [#​44067](https://togithub.com/nodejs/node/pull/44067) - \[[`2a561aefe2`](https://togithub.com/nodejs/node/commit/2a561aefe2)] - **doc**: add additional info on TSFN dispatch (Michael Dawson) [#​48367](https://togithub.com/nodejs/node/pull/48367) - \[[`5cc6eee30d`](https://togithub.com/nodejs/node/commit/5cc6eee30d)] - **doc**: add link for news from security wg (Michael Dawson) [#​48396](https://togithub.com/nodejs/node/pull/48396) - \[[`ffece88452`](https://togithub.com/nodejs/node/commit/ffece88452)] - **doc**: fix typo in events.md (Darshan Sen) [#​48436](https://togithub.com/nodejs/node/pull/48436) - \[[`06513585dc`](https://togithub.com/nodejs/node/commit/06513585dc)] - **doc**: run license-builder (github-actions\[bot]) [#​48336](https://togithub.com/nodejs/node/pull/48336) - \[[`d9a800ee5c`](https://togithub.com/nodejs/node/commit/d9a800ee5c)] - **esm**: fix emit deprecation on legacy main resolve (Antoine du Hamel) [#​48664](https://togithub.com/nodejs/node/pull/48664) - \[[`c39b7c240e`](https://togithub.com/nodejs/node/commit/c39b7c240e)] - **(SEMVER-MINOR)** **esm**: add `--import` flag (Moshe Atlow) [#​43942](https://togithub.com/nodejs/node/pull/43942) - \[[`a00464ee06`](https://togithub.com/nodejs/node/commit/a00464ee06)] - **esm**: fix specifier resolution and symlinks (Zack Newsham) [#​47674](https://togithub.com/nodejs/node/pull/47674) - \[[`3b8ec348b0`](https://togithub.com/nodejs/node/commit/3b8ec348b0)] - **events**: fix bug listenerCount don't compare wrapped listener (yuzheng14) [#​48592](https://togithub.com/nodejs/node/pull/48592) - \[[`a68a67f54d`](https://togithub.com/nodejs/node/commit/a68a67f54d)] - **(SEMVER-MINOR)** **events**: allow safely adding listener to abortSignal (Chemi Atlow) [#​48596](https://togithub.com/nodejs/node/pull/48596) - \[[`5354af3dab`](https://togithub.com/nodejs/node/commit/5354af3dab)] - **fs**: call the callback with an error if writeSync fails (killa) [#​47949](https://togithub.com/nodejs/node/pull/47949) - \[[`c3a27d1d3d`](https://togithub.com/nodejs/node/commit/c3a27d1d3d)] - **fs**: remove unneeded return statement (Luigi Pinca) [#​48526](https://togithub.com/nodejs/node/pull/48526) - \[[`3a8586bee2`](https://togithub.com/nodejs/node/commit/3a8586bee2)] - **fs, stream**: initial `Symbol.dispose` and `Symbol.asyncDispose` support (Moshe Atlow) [#​48518](https://togithub.com/nodejs/node/pull/48518) - \[[`01746c71df`](https://togithub.com/nodejs/node/commit/01746c71df)] - **http**: null the joinDuplicateHeaders property on cleanup (Luigi Pinca) [#​48608](https://togithub.com/nodejs/node/pull/48608) - \[[`d47eb73a85`](https://togithub.com/nodejs/node/commit/d47eb73a85)] - **http**: remove useless ternary in test (geekreal) [#​48481](https://togithub.com/nodejs/node/pull/48481) - \[[`977e9a38b4`](https://togithub.com/nodejs/node/commit/977e9a38b4)] - **http**: fix for handling on boot timers headers and request (Franciszek Koltuniuk) [#​48291](https://togithub.com/nodejs/node/pull/48291) - \[[`be88f7cd22`](https://togithub.com/nodejs/node/commit/be88f7cd22)] - **http2**: use addAbortListener (atlowChemi) [#​48550](https://togithub.com/nodejs/node/pull/48550) - \[[`7c7230a85c`](https://togithub.com/nodejs/node/commit/7c7230a85c)] - **http2**: send RST code 8 on AbortController signal (Devraj Mehta) [#​48573](https://togithub.com/nodejs/node/pull/48573) - \[[`f74c2fc72a`](https://togithub.com/nodejs/node/commit/f74c2fc72a)] - **lib**: use addAbortListener (atlowChemi) [#​48550](https://togithub.com/nodejs/node/pull/48550) - \[[`db355d1f37`](https://togithub.com/nodejs/node/commit/db355d1f37)] - **lib**: add option to force handling stopped events (Chemi Atlow) [#​48301](https://togithub.com/nodejs/node/pull/48301) - \[[`5d682c55a5`](https://togithub.com/nodejs/node/commit/5d682c55a5)] - **lib**: reduce url getters on `makeRequireFunction` (Yagiz Nizipli) [#​48492](https://togithub.com/nodejs/node/pull/48492) - \[[`5260f53e55`](https://togithub.com/nodejs/node/commit/5260f53e55)] - **lib**: add support for inherited custom inspection methods (Antoine du Hamel) [#​48306](https://togithub.com/nodejs/node/pull/48306) - \[[`69aaf8b1d1`](https://togithub.com/nodejs/node/commit/69aaf8b1d1)] - **lib**: remove invalid parameter to toASCII (Yagiz Nizipli) [#​48878](https://togithub.com/nodejs/node/pull/48878) - \[[`51863b80e4`](https://togithub.com/nodejs/node/commit/51863b80e4)] - **meta**: bump actions/checkout from 3.5.2 to 3.5.3 (dependabot\[bot]) [#​48625](https://togithub.com/nodejs/node/pull/48625) - \[[`7ec370991d`](https://togithub.com/nodejs/node/commit/7ec370991d)] - **meta**: bump step-security/harden-runner from 2.4.0 to 2.4.1 (dependabot\[bot]) [#​48626](https://togithub.com/nodejs/node/pull/48626) - \[[`34b8e980d4`](https://togithub.com/nodejs/node/commit/34b8e980d4)] - **meta**: bump ossf/scorecard-action from 2.1.3 to 2.2.0 (dependabot\[bot]) [#​48628](https://togithub.com/nodejs/node/pull/48628) - \[[`dfed9a7da9`](https://togithub.com/nodejs/node/commit/dfed9a7da9)] - **meta**: bump github/codeql-action from 2.3.6 to 2.20.1 (dependabot\[bot]) [#​48627](https://togithub.com/nodejs/node/pull/48627) - \[[`071eaadc5a`](https://togithub.com/nodejs/node/commit/071eaadc5a)] - **module**: add SourceMap.findOrigin (Isaac Z. Schlueter) [#​47790](https://togithub.com/nodejs/node/pull/47790) - \[[`bf1525c549`](https://togithub.com/nodejs/node/commit/bf1525c549)] - **module**: reduce url invocations in esm/load.js (Yagiz Nizipli) [#​48337](https://togithub.com/nodejs/node/pull/48337) - \[[`f8921630a2`](https://togithub.com/nodejs/node/commit/f8921630a2)] - **net**: server add `asyncDispose` (atlowChemi) [#​48717](https://togithub.com/nodejs/node/pull/48717) - \[[`b5f53d9a0b`](https://togithub.com/nodejs/node/commit/b5f53d9a0b)] - **net**: fix family autoselection SSL connection handling (Paolo Insogna) [#​48189](https://togithub.com/nodejs/node/pull/48189) - \[[`267439fc34`](https://togithub.com/nodejs/node/commit/267439fc34)] - **net**: rework autoSelectFamily implementation (Paolo Insogna) [#​46587](https://togithub.com/nodejs/node/pull/46587) - \[[`d3637cdbbf`](https://togithub.com/nodejs/node/commit/d3637cdbbf)] - **net**: fix address iteration with autoSelectFamily (Fedor Indutny) [#​48258](https://togithub.com/nodejs/node/pull/48258) - \[[`e8289a83f1`](https://togithub.com/nodejs/node/commit/e8289a83f1)] - **net**: fix family autoselection timeout handling (Paolo Insogna) [#​47860](https://togithub.com/nodejs/node/pull/47860) - \[[`863bdb785d`](https://togithub.com/nodejs/node/commit/863bdb785d)] - **net**: add autoSelectFamily global getter and setter (Paolo Insogna) [#​45777](https://togithub.com/nodejs/node/pull/45777) - \[[`04dc090bfa`](https://togithub.com/nodejs/node/commit/04dc090bfa)] - **node-api**: provide napi_define_properties fast path (Gabriel Schulhof) [#​48440](https://togithub.com/nodejs/node/pull/48440) - \[[`feb6a54dc3`](https://togithub.com/nodejs/node/commit/feb6a54dc3)] - **node-api**: implement external strings (Gabriel Schulhof) [#​48339](https://togithub.com/nodejs/node/pull/48339) - \[[`121f74c463`](https://togithub.com/nodejs/node/commit/121f74c463)] - **perf_hooks**: convert maxSize to IDL value in setResourceTimingBufferSize (Chengzhong Wu) [#​44902](https://togithub.com/nodejs/node/pull/44902) - \[[`804d880589`](https://togithub.com/nodejs/node/commit/804d880589)] - **permission**: fix data types in PrintTree (Tobias Nießen) [#​48770](https://togithub.com/nodejs/node/pull/48770) - \[[`7aaecce9bf`](https://togithub.com/nodejs/node/commit/7aaecce9bf)] - **permission**: add debug log when inserting fs nodes (Rafael Gonzaga) [#​48677](https://togithub.com/nodejs/node/pull/48677) - \[[`cb51ef2905`](https://togithub.com/nodejs/node/commit/cb51ef2905)] - **readline**: use addAbortListener (atlowChemi) [#​48550](https://togithub.com/nodejs/node/pull/48550) - \[[`07065d0814`](https://togithub.com/nodejs/node/commit/07065d0814)] - **report**: disable js stack when no context is entered (Chengzhong Wu) [#​48495](https://togithub.com/nodejs/node/pull/48495) - \[[`572b82ffef`](https://togithub.com/nodejs/node/commit/572b82ffef)] - **src**: make BaseObject iteration order deterministic (Joyee Cheung) [#​48702](https://togithub.com/nodejs/node/pull/48702) - \[[`3f65598a41`](https://togithub.com/nodejs/node/commit/3f65598a41)] - **src**: remove kEagerCompile for CompileFunction (Keyhan Vakil) [#​48671](https://togithub.com/nodejs/node/pull/48671) - \[[`f43eacac9b`](https://togithub.com/nodejs/node/commit/f43eacac9b)] - **src**: deduplicate X509 getter implementations (Tobias Nießen) [#​48563](https://togithub.com/nodejs/node/pull/48563) - \[[`0c19621bdc`](https://togithub.com/nodejs/node/commit/0c19621bdc)] - **src**: fix uninitialized field access in AsyncHooks (Jan Olaf Krems) [#​48566](https://togithub.com/nodejs/node/pull/48566) - \[[`0c38184d62`](https://togithub.com/nodejs/node/commit/0c38184d62)] - **src**: fix Coverity issue regarding unnecessary copy (Yagiz Nizipli) [#​48565](https://togithub.com/nodejs/node/pull/48565) - \[[`0d73009ba3`](https://togithub.com/nodejs/node/commit/0d73009ba3)] - **src**: refactor `SplitString` in util (Yagiz Nizipli) [#​48491](https://togithub.com/nodejs/node/pull/48491) - \[[`6c72622df9`](https://togithub.com/nodejs/node/commit/6c72622df9)] - **src**: handle wasm out of bound in osx will raise SIGBUS correctly (Congcong Cai) [#​46561](https://togithub.com/nodejs/node/pull/46561) - \[[`e4261809b0`](https://togithub.com/nodejs/node/commit/e4261809b0)] - **src**: replace idna functions with ada::idna (Yagiz Nizipli) [#​47735](https://togithub.com/nodejs/node/pull/47735) - \[[`3dd82b1820`](https://togithub.com/nodejs/node/commit/3dd82b1820)] - **stream**: use addAbortListener (atlowChemi) [#​48550](https://togithub.com/nodejs/node/pull/48550) - \[[`786fbdb824`](https://togithub.com/nodejs/node/commit/786fbdb824)] - **stream**: fix premature pipeline end (Robert Nagy) [#​48435](https://togithub.com/nodejs/node/pull/48435) - \[[`c224e1b255`](https://togithub.com/nodejs/node/commit/c224e1b255)] - **stream**: fix deadlock when pipeing to full sink (Robert Nagy) [#​48691](https://togithub.com/nodejs/node/pull/48691) - \[[`2c75b9ece2`](https://togithub.com/nodejs/node/commit/2c75b9ece2)] - **test**: fix flaky test-string-decode.js on x86 (Stefan Stojanovic) [#​48750](https://togithub.com/nodejs/node/pull/48750) - \[[`279c4f64c1`](https://togithub.com/nodejs/node/commit/279c4f64c1)] - **test**: mark test-http-regr-[gh-2928](https://togithub.com/nodejs/node/issues/2928) as flaky (Joyee Cheung) [#​49565](https://togithub.com/nodejs/node/pull/49565) - \[[`01eacccd9a`](https://togithub.com/nodejs/node/commit/01eacccd9a)] - **test**: deflake test-net-throttle (Luigi Pinca) [#​48599](https://togithub.com/nodejs/node/pull/48599) - \[[`33886b271c`](https://togithub.com/nodejs/node/commit/33886b271c)] - **test**: move test-net-throttle to parallel (Luigi Pinca) [#​48599](https://togithub.com/nodejs/node/pull/48599) - \[[`a79112b5f4`](https://togithub.com/nodejs/node/commit/a79112b5f4)] - ***Revert*** "**test**: remove test-crypto-keygen flaky designation" (Luigi Pinca) [#​48652](https://togithub.com/nodejs/node/pull/48652) - \[[`6ec57984db`](https://togithub.com/nodejs/node/commit/6ec57984db)] - **test**: add missing assertions to test-runner-cli (Moshe Atlow) [#​48593](https://togithub.com/nodejs/node/pull/48593) - \[[`dd1805e802`](https://togithub.com/nodejs/node/commit/dd1805e802)] - **test**: remove test-crypto-keygen flaky designation (Luigi Pinca) [#​48575](https://togithub.com/nodejs/node/pull/48575) - \[[`df9a9afc99`](https://togithub.com/nodejs/node/commit/df9a9afc99)] - **test**: remove test-timers-immediate-queue flaky designation (Luigi Pinca) [#​48575](https://togithub.com/nodejs/node/pull/48575) - \[[`3ae96ae380`](https://togithub.com/nodejs/node/commit/3ae96ae380)] - **test**: make IsolateData per-isolate in cctest (Joyee Cheung) [#​48450](https://togithub.com/nodejs/node/pull/48450) - \[[`f2ce8e0c06`](https://togithub.com/nodejs/node/commit/f2ce8e0c06)] - **test**: define NAPI_VERSION before including node_api.h (Chengzhong Wu) [#​48376](https://togithub.com/nodejs/node/pull/48376) - \[[`13ac0a5e26`](https://togithub.com/nodejs/node/commit/13ac0a5e26)] - **test**: remove unnecessary noop function args to `mustNotCall()` (Antoine du Hamel) [#​48513](https://togithub.com/nodejs/node/pull/48513) - \[[`8fdd4c55b3`](https://togithub.com/nodejs/node/commit/8fdd4c55b3)] - **test**: skip test-runner-watch-mode on IBMi (Moshe Atlow) [#​48473](https://togithub.com/nodejs/node/pull/48473) - \[[`9d90409241`](https://togithub.com/nodejs/node/commit/9d90409241)] - **test**: fix flaky test-watch-mode (Moshe Atlow) [#​48147](https://togithub.com/nodejs/node/pull/48147) - \[[`27a4bc7c32`](https://togithub.com/nodejs/node/commit/27a4bc7c32)] - **test**: add missing \<algorithm> include for std::find (Sam James) [#​48380](https://togithub.com/nodejs/node/pull/48380) - \[[`cb92c4b9fe`](https://togithub.com/nodejs/node/commit/cb92c4b9fe)] - **test**: update url web-platform tests (Yagiz Nizipli) [#​48319](https://togithub.com/nodejs/node/pull/48319) - \[[`f35c4d3190`](https://togithub.com/nodejs/node/commit/f35c4d3190)] - **test**: ignore the copied entry_point.c (Luigi Pinca) [#​48297](https://togithub.com/nodejs/node/pull/48297) - \[[`41d1e6888f`](https://togithub.com/nodejs/node/commit/41d1e6888f)] - **test**: refactor test-gc-http-client-timeout (Luigi Pinca) [#​48292](https://togithub.com/nodejs/node/pull/48292) - \[[`125bca621a`](https://togithub.com/nodejs/node/commit/125bca621a)] - **test**: update encoding web-platform tests (Yagiz Nizipli) [#​48320](https://togithub.com/nodejs/node/pull/48320) - \[[`e9ac111d02`](https://togithub.com/nodejs/node/commit/e9ac111d02)] - **test**: update FileAPI web-platform tests (Yagiz Nizipli) [#​48322](https://togithub.com/nodejs/node/pull/48322) - \[[`3da57d17f5`](https://togithub.com/nodejs/node/commit/3da57d17f5)] - **test**: update user-timing web-platform tests (Yagiz Nizipli) [#​48321](https://togithub.com/nodejs/node/pull/48321) - \[[`c728b8a29b`](https://togithub.com/nodejs/node/commit/c728b8a29b)] - **test**: fix `test-net-autoselectfamily` for kernel without IPv6 support (Livia Medeiros) [#​45856](https://togithub.com/nodejs/node/pull/45856) - \[[`6de7aa1d19`](https://togithub.com/nodejs/node/commit/6de7aa1d19)] - **test**: move `test-tls-autoselectfamily-servername` to `test/internet` (Antoine du Hamel) [#​47029](https://togithub.com/nodejs/node/pull/47029) - \[[`2de9868292`](https://togithub.com/nodejs/node/commit/2de9868292)] - **test**: validate host with commas on url.parse (Yagiz Nizipli) [#​48878](https://togithub.com/nodejs/node/pull/48878) - \[[`e7d2e8ef2a`](https://togithub.com/nodejs/node/commit/e7d2e8ef2a)] - **test**: delete test-net-bytes-per-incoming-chunk-overhead (Michaël Zasso) [#​48811](https://togithub.com/nodejs/node/pull/48811) - \[[`f5494fa1b0`](https://togithub.com/nodejs/node/commit/f5494fa1b0)] - **test_runner**: fixed `test` shorthands return type (Shocker) [#​48555](https://togithub.com/nodejs/node/pull/48555) - \[[`7051cafdfa`](https://togithub.com/nodejs/node/commit/7051cafdfa)] - **test_runner**: make `--test-name-pattern` recursive (Moshe Atlow) [#​48382](https://togithub.com/nodejs/node/pull/48382) - \[[`f302286442`](https://togithub.com/nodejs/node/commit/f302286442)] - **test_runner**: refactor coverage report output for readability (Damien Seguin) [#​47791](https://togithub.com/nodejs/node/pull/47791) - \[[`7822a541e5`](https://togithub.com/nodejs/node/commit/7822a541e5)] - **timers**: support Symbol.dispose (Moshe Atlow) [#​48633](https://togithub.com/nodejs/node/pull/48633) - \[[`3eeca52db1`](https://togithub.com/nodejs/node/commit/3eeca52db1)] - **tls**: fix bugs of double TLS (rogertyang) [#​48969](https://togithub.com/nodejs/node/pull/48969) - \[[`4826379516`](https://togithub.com/nodejs/node/commit/4826379516)] - **tools**: run fetch_deps.py with Python 3 (Richard Lau) [#​48729](https://togithub.com/nodejs/node/pull/48729) - \[[`e2688c8d79`](https://togithub.com/nodejs/node/commit/e2688c8d79)] - **tools**: update doc to unist-util-select@5.0.0 unist-util-visit@5.0.0 (Node.js GitHub Bot) [#​48714](https://togithub.com/nodejs/node/pull/48714) - \[[`7399481096`](https://togithub.com/nodejs/node/commit/7399481096)] - **tools**: update lint-md-dependencies to rollup@3.26.2 (Node.js GitHub Bot) [#​48705](https://togithub.com/nodejs/node/pull/48705) - \[[`31c07153ce`](https://togithub.com/nodejs/node/commit/31c07153ce)] - **tools**: update eslint to 8.44.0 (Node.js GitHub Bot) [#​48632](https://togithub.com/nodejs/node/pull/48632) - \[[`4e53f51e24`](https://togithub.com/nodejs/node/commit/4e53f51e24)] - **tools**: update lint-md-dependencies to rollup@3.26.0 (Node.js GitHub Bot) [#​48631](https://togithub.com/nodejs/node/pull/48631) - \[[`7d52950a96`](https://togithub.com/nodejs/node/commit/7d52950a96)] - **tools**: update lint-md-dependencies (Node.js GitHub Bot) [#​48544](https://togithub.com/nodejs/node/pull/48544) - \[[`e168eab3ee`](https://togithub.com/nodejs/node/commit/e168eab3ee)] - **tools**: update lint-md-dependencies (Node.js GitHub Bot) [#​48486](https://togithub.com/nodejs/node/pull/48486) - \[[`9711bc24f6`](https://togithub.com/nodejs/node/commit/9711bc24f6)] - **tools**: replace sed with perl (Luigi Pinca) [#​48499](https://togithub.com/nodejs/node/pull/48499) - \[[`9c1937c0a7`](https://togithub.com/nodejs/node/commit/9c1937c0a7)] - **tools**: update eslint to 8.43.0 (Node.js GitHub Bot) [#​48487](https://togithub.com/nodejs/node/pull/48487) - \[[`9449f05ab1`](https://togithub.com/nodejs/node/commit/9449f05ab1)] - **tools**: update doc to to-vfile@8.0.0 (Node.js GitHub Bot) [#​48485](https://togithub.com/nodejs/node/pull/48485) - \[[`79dcd968b1`](https://togithub.com/nodejs/node/commit/79dcd968b1)] - **tools**: prepare tools/doc for to-vfile 8.0.0 (Rich Trott) [#​48485](https://togithub.com/nodejs/node/pull/48485) - \[[`538f388ac0`](https://togithub.com/nodejs/node/commit/538f388ac0)] - **tools**: update lint-md-dependencies (Node.js GitHub Bot) [#​48417](https://togithub.com/nodejs/node/pull/48417) - \[[`01bc10dcd5`](https://togithub.com/nodejs/node/commit/01bc10dcd5)] - **tools**: update create-or-update-pull-request-action (Richard Lau) [#​48398](https://togithub.com/nodejs/node/pull/48398) - \[[`590a072657`](https://togithub.com/nodejs/node/commit/590a072657)] - **tools**: update eslint-plugin-jsdoc (Richard Lau) [#​48393](https://togithub.com/nodejs/node/pull/48393) - \[[`6a5805491e`](https://togithub.com/nodejs/node/commit/6a5805491e)] - **tools**: update eslint to 8.42.0 (Node.js GitHub Bot) [#​48328](https://togithub.com/nodejs/node/pull/48328) - \[[`2eb13e3986`](https://togithub.com/nodejs/node/commit/2eb13e3986)] - **tools**: disable jsdoc/no-defaults rule (Luigi Pinca) [#​48328](https://togithub.com/nodejs/node/pull/48328) - \[[`3363cfa6c7`](https://togithub.com/nodejs/node/commit/3363cfa6c7)] - **typings**: remove unused primordials (Yagiz Nizipli) [#​48509](https://togithub.com/nodejs/node/pull/48509) - \[[`c59ae86ba0`](https://togithub.com/nodejs/node/commit/c59ae86ba0)] - **(SEMVER-MINOR)** **url**: add value argument to has and delete methods (Sankalp Shubham) [#​47885](https://togithub.com/nodejs/node/pull/47885) - \[[`f59c9636f4`](https://togithub.com/nodejs/node/commit/f59c9636f4)] - **url**: conform to origin getter spec changes (Yagiz Nizipli) [#​48319](https://togithub.com/nodejs/node/pull/48319) - \[[`0beb5ab93d`](https://togithub.com/nodejs/node/commit/0beb5ab93d)] - **url**: ensure getter access do not mutate observable symbols (Antoine du Hamel) [#​48897](https://togithub.com/nodejs/node/pull/48897) - \[[`0a022c496d`](https://togithub.com/nodejs/node/commit/0a022c496d)] - **util**: use `primordials.ArrayPrototypeIndexOf` instead of mutable method (DaisyDogs07) [#​48586](https://togithub.com/nodejs/node/pull/48586) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/Unleash/unleash). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4wLjMiLCJ1cGRhdGVkSW5WZXIiOiIzNy4wLjMiLCJ0YXJnZXRCcmFuY2giOiJtYWluIn0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> |
||
---|---|---|
.do | ||
.github | ||
.husky | ||
coverage | ||
docker | ||
docs/api/oas | ||
examples | ||
frontend | ||
perf | ||
scripts | ||
src | ||
website | ||
.dockerignore | ||
.editorconfig | ||
.gitignore | ||
.lycheeignore | ||
.mergify.yml | ||
.node-version | ||
.nvmrc | ||
.prettierignore | ||
app.json | ||
biome.json | ||
CHANGELOG.md | ||
CODE_OF_CONDUCT.md | ||
CODEOWNERS | ||
CONTRIBUTING.md | ||
docker-compose.yml | ||
Dockerfile | ||
LICENSE | ||
package.json | ||
README.md | ||
renovate.json | ||
tsconfig.json | ||
USERS.md | ||
yarn.lock |
About Unleash
Unleash is an open source feature management solution. It improves the workflow of your development team and leads to quicker software delivery. Unleash increases efficiency and gives teams full control of how and when they enable new functionality for end users. Unleash lets teams ship code to production in smaller releases whenever they want.
Feature flags make it easy to test how your code works with real production data without the fear that you'll accidentally break your users' experience. It also helps your team work on multiple features in parallel without each maintaining a separate feature branch.
Unleash is the largest open source solution for feature flagging on GitHub. There are 12 official client and server SDKs and 10+ community SDKs available; you can even make your own if you want to. You can use Unleash with any language and any framework.
Get started in 2 steps
1. Start Unleash
With git
and docker
installed, it's easy to get started:
Run this script:
git clone git@github.com:Unleash/unleash.git
cd unleash
docker compose up -d
Then point your browser to localhost:4242
and log in using:
- username:
admin
- password:
unleash4all
If you'd rather run the source code in this repo directly via Node.js, see the step-by-step instructions to get up and running in the contributing guide.
2. Connect your SDK
Find your preferred SDK in our list of official SDKs and import it into your project. Follow the setup guides for your specific SDK.
If you use the docker compose file from the previous step, here's the configuration details you'll need to get going:
- For front-end SDKs, use:
- URL:
http://localhost:4242/api/frontend/
clientKey
:default:development.unleash-insecure-frontend-api-token
- URL:
- For server-side SDKs, use:
- Unleash API URL:
http://localhost:4242/api/
- API token:
default:development.unleash-insecure-api-token
- Unleash API URL:
If you use a different setup, your configuration details will most likely also be different.
Check a feature toggle
Checking the state of a feature toggle in your code is easy! The syntax will vary depending on your language, but all you need is a simple function call to check whether a toggle is available. Here's how it might look in Java:
if (unleash.isEnabled("AwesomeFeature")) {
// do new, flashy thing
} else {
// do old, boring stuff
}
Run Unleash on a service?
If you don't want to run Unleash locally, we also provide easy deployment setups for Heroku and Digital Ocean:
Configure and run Unleash anywhere
The above sections show you how to get up and running quickly and easily. When you're ready to start configuring and customizing Unleash for your own environment, check out the documentation for getting started with self-managed deployments, Unleash configuration options, or running Unleash locally via docker.
Online demo
Try out the Unleash online demo.
Community and help — sharing is caring
We know that learning a new tool can be hard and time-consuming. We have a growing community that loves to help out. Please don't hesitate to reach out for help.
💬 Join Unleash on Slack if you want ask open questions about Unleash, feature toggling or discuss these topics in general.
💻 Create a GitHub issue if you have found a bug or have ideas on how to improve Unleash.
📚 Visit the documentation for more in-depth descriptions, how-to guides, and more.
📖 Learn more about the principles of building and scaling feature flag solutions.
Contribute to Unleash
Unleash is the largest open source feature flag solution on GitHub. Building Unleash is a collaborative effort, and we owe a lot of gratitude to many smart and talented individuals. Building it together with the community ensures that we build a product that solves real problems for real people. We'd love to have your help too: Please feel free to open issues or provide pull requests.
Check out the CONTRIBUTING.md file for contribution guidelines and the Unleash developer guide for tips on environment setup, running the tests, and running Unleash from source.
Contributors
Features our users love
Flexibility and adaptability
- Get an easy overview of all feature toggles across all your environments, applications and services
- Use included activation strategies for most common use cases, or use a custom activation strategy to support any need you might have
- Organise feature toggles by feature toggle tags
- Canary releases / gradual rollouts
- Targeted releases: release features to specific users, IPs, or hostnames
- Kill switches
- A/B testing
- 2 environments
- Out-of-the-box integrations with popular tools (Slack, Microsoft Teams, Datadog) + integrate with anything with webhooks
- Dashboard for managing technical debt and stale toggles
- API-first: everything can be automated. No exceptions.
- 12 official client SDKs, and ten community-contributed client SDKs
- Run it via Docker with the official Docker image or as a pure Node.js application
Security and performance
- Privacy by design (GDPR and Schrems II). End-user data never leaves your application.
- Audit logs
- Enforce OWASP's secure headers via the strict HTTPS-only mode
- Flexible hosting options: host it on premise or in the cloud (any cloud)
- Scale the Unleash Proxy independently of the Unleash server to support any number of front-end clients without overloading your Unleash instance
Looking for more features?
If you're looking for one of the following features, please take a look at our Pro and Enterprise plans:
- role-based access control (RBAC)
- single sign-on (SSO)
- more environments
- feature toggles project support
- advanced segmentation
- additional strategy constraints
- tighter security
- more hosting options (we can even host it for you!)
Architecture
Read more in the system overview section of the Unleash documentation.
Unleash SDKs
To connect your application to Unleash you'll need to use a client SDK for your programming language.
Official server-side SDKs:
Official front-end SDKs:
The front-end SDKs connects via the Unleash Proxy in order to ensure privacy, scalability and security.
- Android Proxy SDK
- Flutter Proxy SDK
- iOS Proxy SDK
- JavaScript Proxy SDK
- React Proxy SDK
- Svelte Proxy SDK
- Vue Proxy SDK
Community SDKs:
If none of the official SDKs fit your need, there's also a number of community-developed SDKs where you might find an implementation for your preferred language (such as Elixir, Dart, Clojure, and more).
Users of Unleash
Unleash is trusted by thousands of companies all over the world.
Proud Open-Source users: (send us a message if you want to add your logo here)
Migration guides
Unleash has evolved significantly over the past few years, and we know how hard it can be to keep software up to date. If you're using the current major version, upgrading shouldn't be an issue. If you're on a previous major version, check out the Unleash migration guide!
Want to know more about Unleash?
Videos and podcasts
- The Unleash YouTube channel
- Feature toggles — Why and how to add to your software — freeCodeCamp (YouTube)
- Feature flags with Unleash — The Code Kitchen (podcast)
- Feature Flags og Unleash med Fredrik Oseberg — Utviklerpodden (podcast; Norwegian)
Articles and more
- The Unleash Blog
- Designing the Rust Unleash API client — Medium
- FeatureToggle by Martin Fowler
- Feature toggling transient errors in load tests — nrkbeta
- An Interview with Ivar of Unleash — Console
- Unleash your features gradually, slideshow/presentation by Ivar, the creator of Unleash