Cordova Node Xcode 4.0.0 Released!
20 Oct 2026
We are happy to announce that we have just released Cordova Node Xcode 4.0.0!
This is one of the libraries used behind-the-scenes for parsing, editing, and writing xcodeproj project files.
Release Highlights
In this major release, the uuid dependency has been replaced with Node.js's built-in crypto.randomUUID() API. As a result, the minimum Node.js engine requirement has been bumped to >=14.17.0.
Support for the PBXShellScriptBuildPhase options alwaysOutOfDate and runOnlyForDeploymentPostprocessing has been added.
Additionally, the following fixes were applied:
- Shallow-merging of section properties while preserving previously parsed entries that have the same section name.
- Allow adding a
PBXBuildFileentry with thenameproperty defined whenpathis not defined. - Pathing issues on Windows.
- Ensure that the
PBXGroupobject exists before attempting to read thepathproperty.
Please report any issues you find to the Cordova Node Xcode Issue Tracker!
Changes include:
Breaking Changes:
- chore!: bump minimum Node.js engine to >=14.17.0 (#154) [1edf705]
- fix!: replace uuid dependency with crypto.randomUUID() (#153)
Features:
- feat: support for 'alwaysOutOfDate' PBX Shell Script property (#173) [04fc2dd]
- feat: add support for runOnlyForDeploymentPostprocessing (#172) [9d908c4]
- feat: add eslint w/ lint fixes (#151) [8f43d12]
- feat(ci): replace nodeunit & nyc for node:test (#150) [b27fbd4]
Fixes:
- fix: shallow-merging nested objects for split sections (#167) [e7df64a]
- fix(addBuildPhase): adding of PBXBuildFile entries to lookup table (#174) [81ddc4a]
- fix(windows): Fix path issues on Windows (#170) [2f89486]
- fix: Need to check for object existence (#112) [e81ecab]
Others:
- chore: Bump @babel/traverse from 7.18.9 to 7.23.2 [505a8d4]
- chore: Bump simple-plist from 1.1.0 to 1.3.1 (#127) [335874e]
- chore: update dependencies with npm update (#191) [ec95ec8]
- chore: action workflow updates & add dependabot (#180) [3cdce4b]
- chore: restrict writing to certain object keys (#176) [4a9fd34]
- chore: license header improvements (#169) [7e647c3]
- chore: improve ci workflow, ensure built parser committed, cleanup (#166) [ca3d1d2]
- chore: update .asf.yaml (#160) [7451fc6]
- chore: bump 4.0.0-dev.0 (#159) [bc87c09]
- chore: update release audit workflow & license headers (#146) [e6b981e]
- chore: update ci workflow (#147) [9664ef8]
- chore: clean up package.json (#115) [127a4df]
- chore(addBuildPhase): remove unused variable buildPhaseSection (#175) [780467c]
- chore(dep): update package json (#165) [35da006]
- chore(deps-dev): bump brace-expansion from 1.1.18 to 1.1.21 (#190) [74935d6]
- chore(deps-dev): bump js-yaml from 4.3.1 to 4.3.2 (#186) [6e31505]
- chore(deps-dev): bump brace-expansion from 1.1.15 to 1.1.18 (#179) [c0b7624]
- chore(deps-dev): bump js-yaml from 4.2.0 to 4.3.1 (#178) [226c345]
- chore(deps-dev): bump js-yaml from 3.14.1 to 3.14.2 (#145) [5447827]
- chore(deps): bump the gh-actions-patch-minor group with 3 updates (#192) [9df6e52]
- chore(deps): bump the gh-actions-patch-minor group with 2 updates (#189) [ff0086e]
- chore(deps): bump codecov/codecov-action (#188) [0ac3c65]
- chore(deps): bump the gh-actions-patch-minor group with 2 updates (#187) [c8e1116]
- chore(deps): bump the gh-actions-patch-minor group across 1 directory with 2 updates (#183) [3033cd8]
- chore(deps): bump @xmldom/xmldom from 0.9.10 to 0.9.12 (#185) [ca2c32a]
- chore(deps): bump codecov/codecov-action from 4.6.0 to 7.0.0 (#182) [0920ebc]
- chore(deps): bump the gh-actions-patch-minor group with 2 updates (#181) [ba44143]
- chore(deps): bump minimatch from 3.1.2 to 3.1.5 (#148) [5a20cef]
- chore(INFRA): Set up default protection ruleset for default and release branches (#155) [f9b58c4]
- chore(npm): rebuilt package-lock to v2 (#133) [659a4e7]
- chore(readme): update badges (#163) [304a309]
- chore(workflow): update upload-to-atr action (#184) [31e32fc]
- chore(workflow): update CI & use macos-26 (#164) [fd7ccf1]
- chore(workflow): pin sha & update actions [cf3d318]
- chore(workflow): pin sha & update actions [680991e]
- chore(workflow) added release draft, updated release audit, & cleanup CI (#161) [0f6e63f]
- ci: Drop NodeJS 10, 12, 14. Added 18, 20, 22 (#144) [c491d3a]
- ci: update codecov@v4 w/ token (#142) [5158ec5]
- ci: add node-14.x to workflow (#117) [8b98cab]
- chore: Increment package version to 3.0.2-dev [56b8ffd]
- Merge pull request #141 from apache/dependabot/npm_and_yarn/babel/traverse-7.23.2 [e594cd4]
- test: Ensure we wait for async project.parse (#168) [9c89212]
