1. 1. Changelog
    1. 1.1. v4.0.5 - 2025-11-17
      1. 1.1.1. Commits
    2. 1.2. v4.0.4 - 2025-07-16
      1. 1.2.1. Commits
    3. 1.3. v4.0.3 - 2025-06-05
      1. 1.3.1. Fixed
      2. 1.3.2. Commits
    4. 1.4. v4.0.2 - 2025-02-14
      1. 1.4.1. Merged
      2. 1.4.2. Fixed
      3. 1.4.3. Commits
    5. 1.5. v4.0.1 - 2024-10-10
      1. 1.5.1. Commits
    6. 1.6. v4.0.0 - 2021-02-15
      1. 1.6.1. Merged
      2. 1.6.2. Commits
    7. 1.7. v3.0.4 - 2025-07-16
      1. 1.7.1. Fixed
      2. 1.7.2. Commits
    8. 1.8. v3.0.3 - 2025-02-14
      1. 1.8.1. Merged
      2. 1.8.2. Fixed
      3. 1.8.3. Commits
    9. 1.9. v3.0.2 - 2024-10-10
      1. 1.9.1. Merged
      2. 1.9.2. Commits
    10. 1.10. v3.0.1 - 2021-02-15
      1. 1.10.1. Merged
      2. 1.10.2. Commits
    11. 1.11. v3.0.0 - 2019-11-05
      1. 1.11.1. Merged
      2. 1.11.2. Fixed
      3. 1.11.3. Commits
    12. 1.12. v2.5.5 - 2025-07-18
      1. 1.12.1. Commits
    13. 1.13. v2.5.4 - 2025-07-17
      1. 1.13.1. Fixed
      2. 1.13.2. Commits
    14. 1.14. v2.5.3 - 2025-02-14
      1. 1.14.1. Merged
      2. 1.14.2. Fixed
      3. 1.14.3. Commits
    15. 1.15. v2.5.2 - 2024-10-10
      1. 1.15.1. Merged
      2. 1.15.2. Commits
    16. 1.16. v2.5.1 - 2019-08-28
      1. 1.16.1. Merged
      2. 1.16.2. Commits
    17. 1.17. v2.5.0 - 2019-07-03
      1. 1.17.1. Merged
      2. 1.17.2. Commits
    18. 1.18. v2.4.0 - 2019-06-19
      1. 1.18.1. Merged
      2. 1.18.2. Commits
    19. 1.19. v2.3.2 - 2018-02-13
      1. 1.19.1. Merged
      2. 1.19.2. Commits
    20. 1.20. v2.3.1 - 2017-08-24
      1. 1.20.1. Commits
    21. 1.21. v2.3.0 - 2017-08-24
      1. 1.21.1. Merged
      2. 1.21.2. Commits
    22. 1.22. v2.2.0 - 2017-06-11
      1. 1.22.1. Merged
      2. 1.22.2. Commits
    23. 1.23. v2.1.4 - 2017-04-08
    24. 1.24. 2.1.3 - 2017-04-08
    25. 1.25. v2.1.3 - 2017-04-08
      1. 1.25.1. Merged
    26. 1.26. v2.1.2 - 2016-11-07
      1. 1.26.1. Merged
      2. 1.26.2. Commits
    27. 1.27. v2.1.1 - 2016-10-03
      1. 1.27.1. Merged
      2. 1.27.2. Commits
    28. 1.28. v2.1.0 - 2016-09-25
      1. 1.28.1. Merged
      2. 1.28.2. Commits
    29. 1.29. v2.0.0 - 2016-09-16
      1. 1.29.1. Merged
      2. 1.29.2. Commits
    30. 1.30. v1.0.0 - 2016-08-26
      1. 1.30.1. Merged
      2. 1.30.2. Commits
    31. 1.31. v1.0.0-rc4 - 2016-03-15
      1. 1.31.1. Merged
      2. 1.31.2. Commits
    32. 1.32. v1.0.0-rc3 - 2015-07-29
      1. 1.32.1. Merged
      2. 1.32.2. Commits
    33. 1.33. v1.0.0-rc2 - 2015-07-21
      1. 1.33.1. Merged
      2. 1.33.2. Commits
    34. 1.34. v1.0.0-rc1 - 2015-06-13
      1. 1.34.1. Merged
      2. 1.34.2. Commits
    35. 1.35. 0.2 - 2014-12-06
      1. 1.35.1. Merged
    36. 1.36. 0.1.4 - 2014-06-23
      1. 1.36.1. Merged
    37. 1.37. 0.1.3 - 2014-06-17
      1. 1.37.1. Merged
      2. 1.37.2. Commits
    38. 1.38. 0.1.2 - 2013-10-02
      1. 1.38.1. Merged
      2. 1.38.2. Commits
    39. 1.39. 0.1.1 - 2013-08-21
      1. 1.39.1. Merged
      2. 1.39.2. Commits
    40. 1.40. 0.1.0 - 2013-07-08
      1. 1.40.1. Merged
      2. 1.40.2. Commits
    41. 1.41. 0.0.10 - 2013-05-08
      1. 1.41.1. Commits
    42. 1.42. 0.0.9 - 2013-04-29
      1. 1.42.1. Merged
      2. 1.42.2. Fixed
      3. 1.42.3. Commits

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.5 - 2025-11-17

Commits

  • [Tests] Switch to newer v8 prediction library; enable node 24 testing 16e0076
  • [Dev Deps] update @ljharb/eslint-config, eslint 5822467
  • [Fix] set Symbol.toStringTag in the proper place 76d0dee

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.4 - 2025-07-16

Fixed

  • [Fix] append: avoid a crash on nullish values #577

Commits

  • [eslint] update linting config f5e7eb0
  • [meta] add auto-changelog d2eb290
  • [Tests] handle predict-v8-randomness failures in node < 17 and node > 23 e8c574c
  • [Fix] Switch to using crypto random for boundary values c6ced61
  • [Refactor] use hasown 1a78b5d
  • [Fix] validate boundary type in setBoundary() method 70bbaa0
  • [Tests] add tests to check the behavior of getBoundary with non-strings b22a64e
  • [meta] actually ensure the readme backup isn’t published 0150851
  • [meta] remove local commit hooks fc42bb9
  • [Dev Deps] remove unused deps a14d09e
  • [meta] fix scripts to use prepublishOnly 11d9f73
  • [meta] fix readme capitalization fc38b48

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.5 - 2025-07-18

Commits

  • [meta] actually ensure the readme backup isn’t published 10626c0
  • [Fix] use proper dependency 026abe5

v2.5.4 - 2025-07-17

Fixed

  • [Fix] append: avoid a crash on nullish values #577

Commits

  • [eslint] update linting config 8bf2492
  • [meta] add auto-changelog b5101ad
  • [Tests] handle predict-v8-randomness failures in node < 17 and node > 23 0e93122
  • [Fix] Switch to using crypto random for boundary values b88316c
  • [Fix] validate boundary type in setBoundary() method 131ae5e
  • [Tests] Switch to newer v8 prediction library; enable node 24 testing c97cfbe
  • [Refactor] use hasown 97ac9c2
  • [meta] remove local commit hooks be99d4e
  • [Dev Deps] remove unused deps ddbc89b
  • [meta] fix scripts to use prepublishOnly e351a97
  • [Dev Deps] remove unused script 8f23366
  • [Dev Deps] add missing peer dep 02ff026
  • [meta] fix readme capitalization 2fd5f61

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
  • 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

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

v1.0.0-rc4 - 2016-03-15

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

v1.0.0-rc3 - 2015-07-29

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

v1.0.0-rc2 - 2015-07-21

Merged

  • #109 Append proper line break #123
  • Add shim for browser (browserify/webpack). #122
  • Update license field #115

Commits

v1.0.0-rc1 - 2015-06-13

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

  • #47 return request from .submit() 1d61c2d
  • #47 Updated readme. e3dae15

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

  • Add MIT license #14

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