• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Deprecated APIs
2
3<!--introduced_in=v7.7.0-->
4<!-- type=misc -->
5
6Node.js may deprecate APIs for any of the following reasons:
7
8* Use of the API is unsafe.
9* An improved alternative API is available.
10* Breaking changes to the API are expected in a future major release.
11
12Node.js utilizes three kinds of Deprecations:
13
14* Documentation-only
15* Runtime
16* End-of-Life
17
18A Documentation-only deprecation is one that is expressed only within the
19Node.js API docs. These generate no side-effects while running Node.js.
20Some Documentation-only deprecations trigger a runtime warning when launched
21with [`--pending-deprecation`][] flag (or its alternative,
22`NODE_PENDING_DEPRECATION=1` environment variable), similarly to Runtime
23deprecations below. Documentation-only deprecations that support that flag
24are explicitly labeled as such in the
25[list of Deprecated APIs](#deprecations_list_of_deprecated_apis).
26
27A Runtime deprecation will, by default, generate a process warning that will
28be printed to `stderr` the first time the deprecated API is used. When the
29[`--throw-deprecation`][] command-line flag is used, a Runtime deprecation will
30cause an error to be thrown.
31
32An End-of-Life deprecation is used when functionality is or will soon be removed
33from Node.js.
34
35## Revoking deprecations
36
37Occasionally, the deprecation of an API may be reversed. In such situations,
38this document will be updated with information relevant to the decision.
39However, the deprecation identifier will not be modified.
40
41## List of deprecated APIs
42
43<a id="DEP0001"></a>
44### DEP0001: `http.OutgoingMessage.prototype.flush`
45<!-- YAML
46changes:
47  - version:
48    - v4.8.6
49    - v6.12.0
50    pr-url: https://github.com/nodejs/node/pull/10116
51    description: A deprecation code has been assigned.
52  - version: v1.6.0
53    pr-url: https://github.com/nodejs/node/pull/1156
54    description: Runtime deprecation.
55-->
56
57Type: Runtime
58
59The `OutgoingMessage.prototype.flush()` method is deprecated. Use
60`OutgoingMessage.prototype.flushHeaders()` instead.
61
62<a id="DEP0002"></a>
63### DEP0002: `require('_linklist')`
64<!-- YAML
65changes:
66  - version: v8.0.0
67    pr-url: https://github.com/nodejs/node/pull/12113
68    description: End-of-Life.
69  - version: v6.12.0
70    pr-url: https://github.com/nodejs/node/pull/10116
71    description: A deprecation code has been assigned.
72  - version: v5.0.0
73    pr-url: https://github.com/nodejs/node/pull/3078
74    description: Runtime deprecation.
75-->
76
77Type: End-of-Life
78
79The `_linklist` module is deprecated. Please use a userland alternative.
80
81<a id="DEP0003"></a>
82### DEP0003: `_writableState.buffer`
83<!-- YAML
84changes:
85  - version:
86    - v4.8.6
87    - v6.12.0
88    pr-url: https://github.com/nodejs/node/pull/10116
89    description: A deprecation code has been assigned.
90  - version: v0.11.15
91    pr-url: https://github.com/nodejs/node-v0.x-archive/pull/8826
92    description: Runtime deprecation.
93-->
94
95Type: Runtime
96
97The `_writableState.buffer` property is deprecated. Use the
98`_writableState.getBuffer()` method instead.
99
100<a id="DEP0004"></a>
101### DEP0004: `CryptoStream.prototype.readyState`
102<!-- YAML
103changes:
104  - version: v10.0.0
105    pr-url: https://github.com/nodejs/node/pull/17882
106    description: End-of-Life.
107  - version:
108    - v4.8.6
109    - v6.12.0
110    pr-url: https://github.com/nodejs/node/pull/10116
111    description: A deprecation code has been assigned.
112  - version: 0.4.0
113    commit: 9c7f89bf56abd37a796fea621ad2e47dd33d2b82
114    description: Documentation-only deprecation.
115-->
116
117Type: End-of-Life
118
119The `CryptoStream.prototype.readyState` property was removed.
120
121<a id="DEP0005"></a>
122### DEP0005: `Buffer()` constructor
123<!-- YAML
124changes:
125  - version: v10.0.0
126    pr-url: https://github.com/nodejs/node/pull/19524
127    description: Runtime deprecation.
128  - version: v6.12.0
129    pr-url: https://github.com/nodejs/node/pull/10116
130    description: A deprecation code has been assigned.
131  - version: v6.0.0
132    pr-url: https://github.com/nodejs/node/pull/4682
133    description: Documentation-only deprecation.
134-->
135
136Type: Runtime (supports [`--pending-deprecation`][])
137
138The `Buffer()` function and `new Buffer()` constructor are deprecated due to
139API usability issues that can lead to accidental security issues.
140
141As an alternative, use one of the following methods of constructing `Buffer`
142objects:
143
144* [`Buffer.alloc(size[, fill[, encoding]])`][alloc]: Create a `Buffer` with
145  *initialized* memory.
146* [`Buffer.allocUnsafe(size)`][alloc_unsafe_size]: Create a `Buffer` with
147  *uninitialized* memory.
148* [`Buffer.allocUnsafeSlow(size)`][]: Create a `Buffer` with *uninitialized*
149   memory.
150* [`Buffer.from(array)`][]: Create a `Buffer` with a copy of `array`
151* [`Buffer.from(arrayBuffer[, byteOffset[, length]])`][from_arraybuffer] -
152  Create a `Buffer` that wraps the given `arrayBuffer`.
153* [`Buffer.from(buffer)`][]: Create a `Buffer` that copies `buffer`.
154* [`Buffer.from(string[, encoding])`][from_string_encoding]: Create a `Buffer`
155  that copies `string`.
156
157Without `--pending-deprecation`, runtime warnings occur only for code not in
158`node_modules`. This means there will not be deprecation warnings for
159`Buffer()` usage in dependencies. With `--pending-deprecation`, a runtime
160warning results no matter where the `Buffer()` usage occurs.
161
162<a id="DEP0006"></a>
163### DEP0006: `child_process` `options.customFds`
164<!-- YAML
165changes:
166  - version: v12.0.0
167    pr-url: https://github.com/nodejs/node/pull/25279
168    description: End-of-Life.
169  - version:
170    - v4.8.6
171    - v6.12.0
172    pr-url: https://github.com/nodejs/node/pull/10116
173    description: A deprecation code has been assigned.
174  - version: v0.11.14
175    description: Runtime deprecation.
176  - version: v0.5.11
177    description: Documentation-only deprecation.
178-->
179
180Type: End-of-Life
181
182Within the [`child_process`][] module's `spawn()`, `fork()`, and `exec()`
183methods, the `options.customFds` option is deprecated. The `options.stdio`
184option should be used instead.
185
186<a id="DEP0007"></a>
187### DEP0007: Replace `cluster` `worker.suicide` with `worker.exitedAfterDisconnect`
188<!-- YAML
189changes:
190  - version: v9.0.0
191    pr-url: https://github.com/nodejs/node/pull/13702
192    description: End-of-Life.
193  - version: v7.0.0
194    pr-url: https://github.com/nodejs/node/pull/3747
195    description: Runtime deprecation.
196  - version: v6.12.0
197    pr-url: https://github.com/nodejs/node/pull/10116
198    description: A deprecation code has been assigned.
199  - version: v6.0.0
200    pr-url: https://github.com/nodejs/node/pull/3743
201    description: Documentation-only deprecation.
202-->
203
204Type: End-of-Life
205
206In an earlier version of the Node.js `cluster`, a boolean property with the name
207`suicide` was added to the `Worker` object. The intent of this property was to
208provide an indication of how and why the `Worker` instance exited. In Node.js
2096.0.0, the old property was deprecated and replaced with a new
210[`worker.exitedAfterDisconnect`][] property. The old property name did not
211precisely describe the actual semantics and was unnecessarily emotion-laden.
212
213<a id="DEP0008"></a>
214### DEP0008: `require('constants')`
215<!-- YAML
216changes:
217  - version: v6.12.0
218    pr-url: https://github.com/nodejs/node/pull/10116
219    description: A deprecation code has been assigned.
220  - version: v6.3.0
221    pr-url: https://github.com/nodejs/node/pull/6534
222    description: Documentation-only deprecation.
223-->
224
225Type: Documentation-only
226
227The `constants` module is deprecated. When requiring access to constants
228relevant to specific Node.js builtin modules, developers should instead refer
229to the `constants` property exposed by the relevant module. For instance,
230`require('fs').constants` and `require('os').constants`.
231
232<a id="DEP0009"></a>
233### DEP0009: `crypto.pbkdf2` without digest
234<!-- YAML
235changes:
236  - version: v11.0.0
237    pr-url: https://github.com/nodejs/node/pull/22861
238    description: Runtime deprecation (for `digest === null`).
239  - version: v8.0.0
240    pr-url: https://github.com/nodejs/node/pull/11305
241    description: End-of-Life (for `digest === undefined`).
242  - version: v6.12.0
243    pr-url: https://github.com/nodejs/node/pull/10116
244    description: A deprecation code has been assigned.
245  - version: v6.0.0
246    pr-url: https://github.com/nodejs/node/pull/4047
247    description: Runtime deprecation (for `digest === undefined`).
248-->
249
250Type: Runtime
251
252Use of the [`crypto.pbkdf2()`][] API without specifying a digest was deprecated
253in Node.js 6.0 because the method defaulted to using the non-recommended
254`'SHA1'` digest. Previously, a deprecation warning was printed. Starting in
255Node.js 8.0.0, calling `crypto.pbkdf2()` or `crypto.pbkdf2Sync()` with
256`digest` set to `undefined` will throw a `TypeError`.
257
258Beginning in Node.js v11.0.0, calling these functions with `digest` set to
259`null` will print a deprecation warning to align with the behavior when `digest`
260is `undefined`.
261
262<a id="DEP0010"></a>
263### DEP0010: `crypto.createCredentials`
264<!-- YAML
265changes:
266  - version: v11.0.0
267    pr-url: https://github.com/nodejs/node/pull/21153
268    description: End-of-Life.
269  - version:
270    - v4.8.6
271    - v6.12.0
272    pr-url: https://github.com/nodejs/node/pull/10116
273    description: A deprecation code has been assigned.
274  - version: v0.11.13
275    pr-url: https://github.com/nodejs/node-v0.x-archive/pull/7265
276    description: Runtime deprecation.
277-->
278
279Type: End-of-Life
280
281The `crypto.createCredentials()` API was removed. Please use
282[`tls.createSecureContext()`][] instead.
283
284<a id="DEP0011"></a>
285### DEP0011: `crypto.Credentials`
286<!-- YAML
287changes:
288  - version: v11.0.0
289    pr-url: https://github.com/nodejs/node/pull/21153
290    description: End-of-Life.
291  - version:
292    - v4.8.6
293    - v6.12.0
294    pr-url: https://github.com/nodejs/node/pull/10116
295    description: A deprecation code has been assigned.
296  - version: v0.11.13
297    pr-url: https://github.com/nodejs/node-v0.x-archive/pull/7265
298    description: Runtime deprecation.
299-->
300
301Type: End-of-Life
302
303The `crypto.Credentials` class was removed. Please use [`tls.SecureContext`][]
304instead.
305
306<a id="DEP0012"></a>
307### DEP0012: `Domain.dispose`
308<!-- YAML
309changes:
310  - version: v9.0.0
311    pr-url: https://github.com/nodejs/node/pull/15412
312    description: End-of-Life.
313  - version:
314    - v4.8.6
315    - v6.12.0
316    pr-url: https://github.com/nodejs/node/pull/10116
317    description: A deprecation code has been assigned.
318  - version: v0.11.7
319    pr-url: https://github.com/nodejs/node-v0.x-archive/pull/5021
320    description: Runtime deprecation.
321-->
322
323Type: End-of-Life
324
325`Domain.dispose()` has been removed. Recover from failed I/O actions
326explicitly via error event handlers set on the domain instead.
327
328<a id="DEP0013"></a>
329### DEP0013: `fs` asynchronous function without callback
330<!-- YAML
331changes:
332  - version: v10.0.0
333    pr-url: https://github.com/nodejs/node/pull/18668
334    description: End-of-Life.
335  - version: v7.0.0
336    pr-url: https://github.com/nodejs/node/pull/7897
337    description: Runtime deprecation.
338-->
339
340Type: End-of-Life
341
342Calling an asynchronous function without a callback throws a `TypeError`
343in Node.js 10.0.0 onwards. See <https://github.com/nodejs/node/pull/12562>.
344
345<a id="DEP0014"></a>
346### DEP0014: `fs.read` legacy String interface
347<!-- YAML
348changes:
349  - version: v8.0.0
350    pr-url: https://github.com/nodejs/node/pull/9683
351    description: End-of-Life.
352  - version: v6.0.0
353    pr-url: https://github.com/nodejs/node/pull/4525
354    description: Runtime deprecation.
355  - version:
356    - v4.8.6
357    - v6.12.0
358    pr-url: https://github.com/nodejs/node/pull/10116
359    description: A deprecation code has been assigned.
360  - version: v0.1.96
361    commit: c93e0aaf062081db3ec40ac45b3e2c979d5759d6
362    description: Documentation-only deprecation.
363-->
364
365Type: End-of-Life
366
367The [`fs.read()`][] legacy `String` interface is deprecated. Use the `Buffer`
368API as mentioned in the documentation instead.
369
370<a id="DEP0015"></a>
371### DEP0015: `fs.readSync` legacy String interface
372<!-- YAML
373changes:
374  - version: v8.0.0
375    pr-url: https://github.com/nodejs/node/pull/9683
376    description: End-of-Life.
377  - version: v6.0.0
378    pr-url: https://github.com/nodejs/node/pull/4525
379    description: Runtime deprecation.
380  - version:
381    - v4.8.6
382    - v6.12.0
383    pr-url: https://github.com/nodejs/node/pull/10116
384    description: A deprecation code has been assigned.
385  - version: v0.1.96
386    commit: c93e0aaf062081db3ec40ac45b3e2c979d5759d6
387    description: Documentation-only deprecation.
388-->
389
390Type: End-of-Life
391
392The [`fs.readSync()`][] legacy `String` interface is deprecated. Use the
393`Buffer` API as mentioned in the documentation instead.
394
395<a id="DEP0016"></a>
396### DEP0016: `GLOBAL`/`root`
397<!-- YAML
398changes:
399  - version: v6.12.0
400    pr-url: https://github.com/nodejs/node/pull/10116
401    description: A deprecation code has been assigned.
402  - version: v6.0.0
403    pr-url: https://github.com/nodejs/node/pull/1838
404    description: Runtime deprecation.
405-->
406
407Type: Runtime
408
409The `GLOBAL` and `root` aliases for the `global` property are deprecated
410and should no longer be used.
411
412<a id="DEP0017"></a>
413### DEP0017: `Intl.v8BreakIterator`
414<!-- YAML
415changes:
416  - version: v9.0.0
417    pr-url: https://github.com/nodejs/node/pull/15238
418    description: End-of-Life.
419  - version: v7.0.0
420    pr-url: https://github.com/nodejs/node/pull/8908
421    description: Runtime deprecation.
422-->
423
424Type: End-of-Life
425
426`Intl.v8BreakIterator` was a non-standard extension and has been removed.
427See [`Intl.Segmenter`](https://github.com/tc39/proposal-intl-segmenter).
428
429<a id="DEP0018"></a>
430### DEP0018: Unhandled promise rejections
431<!-- YAML
432changes:
433  - version: v7.0.0
434    pr-url: https://github.com/nodejs/node/pull/8217
435    description: Runtime deprecation.
436-->
437
438Type: Runtime
439
440Unhandled promise rejections are deprecated. In the future, promise rejections
441that are not handled will terminate the Node.js process with a non-zero exit
442code.
443
444<a id="DEP0019"></a>
445### DEP0019: `require('.')` resolved outside directory
446<!-- YAML
447changes:
448  - version: v12.0.0
449    pr-url: https://github.com/nodejs/node/pull/26973
450    description: Removed functionality.
451  - version:
452    - v4.8.6
453    - v6.12.0
454    pr-url: https://github.com/nodejs/node/pull/10116
455    description: A deprecation code has been assigned.
456  - version: v1.8.1
457    pr-url: https://github.com/nodejs/node/pull/1363
458    description: Runtime deprecation.
459-->
460
461Type: End-of-Life
462
463In certain cases, `require('.')` could resolve outside the package directory.
464This behavior has been removed.
465
466<a id="DEP0020"></a>
467### DEP0020: `Server.connections`
468<!-- YAML
469changes:
470  - version:
471    - v4.8.6
472    - v6.12.0
473    pr-url: https://github.com/nodejs/node/pull/10116
474    description: A deprecation code has been assigned.
475  - version: v0.9.7
476    pr-url: https://github.com/nodejs/node-v0.x-archive/pull/4595
477    description: Runtime deprecation.
478-->
479
480Type: Runtime
481
482The [`Server.connections`][] property is deprecated. Please use the
483[`Server.getConnections()`][] method instead.
484
485<a id="DEP0021"></a>
486### DEP0021: `Server.listenFD`
487<!-- YAML
488changes:
489  - version: v12.0.0
490    pr-url: https://github.com/nodejs/node/pull/27127
491    description: End-of-Life.
492  - version:
493    - v4.8.6
494    - v6.12.0
495    pr-url: https://github.com/nodejs/node/pull/10116
496    description: A deprecation code has been assigned.
497  - version: v0.7.12
498    commit: 41421ff9da1288aa241a5e9dcf915b685ade1c23
499    description: Runtime deprecation.
500-->
501
502Type: End-of-Life
503
504The `Server.listenFD()` method was deprecated and removed. Please use
505[`Server.listen({fd: <number>})`][] instead.
506
507<a id="DEP0022"></a>
508### DEP0022: `os.tmpDir()`
509<!-- YAML
510changes:
511  - version: v7.0.0
512    pr-url: https://github.com/nodejs/node/pull/6739
513    description: Runtime deprecation.
514-->
515
516Type: Runtime
517
518The `os.tmpDir()` API is deprecated. Please use [`os.tmpdir()`][] instead.
519
520<a id="DEP0023"></a>
521### DEP0023: `os.getNetworkInterfaces()`
522<!-- YAML
523changes:
524  - version: v12.0.0
525    pr-url: https://github.com/nodejs/node/pull/25280
526    description: End-of-Life.
527  - version:
528    - v4.8.6
529    - v6.12.0
530    pr-url: https://github.com/nodejs/node/pull/10116
531    description: A deprecation code has been assigned.
532  - version: v0.6.0
533    commit: 37bb37d151fb6ee4696730e63ff28bb7a4924f97
534    description: Runtime deprecation.
535-->
536
537Type: End-of-Life
538
539The `os.getNetworkInterfaces()` method is deprecated. Please use the
540[`os.networkInterfaces()`][] method instead.
541
542<a id="DEP0024"></a>
543### DEP0024: `REPLServer.prototype.convertToContext()`
544<!-- YAML
545changes:
546  - version: v9.0.0
547    pr-url: https://github.com/nodejs/node/pull/13434
548    description: End-of-Life.
549  - version: v7.0.0
550    pr-url: https://github.com/nodejs/node/pull/7829
551    description: Runtime deprecation.
552-->
553
554Type: End-of-Life
555
556The `REPLServer.prototype.convertToContext()` API has been removed.
557
558<a id="DEP0025"></a>
559### DEP0025: `require('sys')`
560<!-- YAML
561changes:
562  - version:
563    - v4.8.6
564    - v6.12.0
565    pr-url: https://github.com/nodejs/node/pull/10116
566    description: A deprecation code has been assigned.
567  - version: v1.0.0
568    pr-url: https://github.com/nodejs/node/pull/317
569    description: Runtime deprecation.
570-->
571
572Type: Runtime
573
574The `sys` module is deprecated. Please use the [`util`][] module instead.
575
576<a id="DEP0026"></a>
577### DEP0026: `util.print()`
578<!-- YAML
579changes:
580  - version: v12.0.0
581    pr-url: https://github.com/nodejs/node/pull/25377
582    description: End-of-Life.
583  - version:
584    - v4.8.6
585    - v6.12.0
586    pr-url: https://github.com/nodejs/node/pull/10116
587    description: A deprecation code has been assigned.
588  - version: v0.11.3
589    commit: 896b2aa7074fc886efd7dd0a397d694763cac7ce
590    description: Runtime deprecation.
591-->
592
593Type: End-of-Life
594
595`util.print()` has been removed. Please use [`console.log()`][] instead.
596
597<a id="DEP0027"></a>
598### DEP0027: `util.puts()`
599<!-- YAML
600changes:
601  - version: v12.0.0
602    pr-url: https://github.com/nodejs/node/pull/25377
603    description: End-of-Life.
604  - version:
605    - v4.8.6
606    - v6.12.0
607    pr-url: https://github.com/nodejs/node/pull/10116
608    description: A deprecation code has been assigned.
609  - version: v0.11.3
610    commit: 896b2aa7074fc886efd7dd0a397d694763cac7ce
611    description: Runtime deprecation.
612-->
613
614Type: End-of-Life
615
616`util.puts()` has been removed. Please use [`console.log()`][] instead.
617
618<a id="DEP0028"></a>
619### DEP0028: `util.debug()`
620<!-- YAML
621changes:
622  - version: v12.0.0
623    pr-url: https://github.com/nodejs/node/pull/25377
624    description: End-of-Life.
625  - version:
626    - v4.8.6
627    - v6.12.0
628    pr-url: https://github.com/nodejs/node/pull/10116
629    description: A deprecation code has been assigned.
630  - version: v0.11.3
631    commit: 896b2aa7074fc886efd7dd0a397d694763cac7ce
632    description: Runtime deprecation.
633-->
634
635Type: End-of-Life
636
637`util.debug()` has been removed. Please use [`console.error()`][] instead.
638
639<a id="DEP0029"></a>
640### DEP0029: `util.error()`
641<!-- YAML
642changes:
643  - version: v12.0.0
644    pr-url: https://github.com/nodejs/node/pull/25377
645    description: End-of-Life.
646  - version:
647    - v4.8.6
648    - v6.12.0
649    pr-url: https://github.com/nodejs/node/pull/10116
650    description: A deprecation code has been assigned.
651  - version: v0.11.3
652    commit: 896b2aa7074fc886efd7dd0a397d694763cac7ce
653    description: Runtime deprecation.
654-->
655
656Type: End-of-Life
657
658`util.error()` has been removed. Please use [`console.error()`][] instead.
659
660<a id="DEP0030"></a>
661### DEP0030: `SlowBuffer`
662<!-- YAML
663changes:
664  - version: v6.12.0
665    pr-url: https://github.com/nodejs/node/pull/10116
666    description: A deprecation code has been assigned.
667  - version: v6.0.0
668    pr-url: https://github.com/nodejs/node/pull/5833
669    description: Documentation-only deprecation.
670-->
671
672Type: Documentation-only
673
674The [`SlowBuffer`][] class is deprecated. Please use
675[`Buffer.allocUnsafeSlow(size)`][] instead.
676
677<a id="DEP0031"></a>
678### DEP0031: `ecdh.setPublicKey()`
679<!-- YAML
680changes:
681  - version: v6.12.0
682    pr-url: https://github.com/nodejs/node/pull/10116
683    description: A deprecation code has been assigned.
684  - version: v5.2.0
685    pr-url: https://github.com/nodejs/node/pull/3511
686    description: Documentation-only deprecation.
687-->
688
689Type: Documentation-only
690
691The [`ecdh.setPublicKey()`][] method is now deprecated as its inclusion in the
692API is not useful.
693
694<a id="DEP0032"></a>
695### DEP0032: `domain` module
696<!-- YAML
697changes:
698  - version:
699    - v4.8.6
700    - v6.12.0
701    pr-url: https://github.com/nodejs/node/pull/10116
702    description: A deprecation code has been assigned.
703  - version: v1.4.2
704    pr-url: https://github.com/nodejs/node/pull/943
705    description: Documentation-only deprecation.
706-->
707
708Type: Documentation-only
709
710The [`domain`][] module is deprecated and should not be used.
711
712<a id="DEP0033"></a>
713### DEP0033: `EventEmitter.listenerCount()`
714<!-- YAML
715changes:
716  - version:
717    - v4.8.6
718    - v6.12.0
719    pr-url: https://github.com/nodejs/node/pull/10116
720    description: A deprecation code has been assigned.
721  - version: v3.2.0
722    pr-url: https://github.com/nodejs/node/pull/2349
723    description: Documentation-only deprecation.
724-->
725
726Type: Documentation-only
727
728The [`EventEmitter.listenerCount(emitter, eventName)`][] API is
729deprecated. Please use [`emitter.listenerCount(eventName)`][] instead.
730
731<a id="DEP0034"></a>
732### DEP0034: `fs.exists(path, callback)`
733<!-- YAML
734changes:
735  - version:
736    - v4.8.6
737    - v6.12.0
738    pr-url: https://github.com/nodejs/node/pull/10116
739    description: A deprecation code has been assigned.
740  - version: v1.0.0
741    pr-url: https://github.com/iojs/io.js/pull/166
742    description: Documentation-only deprecation.
743-->
744
745Type: Documentation-only
746
747The [`fs.exists(path, callback)`][] API is deprecated. Please use
748[`fs.stat()`][] or [`fs.access()`][] instead.
749
750<a id="DEP0035"></a>
751### DEP0035: `fs.lchmod(path, mode, callback)`
752<!-- YAML
753changes:
754  - version:
755    - v4.8.6
756    - v6.12.0
757    pr-url: https://github.com/nodejs/node/pull/10116
758    description: A deprecation code has been assigned.
759  - version: v0.4.7
760    description: Documentation-only deprecation.
761-->
762
763Type: Documentation-only
764
765The [`fs.lchmod(path, mode, callback)`][] API is deprecated.
766
767<a id="DEP0036"></a>
768### DEP0036: `fs.lchmodSync(path, mode)`
769<!-- YAML
770changes:
771  - version:
772    - v4.8.6
773    - v6.12.0
774    pr-url: https://github.com/nodejs/node/pull/10116
775    description: A deprecation code has been assigned.
776  - version: v0.4.7
777    description: Documentation-only deprecation.
778-->
779
780Type: Documentation-only
781
782The [`fs.lchmodSync(path, mode)`][] API is deprecated.
783
784<a id="DEP0037"></a>
785### DEP0037: `fs.lchown(path, uid, gid, callback)`
786<!-- YAML
787changes:
788  - version: v10.6.0
789    pr-url: https://github.com/nodejs/node/pull/21498
790    description: Deprecation revoked.
791  - version:
792    - v4.8.6
793    - v6.12.0
794    pr-url: https://github.com/nodejs/node/pull/10116
795    description: A deprecation code has been assigned.
796  - version: v0.4.7
797    description: Documentation-only deprecation.
798-->
799
800Type: Deprecation revoked
801
802The [`fs.lchown(path, uid, gid, callback)`][] API was deprecated. The
803deprecation was revoked because the requisite supporting APIs were added in
804libuv.
805
806<a id="DEP0038"></a>
807### DEP0038: `fs.lchownSync(path, uid, gid)`
808<!-- YAML
809changes:
810  - version: v10.6.0
811    pr-url: https://github.com/nodejs/node/pull/21498
812    description: Deprecation revoked.
813  - version:
814    - v4.8.6
815    - v6.12.0
816    pr-url: https://github.com/nodejs/node/pull/10116
817    description: A deprecation code has been assigned.
818  - version: v0.4.7
819    description: Documentation-only deprecation.
820-->
821
822Type: Deprecation revoked
823
824The [`fs.lchownSync(path, uid, gid)`][] API was deprecated. The deprecation was
825revoked because the requisite supporting APIs were added in libuv.
826
827<a id="DEP0039"></a>
828### DEP0039: `require.extensions`
829<!-- YAML
830changes:
831  - version:
832    - v4.8.6
833    - v6.12.0
834    pr-url: https://github.com/nodejs/node/pull/10116
835    description: A deprecation code has been assigned.
836  - version: v0.10.6
837    commit: 7bd8a5a2a60b75266f89f9a32877d55294a3881c
838    description: Documentation-only deprecation.
839-->
840
841Type: Documentation-only
842
843The [`require.extensions`][] property is deprecated.
844
845<a id="DEP0040"></a>
846### DEP0040: `punycode` module
847<!-- YAML
848changes:
849  - version: v7.0.0
850    pr-url: https://github.com/nodejs/node/pull/7941
851    description: Documentation-only deprecation.
852-->
853
854Type: Documentation-only
855
856The [`punycode`][] module is deprecated. Please use a userland alternative
857instead.
858
859<a id="DEP0041"></a>
860### DEP0041: `NODE_REPL_HISTORY_FILE` environment variable
861<!-- YAML
862changes:
863  - version: v10.0.0
864    pr-url: https://github.com/nodejs/node/pull/13876
865    description: End-of-Life.
866  - version:
867    - v4.8.6
868    - v6.12.0
869    pr-url: https://github.com/nodejs/node/pull/10116
870    description: A deprecation code has been assigned.
871  - version: v3.0.0
872    pr-url: https://github.com/nodejs/node/pull/2224
873    description: Documentation-only deprecation.
874-->
875
876Type: End-of-Life
877
878The `NODE_REPL_HISTORY_FILE` environment variable was removed. Please use
879`NODE_REPL_HISTORY` instead.
880
881<a id="DEP0042"></a>
882### DEP0042: `tls.CryptoStream`
883<!-- YAML
884changes:
885  - version: v10.0.0
886    pr-url: https://github.com/nodejs/node/pull/17882
887    description: End-of-Life.
888  - version:
889    - v4.8.6
890    - v6.12.0
891    pr-url: https://github.com/nodejs/node/pull/10116
892    description: A deprecation code has been assigned.
893  - version: v0.11.3
894    commit: af80e7bc6e6f33c582eb1f7d37c7f5bbe9f910f7
895    description: Documentation-only deprecation.
896-->
897
898Type: End-of-Life
899
900The [`tls.CryptoStream`][] class was removed. Please use
901[`tls.TLSSocket`][] instead.
902
903<a id="DEP0043"></a>
904### DEP0043: `tls.SecurePair`
905<!-- YAML
906changes:
907  - version: v8.0.0
908    pr-url: https://github.com/nodejs/node/pull/11349
909    description: Runtime deprecation.
910  - version: v6.12.0
911    pr-url: https://github.com/nodejs/node/pull/10116
912    description: A deprecation code has been assigned.
913  - version: v6.0.0
914    pr-url: https://github.com/nodejs/node/pull/6063
915    description: Documentation-only deprecation.
916  - version: v0.11.15
917    pr-url:
918      - https://github.com/nodejs/node-v0.x-archive/pull/8695
919      - https://github.com/nodejs/node-v0.x-archive/pull/8700
920    description: Deprecation revoked.
921  - version: v0.11.3
922    commit: af80e7bc6e6f33c582eb1f7d37c7f5bbe9f910f7
923    description: Runtime deprecation.
924-->
925
926Type: Documentation-only
927
928The [`tls.SecurePair`][] class is deprecated. Please use
929[`tls.TLSSocket`][] instead.
930
931<a id="DEP0044"></a>
932### DEP0044: `util.isArray()`
933<!-- YAML
934changes:
935  - version:
936    - v4.8.6
937    - v6.12.0
938    pr-url: https://github.com/nodejs/node/pull/10116
939    description: A deprecation code has been assigned.
940  - version:
941    - v3.3.1
942    - v4.0.0
943    pr-url: https://github.com/nodejs/node/pull/2447
944    description: Documentation-only deprecation.
945-->
946
947Type: Documentation-only
948
949The [`util.isArray()`][] API is deprecated. Please use `Array.isArray()`
950instead.
951
952<a id="DEP0045"></a>
953### DEP0045: `util.isBoolean()`
954<!-- YAML
955changes:
956  - version:
957    - v4.8.6
958    - v6.12.0
959    pr-url: https://github.com/nodejs/node/pull/10116
960    description: A deprecation code has been assigned.
961  - version:
962    - v3.3.1
963    - v4.0.0
964    pr-url: https://github.com/nodejs/node/pull/2447
965    description: Documentation-only deprecation.
966-->
967
968Type: Documentation-only
969
970The [`util.isBoolean()`][] API is deprecated.
971
972<a id="DEP0046"></a>
973### DEP0046: `util.isBuffer()`
974<!-- YAML
975changes:
976  - version:
977    - v4.8.6
978    - v6.12.0
979    pr-url: https://github.com/nodejs/node/pull/10116
980    description: A deprecation code has been assigned.
981  - version:
982    - v3.3.1
983    - v4.0.0
984    pr-url: https://github.com/nodejs/node/pull/2447
985    description: Documentation-only deprecation.
986-->
987
988Type: Documentation-only
989
990The [`util.isBuffer()`][] API is deprecated. Please use
991[`Buffer.isBuffer()`][] instead.
992
993<a id="DEP0047"></a>
994### DEP0047: `util.isDate()`
995<!-- YAML
996changes:
997  - version:
998    - v4.8.6
999    - v6.12.0
1000    pr-url: https://github.com/nodejs/node/pull/10116
1001    description: A deprecation code has been assigned.
1002  - version:
1003    - v3.3.1
1004    - v4.0.0
1005    pr-url: https://github.com/nodejs/node/pull/2447
1006    description: Documentation-only deprecation.
1007-->
1008
1009Type: Documentation-only
1010
1011The [`util.isDate()`][] API is deprecated.
1012
1013<a id="DEP0048"></a>
1014### DEP0048: `util.isError()`
1015<!-- YAML
1016changes:
1017  - version:
1018    - v4.8.6
1019    - v6.12.0
1020    pr-url: https://github.com/nodejs/node/pull/10116
1021    description: A deprecation code has been assigned.
1022  - version:
1023    - v3.3.1
1024    - v4.0.0
1025    pr-url: https://github.com/nodejs/node/pull/2447
1026    description: Documentation-only deprecation.
1027-->
1028
1029Type: Documentation-only
1030
1031The [`util.isError()`][] API is deprecated.
1032
1033<a id="DEP0049"></a>
1034### DEP0049: `util.isFunction()`
1035<!-- YAML
1036changes:
1037  - version:
1038    - v4.8.6
1039    - v6.12.0
1040    pr-url: https://github.com/nodejs/node/pull/10116
1041    description: A deprecation code has been assigned.
1042  - version:
1043    - v3.3.1
1044    - v4.0.0
1045    pr-url: https://github.com/nodejs/node/pull/2447
1046    description: Documentation-only deprecation.
1047-->
1048
1049Type: Documentation-only
1050
1051The [`util.isFunction()`][] API is deprecated.
1052
1053<a id="DEP0050"></a>
1054### DEP0050: `util.isNull()`
1055<!-- YAML
1056changes:
1057  - version:
1058    - v4.8.6
1059    - v6.12.0
1060    pr-url: https://github.com/nodejs/node/pull/10116
1061    description: A deprecation code has been assigned.
1062  - version:
1063    - v3.3.1
1064    - v4.0.0
1065    pr-url: https://github.com/nodejs/node/pull/2447
1066    description: Documentation-only deprecation.
1067-->
1068
1069Type: Documentation-only
1070
1071The [`util.isNull()`][] API is deprecated.
1072
1073<a id="DEP0051"></a>
1074### DEP0051: `util.isNullOrUndefined()`
1075<!-- YAML
1076changes:
1077  - version:
1078    - v4.8.6
1079    - v6.12.0
1080    pr-url: https://github.com/nodejs/node/pull/10116
1081    description: A deprecation code has been assigned.
1082  - version:
1083    - v3.3.1
1084    - v4.0.0
1085    pr-url: https://github.com/nodejs/node/pull/2447
1086    description: Documentation-only deprecation.
1087-->
1088
1089Type: Documentation-only
1090
1091The [`util.isNullOrUndefined()`][] API is deprecated.
1092
1093<a id="DEP0052"></a>
1094### DEP0052: `util.isNumber()`
1095<!-- YAML
1096changes:
1097  - version:
1098    - v4.8.6
1099    - v6.12.0
1100    pr-url: https://github.com/nodejs/node/pull/10116
1101    description: A deprecation code has been assigned.
1102  - version:
1103    - v3.3.1
1104    - v4.0.0
1105    pr-url: https://github.com/nodejs/node/pull/2447
1106    description: Documentation-only deprecation.
1107-->
1108
1109Type: Documentation-only
1110
1111The [`util.isNumber()`][] API is deprecated.
1112
1113<a id="DEP0053"></a>
1114### DEP0053 `util.isObject()`
1115<!-- YAML
1116changes:
1117  - version:
1118    - v4.8.6
1119    - v6.12.0
1120    pr-url: https://github.com/nodejs/node/pull/10116
1121    description: A deprecation code has been assigned.
1122  - version:
1123    - v3.3.1
1124    - v4.0.0
1125    pr-url: https://github.com/nodejs/node/pull/2447
1126    description: Documentation-only deprecation.
1127-->
1128
1129Type: Documentation-only
1130
1131The [`util.isObject()`][] API is deprecated.
1132
1133<a id="DEP0054"></a>
1134### DEP0054: `util.isPrimitive()`
1135<!-- YAML
1136changes:
1137  - version:
1138    - v4.8.6
1139    - v6.12.0
1140    pr-url: https://github.com/nodejs/node/pull/10116
1141    description: A deprecation code has been assigned.
1142  - version:
1143    - v3.3.1
1144    - v4.0.0
1145    pr-url: https://github.com/nodejs/node/pull/2447
1146    description: Documentation-only deprecation.
1147-->
1148
1149Type: Documentation-only
1150
1151The [`util.isPrimitive()`][] API is deprecated.
1152
1153<a id="DEP0055"></a>
1154### DEP0055: `util.isRegExp()`
1155<!-- YAML
1156changes:
1157  - version:
1158    - v4.8.6
1159    - v6.12.0
1160    pr-url: https://github.com/nodejs/node/pull/10116
1161    description: A deprecation code has been assigned.
1162  - version:
1163    - v3.3.1
1164    - v4.0.0
1165    pr-url: https://github.com/nodejs/node/pull/2447
1166    description: Documentation-only deprecation.
1167-->
1168
1169Type: Documentation-only
1170
1171The [`util.isRegExp()`][] API is deprecated.
1172
1173<a id="DEP0056"></a>
1174### DEP0056: `util.isString()`
1175<!-- YAML
1176changes:
1177  - version:
1178    - v4.8.6
1179    - v6.12.0
1180    pr-url: https://github.com/nodejs/node/pull/10116
1181    description: A deprecation code has been assigned.
1182  - version:
1183    - v3.3.1
1184    - v4.0.0
1185    pr-url: https://github.com/nodejs/node/pull/2447
1186    description: Documentation-only deprecation.
1187-->
1188
1189Type: Documentation-only
1190
1191The [`util.isString()`][] API is deprecated.
1192
1193<a id="DEP0057"></a>
1194### DEP0057: `util.isSymbol()`
1195<!-- YAML
1196changes:
1197  - version:
1198    - v4.8.6
1199    - v6.12.0
1200    pr-url: https://github.com/nodejs/node/pull/10116
1201    description: A deprecation code has been assigned.
1202  - version:
1203    - v3.3.1
1204    - v4.0.0
1205    pr-url: https://github.com/nodejs/node/pull/2447
1206    description: Documentation-only deprecation.
1207-->
1208
1209Type: Documentation-only
1210
1211The [`util.isSymbol()`][] API is deprecated.
1212
1213<a id="DEP0058"></a>
1214### DEP0058: `util.isUndefined()`
1215<!-- YAML
1216changes:
1217  - version:
1218    - v4.8.6
1219    - v6.12.0
1220    pr-url: https://github.com/nodejs/node/pull/10116
1221    description: A deprecation code has been assigned.
1222  - version:
1223    - v3.3.1
1224    - v4.0.0
1225    pr-url: https://github.com/nodejs/node/pull/2447
1226    description: Documentation-only deprecation.
1227-->
1228
1229Type: Documentation-only
1230
1231The [`util.isUndefined()`][] API is deprecated.
1232
1233<a id="DEP0059"></a>
1234### DEP0059: `util.log()`
1235<!-- YAML
1236changes:
1237  - version: v6.12.0
1238    pr-url: https://github.com/nodejs/node/pull/10116
1239    description: A deprecation code has been assigned.
1240  - version: v6.0.0
1241    pr-url: https://github.com/nodejs/node/pull/6161
1242    description: Documentation-only deprecation.
1243-->
1244
1245Type: Documentation-only
1246
1247The [`util.log()`][] API is deprecated.
1248
1249<a id="DEP0060"></a>
1250### DEP0060: `util._extend()`
1251<!-- YAML
1252changes:
1253  - version: v6.12.0
1254    pr-url: https://github.com/nodejs/node/pull/10116
1255    description: A deprecation code has been assigned.
1256  - version: v6.0.0
1257    pr-url: https://github.com/nodejs/node/pull/4903
1258    description: Documentation-only deprecation.
1259-->
1260
1261Type: Documentation-only
1262
1263The [`util._extend()`][] API is deprecated.
1264
1265<a id="DEP0061"></a>
1266### DEP0061: `fs.SyncWriteStream`
1267<!-- YAML
1268changes:
1269  - version: v11.0.0
1270    pr-url: https://github.com/nodejs/node/pull/20735
1271    description: End-of-Life.
1272  - version: v8.0.0
1273    pr-url: https://github.com/nodejs/node/pull/10467
1274    description: Runtime deprecation.
1275  - version: v7.0.0
1276    pr-url: https://github.com/nodejs/node/pull/6749
1277    description: Documentation-only deprecation.
1278-->
1279
1280Type: End-of-Life
1281
1282The `fs.SyncWriteStream` class was never intended to be a publicly accessible
1283API and has been removed. No alternative API is available. Please use a userland
1284alternative.
1285
1286<a id="DEP0062"></a>
1287### DEP0062: `node --debug`
1288<!-- YAML
1289changes:
1290  - version: v8.0.0
1291    pr-url: https://github.com/nodejs/node/pull/10970
1292    description: Runtime deprecation.
1293  - version: v12.0.0
1294    pr-url: https://github.com/nodejs/node/pull/25828
1295    description: End-of-Life.
1296-->
1297
1298Type: End-of-Life
1299
1300`--debug` activates the legacy V8 debugger interface, which was removed as
1301of V8 5.8. It is replaced by Inspector which is activated with `--inspect`
1302instead.
1303
1304<a id="DEP0063"></a>
1305### DEP0063: `ServerResponse.prototype.writeHeader()`
1306<!-- YAML
1307changes:
1308  - version: v8.0.0
1309    pr-url: https://github.com/nodejs/node/pull/11355
1310    description: Documentation-only deprecation.
1311-->
1312
1313Type: Documentation-only
1314
1315The `http` module `ServerResponse.prototype.writeHeader()` API is
1316deprecated. Please use `ServerResponse.prototype.writeHead()` instead.
1317
1318The `ServerResponse.prototype.writeHeader()` method was never documented as an
1319officially supported API.
1320
1321<a id="DEP0064"></a>
1322### DEP0064: `tls.createSecurePair()`
1323<!-- YAML
1324changes:
1325  - version: v8.0.0
1326    pr-url: https://github.com/nodejs/node/pull/11349
1327    description: Runtime deprecation.
1328  - version: v6.12.0
1329    pr-url: https://github.com/nodejs/node/pull/10116
1330    description: A deprecation code has been assigned.
1331  - version: v6.0.0
1332    pr-url: https://github.com/nodejs/node/pull/6063
1333    description: Documentation-only deprecation.
1334  - version: v0.11.15
1335    pr-url:
1336      - https://github.com/nodejs/node-v0.x-archive/pull/8695
1337      - https://github.com/nodejs/node-v0.x-archive/pull/8700
1338    description: Deprecation revoked.
1339  - version: v0.11.3
1340    commit: af80e7bc6e6f33c582eb1f7d37c7f5bbe9f910f7
1341    description: Runtime deprecation.
1342-->
1343
1344Type: Runtime
1345
1346The `tls.createSecurePair()` API was deprecated in documentation in Node.js
13470.11.3. Users should use `tls.Socket` instead.
1348
1349<a id="DEP0065"></a>
1350### DEP0065: `repl.REPL_MODE_MAGIC` and `NODE_REPL_MODE=magic`
1351<!-- YAML
1352changes:
1353  - version: v10.0.0
1354    pr-url: https://github.com/nodejs/node/pull/19187
1355    description: End-of-Life.
1356  - version: v8.0.0
1357    pr-url: https://github.com/nodejs/node/pull/11599
1358    description: Documentation-only deprecation.
1359-->
1360
1361Type: End-of-Life
1362
1363The `repl` module's `REPL_MODE_MAGIC` constant, used for `replMode` option, has
1364been removed. Its behavior has been functionally identical to that of
1365`REPL_MODE_SLOPPY` since Node.js 6.0.0, when V8 5.0 was imported. Please use
1366`REPL_MODE_SLOPPY` instead.
1367
1368The `NODE_REPL_MODE` environment variable is used to set the underlying
1369`replMode` of an interactive `node` session. Its value, `magic`, is also
1370removed. Please use `sloppy` instead.
1371
1372<a id="DEP0066"></a>
1373### DEP0066: `OutgoingMessage.prototype._headers, OutgoingMessage.prototype._headerNames`
1374<!-- YAML
1375changes:
1376  - version: v12.0.0
1377    pr-url: https://github.com/nodejs/node/pull/24167
1378    description: Runtime deprecation.
1379  - version: v8.0.0
1380    pr-url: https://github.com/nodejs/node/pull/10941
1381    description: Documentation-only deprecation.
1382-->
1383
1384Type: Runtime
1385
1386The `http` module `OutgoingMessage.prototype._headers` and
1387`OutgoingMessage.prototype._headerNames` properties are deprecated. Use one of
1388the public methods (e.g. `OutgoingMessage.prototype.getHeader()`,
1389`OutgoingMessage.prototype.getHeaders()`,
1390`OutgoingMessage.prototype.getHeaderNames()`,
1391`OutgoingMessage.prototype.hasHeader()`,
1392`OutgoingMessage.prototype.removeHeader()`,
1393`OutgoingMessage.prototype.setHeader()`) for working with outgoing headers.
1394
1395The `OutgoingMessage.prototype._headers` and
1396`OutgoingMessage.prototype._headerNames` properties were never documented as
1397officially supported properties.
1398
1399<a id="DEP0067"></a>
1400### DEP0067: `OutgoingMessage.prototype._renderHeaders`
1401<!-- YAML
1402changes:
1403  - version: v8.0.0
1404    pr-url: https://github.com/nodejs/node/pull/10941
1405    description: Documentation-only deprecation.
1406-->
1407
1408Type: Documentation-only
1409
1410The `http` module `OutgoingMessage.prototype._renderHeaders()` API is
1411deprecated.
1412
1413The `OutgoingMessage.prototype._renderHeaders` property was never documented as
1414an officially supported API.
1415
1416<a id="DEP0068"></a>
1417### DEP0068: `node debug`
1418<!-- YAML
1419changes:
1420  - version: v8.0.0
1421    pr-url: https://github.com/nodejs/node/pull/11441
1422    description: Runtime deprecation.
1423-->
1424
1425Type: Runtime
1426
1427`node debug` corresponds to the legacy CLI debugger which has been replaced with
1428a V8-inspector based CLI debugger available through `node inspect`.
1429
1430<a id="DEP0069"></a>
1431### DEP0069: `vm.runInDebugContext(string)`
1432<!-- YAML
1433changes:
1434  - version: v10.0.0
1435    pr-url: https://github.com/nodejs/node/pull/13295
1436    description: End-of-Life.
1437  - version: v9.0.0
1438    pr-url: https://github.com/nodejs/node/pull/12815
1439    description: Runtime deprecation.
1440  - version: v8.0.0
1441    pr-url: https://github.com/nodejs/node/pull/12243
1442    description: Documentation-only deprecation.
1443-->
1444
1445Type: End-of-Life
1446
1447DebugContext has been removed in V8 and is not available in Node.js 10+.
1448
1449DebugContext was an experimental API.
1450
1451<a id="DEP0070"></a>
1452### DEP0070: `async_hooks.currentId()`
1453<!-- YAML
1454changes:
1455  - version: v9.0.0
1456    pr-url: https://github.com/nodejs/node/pull/14414
1457    description: End-of-Life.
1458  - version: v8.2.0
1459    pr-url: https://github.com/nodejs/node/pull/13490
1460    description: Runtime deprecation.
1461-->
1462
1463Type: End-of-Life
1464
1465`async_hooks.currentId()` was renamed to `async_hooks.executionAsyncId()` for
1466clarity.
1467
1468This change was made while `async_hooks` was an experimental API.
1469
1470<a id="DEP0071"></a>
1471### DEP0071: `async_hooks.triggerId()`
1472<!-- YAML
1473changes:
1474  - version: v9.0.0
1475    pr-url: https://github.com/nodejs/node/pull/14414
1476    description: End-of-Life.
1477  - version: v8.2.0
1478    pr-url: https://github.com/nodejs/node/pull/13490
1479    description: Runtime deprecation.
1480-->
1481
1482Type: End-of-Life
1483
1484`async_hooks.triggerId()` was renamed to `async_hooks.triggerAsyncId()` for
1485clarity.
1486
1487This change was made while `async_hooks` was an experimental API.
1488
1489<a id="DEP0072"></a>
1490### DEP0072: `async_hooks.AsyncResource.triggerId()`
1491<!-- YAML
1492changes:
1493  - version: v9.0.0
1494    pr-url: https://github.com/nodejs/node/pull/14414
1495    description: End-of-Life.
1496  - version: v8.2.0
1497    pr-url: https://github.com/nodejs/node/pull/13490
1498    description: Runtime deprecation.
1499-->
1500
1501Type: End-of-Life
1502
1503`async_hooks.AsyncResource.triggerId()` was renamed to
1504`async_hooks.AsyncResource.triggerAsyncId()` for clarity.
1505
1506This change was made while `async_hooks` was an experimental API.
1507
1508<a id="DEP0073"></a>
1509### DEP0073: Several internal properties of `net.Server`
1510<!-- YAML
1511changes:
1512  - version: v10.0.0
1513    pr-url: https://github.com/nodejs/node/pull/17141
1514    description: End-of-Life.
1515  - version: v9.0.0
1516    pr-url: https://github.com/nodejs/node/pull/14449
1517    description: Runtime deprecation.
1518-->
1519
1520Type: End-of-Life
1521
1522Accessing several internal, undocumented properties of `net.Server` instances
1523with inappropriate names is deprecated.
1524
1525As the original API was undocumented and not generally useful for non-internal
1526code, no replacement API is provided.
1527
1528<a id="DEP0074"></a>
1529### DEP0074: `REPLServer.bufferedCommand`
1530<!-- YAML
1531changes:
1532  - version: v9.0.0
1533    pr-url: https://github.com/nodejs/node/pull/13687
1534    description: Runtime deprecation.
1535-->
1536
1537Type: Runtime
1538
1539The `REPLServer.bufferedCommand` property was deprecated in favor of
1540[`REPLServer.clearBufferedCommand()`][].
1541
1542<a id="DEP0075"></a>
1543### DEP0075: `REPLServer.parseREPLKeyword()`
1544<!-- YAML
1545changes:
1546  - version: v9.0.0
1547    pr-url: https://github.com/nodejs/node/pull/14223
1548    description: Runtime deprecation.
1549-->
1550
1551Type: Runtime
1552
1553`REPLServer.parseREPLKeyword()` was removed from userland visibility.
1554
1555<a id="DEP0076"></a>
1556### DEP0076: `tls.parseCertString()`
1557<!-- YAML
1558changes:
1559  - version: v9.0.0
1560    pr-url: https://github.com/nodejs/node/pull/14249
1561    description: Runtime deprecation.
1562  - version: v8.6.0
1563    pr-url: https://github.com/nodejs/node/pull/14245
1564    description: Documentation-only deprecation.
1565-->
1566
1567Type: Runtime
1568
1569`tls.parseCertString()` is a trivial parsing helper that was made public by
1570mistake. This function can usually be replaced with:
1571
1572```js
1573const querystring = require('querystring');
1574querystring.parse(str, '\n', '=');
1575```
1576
1577This function is not completely equivalent to `querystring.parse()`. One
1578difference is that `querystring.parse()` does url decoding:
1579
1580```console
1581> querystring.parse('%E5%A5%BD=1', '\n', '=');
1582{ '好': '1' }
1583> tls.parseCertString('%E5%A5%BD=1');
1584{ '%E5%A5%BD': '1' }
1585```
1586
1587<a id="DEP0077"></a>
1588### DEP0077: `Module._debug()`
1589<!-- YAML
1590changes:
1591  - version: v9.0.0
1592    pr-url: https://github.com/nodejs/node/pull/13948
1593    description: Runtime deprecation.
1594-->
1595
1596Type: Runtime
1597
1598`Module._debug()` is deprecated.
1599
1600The `Module._debug()` function was never documented as an officially
1601supported API.
1602
1603<a id="DEP0078"></a>
1604### DEP0078: `REPLServer.turnOffEditorMode()`
1605<!-- YAML
1606changes:
1607  - version: v9.0.0
1608    pr-url: https://github.com/nodejs/node/pull/15136
1609    description: Runtime deprecation.
1610-->
1611
1612Type: Runtime
1613
1614`REPLServer.turnOffEditorMode()` was removed from userland visibility.
1615
1616<a id="DEP0079"></a>
1617### DEP0079: Custom inspection function on objects via `.inspect()`
1618<!-- YAML
1619changes:
1620  - version: v11.0.0
1621    pr-url: https://github.com/nodejs/node/pull/20722
1622    description: End-of-Life.
1623  - version: v10.0.0
1624    pr-url: https://github.com/nodejs/node/pull/16393
1625    description: Runtime deprecation.
1626  - version: v8.7.0
1627    pr-url: https://github.com/nodejs/node/pull/15631
1628    description: Documentation-only deprecation.
1629-->
1630
1631Type: End-of-Life
1632
1633Using a property named `inspect` on an object to specify a custom inspection
1634function for [`util.inspect()`][] is deprecated. Use [`util.inspect.custom`][]
1635instead. For backward compatibility with Node.js prior to version 6.4.0, both
1636may be specified.
1637
1638<a id="DEP0080"></a>
1639### DEP0080: `path._makeLong()`
1640<!-- YAML
1641changes:
1642  - version: v9.0.0
1643    pr-url: https://github.com/nodejs/node/pull/14956
1644    description: Documentation-only deprecation.
1645-->
1646
1647Type: Documentation-only
1648
1649The internal `path._makeLong()` was not intended for public use. However,
1650userland modules have found it useful. The internal API is deprecated
1651and replaced with an identical, public `path.toNamespacedPath()` method.
1652
1653<a id="DEP0081"></a>
1654### DEP0081: `fs.truncate()` using a file descriptor
1655<!-- YAML
1656changes:
1657  - version: v9.0.0
1658    pr-url: https://github.com/nodejs/node/pull/15990
1659    description: Runtime deprecation.
1660-->
1661
1662Type: Runtime
1663
1664`fs.truncate()` `fs.truncateSync()` usage with a file descriptor is
1665deprecated. Please use `fs.ftruncate()` or `fs.ftruncateSync()` to work with
1666file descriptors.
1667
1668<a id="DEP0082"></a>
1669### DEP0082: `REPLServer.prototype.memory()`
1670<!-- YAML
1671changes:
1672  - version: v9.0.0
1673    pr-url: https://github.com/nodejs/node/pull/16242
1674    description: Runtime deprecation.
1675-->
1676
1677Type: Runtime
1678
1679`REPLServer.prototype.memory()` is only necessary for the internal mechanics of
1680the `REPLServer` itself. Do not use this function.
1681
1682<a id="DEP0083"></a>
1683### DEP0083: Disabling ECDH by setting `ecdhCurve` to `false`
1684<!-- YAML
1685changes:
1686  - version: v10.0.0
1687    pr-url: https://github.com/nodejs/node/pull/19794
1688    description: End-of-Life.
1689  - version: v9.2.0
1690    pr-url: https://github.com/nodejs/node/pull/16130
1691    description: Runtime deprecation.
1692-->
1693
1694Type: End-of-Life.
1695
1696The `ecdhCurve` option to `tls.createSecureContext()` and `tls.TLSSocket` could
1697be set to `false` to disable ECDH entirely on the server only. This mode was
1698deprecated in preparation for migrating to OpenSSL 1.1.0 and consistency with
1699the client and is now unsupported. Use the `ciphers` parameter instead.
1700
1701<a id="DEP0084"></a>
1702### DEP0084: requiring bundled internal dependencies
1703<!-- YAML
1704changes:
1705  - version: v12.0.0
1706    pr-url: https://github.com/nodejs/node/pull/25138
1707    description: This functionality has been removed.
1708  - version: v10.0.0
1709    pr-url: https://github.com/nodejs/node/pull/16392
1710    description: Runtime deprecation.
1711-->
1712
1713Type: End-of-Life
1714
1715Since Node.js versions 4.4.0 and 5.2.0, several modules only intended for
1716internal usage were mistakenly exposed to user code through `require()`. These
1717modules were:
1718
1719* `v8/tools/codemap`
1720* `v8/tools/consarray`
1721* `v8/tools/csvparser`
1722* `v8/tools/logreader`
1723* `v8/tools/profile_view`
1724* `v8/tools/profile`
1725* `v8/tools/SourceMap`
1726* `v8/tools/splaytree`
1727* `v8/tools/tickprocessor-driver`
1728* `v8/tools/tickprocessor`
1729* `node-inspect/lib/_inspect` (from 7.6.0)
1730* `node-inspect/lib/internal/inspect_client` (from 7.6.0)
1731* `node-inspect/lib/internal/inspect_repl` (from 7.6.0)
1732
1733The `v8/*` modules do not have any exports, and if not imported in a specific
1734order would in fact throw errors. As such there are virtually no legitimate use
1735cases for importing them through `require()`.
1736
1737On the other hand, `node-inspect` may be installed locally through a package
1738manager, as it is published on the npm registry under the same name. No source
1739code modification is necessary if that is done.
1740
1741<a id="DEP0085"></a>
1742### DEP0085: AsyncHooks sensitive API
1743<!-- YAML
1744changes:
1745  - version: 10.0.0
1746    pr-url: https://github.com/nodejs/node/pull/17147
1747    description: End-of-Life.
1748  - version:
1749    - v8.10.0
1750    - v9.4.0
1751    pr-url: https://github.com/nodejs/node/pull/16972
1752    description: Runtime deprecation.
1753-->
1754
1755Type: End-of-Life
1756
1757The AsyncHooks sensitive API was never documented and had various minor issues.
1758Use the `AsyncResource` API instead. See
1759<https://github.com/nodejs/node/issues/15572>.
1760
1761<a id="DEP0086"></a>
1762### DEP0086: Remove `runInAsyncIdScope`
1763<!-- YAML
1764changes:
1765  - version: 10.0.0
1766    pr-url: https://github.com/nodejs/node/pull/17147
1767    description: End-of-Life.
1768  - version:
1769    - v8.10.0
1770    - v9.4.0
1771    pr-url: https://github.com/nodejs/node/pull/16972
1772    description: Runtime deprecation.
1773-->
1774
1775Type: End-of-Life
1776
1777`runInAsyncIdScope` doesn't emit the `'before'` or `'after'` event and can thus
1778cause a lot of issues. See <https://github.com/nodejs/node/issues/14328>.
1779
1780<a id="DEP0089"></a>
1781### DEP0089: `require('assert')`
1782<!-- YAML
1783changes:
1784  - version: v12.8.0
1785    pr-url: https://github.com/nodejs/node/pull/28892
1786    description: Deprecation revoked.
1787  - version:
1788      - v9.9.0
1789      - v10.0.0
1790    pr-url: https://github.com/nodejs/node/pull/17002
1791    description: Documentation-only deprecation.
1792-->
1793
1794Type: Deprecation revoked
1795
1796Importing assert directly was not recommended as the exposed functions use
1797loose equality checks. The deprecation was revoked because use of the `assert`
1798module is not discouraged, and the deprecation caused developer confusion.
1799
1800<a id="DEP0090"></a>
1801### DEP0090: Invalid GCM authentication tag lengths
1802<!-- YAML
1803changes:
1804  - version: v11.0.0
1805    pr-url: https://github.com/nodejs/node/pull/17825
1806    description: End-of-Life.
1807  - version: v10.0.0
1808    pr-url: https://github.com/nodejs/node/pull/18017
1809    description: Runtime deprecation.
1810-->
1811
1812Type: End-of-Life
1813
1814Node.js used to support all GCM authentication tag lengths which are accepted by
1815OpenSSL when calling [`decipher.setAuthTag()`][]. Beginning with Node.js
1816v11.0.0, only authentication tag lengths of 128, 120, 112, 104, 96, 64, and 32
1817bits are allowed. Authentication tags of other lengths are invalid per
1818[NIST SP 800-38D][].
1819
1820<a id="DEP0091"></a>
1821### DEP0091: `crypto.DEFAULT_ENCODING`
1822<!-- YAML
1823changes:
1824  - version: v10.0.0
1825    pr-url: https://github.com/nodejs/node/pull/18333
1826    description: Runtime deprecation.
1827-->
1828
1829Type: Runtime
1830
1831The [`crypto.DEFAULT_ENCODING`][] property is deprecated.
1832
1833<a id="DEP0092"></a>
1834### DEP0092: Top-level `this` bound to `module.exports`
1835<!-- YAML
1836changes:
1837  - version: v10.0.0
1838    pr-url: https://github.com/nodejs/node/pull/16878
1839    description: Documentation-only deprecation.
1840-->
1841
1842Type: Documentation-only
1843
1844Assigning properties to the top-level `this` as an alternative
1845to `module.exports` is deprecated. Developers should use `exports`
1846or `module.exports` instead.
1847
1848<a id="DEP0093"></a>
1849### DEP0093: `crypto.fips` is deprecated and replaced.
1850<!-- YAML
1851changes:
1852  - version: v10.0.0
1853    pr-url: https://github.com/nodejs/node/pull/18335
1854    description: Documentation-only deprecation.
1855-->
1856
1857Type: Documentation-only
1858
1859The [`crypto.fips`][] property is deprecated. Please use `crypto.setFips()`
1860and `crypto.getFips()` instead.
1861
1862<a id="DEP0094"></a>
1863### DEP0094: Using `assert.fail()` with more than one argument.
1864<!-- YAML
1865changes:
1866  - version: v10.0.0
1867    pr-url: https://github.com/nodejs/node/pull/18418
1868    description: Runtime deprecation.
1869-->
1870
1871Type: Runtime
1872
1873Using `assert.fail()` with more than one argument is deprecated. Use
1874`assert.fail()` with only one argument or use a different `assert` module
1875method.
1876
1877<a id="DEP0095"></a>
1878### DEP0095: `timers.enroll()`
1879<!-- YAML
1880changes:
1881  - version: v10.0.0
1882    pr-url: https://github.com/nodejs/node/pull/18066
1883    description: Runtime deprecation.
1884-->
1885
1886Type: Runtime
1887
1888`timers.enroll()` is deprecated. Please use the publicly documented
1889[`setTimeout()`][] or [`setInterval()`][] instead.
1890
1891<a id="DEP0096"></a>
1892### DEP0096: `timers.unenroll()`
1893<!-- YAML
1894changes:
1895  - version: v10.0.0
1896    pr-url: https://github.com/nodejs/node/pull/18066
1897    description: Runtime deprecation.
1898-->
1899
1900Type: Runtime
1901
1902`timers.unenroll()` is deprecated. Please use the publicly documented
1903[`clearTimeout()`][] or [`clearInterval()`][] instead.
1904
1905<a id="DEP0097"></a>
1906### DEP0097: `MakeCallback` with `domain` property
1907<!-- YAML
1908changes:
1909  - version: v10.0.0
1910    pr-url: https://github.com/nodejs/node/pull/17417
1911    description: Runtime deprecation.
1912-->
1913
1914Type: Runtime
1915
1916Users of `MakeCallback` that add the `domain` property to carry context,
1917should start using the `async_context` variant of `MakeCallback` or
1918`CallbackScope`, or the high-level `AsyncResource` class.
1919
1920<a id="DEP0098"></a>
1921### DEP0098: AsyncHooks embedder `AsyncResource.emitBefore` and `AsyncResource.emitAfter` APIs
1922<!-- YAML
1923changes:
1924  - version: v12.0.0
1925    pr-url: https://github.com/nodejs/node/pull/26530
1926    description: End-of-Life
1927  - version:
1928    - v8.12.0
1929    - v9.6.0
1930    - v10.0.0
1931    pr-url: https://github.com/nodejs/node/pull/18632
1932    description: Runtime deprecation.
1933-->
1934
1935Type: End-of-Life
1936
1937The embedded API provided by AsyncHooks exposes `.emitBefore()` and
1938`.emitAfter()` methods which are very easy to use incorrectly which can lead
1939to unrecoverable errors.
1940
1941Use [`asyncResource.runInAsyncScope()`][] API instead which provides a much
1942safer, and more convenient, alternative. See
1943<https://github.com/nodejs/node/pull/18513>.
1944
1945<a id="DEP0099"></a>
1946### DEP0099: Async context-unaware `node::MakeCallback` C++ APIs
1947<!-- YAML
1948changes:
1949  - version: v10.0.0
1950    pr-url: https://github.com/nodejs/node/pull/18632
1951    description: Compile-time deprecation.
1952-->
1953
1954Type: Compile-time
1955
1956Certain versions of `node::MakeCallback` APIs available to native modules are
1957deprecated. Please use the versions of the API that accept an `async_context`
1958parameter.
1959
1960<a id="DEP0100"></a>
1961### DEP0100: `process.assert()`
1962<!-- YAML
1963changes:
1964  - version: v10.0.0
1965    pr-url: https://github.com/nodejs/node/pull/18666
1966    description: Runtime deprecation.
1967  - version: v0.3.7
1968    description: Documentation-only deprecation.
1969-->
1970
1971Type: Runtime
1972
1973`process.assert()` is deprecated. Please use the [`assert`][] module instead.
1974
1975This was never a documented feature.
1976
1977<a id="DEP0101"></a>
1978### DEP0101: `--with-lttng`
1979<!-- YAML
1980changes:
1981  - version: v10.0.0
1982    pr-url: https://github.com/nodejs/node/pull/18982
1983    description: End-of-Life.
1984-->
1985
1986Type: End-of-Life
1987
1988The `--with-lttng` compile-time option has been removed.
1989
1990<a id="DEP0102"></a>
1991### DEP0102: Using `noAssert` in `Buffer#(read|write)` operations.
1992<!-- YAML
1993changes:
1994  - version: v10.0.0
1995    pr-url: https://github.com/nodejs/node/pull/18395
1996    description: End-of-Life.
1997-->
1998
1999Type: End-of-Life
2000
2001Using the `noAssert` argument has no functionality anymore. All input is going
2002to be verified, no matter if it is set to true or not. Skipping the verification
2003could lead to hard to find errors and crashes.
2004
2005<a id="DEP0103"></a>
2006### DEP0103: `process.binding('util').is[...]` typechecks
2007<!-- YAML
2008changes:
2009  - version: v10.9.0
2010    pr-url: https://github.com/nodejs/node/pull/22004
2011    description: Superseded by [DEP0111](#DEP0111).
2012  - version: v10.0.0
2013    pr-url: https://github.com/nodejs/node/pull/18415
2014    description: Documentation-only deprecation.
2015-->
2016
2017Type: Documentation-only (supports [`--pending-deprecation`][])
2018
2019Using `process.binding()` in general should be avoided. The type checking
2020methods in particular can be replaced by using [`util.types`][].
2021
2022This deprecation has been superseded by the deprecation of the
2023`process.binding()` API ([DEP0111](#DEP0111)).
2024
2025<a id="DEP0104"></a>
2026### DEP0104: `process.env` string coercion
2027<!-- YAML
2028changes:
2029  - version: v10.0.0
2030    pr-url: https://github.com/nodejs/node/pull/18990
2031    description: Documentation-only deprecation.
2032-->
2033
2034Type: Documentation-only (supports [`--pending-deprecation`][])
2035
2036When assigning a non-string property to [`process.env`][], the assigned value is
2037implicitly converted to a string. This behavior is deprecated if the assigned
2038value is not a string, boolean, or number. In the future, such assignment may
2039result in a thrown error. Please convert the property to a string before
2040assigning it to `process.env`.
2041
2042<a id="DEP0105"></a>
2043### DEP0105: `decipher.finaltol`
2044<!-- YAML
2045changes:
2046  - version: v11.0.0
2047    pr-url: https://github.com/nodejs/node/pull/19941
2048    description: End-of-Life.
2049  - version: v10.0.0
2050    pr-url: https://github.com/nodejs/node/pull/19353
2051    description: Runtime deprecation.
2052-->
2053
2054Type: End-of-Life
2055
2056`decipher.finaltol()` has never been documented and was an alias for
2057[`decipher.final()`][]. This API has been removed, and it is recommended to use
2058[`decipher.final()`][] instead.
2059
2060<a id="DEP0106"></a>
2061### DEP0106: `crypto.createCipher` and `crypto.createDecipher`
2062<!-- YAML
2063changes:
2064  - version: v11.0.0
2065    pr-url: https://github.com/nodejs/node/pull/22089
2066    description: Runtime deprecation.
2067  - version: v10.0.0
2068    pr-url: https://github.com/nodejs/node/pull/19343
2069    description: Documentation-only deprecation.
2070-->
2071
2072Type: Runtime
2073
2074Using [`crypto.createCipher()`][] and [`crypto.createDecipher()`][] should be
2075avoided as they use a weak key derivation function (MD5 with no salt) and static
2076initialization vectors. It is recommended to derive a key using
2077[`crypto.pbkdf2()`][] or [`crypto.scrypt()`][] and to use
2078[`crypto.createCipheriv()`][] and [`crypto.createDecipheriv()`][] to obtain the
2079[`Cipher`][] and [`Decipher`][] objects respectively.
2080
2081<a id="DEP0107"></a>
2082### DEP0107: `tls.convertNPNProtocols()`
2083<!-- YAML
2084changes:
2085  - version: v11.0.0
2086    pr-url: https://github.com/nodejs/node/pull/20736
2087    description: End-of-Life.
2088  - version: v10.0.0
2089    pr-url: https://github.com/nodejs/node/pull/19403
2090    description: Runtime deprecation.
2091-->
2092
2093Type: End-of-Life
2094
2095This was an undocumented helper function not intended for use outside Node.js
2096core and obsoleted by the removal of NPN (Next Protocol Negotiation) support.
2097
2098<a id="DEP0108"></a>
2099### DEP0108: `zlib.bytesRead`
2100<!-- YAML
2101changes:
2102  - version: v11.0.0
2103    pr-url: https://github.com/nodejs/node/pull/23308
2104    description: Runtime deprecation.
2105  - version: v10.0.0
2106    pr-url: https://github.com/nodejs/node/pull/19414
2107    description: Documentation-only deprecation.
2108-->
2109
2110Type: Runtime
2111
2112Deprecated alias for [`zlib.bytesWritten`][]. This original name was chosen
2113because it also made sense to interpret the value as the number of bytes
2114read by the engine, but is inconsistent with other streams in Node.js that
2115expose values under these names.
2116
2117<a id="DEP0109"></a>
2118### DEP0109: `http`, `https`, and `tls` support for invalid URLs
2119<!-- YAML
2120changes:
2121  - version: v11.0.0
2122    pr-url: https://github.com/nodejs/node/pull/20270
2123    description: Runtime deprecation.
2124-->
2125
2126Type: Runtime
2127
2128Some previously supported (but strictly invalid) URLs were accepted through the
2129[`http.request()`][], [`http.get()`][], [`https.request()`][],
2130[`https.get()`][], and [`tls.checkServerIdentity()`][] APIs because those were
2131accepted by the legacy `url.parse()` API. The mentioned APIs now use the WHATWG
2132URL parser that requires strictly valid URLs. Passing an invalid URL is
2133deprecated and support will be removed in the future.
2134
2135<a id="DEP0110"></a>
2136### DEP0110: `vm.Script` cached data
2137<!-- YAML
2138changes:
2139  - version: v10.6.0
2140    pr-url: https://github.com/nodejs/node/pull/20300
2141    description: Documentation-only deprecation.
2142-->
2143
2144Type: Documentation-only
2145
2146The `produceCachedData` option is deprecated. Use
2147[`script.createCachedData()`][] instead.
2148
2149<a id="DEP0111"></a>
2150### DEP0111: `process.binding()`
2151<!-- YAML
2152changes:
2153  - version: v10.9.0
2154    pr-url: https://github.com/nodejs/node/pull/22004
2155    description: Documentation-only deprecation.
2156  - version: v11.12.0
2157    pr-url: https://github.com/nodejs/node/pull/26500
2158    description: Added support for `--pending-deprecation`.
2159-->
2160
2161Type: Documentation-only (supports [`--pending-deprecation`][])
2162
2163`process.binding()` is for use by Node.js internal code only.
2164
2165<a id="DEP0112"></a>
2166### DEP0112: `dgram` private APIs
2167<!-- YAML
2168changes:
2169  - version: v11.0.0
2170    pr-url: https://github.com/nodejs/node/pull/22011
2171    description: Runtime deprecation.
2172-->
2173
2174Type: Runtime
2175
2176The `dgram` module previously contained several APIs that were never meant to
2177accessed outside of Node.js core: `Socket.prototype._handle`,
2178`Socket.prototype._receiving`, `Socket.prototype._bindState`,
2179`Socket.prototype._queue`, `Socket.prototype._reuseAddr`,
2180`Socket.prototype._healthCheck()`, `Socket.prototype._stopReceiving()`, and
2181`dgram._createSocketHandle()`.
2182
2183<a id="DEP0113"></a>
2184### DEP0113: `Cipher.setAuthTag()`, `Decipher.getAuthTag()`
2185<!-- YAML
2186changes:
2187  - version: v12.0.0
2188    pr-url: https://github.com/nodejs/node/pull/26249
2189    description: End-of-Life.
2190  - version: v11.0.0
2191    pr-url: https://github.com/nodejs/node/pull/22126
2192    description: Runtime deprecation.
2193-->
2194
2195Type: End-of-Life
2196
2197`Cipher.setAuthTag()` and `Decipher.getAuthTag()` are no longer available. They
2198were never documented and would throw when called.
2199
2200<a id="DEP0114"></a>
2201### DEP0114: `crypto._toBuf()`
2202<!-- YAML
2203changes:
2204  - version: v12.0.0
2205    pr-url: https://github.com/nodejs/node/pull/25338
2206    description: End-of-Life.
2207  - version: v11.0.0
2208    pr-url: https://github.com/nodejs/node/pull/22501
2209    description: Runtime deprecation.
2210-->
2211
2212Type: End-of-Life
2213
2214The `crypto._toBuf()` function was not designed to be used by modules outside
2215of Node.js core and was removed.
2216
2217<a id="DEP0115"></a>
2218### DEP0115: `crypto.prng()`, `crypto.pseudoRandomBytes()`, `crypto.rng()`
2219<!-- YAML
2220changes:
2221  - version: v11.0.0
2222    pr-url:
2223      - https://github.com/nodejs/node/pull/22519
2224      - https://github.com/nodejs/node/pull/23017
2225    description: Added documentation-only deprecation
2226                 with `--pending-deprecation` support.
2227-->
2228
2229Type: Documentation-only (supports [`--pending-deprecation`][])
2230
2231In recent versions of Node.js, there is no difference between
2232[`crypto.randomBytes()`][] and `crypto.pseudoRandomBytes()`. The latter is
2233deprecated along with the undocumented aliases `crypto.prng()` and
2234`crypto.rng()` in favor of [`crypto.randomBytes()`][] and may be removed in a
2235future release.
2236
2237<a id="DEP0116"></a>
2238### DEP0116: Legacy URL API
2239<!-- YAML
2240changes:
2241  - version: v11.0.0
2242    pr-url: https://github.com/nodejs/node/pull/22715
2243    description: Documentation-only deprecation.
2244-->
2245
2246Type: Documentation-only
2247
2248The [Legacy URL API][] is deprecated. This includes [`url.format()`][],
2249[`url.parse()`][], [`url.resolve()`][], and the [legacy `urlObject`][]. Please
2250use the [WHATWG URL API][] instead.
2251
2252<a id="DEP0117"></a>
2253### DEP0117: Native crypto handles
2254<!-- YAML
2255changes:
2256  - version: v12.0.0
2257    pr-url: https://github.com/nodejs/node/pull/27011
2258    description: End-of-Life.
2259  - version: v11.0.0
2260    pr-url: https://github.com/nodejs/node/pull/22747
2261    description: Runtime deprecation.
2262-->
2263
2264Type: End-of-Life
2265
2266Previous versions of Node.js exposed handles to internal native objects through
2267the `_handle` property of the `Cipher`, `Decipher`, `DiffieHellman`,
2268`DiffieHellmanGroup`, `ECDH`, `Hash`, `Hmac`, `Sign`, and `Verify` classes.
2269The `_handle` property has been removed because improper use of the native
2270object can lead to crashing the application.
2271
2272<a id="DEP0118"></a>
2273### DEP0118: `dns.lookup()` support for a falsy host name
2274<!-- YAML
2275changes:
2276  - version: v11.0.0
2277    pr-url: https://github.com/nodejs/node/pull/23173
2278    description: Runtime deprecation.
2279-->
2280
2281Type: Runtime
2282
2283Previous versions of Node.js supported `dns.lookup()` with a falsy host name
2284like `dns.lookup(false)` due to backward compatibility.
2285This behavior is undocumented and is thought to be unused in real world apps.
2286It will become an error in future versions of Node.js.
2287
2288<a id="DEP0119"></a>
2289### DEP0119: `process.binding('uv').errname()` private API
2290<!-- YAML
2291changes:
2292  - version: v11.0.0
2293    pr-url: https://github.com/nodejs/node/pull/23597
2294    description: Documentation-only deprecation.
2295-->
2296
2297Type: Documentation-only (supports [`--pending-deprecation`][])
2298
2299`process.binding('uv').errname()` is deprecated. Please use
2300[`util.getSystemErrorName()`][] instead.
2301
2302<a id="DEP0120"></a>
2303### DEP0120: Windows Performance Counter support
2304<!-- YAML
2305changes:
2306  - version: v12.0.0
2307    pr-url: https://github.com/nodejs/node/pull/24862
2308    description: End-of-Life.
2309  - version: v11.0.0
2310    pr-url: https://github.com/nodejs/node/pull/22485
2311    description: Runtime deprecation.
2312-->
2313
2314Type: End-of-Life
2315
2316Windows Performance Counter support has been removed from Node.js. The
2317undocumented `COUNTER_NET_SERVER_CONNECTION()`,
2318`COUNTER_NET_SERVER_CONNECTION_CLOSE()`, `COUNTER_HTTP_SERVER_REQUEST()`,
2319`COUNTER_HTTP_SERVER_RESPONSE()`, `COUNTER_HTTP_CLIENT_REQUEST()`, and
2320`COUNTER_HTTP_CLIENT_RESPONSE()` functions have been deprecated.
2321
2322<a id="DEP0121"></a>
2323### DEP0121: `net._setSimultaneousAccepts()`
2324<!-- YAML
2325changes:
2326  - version: v12.0.0
2327    pr-url: https://github.com/nodejs/node/pull/23760
2328    description: Runtime deprecation.
2329-->
2330
2331Type: Runtime
2332
2333The undocumented `net._setSimultaneousAccepts()` function was originally
2334intended for debugging and performance tuning when using the `child_process`
2335and `cluster` modules on Windows. The function is not generally useful and
2336is being removed. See discussion here:
2337<https://github.com/nodejs/node/issues/18391>
2338
2339<a id="DEP0122"></a>
2340### DEP0122: `tls` `Server.prototype.setOptions()`
2341<!-- YAML
2342changes:
2343  - version: v12.0.0
2344    pr-url: https://github.com/nodejs/node/pull/23820
2345    description: Runtime deprecation.
2346-->
2347
2348Type: Runtime
2349
2350Please use `Server.prototype.setSecureContext()` instead.
2351
2352<a id="DEP0123"></a>
2353### DEP0123: setting the TLS ServerName to an IP address
2354<!-- YAML
2355changes:
2356  - version: v12.0.0
2357    pr-url: https://github.com/nodejs/node/pull/23329
2358    description: Runtime deprecation.
2359-->
2360
2361Type: Runtime
2362
2363Setting the TLS ServerName to an IP address is not permitted by
2364[RFC 6066][]. This will be ignored in a future version.
2365
2366<a id="DEP0124"></a>
2367### DEP0124: using `REPLServer.rli`
2368<!-- YAML
2369changes:
2370  - version: v12.0.0
2371    pr-url: https://github.com/nodejs/node/pull/26260
2372    description: Runtime deprecation.
2373-->
2374
2375Type: Runtime
2376
2377This property is a reference to the instance itself.
2378
2379<a id="DEP0125"></a>
2380### DEP0125: `require('_stream_wrap')`
2381<!-- YAML
2382changes:
2383  - version: v12.0.0
2384    pr-url: https://github.com/nodejs/node/pull/26245
2385    description: Runtime deprecation.
2386-->
2387
2388Type: Runtime
2389
2390The `_stream_wrap` module is deprecated.
2391
2392<a id="DEP0126"></a>
2393### DEP0126: `timers.active()`
2394<!-- YAML
2395changes:
2396  - version: v11.14.0
2397    pr-url: https://github.com/nodejs/node/pull/26760
2398    description: Runtime deprecation.
2399-->
2400
2401Type: Runtime
2402
2403The previously undocumented `timers.active()` is deprecated.
2404Please use the publicly documented [`timeout.refresh()`][] instead.
2405If re-referencing the timeout is necessary, [`timeout.ref()`][] can be used
2406with no performance impact since Node.js 10.
2407
2408<a id="DEP0127"></a>
2409### DEP0127: `timers._unrefActive()`
2410<!-- YAML
2411changes:
2412  - version: v11.14.0
2413    pr-url: https://github.com/nodejs/node/pull/26760
2414    description: Runtime deprecation.
2415-->
2416
2417Type: Runtime
2418
2419The previously undocumented and "private" `timers._unrefActive()` is deprecated.
2420Please use the publicly documented [`timeout.refresh()`][] instead.
2421If unreferencing the timeout is necessary, [`timeout.unref()`][] can be used
2422with no performance impact since Node.js 10.
2423
2424<a id="DEP0128"></a>
2425### DEP0128: modules with an invalid `main` entry and an `index.js` file
2426<!-- YAML
2427changes:
2428  - version: v12.0.0
2429    pr-url: https://github.com/nodejs/node/pull/26823
2430    description: Documentation-only.
2431-->
2432
2433Type: Documentation-only (supports [`--pending-deprecation`][])
2434
2435Modules that have an invalid `main` entry (e.g., `./does-not-exist.js`) and
2436also have an `index.js` file in the top level directory will resolve the
2437`index.js` file. That is deprecated and is going to throw an error in future
2438Node.js versions.
2439
2440<a id="DEP0129"></a>
2441### DEP0129: `ChildProcess._channel`
2442<!-- YAML
2443changes:
2444  - version: v11.14.0
2445    pr-url: https://github.com/nodejs/node/pull/26982
2446    description: Documentation-only.
2447-->
2448
2449Type: Documentation-only
2450
2451The `_channel` property of child process objects returned by `spawn()` and
2452similar functions is not intended for public use. Use `ChildProcess.channel`
2453instead.
2454
2455<a id="DEP0130"></a>
2456### DEP0130: `Module.createRequireFromPath()`
2457<!-- YAML
2458changes:
2459  - version: v12.2.0
2460    pr-url: https://github.com/nodejs/node/pull/27405
2461    description: Documentation-only.
2462-->
2463
2464Type: Documentation-only
2465
2466Module.createRequireFromPath() is deprecated. Please use [`module.createRequire()`][] instead.
2467
2468<a id="DEP0131"></a>
2469### DEP0131: Legacy HTTP parser
2470<!-- YAML
2471changes:
2472  - version: v12.3.0
2473    pr-url: https://github.com/nodejs/node/pull/27498
2474    description: Documentation-only.
2475-->
2476
2477Type: Documentation-only
2478
2479The legacy HTTP parser, used by default in versions of Node.js prior to 12.0.0,
2480is deprecated. This deprecation applies to users of the
2481[`--http-parser=legacy`][] command-line flag.
2482
2483<a id="DEP0132"></a>
2484### DEP0132: `worker.terminate()` with callback
2485<!-- YAML
2486changes:
2487  - version: v12.5.0
2488    pr-url: https://github.com/nodejs/node/pull/28021
2489    description: Runtime deprecation.
2490-->
2491
2492Type: Runtime
2493
2494Passing a callback to [`worker.terminate()`][] is deprecated. Use the returned
2495`Promise` instead, or a listener to the worker’s `'exit'` event.
2496
2497<a id="DEP0133"></a>
2498### DEP0133: `http` `connection`
2499<!-- YAML
2500changes:
2501  - version: v12.12.0
2502    pr-url: https://github.com/nodejs/node/pull/29015
2503    description: Documentation-only deprecation.
2504-->
2505
2506Type: Documentation-only
2507
2508Prefer [`response.socket`][] over [`response.connection`][] and
2509[`request.socket`][] over [`request.connection`][].
2510
2511<a id="DEP0134"></a>
2512### DEP0134: `process._tickCallback`
2513<!-- YAML
2514changes:
2515  - version: v12.12.0
2516    pr-url: https://github.com/nodejs/node/pull/29781
2517    description: Documentation-only deprecation.
2518-->
2519Type: Documentation-only (supports [`--pending-deprecation`][])
2520
2521The `process._tickCallback` property was never documented as
2522an officially supported API.
2523
2524<a id="DEP0136"></a>
2525### DEP0136: `http` `finished`
2526<!-- YAML
2527changes:
2528  - version: v12.16.0
2529    pr-url: https://github.com/nodejs/node/pull/28679
2530    description: Documentation-only deprecation.
2531-->
2532
2533Type: Documentation-only
2534
2535[`response.finished`][] indicates whether [`response.end()`][] has been
2536called, not whether `'finish'` has been emitted and the underlying data
2537is flushed.
2538
2539Use [`response.writableFinished`][] or [`response.writableEnded`][]
2540accordingly instead to avoid the ambigiuty.
2541
2542To maintain existing behaviour `response.finished` should be replaced with
2543`response.writableEnded`.
2544
2545<a id="DEP0139"></a>
2546### DEP0139: `process.umask()` with no arguments
2547<!-- YAML
2548changes:
2549  - version:
2550    - v12.19.0
2551    - v14.0.0
2552    pr-url: https://github.com/nodejs/node/pull/32499
2553    description: Documentation-only deprecation.
2554-->
2555
2556Type: Documentation-only
2557
2558Calling `process.umask()` with no argument causes the process-wide umask to be
2559written twice. This introduces a race condition between threads, and is a
2560potential security vulnerability. There is no safe, cross-platform alternative
2561API.
2562
2563<a id="DEP0144"></a>
2564### DEP0144: `module.parent`
2565<!-- YAML
2566changes:
2567  - version:
2568    - v12.19.0
2569    - v14.6.0
2570    pr-url: https://github.com/nodejs/node/pull/32217
2571    description: Documentation-only deprecation.
2572-->
2573
2574Type: Documentation-only
2575
2576A CommonJS module can access the first module that required it using
2577`module.parent`. This feature is deprecated because it does not work
2578consistently in the presence of ECMAScript modules and because it gives an
2579inaccurate representation of the CommonJS module graph.
2580
2581Some modules use it to check if they are the entry point of the current process.
2582Instead, it is recommended to compare `require.main` and `module`:
2583
2584```js
2585if (require.main === module) {
2586  // Code section that will run only if current file is the entry point.
2587}
2588```
2589
2590When looking for the CommonJS modules that have required the current one,
2591`require.cache` and `module.children` can be used:
2592
2593```js
2594const moduleParents = Object.values(require.cache)
2595  .filter((m) => m.children.includes(module));
2596```
2597
2598[`--http-parser=legacy`]: cli.html#cli_http_parser_library
2599[`--pending-deprecation`]: cli.html#cli_pending_deprecation
2600[`--throw-deprecation`]: cli.html#cli_throw_deprecation
2601[`Buffer.allocUnsafeSlow(size)`]: buffer.html#buffer_static_method_buffer_allocunsafeslow_size
2602[`Buffer.from(array)`]: buffer.html#buffer_static_method_buffer_from_array
2603[`Buffer.from(buffer)`]: buffer.html#buffer_static_method_buffer_from_buffer
2604[`Buffer.isBuffer()`]: buffer.html#buffer_static_method_buffer_isbuffer_obj
2605[`Cipher`]: crypto.html#crypto_class_cipher
2606[`Decipher`]: crypto.html#crypto_class_decipher
2607[`EventEmitter.listenerCount(emitter, eventName)`]: events.html#events_eventemitter_listenercount_emitter_eventname
2608[`REPLServer.clearBufferedCommand()`]: repl.html#repl_replserver_clearbufferedcommand
2609[`Server.connections`]: net.html#net_server_connections
2610[`Server.getConnections()`]: net.html#net_server_getconnections_callback
2611[`Server.listen({fd: <number>})`]: net.html#net_server_listen_handle_backlog_callback
2612[`SlowBuffer`]: buffer.html#buffer_class_slowbuffer
2613[`assert`]: assert.html
2614[`asyncResource.runInAsyncScope()`]: async_hooks.html#async_hooks_asyncresource_runinasyncscope_fn_thisarg_args
2615[`child_process`]: child_process.html
2616[`clearInterval()`]: timers.html#timers_clearinterval_timeout
2617[`clearTimeout()`]: timers.html#timers_cleartimeout_timeout
2618[`console.error()`]: console.html#console_console_error_data_args
2619[`console.log()`]: console.html#console_console_log_data_args
2620[`crypto.DEFAULT_ENCODING`]: crypto.html#crypto_crypto_default_encoding
2621[`crypto.createCipher()`]: crypto.html#crypto_crypto_createcipher_algorithm_password_options
2622[`crypto.createCipheriv()`]: crypto.html#crypto_crypto_createcipheriv_algorithm_key_iv_options
2623[`crypto.createDecipher()`]: crypto.html#crypto_crypto_createdecipher_algorithm_password_options
2624[`crypto.createDecipheriv()`]: crypto.html#crypto_crypto_createdecipheriv_algorithm_key_iv_options
2625[`crypto.fips`]: crypto.html#crypto_crypto_fips
2626[`crypto.pbkdf2()`]: crypto.html#crypto_crypto_pbkdf2_password_salt_iterations_keylen_digest_callback
2627[`crypto.randomBytes()`]: crypto.html#crypto_crypto_randombytes_size_callback
2628[`crypto.scrypt()`]: crypto.html#crypto_crypto_scrypt_password_salt_keylen_options_callback
2629[`decipher.final()`]: crypto.html#crypto_decipher_final_outputencoding
2630[`decipher.setAuthTag()`]: crypto.html#crypto_decipher_setauthtag_buffer
2631[`domain`]: domain.html
2632[`ecdh.setPublicKey()`]: crypto.html#crypto_ecdh_setpublickey_publickey_encoding
2633[`emitter.listenerCount(eventName)`]: events.html#events_emitter_listenercount_eventname
2634[`fs.access()`]: fs.html#fs_fs_access_path_mode_callback
2635[`fs.exists(path, callback)`]: fs.html#fs_fs_exists_path_callback
2636[`fs.lchmod(path, mode, callback)`]: fs.html#fs_fs_lchmod_path_mode_callback
2637[`fs.lchmodSync(path, mode)`]: fs.html#fs_fs_lchmodsync_path_mode
2638[`fs.lchown(path, uid, gid, callback)`]: fs.html#fs_fs_lchown_path_uid_gid_callback
2639[`fs.lchownSync(path, uid, gid)`]: fs.html#fs_fs_lchownsync_path_uid_gid
2640[`fs.read()`]: fs.html#fs_fs_read_fd_buffer_offset_length_position_callback
2641[`fs.readSync()`]: fs.html#fs_fs_readsync_fd_buffer_offset_length_position
2642[`fs.stat()`]: fs.html#fs_fs_stat_path_options_callback
2643[`http.get()`]: http.html#http_http_get_options_callback
2644[`http.request()`]: http.html#http_http_request_options_callback
2645[`https.get()`]: https.html#https_https_get_options_callback
2646[`https.request()`]: https.html#https_https_request_options_callback
2647[`module.createRequire()`]: module.html#module_module_createrequire_filename
2648[`os.networkInterfaces()`]: os.html#os_os_networkinterfaces
2649[`os.tmpdir()`]: os.html#os_os_tmpdir
2650[`process.env`]: process.html#process_process_env
2651[`punycode`]: punycode.html
2652[`require.extensions`]: modules.html#modules_require_extensions
2653[`request.socket`]: http.html#http_request_socket
2654[`request.connection`]: http.html#http_request_connection
2655[`response.socket`]: http.html#http_response_socket
2656[`response.connection`]: http.html#http_response_connection
2657[`response.end()`]: http.html#http_response_end_data_encoding_callback
2658[`response.finished`]: http.html#http_response_finished
2659[`response.writableFinished`]: http.html#http_response_writablefinished
2660[`response.writableEnded`]: http.html#http_response_writableended
2661[`script.createCachedData()`]: vm.html#vm_script_createcacheddata
2662[`setInterval()`]: timers.html#timers_setinterval_callback_delay_args
2663[`setTimeout()`]: timers.html#timers_settimeout_callback_delay_args
2664[`timeout.ref()`]: timers.html#timers_timeout_ref
2665[`timeout.refresh()`]: timers.html#timers_timeout_refresh
2666[`timeout.unref()`]: timers.html#timers_timeout_unref
2667[`tls.CryptoStream`]: tls.html#tls_class_tls_cryptostream
2668[`tls.SecureContext`]: tls.html#tls_tls_createsecurecontext_options
2669[`tls.SecurePair`]: tls.html#tls_class_tls_securepair
2670[`tls.TLSSocket`]: tls.html#tls_class_tls_tlssocket
2671[`tls.checkServerIdentity()`]: tls.html#tls_tls_checkserveridentity_hostname_cert
2672[`tls.createSecureContext()`]: tls.html#tls_tls_createsecurecontext_options
2673[`url.format()`]: url.html#url_url_format_urlobject
2674[`url.parse()`]: url.html#url_url_parse_urlstring_parsequerystring_slashesdenotehost
2675[`url.resolve()`]: url.html#url_url_resolve_from_to
2676[`util._extend()`]: util.html#util_util_extend_target_source
2677[`util.getSystemErrorName()`]: util.html#util_util_getsystemerrorname_err
2678[`util.inspect()`]: util.html#util_util_inspect_object_options
2679[`util.inspect.custom`]: util.html#util_util_inspect_custom
2680[`util.isArray()`]: util.html#util_util_isarray_object
2681[`util.isBoolean()`]: util.html#util_util_isboolean_object
2682[`util.isBuffer()`]: util.html#util_util_isbuffer_object
2683[`util.isDate()`]: util.html#util_util_isdate_object
2684[`util.isError()`]: util.html#util_util_iserror_object
2685[`util.isFunction()`]: util.html#util_util_isfunction_object
2686[`util.isNull()`]: util.html#util_util_isnull_object
2687[`util.isNullOrUndefined()`]: util.html#util_util_isnullorundefined_object
2688[`util.isNumber()`]: util.html#util_util_isnumber_object
2689[`util.isObject()`]: util.html#util_util_isobject_object
2690[`util.isPrimitive()`]: util.html#util_util_isprimitive_object
2691[`util.isRegExp()`]: util.html#util_util_isregexp_object
2692[`util.isString()`]: util.html#util_util_isstring_object
2693[`util.isSymbol()`]: util.html#util_util_issymbol_object
2694[`util.isUndefined()`]: util.html#util_util_isundefined_object
2695[`util.log()`]: util.html#util_util_log_string
2696[`util.types`]: util.html#util_util_types
2697[`util`]: util.html
2698[`worker.exitedAfterDisconnect`]: cluster.html#cluster_worker_exitedafterdisconnect
2699[`worker.terminate()`]: worker_threads.html#worker_threads_worker_terminate
2700[`zlib.bytesWritten`]: zlib.html#zlib_zlib_byteswritten
2701[Legacy URL API]: url.html#url_legacy_url_api
2702[NIST SP 800-38D]: https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38d.pdf
2703[RFC 6066]: https://tools.ietf.org/html/rfc6066#section-3
2704[WHATWG URL API]: url.html#url_the_whatwg_url_api
2705[alloc]: buffer.html#buffer_static_method_buffer_alloc_size_fill_encoding
2706[alloc_unsafe_size]: buffer.html#buffer_static_method_buffer_allocunsafe_size
2707[from_arraybuffer]: buffer.html#buffer_static_method_buffer_from_arraybuffer_byteoffset_length
2708[from_string_encoding]: buffer.html#buffer_static_method_buffer_from_string_encoding
2709[legacy `urlObject`]: url.html#url_legacy_urlobject
2710