Skip to content

chore(deps): update dependency solid-js to v1.9.4 [security] - #47

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/npm-solid-js-vulnerability
Open

chore(deps): update dependency solid-js to v1.9.4 [security]#47
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/npm-solid-js-vulnerability

Conversation

@renovate

@renovate renovate Bot commented Feb 25, 2025

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
solid-js (source) 1.7.91.9.4 age confidence

Solid Lacks Escaping of HTML in JSX Fragments allows for Cross-Site Scripting (XSS)

CVE-2025-27109 / GHSA-3qxh-p7jc-5xh6

More information

Details

Inserts/JSX expressions inside illegal inlined JSX fragments lacked escaping, allowing user input to be rendered as HTML when put directly inside JSX fragments.

For instance, ?text=<svg/onload=alert(1)> would trigger XSS here.

  const [text] = createResource(() => {
    return new URL(getRequestEvent().request.url).searchParams.get("text");
  });

  return (
    <>
      Text: {text()}
    </>
  );

Severity

  • CVSS Score: 7.3 / 10 (High)
  • Vector String: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Release Notes

solidjs/solid (solid-js)

v1.9.4

Compare Source

v1.9.3

Compare Source

v1.9.2

v1.9.0: - LGTM!

Compare Source

This release like the last is focusing on small quality of life improvements and adjustments that will help us move towards 2.0. So while not the most exciting release to everyone it provides some really important features and fixes to some developers.

And unlike many previous releases the vast majority of the work and features came from PRs from the community. So really all I can say is Looks Good to Me!

Better JSX Validation

While still incomplete across templates we've added JSDOM to the compiler to better detect invalid HTML at build time by comparing what we expect the template to be with what a browser would output. This now includes things that are nested we didn't detect before like putting <a> inside other <a> tags which will lead to the browser "correcting" it in less than intuitive ways.

Improved Exports

While each environment in solid-js/web has its own methods to be used in the compiler. We are now exporting the client methods from the server to prevent weird import errors. Now these methods will throw if used in this environment but shouldn't break your build.

Additionally we have seen some issues in bundlers that incorrectly feed our ESM exports back through the browser field. While this is a known issue they all pointed issues at each other and with no intention of fixing it. We have removed the browser field in this release, meaning some legacy packages may have issues resolving browser if they don't support export conditions.

This is regretful but this blocked deployments on several platforms and since this was the only fix at our disposal after two years of attempting to push this issue to the bundlers to no avail, we've moved forward with it.

Custom Element improvements

We have a few improvements to our custom element support in this release. First off we now detect elements with the is attribute as custom elements which means all the special behavior is afforded to them.

We've also improved our event handler delegating retargetting to better handle shadow DOM events. There were cases where we skipped over part of the tree.

Finally we've added the bool: attribute namespace to handle explicitly setting certain attributes according to boolean attribute rules. While this isn't necessary for built-in booleans currently we handle most attributes as properties and we lacked a specific override. But now we have it:

<my-element bool:enable={isEnabled()}></my-element>

Support for handleEvent Syntax in Non-Delegated Events

A little known thing is that events actually also support objects instead of functions (See: https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener)

We(thanks @​titoBouzout) realized we can use this mechanism as a way to set advanced rules like passive or capture on this object as way to handle all current and future event attributes that browsers might add. This way we don't need specific mechanisms like oncapture: (which is now deprecated).

Instead using on: you can set the event properties you wish.

