Skip to content

Add Node 24 support (minimal)#19

Open
dmartin-figma wants to merge 10 commits intofigma:figmafrom
dmartin-figma:dmartin/node-24-minimal
Open

Add Node 24 support (minimal)#19
dmartin-figma wants to merge 10 commits intofigma:figmafrom
dmartin-figma:dmartin/node-24-minimal

Conversation

@dmartin-figma
Copy link
Copy Markdown

@dmartin-figma dmartin-figma commented May 7, 2026

Adds Node 24 to the test/release matrix and bumps @figma/nodegit to 0.28.0-figma.10 so subsequent tag pushes produce ABI v137 prebuilts (alongside existing 108/115/127).

Why

figma/figma is moving to Node 24 (see #768808 in the main monorepo). Cursor agents already run on Node 24 (/opt/cursor-agent/node is v24.5.0, ABI v137); the in-monorepo bot-bot CI image also moves to Node 24 with that PR. Both fail today because no v137 prebuilt exists in figma-nodegit.s3.amazonaws.com. This PR unblocks the prebuilt publish.

What

Commit Change
update test ssh key + use updated key for tests Cherry-picked from upstream (053e0bff, 35596615). Rotates the GH-quarantined SSH key + decodes from test/id_rsa.enc at runtime so secret scanning doesn't re-flag it. Required for the 3 SSH cred tests to pass.
Add Node 24 to build matrix One-line addition to the Linux + macOS matrices.
Bump C++ standard to C++20 for Node 24+ utils/defaultCxxStandard.js: select C++20 when process.versions.modules >= 137. V8 13.x's cppgc/macros.h and v8-local-handle.h require C++20 features (P0732, requires-clauses).
Switch from @axosoft/nan to upstream nan@^2.26.2 for Node 24 V8 API support @axosoft/nan@2.20 predates V8 13.x. Upstream nan@2.26.2 includes the v8::Local::GetIsolate and PropertyCallbackInfo::This() deprecation fixes. Updates binding.gyp include path accordingly.
Use clang-14 on Linux CI for Node 24 V8 C++20 features clang-10 (default in ubuntu:20.04) lacks P0732 (class template argument deduction in concepts) which V8 13.x's cppgc macros use.
Pin Linux runner to ubuntu-22.04 + Bump Linux container to ubuntu:22.04 ubuntu:20.04 container had DNS resolution issues against the ubuntu-latest host runner. ubuntu:22.04 ships clang-14 natively, eliminating the need for an extra apt repo.
Add explicit constructors to OdbObjectsData inner structs for C++20 aggregate rules C++20 tightened aggregate-init rules; CommitInfo/BlobInfo/TagInfo need explicit member ctors when paired with user-declared move constructors.
Bump to v0.28.0-figma.10 Version bump for the new tag.

Test Plan

  • Linux Tests (18, 20, 22, 24) green — confirmed in Add Node 24 to build matrix #18 with these same commits
  • macOS Tests (18, 20, 22, 24) green — confirmed in Add Node 24 to build matrix #18 with these same commits
  • After merge: tag v0.28.0-figma.10, verify figma-nodegit.s3.amazonaws.com/nodegit-v0.28.0-figma.10-node-v137-{linux-x64,darwin-arm64}.tar.gz published
  • Re-run figma/figma#768808's bot-bot CI to confirm Node 24 install works end-to-end

@dmartin-figma dmartin-figma marked this pull request as ready for review May 7, 2026 15:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants