# solid/patches.md · versecafe/quoin

[View on GitCafe](https://git.cafe/versecafe/quoin/blob/7545d17e8aecad98f126e982a34b9b5973519311/solid/patches.md)

Repository: [versecafe/quoin](https://git.cafe/versecafe/quoin)

Visibility: public

Requested revision: 7545d17e8aecad98f126e982a34b9b5973519311

Requested commit: 7545d17e8aecad98f126e982a34b9b5973519311

Commit: 7545d17e8aecad98f126e982a34b9b5973519311

Blob: 60b0f6c2297d2c5b59ed2159348aadf818c01bb4

Size: 1918 bytes

[Immutable source](https://git.cafe/versecafe/quoin/blob/7545d17e8aecad98f126e982a34b9b5973519311/solid/patches.md?format=markdown)

````
# Solid 2.0 beta 28 — local patch

Quoin carries one `bun patch` against `solid-js@2.0.0-beta.28`:

- `patches/solid-js@2.0.0-beta.28.patch`

It is registered through `patchedDependencies` in `package.json`.

## Context provider tracking

The provider returned by `createContext` writes `props.value` while its
`createRoot` is the active tracking scope:

```js
setContext(provider, props.value);
```

When the value getter reads a signal, the provider root subscribes to it.
That produces strict untracked-read diagnostics and can re-run provider-owned
work when the value's dependencies change.

The patch keeps context setup snapshot-based by untracking the value write:

```js
// dist/dev.js
untrack(() => setContext(provider, props.value));

// dist/dev.cjs
signals.untrack(() => signals.setContext(provider, props.value));
```

Only the development ESM and CJS builds are patched, matching the scope that
Quoin exercises under its development test conditions.

## Patches removed in beta.28

Quoin previously carried three additional beta.14 fixes. Source inspection
and the beta.28 regression suite confirm they are now upstream:

- `@solidjs/signals`: rejected actions settle at the call site instead of
  recursively throwing into a completed generator.
- `@solidjs/signals`: async-memo rejection wakes dependents.
- `@solidjs/web`: Portal delegation uses the raw mount node rather than
  passing its proxy to `Node.contains`.

Their patch files and `patchedDependencies` entries were removed during the
beta.28 upgrade.

## Re-checking on the next beta

1. Remove the `solid-js` patch entry and install the new beta.
2. Inspect every `createContext` provider build for an untracked value write.
3. If the fix is upstream, delete the patch. Otherwise regenerate it against
   the exact new package version.
4. Run unit, SSR, hydration, production, package-consumer, demo, and Chromium
   browser validation.

````
