Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog
and this project adheres to Semantic Versioning.
v4.0.4 - 2025-07-16
Commits
- [meta] add 
auto-changelog 811f682 
- [Tests] handle predict-v8-randomness failures in node < 17 and node > 23 
1d11a76 
- [Fix] Switch to using 
crypto random for boundary values 3d17230 
- [Tests] fix linting errors 
5e34080 
- [meta] actually ensure the readme backup isn’t published 
316c82b 
- [Dev Deps] update 
@ljharb/eslint-config 58c25d7 
- [meta] fix readme capitalization 
2300ca1 
v4.0.3 - 2025-06-05
Fixed
- [Fix] 
append: avoid a crash on nullish values #577 
Commits
- [eslint] use a shared config 
426ba9a 
- [eslint] fix some spacing issues 
2094191 
- [Refactor] use 
hasown 81ab41b 
- [Fix] validate boundary type in 
setBoundary() method 8d8e469 
- [Tests] add tests to check the behavior of 
getBoundary with non-strings 837b8a1 
- [Dev Deps] remove unused deps 
870e4e6 
- [meta] remove local commit hooks 
e6e83cc 
- [Dev Deps] update 
eslint 4066fd6 
- [meta] fix scripts to use prepublishOnly 
c4bbb13 
v4.0.2 - 2025-02-14
Merged
- [Fix] set 
Symbol.toStringTag when available #573 
- [Fix] set 
Symbol.toStringTag when available #573 
- fix (npmignore): ignore temporary build files 
#532 
- fix (npmignore): ignore temporary build files 
#532 
Fixed
- [Fix] set 
Symbol.toStringTag when available (#573) #396 
- [Fix] set 
Symbol.toStringTag when available (#573) #396 
- [Fix] set 
Symbol.toStringTag when available #396 
Commits
- Merge tags v2.5.3 and v3.0.3 
92613b9 
- [Tests] migrate from travis to GHA 
806eda7 
- [Tests] migrate from travis to GHA 
8fdb3bc 
- [Refactor] use 
Object.prototype.hasOwnProperty.call 7fecefe 
- [Refactor] use 
Object.prototype.hasOwnProperty.call 6e682d4 
- [Refactor] use 
Object.prototype.hasOwnProperty.call df3c1e6 
- [Dev Deps] update 
@types/node, browserify, coveralls, cross-spawn, eslint, formidable, in-publish, pkgfiles, pre-commit, puppeteer, request, tape, typescript 8261fcb 
- [Dev Deps] update 
@types/node, browserify, coveralls, cross-spawn, eslint, formidable, in-publish, pkgfiles, pre-commit, puppeteer, request, tape, typescript fb66cb7 
- [Dev Deps] update 
@types/node, browserify, coveralls, eslint, formidable, in-publish, phantomjs-prebuilt, pkgfiles, pre-commit, request, tape, typescript 819f6b7 
- [eslint] clean up ignores 
3217b3d 
- [eslint] clean up ignores 
3a9d480 
- [Fix] 
Buffer.from and Buffer.alloc require node 4+ c499f76 
- Only apps should have lockfiles 
b82f590 
- Only apps should have lockfiles 
b170ee2 
- [Deps] update 
combined-stream, mime-types 6b1ca1d 
- [Dev Deps] pin 
request which via tough-cookie ^2.4 depends on psl e5df7f2 
- [Deps] update 
mime-types 5a5bafe 
- Bumped version 2.5.3 
9457283 
- [Dev Deps] pin 
request which via tough-cookie ^2.4 depends on psl 9dbe192 
- Merge tags v2.5.2 and v3.0.2 
d53265d 
- Bumped version  2.5.2 
7020dd4 
- [Dev Deps] downgrade 
cross-spawn 3fc1a9b 
- fix: move util.isArray to Array.isArray (#564) 
edb555a 
- fix: move util.isArray to Array.isArray (#564) 
10418d1 
v4.0.1 - 2024-10-10
Commits
- [Tests] migrate from travis to GHA 
757b4e3 
- [eslint] clean up ignores 
e8f0d80 
- fix (npmignore): ignore temporary build files 
335ad19 
- fix: move util.isArray to Array.isArray 
440d3be 
v4.0.0 - 2021-02-15
Merged
- Handle custom stream 
#382 
Commits
v3.0.3 - 2025-02-14
Merged
- [Fix] set 
Symbol.toStringTag when available #573 
Fixed
- [Fix] set 
Symbol.toStringTag when available (#573) #396 
Commits
- [Refactor] use 
Object.prototype.hasOwnProperty.call 7fecefe 
- [Dev Deps] update 
@types/node, browserify, coveralls, cross-spawn, eslint, formidable, in-publish, pkgfiles, pre-commit, puppeteer, request, tape, typescript 8261fcb 
- Only apps should have lockfiles 
b82f590 
- [Dev Deps] pin 
request which via tough-cookie ^2.4 depends on psl e5df7f2 
- [Deps] update 
mime-types 5a5bafe 
v3.0.2 - 2024-10-10
Merged
- fix (npmignore): ignore temporary build files 
#532 
Commits
- [Tests] migrate from travis to GHA 
8fdb3bc 
- [eslint] clean up ignores 
3217b3d 
- fix: move util.isArray to Array.isArray (#564) 
edb555a 
v3.0.1 - 2021-02-15
Merged
- Fix typo: ads -> adds 
#451 
Commits
- feat: add setBoundary method 
55d90ce 
v3.0.0 - 2019-11-05
Merged
- Update Readme.md 
#449 
- Update package.json 
#448 
- fix memory leak 
#447 
- form-data: Replaced PhantomJS Dependency 
#442 
- Fix constructor options in Typescript definitions 
#446 
- Fix the getHeaders method signatures 
#434 
- Update combined-stream (fixes #422) 
#424 
Fixed
- Merge pull request #424 from botgram/update-combined-stream 
#422 
- Update combined-stream (fixes #422) 
#422 
Commits
- Add readable stream options to constructor type 
80c8f74 
- Fixed: getHeaders method signatures 
f4ca7f8 
- Pass options to constructor if not used with new 
4bde68e 
- Make userHeaders optional 
2b4e478 
v2.5.3 - 2025-02-14
Merged
- [Fix] set 
Symbol.toStringTag when available #573 
Fixed
- [Fix] set 
Symbol.toStringTag when available (#573) #396 
Commits
- [Refactor] use 
Object.prototype.hasOwnProperty.call 6e682d4 
- [Dev Deps] update 
@types/node, browserify, coveralls, eslint, formidable, in-publish, phantomjs-prebuilt, pkgfiles, pre-commit, request, tape, typescript 819f6b7 
- Only apps should have lockfiles 
b170ee2 
- [Deps] update 
combined-stream, mime-types 6b1ca1d 
- Bumped version 2.5.3 
9457283 
- [Dev Deps] pin 
request which via tough-cookie ^2.4 depends on psl 9dbe192 
v2.5.2 - 2024-10-10
Merged
- fix (npmignore): ignore temporary build files 
#532 
Commits
- [Tests] migrate from travis to GHA 
806eda7 
- [eslint] clean up ignores 
3a9d480 
- [Fix] 
Buffer.from and Buffer.alloc require node 4+ c499f76 
- Bumped version  2.5.2 
7020dd4 
- [Dev Deps] downgrade 
cross-spawn 3fc1a9b 
- fix: move util.isArray to Array.isArray (#564) 
10418d1 
v2.5.1 - 2019-08-28
Merged
- Fix error in callback signatures 
#435 
- -Fixed: Eerror in the documentations as indicated in #439 
#440 
- Add constructor options to TypeScript defs 
#437 
Commits
- Add remaining combined-stream options to typedef 
4d41a32 
- Bumped version 2.5.1 
8ce81f5 
- Bump rimraf to 2.7.1 
a6bc2d4 
v2.5.0 - 2019-07-03
Merged
- - Added: public methods with information and examples to readme 
#429 
- chore: move @types/node to devDep 
#431 
- Switched windows tests from AppVeyor to Travis 
#430 
- feat(typings): migrate TS typings #427 
#428 
- enhance the method of path.basename, handle undefined case 
#421 
Commits
- - Added: public methods with information and examples to the readme file. 
21323f3 
- feat(typings): migrate TS typings 
a3c0142 
- - Fixed: Typos 
37350fa 
- Switched to Travis Windows from Appveyor 
fc61c73 
- - Fixed: rendering of subheaders 
e93ed8d 
- Updated deps and readme 
e3d8628 
- Updated dependencies 
19add50 
- Bumped version to 2.5.0 
905f173 
- - Fixed: filesize is not a valid option? knownLength should be used for streams 
d88f912 
- Bump notion of modern node to node8 
508b626 
- enhance the method of path.basename 
faaa68a 
v2.4.0 - 2019-06-19
Merged
- Added "getBuffer" method and updated certificates 
#419 
- docs(readme): add axios integration document 
#425 
- Allow newer versions of combined-stream 
#402 
Commits
v2.3.2 - 2018-02-13
Merged
- Pulling in fixed combined-stream 
#379 
Commits
- All the dev dependencies are breaking in old versions of node :'( 
c7dba6a 
- Updated badges 
19b6c7a 
- Try tests in node@4 
872a326 
- Pull in final version 
9d44871 
v2.3.1 - 2017-08-24
Commits
- Updated readme with custom options example 
8e0a569 
- Added support (tests) for node 8 
d1d6f4a 
v2.3.0 - 2017-08-24
Merged
- Added custom 
options support #368 
- Allow form.submit with url string param to use https 
#249 
- Proper header production 
#357 
- Fix wrong MIME type in example 
#285 
Commits
- allow form.submit with url string param to use https 
c0390dc 
- update tests for url parsing 
eec0e80 
- Uses for in to assign properties instead of Object.assign 
f6854ed 
- Adds test to check for option override 
61762f2 
- Removes the 2mb maxDataSize limitation 
dc171c3 
- Ignore .DS_Store 
e8a05d3 
v2.2.0 - 2017-06-11
Merged
- Filename can be a nested path 
#355 
Commits
v2.1.4 - 2017-04-08
2.1.3 - 2017-04-08
v2.1.3 - 2017-04-08
Merged
- toString should output '[object FormData]' 
#346 
v2.1.2 - 2016-11-07
Merged
- #271 Added check for self and window objects + tests 
#282 
Commits
- Added check for self and window objects + tests 
c99e4ec 
v2.1.1 - 2016-10-03
Merged
- Bumped dependencies. 
#270 
- Update browser.js shim to use self instead of window 
#267 
- Boilerplate code rediction 
#265 
- eslint@3.7.0 
#266 
Commits
- code duplicates removed 
e9239fb 
- Changed according to requests 
aa99246 
- chore(package): update eslint to version 3.7.0 
090a859 
v2.1.0 - 2016-09-25
Merged
- Added 
hasKnownLength public method #263 
Commits
- Added hasKnownLength public method 
655b959 
v2.0.0 - 2016-09-16
Merged
- Replaced async with asynckit 
#258 
- Pre-release house cleaning 
#247 
Commits
- Replaced async with asynckit. Modernized 
1749b78 
- Ignore .bak files 
c08190a 
- Trying to be more chatty. :) 
c79eabb 
v1.0.0 - 2016-08-26
Merged
- Allow custom header fields to be set as an object. 
#190 
- v1.0.0-rc4 
#182 
- Avoid undefined variable reference in older browsers 
#176 
- More housecleaning 
#164 
- More cleanup 
#159 
- Added windows testing. Some cleanup. 
#158 
- Housecleaning. Added test coverage. 
#156 
- Second iteration of cleanup. 
#145 
Commits
Merged
- Housecleaning, preparing for the release 
#144 
- lib: emit error when failing to get length 
#127 
- Cleaning up for Codacity 2. 
#143 
- Cleaned up codacity concerns. 
#142 
- Should throw type error without new operator. 
#129 
Commits
- More cleanup 
94b6565 
- Shuffling things around 
3c2f172 
- Second iteration of cleanup. 
347c88e 
- Housecleaning 
c335610 
- More housecleaning 
f573321 
- Trying to make far run on windows. + cleanup 
e426dfc 
- Playing with appveyor 
c9458a7 
- Updated dev dependencies. 
ceebe88 
- Replaced win-spawn with cross-spawn 
405a69e 
- Updated readme badges. 
12f282a 
- Making paths windows friendly. 
f4bddc5 
- [WIP] trying things for greater sanity 
8ad1f02 
- Bending under Codacy 
bfff3bb 
- Another attempt to make windows friendly 
f3eb628 
- Updated dependencies. 
f73996e 
- Missed travis changes. 
67ee79f 
- Restructured badges. 
48444a1 
- Add similar type error as the browser for attempting to use form-data without new. 
5711320 
- Took out codeclimate-test-reporter 
a7e0c65 
- One more 
8e84cff 
Merged
- House cleaning. Added 
pre-commit. #140 
- Allow custom content-type without setting a filename. 
#138 
- Add node-fetch to alternative submission methods. 
#132 
- Update dependencies 
#130 
- Switching to container based TravisCI 
#136 
- Default content-type to 'application/octect-stream' 
#128 
- Allow filename as third option of .append 
#125 
Commits
- Allow custom content-type without setting a filename 
c8a77cc 
- Fixed ranged test. 
a5ac58c 
- Allow filename as third option of #append 
d081005 
- Allow custom content-type without setting a filename 
8cb9709 
Merged
- #109 Append proper line break 
#123 
- Add shim for browser (browserify/webpack). 
#122 
- Update license field 
#115 
Commits
Merged
- v1.0.0-rc1 
#114 
- Updated test targets 
#102 
- Remove duplicate plus sign 
#94 
Commits
- Made https test local. Updated deps. 
afe1959 
- Proper self-signed ssl 
4d5ec50 
- Update HTTPS handling for modern days 
2c11b01 
- Made tests more local 
09633fa 
- Auto create tmp folder for Formidable 
28714b7 
- remove duplicate plus sign 
36e09c6 
0.2 - 2014-12-06
Merged
- Bumped version 
#96 
- Replace mime library. 
#95 
- #71 Respect bytes range in a read stream. 
#73 
0.1.4 - 2014-06-23
Merged
- Updated version. 
#76 
- #71 Respect bytes range in a read stream. 
#75 
0.1.3 - 2014-06-17
Merged
- Updated versions. 
#69 
- Added custom headers support 
#60 
- Added test for Request. Small fixes. 
#56 
Commits
- Added test for the custom header functionality 
bd50685 
- Documented custom headers option 
77a024a 
- Removed 0.6 support. 
aee8dce 
0.1.2 - 2013-10-02
Merged
- Fixed default https port assignment, added tests. 
#52 
- #45 Added tests for multi-submit. Updated readme. 
#49 
- #47 return request from .submit() 
#48 
Commits
0.1.1 - 2013-08-21
Merged
- Added license type and reference to package.json 
#46 
Commits
0.1.0 - 2013-07-08
Merged
- Update master to 0.1.0 
#44 
- 0.1.0 - Added error handling. Streamlined edge cases behavior. 
#43 
- Pointed badges back to mothership. 
#39 
- Updated node-fake to support 0.11 tests. 
#37 
- Updated tests to play nice with 0.10 
#36 
- #32 Added .npmignore 
#34 
- Spring cleaning 
#30 
Commits
- Added error handling. Streamlined edge cases behavior. 
4da496e 
- Made tests more deterministic. 
7fc009b 
- Fixed styling. 
d373b41 
- #40 Updated Readme.md regarding getLengthSync() 
efb373f 
- Updated readme. 
527e3a6 
0.0.10 - 2013-05-08
Commits
- Updated tests to play nice with 0.10. 
932b39b 
- Added dependency tracking. 
3131d7f 
0.0.9 - 2013-04-29
Merged
- Custom params for form.submit() should cover most edge cases. 
#22 
- Updated Readme and version number. 
#20 
- Allow custom headers and pre-known length in parts 
#17 
- Bumped version number. 
#12 
- Fix for #10 
#11 
- Bumped version number. 
#8 
- Added support for https destination, http-response and mikeal's request streams. 
#7 
- Updated git url. 
#6 
- Version bump. 
#5 
- Changes to support custom content-type and getLengthSync. 
#4 
- make .submit(url) use host from url, not 'localhost' 
#2 
- Make package.json JSON  
#1 
Fixed
Commits
- Spring cleaning. 
850ba1b 
- Added custom request params to form.submit(). Made tests more stable. 
de3502f 
- Basic form (no files) working 
6ffdc34 
- Got initial test to pass 
9a59d08 
- Implement initial getLength 
9060c91 
- Make getLength work with file streams 
6f6b1e9 
- Implemented a simplistic submit() function 
41e9cc1 
- added test for custom headers and content-length in parts (felixge/node-form-data/17) 
b16d14e 
- Fixed code styling. 
5847424 
- #29 Added custom filename and content-type options to support identity-less streams. 
adf8b4a 
- Initial Readme and package.json 
8c744e5 
- allow append() to completely override header and boundary 
3fb2ad4 
- Syntax highlighting 
ab3a6a5 
- Updated Readme.md 
de8f441 
- Added examples to Readme file. 
c406ac9 
- pass options.knownLength to set length at beginning, w/o waiting for async size calculation 
e2ac039 
- Updated dependencies and added test command. 
09bd7cd 
- Bumped version. Updated readme. 
4581140 
- Test runner 
1707ebb 
- Added .npmignore, bumped version. 
2e033e0 
- FormData.prototype.append takes and passes along options (for header) 
b519203 
- Make package.json JSON 
bf1b58d 
- Add dependencies to package.json 
7413d0b 
- Add convenient submit() interface 
55855e4 
- Fix content type 
08b6ae3 
- Combatting travis rvm calls. 
409adfd 
- Fixed Issue #2 
b3a5d66 
- Fix for #10. 
bab70b9 
- Trying workarounds for formidable - 0.6 "love". 
25782a3 
- change whitespace to conform with felixge's style guide 
9fa34f4 
- Add async to deps 
b7d1a6b 
- typo 
7860a9c 
- Bumped version. 
fa36c1b 
- Updated .gitignore 
de567bd 
- Don't rely on resume() being called by pipe 
1deae47 
- One more wrong content type 
28f166d 
- Another typo 
b959b6a 
- Typo 
698fa0a 
- Being simply dumb. 
b614db8 
- Fixed typo in the filename. 
30af6be