Skip to content

build(deps): bump preact to 10.29.7 (skip 10.29.3) - #2855

Draft
cursor[bot] wants to merge 3 commits into
mainfrom
cursor/dependency-update-risk-review-0214
Draft

build(deps): bump preact to 10.29.7 (skip 10.29.3)#2855
cursor[bot] wants to merge 3 commits into
mainfrom
cursor/dependency-update-risk-review-0214

Conversation

@cursor

@cursor cursor Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Asana Task/Github Issue: N/A — dependency review follow-up to Dependabot PR #2854

Description

Bumps preact from ^10.29.2 to ^10.29.7 instead of stopping at 10.29.3.

Preact 10.29.3 includes subtree-effect flushing (#5055) that was reverted in 10.29.6 due to incompatibility with useSignalEffect. This repo uses @preact/signals / useSignalEffect extensively in new-tab (customizer, burning, protections), history, and related providers.

10.29.7 retains the applicable bugfixes (error recovery, memory-leak guards, Suspense hydration fixes) without the reverted changes.

Testing Steps

  • npm ci
  • npm run build
  • npm run test-unit (special-pages)
  • npm run test-int -- pages/history/integration-tests/history.spec.js pages/new-tab/app/customizer/integration-tests/customizer.spec.js pages/new-tab/integration-tests/new-tab.spec.js pages/onboarding/integration-tests/onboarding.v4.spec.js --reporter list

Checklist

  • I have tested this change locally
  • I have tested this change locally in all supported browsers
  • This change will be visible to users
  • I have added automated tests that cover this change
  • I have ensured the change is gated by config
  • This change was covered by a ship review
  • This change was covered by a tech design
  • Any dependent config has been merged
Open in Web View Automation 

Note

Medium Risk
Touches the core Preact runtime used by privileged special pages with heavy useSignalEffect usage; wrong minor could cause subtle UI bugs, though 10.29.7 is chosen specifically to avoid the known 10.29.3 regression.

Overview
Updates special-pages to preact ^10.29.7 (from ^10.29.2) and refreshes package-lock.json for that workspace, including resolved 10.29.7 and routine transitive version bumps from the install.

The intent is to land fixes in the 10.29.x line while avoiding 10.29.3, which shipped subtree-effect flushing that broke useSignalEffect usage (reverted in 10.29.6). This repo relies on @preact/signals / useSignalEffect across history, new-tab, and related UI.

Reviewed by Cursor Bugbot for commit 8cee8f5. Bugbot is set up for automated code reviews on this repo. Configure here.

dependabot Bot and others added 2 commits July 10, 2026 10:53
Bumps [preact](https://github.com/preactjs/preact) from 10.29.2 to 10.29.3.
- [Release notes](https://github.com/preactjs/preact/releases)
- [Commits](preactjs/preact@10.29.2...10.29.3)

---
updated-dependencies:
- dependency-name: preact
  dependency-version: 10.29.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Skip 10.29.3 because it includes subtree-effect flushing (#5055) that was
reverted in 10.29.6 due to incompatibility with useSignalEffect. This
repo relies heavily on @preact/signals across new-tab, history, and
customizer flows.

10.29.7 includes the retained bugfixes (error recovery, memory leaks,
Suspense hydration) without the reverted changes.
@github-actions

github-actions Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Build Branch

Branch pr-releases/cursor/dependency-update-risk-review-0214
Commit b868df04ee
Updated July 10, 2026 at 11:40:48 AM UTC

Static preview entry points

QR codes (mobile preview)
Entry point QR code
Docs QR for docs preview
Static pages QR for static pages preview
Integration pages QR for integration pages preview

Integration commands

npm (Android / Extension):

npm i github:duckduckgo/content-scope-scripts#pr-releases/cursor/dependency-update-risk-review-0214

Swift Package Manager (Apple):

.package(url: "https://github.com/duckduckgo/content-scope-scripts.git", branch: "pr-releases/cursor/dependency-update-risk-review-0214")

git submodule (Windows):

git -C submodules/content-scope-scripts fetch origin pr-releases/cursor/dependency-update-risk-review-0214
git -C submodules/content-scope-scripts checkout origin/pr-releases/cursor/dependency-update-risk-review-0214
Pin to exact commit

npm (Android / Extension):

npm i github:duckduckgo/content-scope-scripts#b868df04ee0226937fa568d99692d17a8016e99d

Swift Package Manager (Apple):

.package(url: "https://github.com/duckduckgo/content-scope-scripts.git", revision: "b868df04ee0226937fa568d99692d17a8016e99d")

git submodule (Windows):

git -C submodules/content-scope-scripts fetch origin pr-releases/cursor/dependency-update-risk-review-0214
git -C submodules/content-scope-scripts checkout b868df04ee0226937fa568d99692d17a8016e99d

@github-actions github-actions Bot added the semver-patch Bug fix / internal — no release needed label Jul 10, 2026
@github-actions

github-actions Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

[Beta] Generated file diff

Time updated: Fri, 10 Jul 2026 11:41:24 GMT

Android
    - android/pages/duckplayer/dist/index.js

File has changed

Apple
    - apple/pages/duckplayer/dist/index.js
  • apple/pages/duckplayer/index.html
  • apple/pages/history/dist/index.js
  • apple/pages/new-tab/dist/index.js
  • apple/pages/onboarding/dist/index.js
  • apple/pages/release-notes/dist/index.js
  • apple/pages/special-error/dist/index.js
  • apple/pages/special-error/index.html

File has changed

Integration
    - integration/pages/duckplayer/dist/index.js
  • integration/pages/example/dist/index.js
  • integration/pages/history/dist/index.js
  • integration/pages/new-tab/dist/index.js
  • integration/pages/onboarding/dist/index.js
  • integration/pages/release-notes/dist/index.js
  • integration/pages/special-error/dist/index.js

File has changed

Windows
    - windows/pages/duckplayer/dist/index.js
  • windows/pages/history/dist/index.js
  • windows/pages/new-tab/dist/index.js
  • windows/pages/onboarding/dist/index.js
  • windows/pages/release-notes/dist/index.js
  • windows/pages/special-error/dist/index.js
  • windows/pages/special-error/index.html

File has changed

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Injected PR Evaluation: Web Compatibility & Security

PR: build(deps): bump preact to 10.29.7 (skip 10.29.3) (71b45d088cee8f57)

Web Compatibility Assessment

File Lines Severity Finding
special-pages/package.json 46 info Preact ^10.29.2^10.29.7. Preact is a special-pages-only runtime dependency — it is not bundled into injected/ page-world scripts. Zero impact on third-party site API fidelity, prototype patching, or toString() masking.
package-lock.json (lockfile) info Resolved preact 10.29.2 → 10.29.7. Numerous transitive lockfile updates (semver, brace-expansion, cacheable, etc.) are all dev: true — build/lint tooling only, not shipped to browsers.
special-pages/ (usage) info All special pages bootstrap via render(), not hydrate(). Upstream hydration/Suspense recovery fixes in 10.29.3–10.29.5 are low relevance for current usage.
special-pages/ (usage) info useId() is used extensively (NTP omnibar, drawers, tooltips, favorites, customizer). Skipping 10.29.3 is prudent: that release added async-Suspense useId stability, which was reverted in 10.29.4 due to regressions. Landing on 10.29.7 avoids the problematic intermediate.
special-pages/ (usage) info @preact/signals with useSignalEffect is heavily used (NTP customizer, history, protections). 10.29.6 reverted subtree-effects flushing (#5055) due to useSignalEffect incompatibility — this target version is the safer choice for current code.
special-pages/pages/new-tab/app/activity/components/ActivityItemAnimationWrapper.js info Uses lazy + Suspense from preact/compat. Client-side only; no SSR hydration path. Low breakage risk.

No web compatibility errors or warnings for injected page-world code — this PR does not touch it.

Security Assessment

File Lines Severity Finding
(entire diff) info No changes to injected/src/, captured-globals.js, wrapper-utils.js, message-bridge.js, messaging transports, or origin/messageSecret validation.
special-pages/package.json 46 info Preact is not a dependency of the injected content-scope bundle. No global-capture hygiene, messaging trust-boundary, or prototype-attack surface changes.
package-lock.json (lockfile) info Transitive dependency churn is dev-tooling only (dev: true). No new runtime network surfaces or postMessage usage.

No security findings. Special pages run in native-controlled WebView contexts (NTP, history, onboarding, etc.), not arbitrary hostile third-party pages.

Risk Level

Low Risk — dependency-only change confined to special-pages/ with zero injected/ or messaging/ edits; upstream delta is patch-level bugfixes and a reverted experimental change, aligned with existing useId/useSignalEffect/Suspense usage.

Recommendations

  1. Merge after CI green — no injected compat/security blockers identified.
  2. Optional smoke QA (special-pages UX, not injected): NTP customizer theme drawer (useSignalEffect), omnibar/drawer ARIA IDs (useId), activity lazy-load animation (Suspense).
  3. Skipping 10.29.3 is correct — that release's useId async-Suspense fix was reverted in 10.29.4; 10.29.7 includes the subsequent stabilization (10.29.6 subtree-effects revert benefits useSignalEffect).

Verified locally: npm run build --workspace=special-pages passes on PR head (8cee8f57).

Open in Web View Automation 

Sent by Cursor Automation: Web compat and sec

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

semver-patch Bug fix / internal — no release needed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants