Skip to content

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Jun 18, 2025

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
@prosemirror-adapter/react (source) ^0.4.0^0.5.0 age confidence
esbuild ^0.25.0^0.27.0 age confidence
next (source) 15.3.315.5.11 age confidence

Release Notes

prosekit/prosemirror-adapter (@​prosemirror-adapter/react)

v0.5.1

Compare Source

Patch Changes
  • 3cbcb90: Improve lifecycle handling to avoid warnings like "flushSync was called from inside a lifecycle method" in race conditions.

v0.4.6

Compare Source

Patch Changes

v0.4.5

Compare Source

Patch Changes

v0.4.4

Compare Source

Patch Changes
  • b870f56: Properly cancel animation frame.

v0.4.2

Compare Source

Patch Changes
evanw/esbuild (esbuild)

v0.27.2

Compare Source

  • Allow import path specifiers starting with #/ (#​4361)

    Previously the specification for package.json disallowed import path specifiers starting with #/, but this restriction has recently been relaxed and support for it is being added across the JavaScript ecosystem. One use case is using it for a wildcard pattern such as mapping #/* to ./src/* (previously you had to use another character such as #_* instead, which was more confusing). There is some more context in nodejs/node#49182.

    This change was contributed by @​hybrist.

  • Automatically add the -webkit-mask prefix (#​4357, #​4358)

    This release automatically adds the -webkit- vendor prefix for the mask CSS shorthand property:

    /* Original code */
    main {
      mask: url(x.png) center/5rem no-repeat
    }
    
    /* Old output (with --target=chrome110) */
    main {
      mask: url(x.png) center/5rem no-repeat;
    }
    
    /* New output (with --target=chrome110) */
    main {
      -webkit-mask: url(x.png) center/5rem no-repeat;
      mask: url(x.png) center/5rem no-repeat;
    }

    This change was contributed by @​BPJEnnova.

  • Additional minification of switch statements (#​4176, #​4359)

    This release contains additional minification patterns for reducing switch statements. Here is an example:

    // Original code
    switch (x) {
      case 0:
        foo()
        break
      case 1:
      default:
        bar()
    }
    
    // Old output (with --minify)
    switch(x){case 0:foo();break;case 1:default:bar()}
    
    // New output (with --minify)
    x===0?foo():bar();
  • Forbid using declarations inside switch clauses (#​4323)

    This is a rare change to remove something that was previously possible. The Explicit Resource Management proposal introduced using declarations. These were previously allowed inside case and default clauses in switch statements. This had well-defined semantics and was already widely implemented (by V8, SpiderMonkey, TypeScript, esbuild, and others). However, it was considered to be too confusing because of how scope works in switch statements, so it has been removed from the specification. This edge case will now be a syntax error. See tc39/proposal-explicit-resource-management#215 and rbuckton/ecma262#14 for details.

    Here is an example of code that is no longer allowed:

    switch (mode) {
      case 'read':
        using readLock = db.read()
        return readAll(readLock)
    
      case 'write':
        using writeLock = db.write()
        return writeAll(writeLock)
    }

    That code will now have to be modified to look like this instead (note the additional { and } block statements around each case body):

    switch (mode) {
      case 'read': {
        using readLock = db.read()
        return readAll(readLock)
      }
      case 'write': {
        using writeLock = db.write()
        return writeAll(writeLock)
      }
    }

    This is not being released in one of esbuild's breaking change releases since this feature hasn't been finalized yet, and esbuild always tracks the current state of the specification (so esbuild's previous behavior was arguably incorrect).

v0.27.1

Compare Source

  • Fix bundler bug with var nested inside if (#​4348)

    This release fixes a bug with the bundler that happens when importing an ES module using require (which causes it to be wrapped) and there's a top-level var inside an if statement without being wrapped in a { ... } block (and a few other conditions). The bundling transform needed to hoist these var declarations outside of the lazy ES module wrapper for correctness. See the issue for details.

  • Fix minifier bug with for inside try inside label (#​4351)

    This fixes an old regression from version v0.21.4. Some code was introduced to move the label inside the try statement to address a problem with transforming labeled for await loops to avoid the await (the transformation involves converting the for await loop into a for loop and wrapping it in a try statement). However, it introduces problems for cross-compiled JVM code that uses all three of these features heavily. This release restricts this transform to only apply to for loops that esbuild itself generates internally as part of the for await transform. Here is an example of some affected code:

    // Original code
    d: {
      e: {
        try {
          while (1) { break d }
        } catch { break e; }
      }
    }
    
    // Old output (with --minify)
    a:try{e:for(;;)break a}catch{break e}
    
    // New output (with --minify)
    a:e:try{for(;;)break a}catch{break e}
  • Inline IIFEs containing a single expression (#​4354)

    Previously inlining of IIFEs (immediately-invoked function expressions) only worked if the body contained a single return statement. Now it should also work if the body contains a single expression statement instead:

    // Original code
    const foo = () => {
      const cb = () => {
        console.log(x())
      }
      return cb()
    }
    
    // Old output (with --minify)
    const foo=()=>(()=>{console.log(x())})();
    
    // New output (with --minify)
    const foo=()=>{console.log(x())};
  • The minifier now strips empty finally clauses (#​4353)

    This improvement means that finally clauses containing dead code can potentially cause the associated try statement to be removed from the output entirely in minified builds:

    // Original code
    function foo(callback) {
      if (DEBUG) stack.push(callback.name);
      try {
        callback();
      } finally {
        if (DEBUG) stack.pop();
      }
    }
    
    // Old output (with --minify --define:DEBUG=false)
    function foo(a){try{a()}finally{}}
    
    // New output (with --minify --define:DEBUG=false)
    function foo(a){a()}
  • Allow tree-shaking of the Symbol constructor

    With this release, calling Symbol is now considered to be side-effect free when the argument is known to be a primitive value. This means esbuild can now tree-shake module-level symbol variables:

    // Original code
    const a = Symbol('foo')
    const b = Symbol(bar)
    
    // Old output (with --tree-shaking=true)
    const a = Symbol("foo");
    const b = Symbol(bar);
    
    // New output (with --tree-shaking=true)
    const b = Symbol(bar);

v0.27.0

Compare Source

This release deliberately contains backwards-incompatible changes. To avoid automatically picking up releases like this, you should either be pinning the exact version of esbuild in your package.json file (recommended) or be using a version range syntax that only accepts patch upgrades such as ^0.26.0 or ~0.26.0. See npm's documentation about semver for more information.

  • Use Uint8Array.fromBase64 if available (#​4286)

    With this release, esbuild's binary loader will now use the new Uint8Array.fromBase64 function unless it's unavailable in the configured target environment. If it's unavailable, esbuild's previous code for this will be used as a fallback. Note that this means you may now need to specify target when using this feature with Node (for example --target=node22) unless you're using Node v25+.

  • Update the Go compiler from v1.23.12 to v1.25.4 (#​4208, #​4311)

    This raises the operating system requirements for running esbuild:

    • Linux: now requires a kernel version of 3.2 or later
    • macOS: now requires macOS 12 (Monterey) or later

v0.26.0

Compare Source

  • Enable trusted publishing (#​4281)

    GitHub and npm are recommending that maintainers for packages such as esbuild switch to trusted publishing. With this release, a VM on GitHub will now build and publish all of esbuild's packages to npm instead of me. In theory.

    Unfortunately there isn't really a way to test that this works other than to do it live. So this release is that live test. Hopefully this release is uneventful and is exactly the same as the previous one (well, except for the green provenance attestation checkmark on npm that happens with trusted publishing).

v0.25.12

Compare Source

  • Fix a minification regression with CSS media queries (#​4315)

    The previous release introduced support for parsing media queries which unintentionally introduced a regression with the removal of duplicate media rules during minification. Specifically the grammar for @media <media-type> and <media-condition-without-or> { ... } was missing an equality check for the <media-condition-without-or> part, so rules with different suffix clauses in this position would incorrectly compare equal and be deduplicated. This release fixes the regression.

  • Update the list of known JavaScript globals (#​4310)

    This release updates esbuild's internal list of known JavaScript globals. These are globals that are known to not have side-effects when the property is accessed. For example, accessing the global Array property is considered to be side-effect free but accessing the global scrollY property can trigger a layout, which is a side-effect. This is used by esbuild's tree-shaking to safely remove unused code that is known to be side-effect free. This update adds the following global properties:

    From ES2017:

    • Atomics
    • SharedArrayBuffer

    From ES2020:

    • BigInt64Array
    • BigUint64Array

    From ES2021:

    • FinalizationRegistry
    • WeakRef

    From ES2025:

    • Float16Array
    • Iterator

    Note that this does not indicate that constructing any of these objects is side-effect free, just that accessing the identifier is side-effect free. For example, this now allows esbuild to tree-shake classes that extend from Iterator:

    // This can now be tree-shaken by esbuild:
    class ExampleIterator extends Iterator {}
  • Add support for the new @view-transition CSS rule (#​4313)

    With this release, esbuild now has improved support for pretty-printing and minifying the new @view-transition rule (which esbuild was previously unaware of):

    /* Original code */
    @&#8203;view-transition {
      navigation: auto;
      types: check;
    }
    
    /* Old output */
    @&#8203;view-transition { navigation: auto; types: check; }
    
    /* New output */
    @&#8203;view-transition {
      navigation: auto;
      types: check;
    }

    The new view transition feature provides a mechanism for creating animated transitions between documents in a multi-page app. You can read more about view transition rules here.

    This change was contributed by @​yisibl.

  • Trim CSS rules that will never match

    The CSS minifier will now remove rules whose selectors contain :is() and :where() as those selectors will never match. These selectors can currently be automatically generated by esbuild when you give esbuild nonsensical input such as the following:

    /* Original code */
    div:before {
      color: green;
      &.foo {
        color: red;
      }
    }
    
    /* Old output (with --supported:nesting=false --minify) */
    div:before{color:green}:is().foo{color:red}
    
    /* New output (with --supported:nesting=false --minify) */
    div:before{color:green}

    This input is nonsensical because CSS nesting is (unfortunately) not supported inside of pseudo-elements such as :before. Currently esbuild generates a rule containing :is() in this case when you tell esbuild to transform nested CSS into non-nested CSS. I think it's reasonable to do that as it sort of helps explain what's going on (or at least indicates that something is wrong in the output). It shouldn't be present in minified code, however, so this release now strips it out.

v0.25.11

Compare Source

  • Add support for with { type: 'bytes' } imports (#​4292)

    The import bytes proposal has reached stage 2.7 in the TC39 process, which means that although it isn't quite recommended for implementation, it's generally approved and ready for validation. Furthermore it has already been implemented by Deno and Webpack. So with this release, esbuild will also add support for this. It behaves exactly the same as esbuild's existing binary loader. Here's an example:

    import data from './image.png' with { type: 'bytes' }
    const view = new DataView(data.buffer, 0, 24)
    const width = view.getInt32(16)
    const height = view.getInt32(20)
    console.log('size:', width + '\xD7' + height)
  • Lower CSS media query range syntax (#​3748, #​4293)

    With this release, esbuild will now transform CSS media query range syntax into equivalent syntax using min-/max- prefixes for older browsers. For example, the following CSS:

    @&#8203;media (640px <= width <= 960px) {
      main {
        display: flex;
      }
    }

    will be transformed like this with a target such as --target=chrome100 (or more specifically with --supported:media-range=false if desired):

    @&#8203;media (min-width: 640px) and (max-width: 960px) {
      main {
        display: flex;
      }
    }

v0.25.10

Compare Source

  • Fix a panic in a minification edge case (#​4287)

    This release fixes a panic due to a null pointer that could happen when esbuild inlines a doubly-nested identity function and the final result is empty. It was fixed by emitting the value undefined in this case, which avoids the panic. This case must be rare since it hasn't come up until now. Here is an example of code that previously triggered the panic (which only happened when minifying):

    function identity(x) { return x }
    identity({ y: identity(123) })
  • Fix @supports nested inside pseudo-element (#​4265)

    When transforming nested CSS to non-nested CSS, esbuild is supposed to filter out pseudo-elements such as ::placeholder for correctness. The CSS nesting specification says the following:

    The nesting selector cannot represent pseudo-elements (identical to the behavior of the ':is()' pseudo-class). We’d like to relax this restriction, but need to do so simultaneously for both ':is()' and '&', since they’re intentionally built on the same underlying mechanisms.

    However, it seems like this behavior is different for nested at-rules such as @supports, which do work with pseudo-elements. So this release modifies esbuild's behavior to now take that into account:

    /* Original code */
    ::placeholder {
      color: red;
      body & { color: green }
      @&#8203;supports (color: blue) { color: blue }
    }
    
    /* Old output (with --supported:nesting=false) */
    ::placeholder {
      color: red;
    }
    body :is() {
      color: green;
    }
    @&#8203;supports (color: blue) {
       {
        color: blue;
      }
    }
    
    /* New output (with --supported:nesting=false) */
    ::placeholder {
      color: red;
    }
    body :is() {
      color: green;
    }
    @&#8203;supports (color: blue) {
      ::placeholder {
        color: blue;
      }
    }

v0.25.9

Compare Source

  • Better support building projects that use Yarn on Windows (#​3131, #​3663)

    With this release, you can now use esbuild to bundle projects that use Yarn Plug'n'Play on Windows on drives other than the C: drive. The problem was as follows:

    1. Yarn in Plug'n'Play mode on Windows stores its global module cache on the C: drive
    2. Some developers put their projects on the D: drive
    3. Yarn generates relative paths that use ../.. to get from the project directory to the cache directory
    4. Windows-style paths don't support directory traversal between drives via .. (so D:\.. is just D:)
    5. I didn't have access to a Windows machine for testing this edge case

    Yarn works around this edge case by pretending Windows-style paths beginning with C:\ are actually Unix-style paths beginning with /C:/, so the ../.. path segments are able to navigate across drives inside Yarn's implementation. This was broken for a long time in esbuild but I finally got access to a Windows machine and was able to debug and fix this edge case. So you should now be able to bundle these projects with esbuild.

  • Preserve parentheses around function expressions (#​4252)

    The V8 JavaScript VM uses parentheses around function expressions as an optimization hint to immediately compile the function. Otherwise the function would be lazily-compiled, which has additional overhead if that function is always called immediately as lazy compilation involves parsing the function twice. You can read V8's blog post about this for more details.

    Previously esbuild did not represent parentheses around functions in the AST so they were lost during compilation. With this change, esbuild will now preserve parentheses around function expressions when they are present in the original source code. This means these optimization hints will not be lost when bundling with esbuild. In addition, esbuild will now automatically add this optimization hint to immediately-invoked function expressions. Here's an example:

    // Original code
    const fn0 = () => 0
    const fn1 = (() => 1)
    console.log(fn0, function() { return fn1() }())
    
    // Old output
    const fn0 = () => 0;
    const fn1 = () => 1;
    console.log(fn0, function() {
      return fn1();
    }());
    
    // New output
    const fn0 = () => 0;
    const fn1 = (() => 1);
    console.log(fn0, (function() {
      return fn1();
    })());

    Note that you do not want to wrap all function expressions in parentheses. This optimization hint should only be used for functions that are called on initial load. Using this hint for functions that are not called on initial load will unnecessarily delay the initial load. Again, see V8's blog post linked above for details.

  • Update Go from 1.23.10 to 1.23.12 (#​4257, #​4258)

    This should have no effect on existing code as this version change does not change Go's operating system support. It may remove certain false positive reports (specifically CVE-2025-4674 and CVE-2025-47907) from vulnerability scanners that only detect which version of the Go compiler esbuild uses.

v0.25.8

Compare Source

  • Fix another TypeScript parsing edge case (#​4248)

    This fixes a regression with a change in the previous release that tries to more accurately parse TypeScript arrow functions inside the ?: operator. The regression specifically involves parsing an arrow function containing a #private identifier inside the middle of a ?: ternary operator inside a class body. This was fixed by propagating private identifier state into the parser clone used to speculatively parse the arrow function body. Here is an example of some affected code:

    class CachedDict {
      #has = (a: string) => dict.has(a);
      has = window
        ? (word: string): boolean => this.#has(word)
        : this.#has;
    }
  • Fix a regression with the parsing of source phase imports

    The change in the previous release to parse source phase imports failed to properly handle the following cases:

    import source from 'bar'
    import source from from 'bar'
    import source type foo from 'bar'

    Parsing for these cases should now be fixed. The first case was incorrectly treated as a syntax error because esbuild was expecting the second case. And the last case was previously allowed but is now forbidden. TypeScript hasn't added this feature yet so it remains to be seen whether the last case will be allowed, but it's safer to disallow it for now. At least Babel doesn't allow the last case when parsing TypeScript, and Babel was involved with the source phase import specification.

v0.25.7

Compare Source

  • Parse and print JavaScript imports with an explicit phase (#​4238)

    This release adds basic syntax support for the defer and source import phases in JavaScript:

    • defer

      This is a stage 3 proposal for an upcoming JavaScript feature that will provide one way to eagerly load but lazily initialize imported modules. The imported module is automatically initialized on first use. Support for this syntax will also be part of the upcoming release of TypeScript 5.9. The syntax looks like this:

      import defer * as foo from "<specifier>";
      const bar = await import.defer("<specifier>");

      Note that this feature deliberately cannot be used with the syntax import defer foo from "<specifier>" or import defer { foo } from "<specifier>".

    • source

      This is a stage 3 proposal for an upcoming JavaScript feature that will provide another way to eagerly load but lazily initialize imported modules. The imported module is returned in an uninitialized state. Support for this syntax may or may not be a part of TypeScript 5.9 (see this issue for details). The syntax looks like this:

      import source foo from "<specifier>";
      const bar = await import.source("<specifier>");

      Note that this feature deliberately cannot be used with the syntax import defer * as foo from "<specifier>" or import defer { foo } from "<specifier>".

    This change only adds support for this syntax. These imports cannot currently be bundled by esbuild. To use these new features with esbuild's bundler, the imported paths must be external to the bundle and the output format must be set to esm.

  • Support optionally emitting absolute paths instead of relative paths (#​338, #​2082, #​3023)

    This release introduces the --abs-paths= feature which takes a comma-separated list of situations where esbuild should use absolute paths instead of relative paths. There are currently three supported situations: code (comments and string literals), log (log message text and location info), and metafile (the JSON build metadata).

    Using absolute paths instead of relative paths is not the default behavior because it means that the build results are no longer machine-independent (which means builds are no longer reproducible). Absolute paths can be useful when used with certain terminal emulators that allow you to click on absolute paths in the terminal text and/or when esbuild is being automatically invoked from several different directories within the same script.

  • Fix a TypeScript parsing edge case (#​4241)

    This release fixes an edge case with parsing an arrow function in TypeScript with a return type that's in the middle of a ?: ternary operator. For example:

    x = a ? (b) : c => d;
    y = a ? (b) : c => d : e;

    The : token in the value assigned to x pairs with the ? token, so it's not the start of a return type annotation. However, the first : token in the value assigned to y is the start of a return type annotation because after parsing the arrow function body, it turns out there's another : token that can be used to pair with the ? token. This case is notable as it's the first TypeScript edge case that esbuild has needed a backtracking parser to parse. It has been addressed by a quick hack (cloning the whole parser) as it's a rare edge case and esbuild doesn't otherwise need a backtracking parser. Hopefully this is sufficient and doesn't cause any issues.

  • Inline small constant strings when minifying

    Previously esbuild's minifier didn't inline string constants because strings can be arbitrarily long, and this isn't necessarily a size win if the string is used more than once. Starting with this release, esbuild will now inline string constants when the length of the string is three code units or less. For example:

    // Original code
    const foo = 'foo'
    console.log({ [foo]: true })
    
    // Old output (with --minify --bundle --format=esm)
    var o="foo";console.log({[o]:!0});
    
    // New output (with --minify --bundle --format=esm)
    console.log({foo:!0});

    Note that esbuild's constant inlining only happens in very restrictive scenarios to avoid issues with TDZ handling. This change doesn't change when esbuild's constant inlining happens. It only expands the scope of it to include certain string literals in addition to numeric and boolean literals.

v0.25.6

Compare Source

  • Fix a memory leak when cancel() is used on a build context (#​4231)

    Calling rebuild() followed by cancel() in rapid succession could previously leak memory. The bundler uses a producer/consumer model internally, and the resource leak was caused by the consumer being termianted while there were still remaining unreceived results from a producer. To avoid the leak, the consumer now waits for all producers to finish before terminating.

  • Support empty :is() and :where() syntax in CSS (#​4232)

    Previously using these selectors with esbuild would generate a warning. That warning has been removed in this release for these cases.

  • Improve tree-shaking of try statements in dead code (#​4224)

    With this release, esbuild will now remove certain try statements if esbuild considers them to be within dead code (i.e. code that is known to not ever be evaluated). For example:

    // Original code
    return 'foo'
    try { return 'bar' } catch {}
    
    // Old output (with --minify)
    return"foo";try{return"bar"}catch{}
    
    // New output (with --minify)
    return"foo";
  • Consider negated bigints to have no side effects

    While esbuild currently considers 1, -1, and 1n to all have no side effects, it didn't previously consider -1n to have no side effects. This is because esbuild does constant folding with numbers but not bigints. However, it meant that unused negative bigint constants were not tree-shaken. With this release, esbuild will now consider these expressions to also be side-effect free:

    // Original code
    let a = 1, b = -1, c = 1n, d = -1n
    
    // Old output (with --bundle --minify)
    (()=>{var n=-1n;})();
    
    // New output (with --bundle --minify)
    (()=>{})();
  • Support a configurable delay in watch mode before rebuilding (#​3476, #​4178)

    The watch() API now takes a delay option that lets you add a delay (in milliseconds) before rebuilding when a change is detected in watch mode. If you use a tool that regenerates multiple source files very slowly, this should make it more likely that esbuild's watch mode won't generate a broken intermediate build before the successful final build. This option is also available via the CLI using the --watch-delay= flag.

    This should also help avoid confusion about the watch() API's options argument. It was previously empty to allow for future API expansion, which caused some people to think that the documentation was missing. It's no longer empty now that the watch() API has an option.

  • Allow mixed array for entryPoints API option (#​4223)

    The TypeScript type definitions now allow you to pass a mixed array of both string literals and object literals to the entryPoints API option, such as ['foo.js', { out: 'lib', in: 'bar.js' }]. This was always possible to do in JavaScript but the TypeScript type definitions were previously too restrictive.

  • Update Go from 1.23.8 to 1.23.10 (#​4204, #​4207)

    This should have no effect on existing code as this version change does not change Go's operating system support. It may remove certain false positive reports (specifically CVE-2025-4673 and CVE-2025-22874) from vulnerability scanners that only detect which version of the Go compiler esbuild uses.

  • Experimental support for esbuild on OpenHarmony (#​4212)

    With this release, esbuild now publishes the @esbuild/openharmony-arm64 npm package for OpenHarmony. It contains a WebAssembly binary instead of a native binary because Go doesn't currently support OpenHarmony. Node does support it, however, so in theory esbuild should now work on OpenHarmony through WebAssembly.

    This change was contributed by @​hqzing.

vercel/next.js (next)

v15.5.11

Compare Source

v15.5.10

Compare Source

v15.5.9

Compare Source

v15.5.8

Compare Source

v15.5.7

Compare Source

v15.5.6

Compare Source

[!NOTE]
This release is backporting bug fixes. It does not include all pending features/changes on canary.

Core Changes
  • Turbopack: don't define process.cwd() in node_modules #​83452
Credits

Huge thanks to @​mischnic for helping!

v15.5.5

Compare Source

[!NOTE]
This release is backporting bug fixes. It does not include all pending features/changes on canary.

Core Changes
  • Split code-frame into separate compiled package (#​84238)
  • Add deprecation warning to Runtime config (#​84650)
  • fix: unstable_cache should perform blocking revalidation during ISR revalidation (#​84716)
  • feat: experimental.middlewareClientMaxBodySize body cloning limit (#​84722)
  • fix: missing next/link types with typedRoutes (#​84779)
Misc Changes
  • docs: early October improvements and fixes (#​84334)
Credits

Huge thanks to @​devjiwonchoi, @​ztanner, and @​icyJoseph for helping!

v15.5.4

Compare Source

[!NOTE]
This release is backporting bug fixes. It does not include all pending features/changes on canary.

Core Changes
  • fix: ensure onRequestError is invoked when otel enabled (#​83343)
  • fix: devtools initial position should be from next config (#​83571)
  • [devtool] fix overlay styles are missing (#​83721)
  • Turbopack: don't match dynamic pattern for node_modules packages (#​83176)
  • Turbopack: don't treat metadata routes as RSC (#​82911)
  • [turbopack] Improve handling of symlink resolution errors in track_glob and read_glob (#​83357)
  • Turbopack: throw large static metadata error earlier (#​82939)
  • fix: error overlay not closing when backdrop clicked (#​83981)
  • Turbopack: flush Node.js worker IPC on error (#​84077)
Misc Changes
  • [CNA] use linter preference (#​83194)
  • CI: use KV for test timing data (#​83745)
  • docs: september improvements and fixes (#​83997)
Credits

Huge thanks to @​yiminghe, @​huozhi, @​devjiwonchoi, @​mischnic, @​lukesandberg, @​ztanner, @​icyJoseph, @​leerob, @​fufuShih, @​dwrth, @​aymericzip, @​obendev, @​molebox, @​OoMNoO, @​pontasan, @​styfle, @​HondaYt, @​ryuapp, @​lpalmes, and @​ijjk for helping!

v15.5.3

Compare Source

[!NOTE]
This release is backporting bug fixes. It does not include all pending features/changes on canary.

Core Changes
  • fix: validation return types of pages API routes (#​83069)
  • fix: relative paths in dev in validator.ts (#​83073)
  • fix: remove satisfies keyword from type validation to preserve old TS compatibility (#​83071)
Credits

Huge thanks to @​bgub for helping!

v15.5.2

Compare Source

[!NOTE]
This release is backporting bug fixes. It does not include all pending features/changes on canary.

Core Changes
  • fix: disable unknownatrules lint rule entirely (#​83059)
  • revert: add ?dpl to fonts in /_next/static/media (#​83062)
Credits

Huge thanks to @​bgub and @​ztanner for helping!

v15.5.1

Compare Source

[!NOTE]
This release is backporting bug fixes. It does not include all pending features/changes on canary.

Core Changes
  • fix: aliased navigations should apply scroll handling (#​82900)
  • Turbopack: fix invalid NFT entry with file behind symlink (#​82887)
  • fix: typesafe linking to route handlers and pages API routes (#​82858)
  • fix: change "noUnknownAtRules" to "warn" for Biome (#​82974)
  • fix: add path normalization to getRelativePath for Windows (#​82918)
  • feat: add typesafety with config.typedRoutes to redirect() and permanentRedirect() (#​82860)
  • fix: avoid importing types that will be unused (#​82856)
  • fix: update the config.api.responseLimit type (#​82852)
  • fix: update validation return types (#​82854)
Credits

Huge thanks to @​bgub, @​mischnic, and @​ztanner for helping!

v15.5.0

Compare Source

Core Changes
  • Use and enforce exhaustive switch statements for work unit store: #​81577
  • Enable @typescript-eslint/switch-exhaustiveness-check rule: #​81583
  • [dynamicIO] use RSC dynamicness to control partial vs complete PPR result: #​81627
  • [dynamicIO] Do not use React.unstable_postpone(): #​81652
  • feat: new detachable panel UI: #​81483
  • Turbopack: content-hash PageLoaderAsset: #​81450
  • [segment explorer] fix content overflow styling: #​81649
  • Improve reliability of owner stacks for async I/O errors: #​81501
  • fix(router): Prevent redirect loop on root data requests with basePath: #​81096
  • Ensure custom NextServer config is honored: #​81681
  • Fix before interactive incorrectly render css: #​81146
  • perf: memorize exclude function in webpack config: #​81525
  • Also enforce experimental features when there's no next config file: #​81679
  • feat(next/image): warn when images.qualities is undefined: #​81690
  • feat(build): optimize filterUniqueParamsCombinations to generate sub-combinations: #​81321
  • Update NextAdapter type and re-export: #​81692
  • upgrade to path-to-regexp@​6.3.0: #​80123
  • [metadata] replace for initial body icon case: #​81688
  • [segment explorer] remove dev panel ui flag: #​81670
  • Simplify running test apps locally with ppr or dynamicIO enabled: #​81668
  • [turbopack] Return cached Promise from __turbopack_load_by_url__ : #​81663
  • Upgrade React from 97cdd5d3-20250710 to 2f0e7e57-20250715: #​81678
  • Delete unused renderToString function: #​81707
  • Discard prerendered route handler data from FS cache after revalidation: #​81611
  • Upgrade React from 2f0e7e57-20250715 to d85ec5f5-20250716: #​81708
  • Ignore pending revalidations during prerendering: #​81621
  • [turbopack] Clear chunk cache on HMR instead of creating new next-server VM: #​81664
  • fix: rootParams should throw in client when fallbackParams are not present: #​81711
  • perf(build): optimize buildAppStaticPaths performance and add helper function: #​81386
  • Turbopack: Support string without options for @​next/mdx: #​81713
  • [Segment Cache] Support dynamic head prefetching: #​81677
  • [sourcemaps] Consistent cursor columns: #​81375
  • fix: revert client segment route changes for sub shell generation: #​81731
  • fix: pages router metadata bugs with React 19: #​81733
  • Improve error handling for headers/cookies/draftMode in 'use cache': #​81716
  • [devtool] fix duplicate rendered indicator on server: #​81729
  • [devtool] enable segment explorer by default: #​81737
  • [turbopack] Stop exposing globals from Turbopack runtime: #​81727
  • Remove unnecessary await: #​81761
  • [chore] bump zod to latest v3: #​81757
  • feat(turbopack): Log anonymized internal error (panic) information to telemetry: #​81272
  • fix: revert client segment route changes for sub shell generation: #​81740
  • bugfix: static resources staleTime should be renewed once refetched: #​81771
  • [devtool] move font styling to global.css: #​81782
  • [devtool] copy decoded info of error details: #​81735
  • fix(build): add sourcePage context for PPR dynamic route lambda creation: #​81781
  • refactor: rename experimental.dynamicIO to experimental.cacheComponents: #​81562
  • Properly handle hanging promise rejections during prerendering: #​81754
  • Upgrade React from d85ec5f5-20250716 to dffacc7b-20250717: #​81767
  • Refactor: Get rid of overly generic getExpectedRequestStore function: #​81791
  • [devtool] migrate css reset to global.css: #​81783
  • [dev-tools] Robust shortcut detection: #​81756
  • [segment explorer] hide for pages router: #​81813
  • [devtool] fix scrollbar styling: #​81814
  • fix(ppr): ensure fallback route params trigger dynamic resume: #​81812
  • [devtools] restart server pending state: #​80858
  • Turbopack: fix dist dir on Windows: #​81758
  • fix: remove boundary sentinel from RSC responses: #​81857
  • [sourcemaps] Try VM for retrieving source maps first: #​81869
  • [devtools] save user config inside .next/cache: #​81807
  • Server: Remove unused code: #​81886
  • refactor: encapsulate content type within RenderResult: #​81861
  • refactor: handle null RenderResult responses gracefully: #​81895
  • Upgrade React from dffacc7b-20250717 to e9638c33-20250721: #​81899
  • chore(devtools): sync todos to linear: #​81901
  • Introduce 'use cache: private': #​81816
  • chore(deps): update browserslist: #​81851
  • Remove web-server from edge-ssr-app: #​81389
  • Stabilize node middleware support: #​81907
  • Add run-turbopack-compiler trace span: #​81917
  • fix: support calling onClose multiple times in edge-ssr-app: #​81911
  • fix: logging the correct process for listened port: #​81903
  • Build: Include rewrites in manifest generation: #​81894
  • Routing: Clean up some code: #​81932
  • [sourcemaps] Ensure codeframe when calling Client Functions from Server: #​81918

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@changeset-bot
Copy link

changeset-bot bot commented Jun 18, 2025

⚠️ No Changeset found

Latest commit: 01f6822

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@renovate renovate bot force-pushed the renovate/all-minor-patch branch from 9fceeb5 to a408645 Compare July 4, 2025 01:47
@renovate renovate bot changed the title chore: bump up next version to v15.3.4 chore: bump up next version to v15.3.5 Jul 4, 2025
@renovate renovate bot force-pushed the renovate/all-minor-patch branch from a408645 to f0f22bb Compare July 14, 2025 22:30
@renovate renovate bot changed the title chore: bump up next version to v15.3.5 chore: bump up next version to v15.4.1 Jul 14, 2025
@renovate renovate bot force-pushed the renovate/all-minor-patch branch from f0f22bb to 817c923 Compare July 18, 2025 22:46
@renovate renovate bot changed the title chore: bump up next version to v15.4.1 chore: bump up next version to v15.4.2 Jul 18, 2025
@renovate renovate bot force-pushed the renovate/all-minor-patch branch from 817c923 to f5a5d5f Compare July 22, 2025 23:49
@renovate renovate bot changed the title chore: bump up next version to v15.4.2 chore: bump up next version to v15.4.3 Jul 22, 2025
@renovate renovate bot force-pushed the renovate/all-minor-patch branch from f5a5d5f to 3525cc6 Compare July 25, 2025 01:29
@renovate renovate bot changed the title chore: bump up next version to v15.4.3 chore: bump up next version to v15.4.4 Jul 25, 2025
@renovate renovate bot force-pushed the renovate/all-minor-patch branch from 3525cc6 to e882681 Compare July 29, 2025 22:46
@renovate renovate bot changed the title chore: bump up next version to v15.4.4 chore: bump up next version to v15.4.5 Jul 29, 2025
@renovate renovate bot force-pushed the renovate/all-minor-patch branch from e882681 to c8c3cab Compare August 6, 2025 20:58
@renovate renovate bot changed the title chore: bump up next version to v15.4.5 chore: bump up next version to v15.4.6 Aug 6, 2025
@renovate renovate bot force-pushed the renovate/all-minor-patch branch 2 times, most recently from cc58194 to 6b7d325 Compare August 19, 2025 01:38
@renovate renovate bot changed the title chore: bump up next version to v15.4.6 chore: bump up next version to v15.4.7 Aug 19, 2025
@renovate renovate bot force-pushed the renovate/all-minor-patch branch from 6b7d325 to 19a3f99 Compare August 24, 2025 03:12
@renovate renovate bot changed the title chore: bump up next version to v15.4.7 chore: bump up next version to v15.5.0 Aug 24, 2025
@renovate renovate bot force-pushed the renovate/all-minor-patch branch from 19a3f99 to 5e2ae18 Compare September 1, 2025 05:51
@renovate renovate bot changed the title chore: bump up next version to v15.5.0 chore: bump up next version to v15.5.2 Sep 1, 2025
@renovate renovate bot force-pushed the renovate/all-minor-patch branch from 5e2ae18 to e270ab3 Compare September 11, 2025 01:49
@renovate renovate bot changed the title chore: bump up next version to v15.5.2 chore: bump up next version to v15.5.3 Sep 11, 2025
@renovate renovate bot force-pushed the renovate/all-minor-patch branch from e270ab3 to 6ecbff6 Compare September 23, 2025 17:27
@renovate renovate bot changed the title chore: bump up next version to v15.5.3 chore: bump up next version to v15.5.4 Sep 23, 2025
@renovate renovate bot force-pushed the renovate/all-minor-patch branch from 6ecbff6 to c924733 Compare September 25, 2025 19:43
@renovate renovate bot force-pushed the renovate/all-minor-patch branch from c924733 to af212a1 Compare October 13, 2025 17:37
@renovate renovate bot changed the title chore: bump up next version to v15.5.4 chore: bump up next version to v15.5.5 Oct 13, 2025
@renovate renovate bot force-pushed the renovate/all-minor-patch branch from af212a1 to ed24bd9 Compare October 17, 2025 06:13
@renovate renovate bot changed the title chore: bump up next version to v15.5.5 chore: bump up next version to v15.5.6 Oct 17, 2025
@renovate renovate bot force-pushed the renovate/all-minor-patch branch from ed24bd9 to 6e17687 Compare October 21, 2025 10:05
@renovate renovate bot force-pushed the renovate/all-minor-patch branch from 6e17687 to 3aeeeb6 Compare November 19, 2025 23:47
@renovate renovate bot changed the title chore: bump up next version to v15.5.6 chore: bump up all non-major dependencies Nov 19, 2025
@renovate renovate bot force-pushed the renovate/all-minor-patch branch from 3aeeeb6 to dd9485e Compare November 24, 2025 04:28
@renovate renovate bot force-pushed the renovate/all-minor-patch branch from dd9485e to f27c72d Compare December 3, 2025 20:05
@renovate renovate bot force-pushed the renovate/all-minor-patch branch 3 times, most recently from a2dd828 to b915a62 Compare December 18, 2025 12:13
@renovate renovate bot force-pushed the renovate/all-minor-patch branch from b915a62 to cd8f24a Compare December 26, 2025 05:59
@renovate renovate bot force-pushed the renovate/all-minor-patch branch from cd8f24a to 907d108 Compare January 8, 2026 18:46
@renovate renovate bot force-pushed the renovate/all-minor-patch branch from 907d108 to ef7a75d Compare January 19, 2026 18:36
@renovate renovate bot force-pushed the renovate/all-minor-patch branch from ef7a75d to ad70c1e Compare January 26, 2026 22:41
@renovate renovate bot force-pushed the renovate/all-minor-patch branch from ad70c1e to 01f6822 Compare January 29, 2026 02:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants