Weekly GitHub Report for Node: January 16, 2026 - January 23, 2026 (21:05:15)
Weekly GitHub Report for Node
Thank you for subscribing to our weekly newsletter! Each week, we deliver a comprehensive summary of your GitHub project's latest activity right to your inbox, including an overview of your project's issues, pull requests, contributors, and commit activity.
Table of Contents
I. News
1.1 Recent Version Releases:
The current version of this repository is v23.10.0
1.2 Version Information:
Released on March 13, 2025, this version introduces the --experimental-config-file feature, allowing developers to use JSON configuration files like node.config.json to simplify running tests and managing numerous flags, enhancing developer experience. Additionally, it includes updates to root certificates, new TLS and V8 methods, improved error handling, and various dependency and documentation enhancements.
II. Issues
2.1 Top 5 Active Issues:
We consider active issues to be issues that that have been commented on most frequently within the last week. Bot comments are omitted.
-
Various flaky tests when running on test-osuosl-aix72-ppc64_be-3: This issue reports on several tests exhibiting high flakiness specifically when run on the test-osuosl-aix72-ppc64_be-3 machine, causing reliability concerns and failures in node reliability reports. The reporter has identified particular tests with varying failure rates and is conducting stress tests to investigate whether the problem stems from the machine setup or the tests themselves.
- The comments discuss identifying and clearing hung node processes on the affected machine that may contribute to test failures, examining the test runner's process detection logic, and considering the impact of recent changes on test execution; ongoing stress tests show some persistent but generally low failure rates, and there is caution about killing node processes indiscriminately to avoid affecting local environments.
- Number of comments this week: 8
-
[META] [TSC-AGENDA] [HELP WANTED] Time sensitive: GitHub Actions Cache rate limits (from GitHub staff): This issue addresses the newly implemented rate limits on GitHub Actions Cache uploads to prevent service abuse and ensure availability, requiring users and library maintainers to update their workflows to handle 429 errors with proper retry logic. It also highlights the problem of cache thrashing caused by exceeding the default 10 GB cache storage per repository, leading to frequent cache evictions and reduced caching efficiency, and suggests increasing cache storage limits to mitigate this.
- The comments discuss current adherence to rate limits by certain libraries, the need for adjustments to fully comply with new limits, and the impact of cache thrashing on performance; there is also debate about whether this issue should be escalated to the TSC for funding decisions, with suggestions to first investigate optimization and capacity needs, and a call for volunteers to help address the problem.
- Number of comments this week: 6
-
[FEATURE REQUEST] socket.setTOS: This issue proposes adding two new methods,
socket.setTOSandsocket.getTOS, to allow users to set the Type Of Service (TOS) field on TCP sockets, enabling priority hints for the kernel and network switches. The discussion also addresses the challenge of providing a uniform API for both IPv4 and IPv6, suggesting that the API accept an 8-bit integer and internally handle the differences between the protocols.- The comments discuss the differences between IPv4 and IPv6 TOS handling and propose using a unified API based on RFC 2474 standards. Users express interest in working on the feature, and one contributor commits to implementing the necessary C++ bindings and exposing the functionality in the JavaScript API, planning to open a draft pull request soon.
- Number of comments this week: 6
-
t.skipdoes not invoketest.afterEach: This issue reports that when a test is skipped dynamically within its body usingt.skip(), thetest.afterEachhook is not invoked, which contradicts the expected behavior whereafterEachshould run after every test execution, including skipped ones. The user demonstrates that this behavior leads to problems in test setups that rely onbeforeEachandafterEachfor resource management, as skipping inside the test prevents necessary cleanup.- The comments agree that the current behavior is likely a bug, emphasizing that
afterEachshould always run ifbeforeEachhas run, even if the test is skipped internally viat.skip(). There is discussion about clarifying documentation and the distinction between skipping tests via options versus skipping inside the test body, with consensus that the latter should not preventafterEachfrom running. - Number of comments this week: 5
- The comments agree that the current behavior is likely a bug, emphasizing that
-
dotenv: override does not behave correctly with watch enabled: This issue reports a bug where the environment variable override behavior does not work correctly when using the
--watchflag combined with both--env-fileand--env-file-if-existsoptions, causing subsequent env files to fail to override earlier ones as documented. The problem is reproducible consistently on versions greater than or equal to 24.12.0 on Darwin platforms, and the expected behavior is that later env files should override variables set by earlier ones, matching the behavior without--watch.- The comments include confirmation that the issue persists with the specific combination of flags, updates to clarify the repro steps, and a report that recent versions appear to work correctly, though the problem remains confirmed by multiple users.
- Number of comments this week: 4
2.2 Top 5 Stale Issues:
We consider stale issues to be issues that has had no activity within the last 30 days. The team should work together to get these issues resolved and closed as soon as possible.
As of our latest update, there are no stale issues for the project this week.
2.3 Open Issues
This section lists, groups, and then summarizes issues that were created within the last week in the repository.
Issues Opened This Week: 15
Summarized Issues:
- Crash and Memory Issues: Several issues report crashes or memory exhaustion caused by improper handling of edge cases, such as sorting an object with infinite length causing out-of-memory exceptions instead of RangeErrors, and fetch() API failing to cancel ReadableStream requests on connection reset, leading to memory leaks and crashes. These problems highlight the need for more robust error handling to prevent application crashes under unusual conditions.
- [issues/61404, issues/61460]
- Environment Variable Handling: The combination of
--watchwith--env-fileand--env-file-if-existsoptions fails to override environment variables as expected, causing persistent incorrect values. This issue points to a flaw in environment file precedence logic that breaks documented behavior. - [issues/61412]
- Platform-Specific Failures and Flakiness: Multiple issues describe platform-specific problems including persistent ECONNREFUSED errors on Windows DNS resolution, Gatekeeper warnings blocking Node.js on macOS ARM64, and flaky or timeout-prone tests on AIX machines. These indicate ongoing challenges with platform compatibility and test reliability across diverse environments.
- [issues/61430, issues/61435, issues/61439, issues/61441]
- Build and Documentation Issues: Building Node.js with Ninja on Linux fails due to linker errors not seen on macOS, and the BUILDING.md documentation inaccurately states Visual Studio support by only specifying minimum versions, misleading users about compatibility with future releases. These issues call for improved build configuration and clearer documentation.
- [issues/61445, issues/61449]
- Rate Limiting and Cache Management: The introduction of a 200 cache entry upload rate limit per repository in GitHub Actions Cache causes 429 errors and cache thrashing, necessitating updates in caching libraries and recommendations to increase cache storage limits to improve efficiency.
- [issues/61436]
- Test Lifecycle and Hook Behavior: Skipping tests using
t.skipprevents thetest.afterEachhook from running, which breaks expected cleanup behavior after tests and can lead to resource leaks. This inconsistency affects test reliability and resource management. - [issues/61462]
- API and Documentation Consistency: The API documentation version header incorrectly includes a 'v' prefix, conflicting with the Node.js style guide, and a proposal suggests removing it to maintain consistency.
- [issues/61471]
- Signal Handling in Readline: A proposal to add an option to
readline.createInterfaceaims to prevent trapping SIGINT (Ctrl + C), allowing programs to terminate immediately with the correct exit code instead of treating the signal as end-of-input or throwing errors. - [issues/61487]
- Socket Options Enhancement: A feature request proposes adding
socket.setTOSandsocket.getTOSmethods to allow setting and retrieving the Type Of Service field on TCP sockets, enabling priority hints for network traffic management. - [issues/61489]
2.4 Closed Issues
This section lists, groups, and then summarizes issues that were closed within the last week in the repository. This section also links the associated pull requests if applicable.
Issues Closed This Week: 15
Summarized Issues:
- Test coverage failure due to directory naming conflict: A TypeError occurs when running tests with the
--experimental-test-coverageflag if the source code contains a directory namedfile, causing the internal test runner to misinterpret the directory as a file. This results in a failure to generate test coverage reports. - issues/61080
- SQLite
db.prepare(sql).set*method chaining enhancement: The currentdb.prepare(sql).set*functions returnundefined, preventing method chaining. The proposal is to have these functions return the SQL statement to enable concise and readable chaining of options likereturnArraysandreadBigInts. - issues/61235
fs.globSyncthrows error on non-directory paths unlike async version: The synchronousfs.globSyncmethod throws anENOTDIRerror when matching a path that is not a directory, whereas the asynchronousfs.globmethod correctly returns an empty result without error. This inconsistency causes unexpected failures in synchronous glob operations.- issues/61257
- Clarification needed for
process.argv[1]behavior in no-script modes: The Node.js documentation forprocess.argv[1]is unclear about its value when using no-script execution modes like-e/--eval. Instead of a JavaScript file path,process.argv[1]corresponds to the first unconsumed command-line argument, requiring documentation updates for accuracy. - issues/61363
isDeepStrictEqualasymmetry bug with nested Sets: TheisDeepStrictEqualfunction incorrectly returns true when comparing two different nested Sets in one order, but returns false when the comparison order is reversed. This asymmetry indicates a bug in the deep equality check implementation.- issues/61386
- Windows Dev Home deprecation and outdated BUILDING.md instructions: Microsoft Windows Dev Home has been deprecated and deactivated, making the existing instructions in BUILDING.md for using Dev Home to install prerequisites invalid. The issue suggests removing these outdated references to avoid confusion.
- issues/61424
- Inconsistent Python versions in Windows BUILDING prerequisites: The Windows BUILDING prerequisites documentation leads to different Python versions being installed depending on the installation option chosen. The issue proposes updating manual and automated install instructions to standardize on Python 3.14 for consistency.
- issues/61427
- Misleading Windows build log messages about ClangCL and Visual Studio: During the Windows build process for Node.js 24+, log messages incorrectly suggest that ClangCL is used and Visual Studio is missing, while in reality Visual Studio is found but ClangCL is absent. Clarifying these messages in the build script is proposed to prevent user confusion.
- issues/61437
- Unclear issue reference with commit hash and question about new issue: A comment references a commit hash and questions whether the original poster intended to raise a new issue, indicating possible confusion or miscommunication.
- issues/61442
- AIX configure failure with ccache due to space in
CCenvironment variable: The AIX configure step fails whenCCis set to a string containing both the ccache path and compiler command separated by a space, causing a FileNotFoundError. This is due to improper handling of the space-separated command in subprocess execution. - issues/61443
- MongoDB SRV connection DNS query failure on Windows in Node.js 24.13.0: MongoDB SRV connection attempts fail with a DNS query error on Windows platforms using Node.js version 24.13.0, despite working correctly in version 24.11.1. This regression affects database connectivity on affected systems.
- issues/61448
- AFK-related issues with no additional details: Multiple issues titled "afk bot," "AFK," and "MCAFK" were opened and closed without any additional description or comments, indicating unresolved or abandoned discussions.
- issues/61482, issues/61484, issues/61485
- Crash on custom Android Node.js build due to V8 snapshot serialization failure: A crash occurs on a custom Android build of Node.js v24.13.0 when building a V8 snapshot because of a failure in serializing global handles. The root cause was traced to a custom log module interfering with the snapshot serialization process.
- issues/61486
2.5 Issue Discussion Insights
This section will analyze the tone and sentiment of discussions within this project's open and closed issues that occurred within the past week. It aims to identify potentially heated exchanges and to maintain a constructive project environment.
Based on our analysis, there are no instances of toxic discussions in the project's open or closed issues from the past week.
III. Pull Requests
3.1 Open Pull Requests
This section provides a summary of pull requests that were opened in the repository over the past week. The top three pull requests with the highest number of commits are highlighted as 'key' pull requests. Other pull requests are grouped based on similar characteristics for easier analysis. Up to 25 pull requests are displayed in this section, while any remaining pull requests beyond this limit are omitted for brevity.
Pull Requests Opened This Week: 29
Key Open Pull Requests
1. make test fails behind a proxy: This pull request fixes the issue where running tests behind a proxy fails due to conflicts between user-defined lowercase http_proxy and https_proxy environment variables and the test settings by cleaning up the environment to ensure all proxy-related tests pass successfully.
- URL: pull/61473
2. test_runner: add experimental mock.fs API: This pull request introduces an experimental mock.fs API to the Node.js test runner, enabling tests to simulate file system operations with a virtual file system that supports synchronous, callback, and promise-based methods, isolation from the real file system, selective API mocking, and automatic cleanup, all gated behind the --experimental-test-fs-mocks flag.
- URL: pull/61468
3. test: add some validation for JSON doc output: This pull request adds validation tests for the JSON output of the documentation to prevent errors, improve confidence in switching documentation generation systems, and enforce consistency, as illustrated by the accompanying Markdown changes.
- URL: pull/61413
Other Open Pull Requests
- Virtual File System Integration: This pull request introduces a read-only virtual file system (VFS) for Node.js that integrates seamlessly with the native fs module and module loader, enabling creation of isolated in-memory file systems with full support for standard fs APIs, module loading, dynamic content, and cross-platform compatibility. It also includes integrations for Single Executable Applications and test runners to enhance usability.
- QUIC Protocol Experimental Flag: This pull request introduces and tests a new compile-time flag
--experimental-quicthat conditionally enables the QUIC protocol and its dependencies in the Node.js build system. This ensures that QUIC-related code and tools are only included when explicitly opted in, maintaining build system modularity.
- CommonJS Lexer Replacement Experiment: This pull request is an experimental attempt to replace the existing CommonJS module lexer with github.com/anonrig/commonjs-lexer to evaluate its performance impact. Despite having failing tests and not being intended for merging, it explores lexer improvements.
- Documentation Version Prefix Update: This pull request updates documentation to remove the "v" prefix from Node.js version references in text, aligning with the Node.js documentation style guide. It leaves changelog files, release notes, and other uses of the "v" prefix such as CLI outputs and API documentation unchanged.
- TextDecoder ICU Unification: This pull request unifies the ICU and no-ICU implementations of TextDecoder by adding support for a fatal UTF-8 decoder in the no-ICU version and introducing a UTF-8 fast path. It reduces source duplication, normalizes internal handle usage, and improves encoding reporting for unsupported but recognized encodings to enable further fixes and optimizations.
- Async Hooks Promise Tracking Option: This pull request introduces a new trackPromises option to the async_hooks createHook() function, allowing users to opt out of promise hooks to reduce excessive hook invocations and overhead. This effectively exposes an internal feature previously used to minimize noise during async operation debugging with the V8 inspector.
- Test Runner Dot Reporter Enhancements: This pull request enhances the dot reporter in the test_runner by adding coverage and diagnostic output for coverage threshold failures. It ensures detailed failure reasons and coverage reports are printed similar to the spec reporter, improving user visibility into test coverage issues.
- Windows DNS SRV Lookup Fix: This pull request fixes a regression in Node.js v24.13.0 on Windows that caused DNS SRV lookups to fail with
ECONNREFUSED. It updates the detection logic for the c-ares fallback resolver to correctly recognize loopback servers regardless of the port number, preventing queries to a non-listening local stub resolver.
- Test File Typo Corrections: This pull request addresses minor typographical errors in the test files to improve code clarity and correctness.
- Child Process Documentation Cleanup: This pull request cleans up the Windows example in the child_process documentation by consolidating snippets demonstrating the three ways to use
spawnandexec. It restores thespawn('cmd.exe')example, removes redundant comments and theexeccallback body, reorders examples to match the explanatory paragraph, and formats the prose into a clearer list.
- Boolean Literal Usage in TraceEnvVarOptions: This pull request updates the source code to use boolean literals instead of integer values for bit fields declared as
boolin theTraceEnvVarOptionsto ensure type consistency.
- SQLite run() Method Optimization: This pull request optimizes the SQLite
run()method by using a cachedDictionaryTemplatefor result object creation, significantly reducing allocation overhead. This improves INSERT operation performance by approximately 17–24% while leaving SELECT performance largely unchanged.
- Windows Toolchain Documentation Updates: These pull requests update the documentation for Node.js branches to restrict supported Windows toolchains. The v20.x branch restricts support to Visual Studio 2019 and 2022, excluding Visual Studio 2026 due to build failures, while the v22.x branch specifies only Visual Studio 2022 is supported, clarifying incompatibility with newer versions.
- Cryptographic Tests BoringSSL Compatibility: This pull request is an ongoing effort to adjust and update the cryptographic tests in the Node.js project to ensure compatibility and proper functionality with BoringSSL.
- Queue Recycling for Memory Optimization: This pull request aims to optimize the Node.js library by recycling queues to avoid creating unnecessary garbage in the old space, thereby improving memory management.
- V8 Components Shared libnode Tests: This pull request adds tests to verify that the V8 components (v8, libplatform, cppgc) function correctly when linked within the shared libnode binary.
- Rust Toolchain Checks for Temporal Support: This pull request adds checks for the presence and version compliance of the
cargoandrustctoolchain when building Node.js with statically linked Temporal support enabled via the--v8-enable-temporal-supportconfiguration option. It ensures these tools match the documented versions inBUILDING.md.
- SQLite NULL as Undefined Option: This pull request introduces a statement-level flag in the SQLite module that allows SQL NULL values to be read as undefined in result sets by exposing a setReadNullAsUndefined() method on StatementSync. This behavior applies to various row-reading methods without affecting function arguments or write operations.
- sccache Tool Update: This pull request updates the sccache tool to version 0.13.0, aligning with its usage in the test-shared component and addressing the absence of automated Dependabot updates for this dependency.
- NPM Dependency Fast-Track Removal: This pull request proposes to stop fast-tracking npm dependency updates in the Node.js project because such fast-track requests rarely receive approval, paradoxically causing these updates to land later rather than sooner.
- SIMDUTF for Ada URL Encoding: This pull request enables the use of simdutf for Ada in URL encoding operations to speed up performance, as demonstrated by detailed benchmark results linked in the description.
- Module Loading Wrapping Optimization: This pull request modifies the module loading mechanism to avoid wrapping
module._loadwhen tracing is not enabled, preventing the addition of unnecessary internal stack frames and simplifying step-debugging.
- ArrayBuffer Allocation Error Handling: This pull request updates the Node.js source code to throw a RangeError when ArrayBuffer BackingStore allocation fails, aligning the
ERR_MEMORY_ALLOCATION_FAILEDerror with V8's OutOfMemory error type and ECMAScript's OutOfMemoryError type. It also modifies relevant call sites outside of the crypto, TLS, and QUIC modules to properly handle this error.
- WPT Test Runner Fix for URL searchParams: This pull request fixes the WPT test runner by using a Proxy to hide the searchParams property from the location object, ensuring it conforms to the WHATWG URL specification. This allows related tests, including the 'searchParams on location object' test in historical.any.js, to pass correctly.
3.2 Closed Pull Requests
This section provides a summary of pull requests that were closed in the repository over the past week. The top three pull requests with the highest number of commits are highlighted as 'key' pull requests. Other pull requests are grouped based on similar characteristics for easier analysis. Up to 25 pull requests are displayed in this section, while any remaining pull requests beyond this limit are omitted for brevity.
Pull Requests Closed This Week: 51
Key Closed Pull Requests
1. inspector: initial support storage inspection: This pull request introduces initial support for inspecting storage within the Node.js inspector, enabling storage data to be registered and viewed in DevTools through the DOMStorage.registerStorage method, thereby enhancing debugging capabilities related to storage.
- URL: pull/61139
2. fs: add ignore option to fs.watch: This pull request introduces an ignore option to the fs.watch() function in Node.js, allowing users to filter filesystem events using string globs, regular expressions, functions, or arrays of these, and includes improvements to skip watching ignored paths to reduce resource usage, along with documentation and test updates to support this feature.
- URL: pull/61433
3. doc: clarify process.argv[1] behavior for -e/--eval: This pull request clarifies the behavior of the process.argv[1] element in Node.js when running scripts using the -e or --eval options, improving the documentation to explain how this argument is set in these script execution modes.
- URL: pull/61366
Other Closed Pull Requests
- Test runner improvements: Multiple pull requests enhance the test runner by adding features and fixing bugs. These include printing the current datetime on test restarts in watch mode and fixing rerun logic for nested ambiguous tests to ensure correct reruns and clearer output.
- pull/61160, pull/61389
- Documentation updates: Several pull requests update and clarify documentation across different areas. Changes include adding the OpenJSF handle for security stewards, clarifying TypedArray properties on Buffer, advising against using the "resume build" feature in CI, and documenting the deprecation history of
url.parse. - pull/61454, pull/61355, pull/61388, pull/61440
- Performance optimizations: Pull requests improve performance in various parts of the codebase. These include speeding up UTF-8 encoding in StringBytes::Encode and caching context lookups in vectored I/O loops to avoid repeated calls.
- pull/61131, pull/61387
- Bug fixes in core modules: Multiple fixes address bugs in core modules such as fs and assert. Fixes include handling
ENOTDIRerrors infs.globSync, removing redundant path validations in fs, and correcting deep comparison logic for Sets and Maps in assert and util modules. - pull/61259, pull/61359, pull/61388, pull/61387
- Build and tooling enhancements: Several pull requests improve build processes and tooling. These include inferring Cargo build mode from GYP variables, updating linting for Nix files with a
--ciflag, and updating Windows Python installation instructions to reflect Python 3.14 changes. - pull/61354, pull/61405, pull/61428
- WebAssembly and V8 improvements: Pull requests address WebAssembly support and V8 engine enhancements. One adds explicit WebAssembly support checks with clear errors in --jitless mode, while another adds GCProfiler support in V8 for resource management profiling.
- pull/61382, pull/61191
- New CLI and feature additions: A pull request introduces a new CLI option
--build-seathat integrates the LIEF library to generate single executable applications directly, simplifying the process and improving debugging without external tools. - pull/61167
- Benchmark and testing improvements: One pull request adds options to SQLite benchmarks to evaluate performance impacts of various database settings, while another introduces a test revealing Web Platform Tests evaluation errors for better debugging.
- pull/61401, pull/61358
- Miscellaneous fixes: Other fixes include correcting a typo in a comment, fixing issue template typos, and resolving a bug in the test runner's coverage report related to file metadata traversal.
- pull/61365, pull/61399, pull/61169
- Chrome DevTools inspector fix (unmerged): A pull request addresses an issue with compressed HTTP responses appearing garbled in Chrome DevTools by implementing proper decompression based on the content-encoding header, though it has not been merged.
- pull/61226
3.3 Pull Request Discussion Insights
This section will analyze the tone and sentiment of discussions within this project's open and closed pull requests that occurred within the past week. It aims to identify potentially heated exchanges and to maintain a constructive project environment.
Based on our analysis, there are no instances of toxic discussions in the project's open or closed pull requests from the past week.
IV. Contributors
4.1 Contributors
Active Contributors:
We consider an active contributor in this project to be any contributor who has made at least 1 commit, opened at least 1 issue, created at least 1 pull request, or made more than 2 comments in the last month.
If there are more than 10 active contributors, the list is truncated to the top 10 based on contribution metrics for better clarity.
| Contributor | Commits | Pull Requests | Issues | Comments |
|---|---|---|---|---|
| avivkeller | 0 | 0 | 0 | 55 |
| MikeMcC399 | 19 | 9 | 5 | 8 |
| aduh95 | 15 | 7 | 0 | 12 |
| Ayoub-Mabrouk | 24 | 1 | 0 | 0 |
| ljharb | 0 | 0 | 0 | 24 |
| sxa | 5 | 3 | 3 | 12 |
| mcollina | 17 | 5 | 0 | 0 |
| sozua | 8 | 1 | 0 | 13 |
| joyeecheung | 8 | 5 | 1 | 5 |
| richardlau | 1 | 1 | 0 | 13 |