<>
  <div on:click={{
    handleEvent(e) {
      console.log("clicked", e)
    },
    once:true
  }/>
  <div on:wheel={{
    handleEvent(e) {
      e.preventDefault() // only works on not passive events
      e.stopPropagation()  
      console.log("wheel stopped?")
    },
    passive: false
  }} />
</>

Other Updates

We've fixed an issue with lazy images. Apparently, cloneNode doesn't handle them properly so we've updated our heuristic to treat templates with lazy images to be handled with importNode.

We've improved our Hydration Mismatch Error to output the template of that it can't find the matching ID for. This should make it easier to track down where the hydration errors are occurring. There have been several hydration improvements over the later 1.8 releases so upgrading will likely improve the situation for those who have been facing issues.

Finally, we've improved some of the types in the JSX and Signal Setter in this release.


Big thanks to those who contributed to this release: @​wkelly17, @​olivercoad, @​titoBouzout, @​trusktr, @​Huliiiiii. And thanks to all of you who gave feedback on the Metadata/Head Tag RFC. While it didn't make it in this time around you've definitely given us stuff to consider for its future design.

Best,
@​ryansolid

v1.8.23

Compare Source

v1.8.22

Compare Source

v1.8.21

Compare Source

v1.8.20

Compare Source

v1.8.19

Compare Source

v1.8.18

Compare Source

v1.8.17

Compare Source

v1.8.16

Compare Source

v1.8.15

Compare Source

v1.8.14

Compare Source

v1.8.13

Compare Source

v1.8.12

Compare Source

v1.8.11

Compare Source

v1.8.10

Compare Source

v1.8.9

Compare Source

v1.8.8

Compare Source

v1.8.7

Compare Source

v1.8.6

Compare Source

v1.8.5

Compare Source

v1.8.4

Compare Source

v1.8.3

Compare Source

v1.8.2

Compare Source

v1.8.1

Compare Source

v1.8.0

Compare Source

I admit this is not the most exciting release from a feature standpoint. We are in that holding pattern between the end of 1.x and the start of 2.0. We recently made our new reactive experiments public and continue to build those out in public with @​solidjs/signals.

This version is more about addressing some of the fundamentals that will help us in other projects like SolidStart while we do the transition. A big part of this is applying what we have learned when doing performance benchmarks for the work that has been funded by Google Chrome Aurora.

Async and Resources need work and are too all in. It is great to have a solution but now that we have a better understanding we need to start breaking things apart into their fundamental pieces.

De-duping Streaming Serialization

This is the marquee feature of this release and is largely the work of @​lxsmnsyc. Solid has been able to serialize promises and do streaming for a couple of years now, but it was very special-cased. Now it is a generic mechanism.

This matters because it means that we have decoupled the promise serialization from Resources, and in so decoupled the whole when the stream is done from them. This opens up things like nested promises.

More so we have a mechanism now that deeply de-dupes data serialized across flushes. This is important for features like Islands where you might pass the same props to multiple Islands across different Suspense boundaries and don't want to send the data more than once. And even examples where that data can be accessed at varying depths (recursive comments in say a Hackernews site).

Hydration Improvements

Fragments for Hydration have been a bit of a pain and we keep seeming to have different issues reported around element duplication. Most commonly this has been around where there are lazy component siblings or where the fragment is top-level. After looking into and fixing an issue for Astro I decided to look at some of the oldest bugs in Solid and found it was a similar bug.

In many cases, the DOM can change throughout Hydration while doing things like streaming but we need to pause and resume hydration because code isn't available yet. While we don't create elements during hydration, getting an accurate snapshot of the DOM for the current state for future list reconciliation is a process we've had a few tries at but in 1.8 we update this in a way that makes sure it doesn't get out of date.

Also in 1.8, we have added some performance improvements to hydration in the form of not redundantly setting attributes or props as the page hydrates similar to how we don't update text. This is all migration towards a future where we don't need to do as much hydration, but it is important to note that values will be kept as they were on the server rather than how they may compute at runtime during hydration.

Smaller Templates

In 1.7 we removed unnecessary closing tags from template strings. It was a bit painful because we were a bit overzealous at first. While I believe in the end we got to a good place, ultimately all but the simplest reductions have been hidden behind a compiler flag(omitNestedClosingTags). Thanks to work from @​intrnl we are implementing another template size reduction technique of removing unnecessary quotes. Quotes are actually not required by HTML in some cases and it can add up.

Other
Fix NGINX Server Side Includes

Comments led with # are treated as special directives for a few different servers so we've needed to change our open hydration markers to $. As usual, your version of Solid and the Babel Plugin should be the same to ensure this matches up.

Better Guards on Global Scripts

Solid uses an inline HydrationScript as a way to do processing before the framework and code have loaded. To handle things like event capture and streaming. However, we didn't do a good job of guarding the right thing when multiple were added to the same page, a situation that can happen in Micro-frontends or 3rd party Islands solutions. Now the script guards against duplicate inclusion.

v1.7.12

Compare Source

v1.7.11

Compare Source

v1.7.10

Compare Source


Configuration

📅 Schedule: (UTC)

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

🔕 Ignore: Close this PR and you won't be reminded about this update again.


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

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

@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch from 1a553b8 to 9beca7d Compare March 3, 2025 11:51
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch 2 times, most recently from 5851589 to 51ff83d Compare March 17, 2025 17:31
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch from 51ff83d to 0e6f8d6 Compare April 1, 2025 13:02
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch from 0e6f8d6 to 731172c Compare April 8, 2025 14:33
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch from 731172c to 40d8e89 Compare April 24, 2025 10:26
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch from 40d8e89 to 5fb6dfb Compare May 19, 2025 21:22
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch from 5fb6dfb to fd83ed0 Compare May 28, 2025 09:48
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch from fd83ed0 to 6351d33 Compare June 22, 2025 13:35
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch from 6351d33 to 5aec1dd Compare July 2, 2025 15:31
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch from 5aec1dd to 2fdb618 Compare August 10, 2025 13:12
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch from 2fdb618 to 3d9a6e7 Compare August 19, 2025 12:35
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch from 3d9a6e7 to 33cea32 Compare August 31, 2025 12:34
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch from 33cea32 to d6d159e Compare September 25, 2025 20:13
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch from d6d159e to 365b7eb Compare October 21, 2025 16:57
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch from 365b7eb to 13fd4d3 Compare November 11, 2025 00:44
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch from 13fd4d3 to 259bc5f Compare November 18, 2025 16:13
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch from 259bc5f to 3c444f7 Compare December 3, 2025 17:16
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch from 3c444f7 to 7f19750 Compare December 31, 2025 17:42
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch from 7f19750 to 87b0f95 Compare January 8, 2026 19:15
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch 2 times, most recently from 9a80c9f to 7aae6ad Compare January 23, 2026 18:38
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch from 7aae6ad to 2624157 Compare February 2, 2026 21:06
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch from 2624157 to 56a263b Compare March 5, 2026 17:34
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch from 56a263b to c632d1b Compare March 13, 2026 15:38
@renovate renovate Bot changed the title chore(deps): update dependency solid-js to v1.9.4 [security] chore(deps): update dependency solid-js to v1.9.4 [security] - autoclosed Mar 27, 2026
@renovate renovate Bot closed this Mar 27, 2026
@renovate
renovate Bot deleted the renovate/npm-solid-js-vulnerability branch March 27, 2026 01:27
@renovate renovate Bot changed the title chore(deps): update dependency solid-js to v1.9.4 [security] - autoclosed chore(deps): update dependency solid-js to v1.9.4 [security] Mar 30, 2026
@renovate renovate Bot reopened this Mar 30, 2026
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch 2 times, most recently from c632d1b to f77c809 Compare March 30, 2026 17:38
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch from f77c809 to 8a03610 Compare April 8, 2026 20:07
@renovate renovate Bot changed the title chore(deps): update dependency solid-js to v1.9.4 [security] chore(deps): update dependency solid-js to v1.9.4 [security] - autoclosed Apr 27, 2026
@renovate renovate Bot closed this Apr 27, 2026
@renovate renovate Bot changed the title chore(deps): update dependency solid-js to v1.9.4 [security] - autoclosed chore(deps): update dependency solid-js to v1.9.4 [security] Apr 27, 2026
@renovate renovate Bot reopened this Apr 27, 2026
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch 2 times, most recently from 8a03610 to 25e9523 Compare April 27, 2026 23:09
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch 2 times, most recently from c21c812 to 90ef001 Compare May 18, 2026 17:47
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch from 90ef001 to f26a0dc Compare June 1, 2026 19:12
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch from f26a0dc to e706fd8 Compare June 11, 2026 15:46
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch from e706fd8 to 13bf254 Compare July 12, 2026 11:54
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch from 13bf254 to c7f5474 Compare July 21, 2026 02:32
@renovate
renovate Bot force-pushed the renovate/npm-solid-js-vulnerability branch from c7f5474 to f8331a6 Compare July 30, 2026 17:02
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