NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #451 most downloaded on npm
A JavaScript implementation of many web standards
Last release 11 days ago
22 Sep 2026
Release timing varies
gaps range from 2 weeks to 3 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
15 years old
287 releases · first in 2011
Fix: getAttribute now returns null for attributes that are not present, as per DOM4 (but in contradiction to DOM1 through DOM3).
getAttribute now returns null for attributes that are not present, as per DOM4 (but in contradiction to DOM1 through DOM3).NodeList-returning methods (such as querySelectorAll) now return a real NodeList instance.NodeLists no longer expose nonstandard properties to the world, like toArray, without first prefixing them with an underscore.NodeLists no longer inconsistently have array methods. Previously, live node lists would have indexOf, while static node lists would have them all. Now, they have no array methods at all, as is correct per the specification.Fix: stylesheets with @media rules were crashing calls to getComputedStyle, e.g. those in jQuery's initialization.
@media rules were crashing calls to getComputedStyle, e.g. those in jQuery's initialization.One column per quarter.
Fix: make document.write calls insert new elements correctly. (@johanoverip, @kblomquist)
document.write calls insert new elements correctly. (@johanoverip, @kblomquist)<input> tags with no type attribute now return a default value of "text" when calling inputEl.getAttribute("type").Fix: stylesheets with "joining" rules (i.e. those containing comma-separated selectors) now apply when using getComputedStyle. (@chad3814, @godmar)
getComputedStyle. (@chad3814, @godmar)Fix: crashes when invalid selectors were present in stylesheets.
Fix: a real querySelector implementation, courtesy of the nwmatcher project, solves many outstanding querySelector bugs.
querySelector implementation, courtesy of the nwmatcher project, solves many outstanding querySelector bugs.matchesSelector, again via nwmatcher.<style> and <link rel="stylesheet"> elements being applied to the results of window.getComputedStyle. (@chad3814)focus() and blur() methods on appropriate elements. More work remains.jsdom.env. (@TomNomNom)toString, hasOwnProperty, etc. could cause lots of problems.load event always fires asynchronously now, even if no external resources are necessary.Fix: URL resolution was broken on pages that included href-less tags.
href-less <base> tags.attr in the global scope when using node-canvas. (@starsquare)SkipExternalResources feature accepts a regular expression. (@fgalassi)Un-revert: cssstyle has fixed its memory problems, so we get back accurate cssText and style properties again.
cssText and style properties again.Revert: had to revert the use of the cssstyle package. cssText and style properties are no longer as accurate.
cssText and style properties are no longer as accurate.Update: Sizzle version updated to circa September 2012.
"".CSSStyleDeclaration, giving much more accurate cssText and style properties on all elements. (@chad3814)checked property on checkboxes and radiobuttons now reflects the attribute correctly.HTMLOptionElement's text property should return the option's text, not its value.name property only exist on certain specific tags, and accurately reflect the corresponding name attribute.outerHTML (especially important for <pre> elements).value property from Text instances (e.g. text nodes).String.prototype.normalize method, like that of sugar.js.npm test.Fix: make sure that doctypes don't get set as the documentElement (Aria Stewart)
<script> or <style> tag. (Andreas Lind Petersen)Fix: when serializing single tags use ' />' instead of '/>' (kapouer)
Fix: remove unused style property which was causing explosions in 0.2.12 and node 0.4.7
Fix: do not include gmon.out/v8.log/tests in npm distribution
Add: allow non-unique element ids (Avi Deitcher)
jsdom.level(x, 'feature')toArray and item on NodeList objects non-enumerable propertieswindow.close in the readme:not() throws a ReferenceError (Felix Gnass)Fix: move away from deprecated 'sys' module
ProcessExternalResources['script'] is disabled, do not run inline event handlers. #355Fix: ensure features are properly reset after a jsdom.env invocation. Closes #239
scripts and src properties (cjroebuck)Fix: inline event handlers are ignored by everything except for the javascript context
Nothing published for this version
Add: support for window.location.search and document.cookie (Derek Lindahl)
Fix: serialize special characters in Element.innerHTML/Element.attributes like a grade A browser (Jason Priestley)
Fix: adding script to invalid/incomplete dom (document.documentElement) now catches the error and passes it in the .env callback (Gregory Tomlinson)
.env callback (Gregory Tomlinson)<div onclick='some.horrible.string()'>) (Brian McDaniel)Fix: segfault due to window being garbage collected prematurely NOTE: you must manually close the window to free memory (window.close())
Switch to Contextify to manage the window's script execution.
<!DOCTYPE>. Closes #259.document.parentWindow === window workJavascript execution fixes [#248, #163, #179]
<, >, &, and '. Closes #147 and #177.option element. - YonathanNothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →