build(deps-dev): bump prettier from 3.8.4 to 3.9.5 - #2901
Conversation
Build Branch
Static preview entry points
QR codes (mobile preview)
Integration commandsnpm (Android / Extension): Swift Package Manager (Apple): .package(url: "https://github.com/duckduckgo/content-scope-scripts.git", branch: "pr-releases/dependabot/npm_and_yarn/main/prettier-3.9.5")git submodule (Windows): git -C submodules/content-scope-scripts fetch origin pr-releases/dependabot/npm_and_yarn/main/prettier-3.9.5
git -C submodules/content-scope-scripts checkout origin/pr-releases/dependabot/npm_and_yarn/main/prettier-3.9.5Pin to exact commitnpm (Android / Extension): Swift Package Manager (Apple): .package(url: "https://github.com/duckduckgo/content-scope-scripts.git", revision: "826120d82463111ec8fb6c0a4d73d4b6ec446c81")git submodule (Windows): git -C submodules/content-scope-scripts fetch origin pr-releases/dependabot/npm_and_yarn/main/prettier-3.9.5
git -C submodules/content-scope-scripts checkout 826120d82463111ec8fb6c0a4d73d4b6ec446c81 |
There was a problem hiding this comment.
Stale comment
Injected PR Evaluation: Web Compatibility & Security
PR: build(deps-dev): bump prettier from 3.8.4 to 3.9.5 (
b6cfca1)Web Compatibility Assessment
No findings.
This PR only updates the root
devDependencyversion inpackage.jsonandpackage-lock.json. Prettier is used exclusively innpm run lint/lint-fix(npx prettier . --check/--write) and is not bundled into the content-scope injection runtime (injected/), messaging transports, or special-pages production bundles.No changes to API overrides, wrapper utilities, DOM interaction, platform entry points, or third-party script compatibility surfaces.
Security Assessment
No findings.
No changes to
captured-globals.js, message bridge trust boundaries,nativeDatahandling, origin validation,postMessageusage, config gating, or any runtime code executed in third-party page contexts.Risk Level
Low Risk — devDependency-only version bump with no application source changes; zero impact on code injected into web pages.
Recommendations
Warning (CI, not runtime): Verified locally with Prettier 3.9.5 —
npx prettier . --checkfails on 3 files:
messaging/lib/shared-types.tsspecial-pages/pages/new-tab/app/activity/NormalizeDataProvider.jsspecial-pages/pages/new-tab/app/components/BackgroundProvider.jsThese are formatting-only diffs introduced by the 3.9.x formatter (parentheses around conditional-type generic constraints; trailing semicolons after ternaries). Related open PR #2859 includes the formatting fallout. Merge #2859 first, or run
npm run lint-fixon this branch before merge, to avoidnpm run lintCI failure.Info: Prettier 3.9.5 is a patch release (3.9.4 → 3.9.5) with formatter bug fixes for Markdown, CSS
type(), Less, TypeScript comments, and JavaScriptSwitchStatementhandling — all lint-time only.No injected-workspace integration tests or API fidelity checks are required for this dependency bump.
Sent by Cursor Automation: Web compat and sec
There was a problem hiding this comment.
Stale comment
Dependency update risk review:
prettier3.8.4 → 3.9.5Verdict: Do not merge as-is — CI will fail without companion formatting fixes.
This is a semver-minor bump spanning Prettier 3.9.0 (major parser/formatting changes) plus patch releases through 3.9.5 (bug fixes only vs 3.9.4). Supply-chain risk is low; functional/runtime risk is none (devDependency); the real risk is lint / clean-tree CI breakage from formatting output changes.
Confirmed issues
1.
npm run lintwill fail (prettier --check)Validated locally on
main:
npx prettier@3.8.4 . --check→ passesnpx prettier@3.9.5 . --check→ fails on 3 files:
messaging/lib/shared-types.ts— Prettier 3.9.0 removes redundant parentheses around conditional-typeextendsconstraints (changelog)special-pages/pages/new-tab/app/activity/NormalizeDataProvider.jsspecial-pages/pages/new-tab/app/components/BackgroundProvider.js— ternary/semicolon handling changes in 3.9.0 JS output3.9.4 and 3.9.5 produce identical output for these files; the breakage is introduced at 3.9.0, not by the 3.9.4→3.9.5 patch delta.
2.
npm run test-clean-treewill fail (generated types drift)After applying only this version bump,
npm run buildregenerates:
special-pages/pages/new-tab/types/new-tab.ts—BackgroundVariantunion collapses to a single line (Prettier 3.9.0 "Don't break union type when it can fit" change)
json-schema-to-typescriptformats generated output with the workspace Prettier version, so the bump changes committed generated artifacts.
Changelog impact vs this repo
3.9.x area Relevance here Notes JS/TS formatting High Confirmed 3-file prettier --checkfailure + generatednew-tab.tsdriftMarkdown parser (remark→micromark) Low .prettierignoreexcludes**/*.md(exceptinjected/docs/**)YAML parser (yaml v2) Low .github/workflows/*.ymlalready passprettier --checkon 3.9.5CSS/Less formatting fixes None **/*.cssis in.prettierignoreFlow / GraphQL parsers None No .flow/.graphqlsources in prettier scopeDropped import … assert { }syntaxNone Grep found no import … assert {usage in JS/TS sources--no-semichangesLow Repo uses semicolons; no --no-semiconfig found3.9.5-specific fixes (markdown list capping, empty-link preservation, TS comment-on-shorthand-type fixes) are correctness improvements with no additional formatting delta beyond 3.9.4 for this codebase.
Test coverage
- No dedicated Prettier unit tests — coverage is indirect via CI:
npm run lint→npx prettier . --checknpm run test-clean-tree→ catches generated-artifact drift after build- These gates are sufficient once formatting fixes are included, but this PR alone does not satisfy them.
Is Prettier still needed?
Yes. It is wired into root
lint/lint-fix,eslint-config-prettierintegration, and.github/workflows/bot-format.yml. No better alternative is used elsewhere in the monorepo.
Supply chain
- Package:
prettier@3.9.5fromregistry.npmjs.org(MIT)- Lockfile integrity:
sha512-/FVl766LpUfB5vXgCYOYa0MeV/441Ia99AeICQIQFTY/Nw0roZwULcXpku5i1/m5kt/baz+s4Zogspd839HSMg==- Version pinning: exact
"prettier": "3.9.5"(matches Prettier's own recommendation)- Maintainers: established Prettier core team /
prettier-bot- Risk: low for a widely used, official npm package with no new transitive dependencies introduced by this bump
Companion PR already exists — no new fix PR needed
#2859 (
build(deps-dev): bump prettier to 3.9.1 with formatting fixes, currently targeting 3.9.4) already includes the required formatting commits for the same 3 files plus regeneratednew-tab.ts.Recommended path:
- Close or supersede this Dependabot PR (#2901)
- Update #2859 to 3.9.5 (formatting output is identical to 3.9.4 for affected files — verified locally)
- Merge #2859 once CI is green
Alternatively, cherry-pick #2859's formatting commits onto this branch before merge.
Uncertain / low-priority notes
- MDX parser migration incomplete in 3.9.0 — no MDX sources appear in prettier's formatted scope; no action expected.
prettier-ignoredirectives (~20 usages inspecial-pages/) should remain stable, but a fulllint-fixpass after merge is good hygiene.
Review validated by running
npx prettier@3.8.4/.9.4/.9.5 . --checkonmainandnpm run test-clean-treewith only the version bump applied.Sent by Cursor Automation: Review dependabot
| "eslint-plugin-react-hooks": "^7.1.1", | ||
| "minimist": "^1.2.8", | ||
| "prettier": "3.8.4", | ||
| "prettier": "3.9.5", |
There was a problem hiding this comment.
CI blocker: Bumping to 3.9.5 without the companion formatting commits will fail npm run lint (npx prettier . --check) on 3 files, and npm run test-clean-tree will flag regenerated special-pages/pages/new-tab/types/new-tab.ts.
These fixes already exist in #2859. Recommend updating that PR to 3.9.5 rather than merging this Dependabot PR alone.
b6cfca1 to
a966955
Compare
There was a problem hiding this comment.
Stale comment
Injected PR Evaluation: Web Compatibility & Security
Re-assessed on synchronize (
a966955) — assessment unchanged from opened review.Web Compatibility Assessment
No findings. This PR only bumps the
prettierdevDependency in rootpackage.jsonandpackage-lock.json. Prettier is invoked exclusively vianpm run lint/lint-fix(npx prettier . --check/--write) and is not bundled into content-scope injection runtime. No changes toinjected/,messaging/,special-pages/, API overrides, wrapper utilities, or platform entry points.Security Assessment
No findings. No runtime code, messaging transports,
captured-globals.js, message-bridge trust boundaries, or configuration paths are modified.Risk Level
Low Risk — devDependency-only version bump with zero injection-runtime surface area.
Recommendations
Warning (CI, not runtime): Verified locally —
npx prettier . --checkfails on 3 files with Prettier 3.9.5:
messaging/lib/shared-types.tsspecial-pages/pages/new-tab/app/activity/NormalizeDataProvider.jsspecial-pages/pages/new-tab/app/components/BackgroundProvider.jsThis is the same 3.9.x formatting fallout noted in #2863. Related open PR #2859 includes the formatting fixes. Consider merging #2859 first, or cherry-picking its formatting commits, to keep
npm run lintgreen.Info: Prettier 3.9.5 is a patch release (3.9.4→3.9.5) with formatter bug fixes for Markdown, CSS/Less, TypeScript, and JavaScript — no behavioral impact on injected scripts.
No web-compatibility or security blockers for merge from an injection-runtime perspective.
Sent by Cursor Automation: Web compat and sec
There was a problem hiding this comment.
Stale comment
Dependency update review: Prettier 3.8.4 → 3.9.5
Verdict: Do not merge as-is. The version bump is low supply-chain risk, but this PR only updates
package.json/package-lock.jsonand will break CI until companion formatting changes land.
Confirmed issues
npm run lintfails after this bump —npx prettier . --checkreports 3 files that need reformatting under 3.9.x:
messaging/lib/shared-types.ts— Prettier 3.9 adds parentheses around conditional types inextendsclauses (TypeScript formatting change from 3.9.0).special-pages/pages/new-tab/app/activity/NormalizeDataProvider.jsspecial-pages/pages/new-tab/app/components/BackgroundProvider.js— both have// prettier-ignoreternaries where 3.9 now emits a trailing semicolon on the else branch.
test-clean-tree/ snapshots CI fails —npm run buildregeneratesspecial-pages/pages/new-tab/types/new-tab.tswith different union formatting (BackgroundVariantcollapses to a single line). This happens becausejson-schema-to-typescript(used bytypes-generator) depends onprettierand picks up the hoisted root version during type generation. The committed generated file was produced with 3.8.4 formatting.CI already red —
snapshotsfailed on the clean-tree check;unit (ubuntu-latest)/unit (windows-latest)also failed on this PR run.
Changelog impact (3.8.4 → 3.9.5)
This is a minor semver bump with meaningful formatter output changes, not just bug fixes:
Area Relevance to this repo JS/TS formatting (conditional extendsparens,--no-semistability, return-sequence parens)High — directly causes the 3 hand-written file diffs above Type generation via json-schema-to-typescriptHigh — changes generated .tsunion layoutMarkdown parser upgrade (remark-parse → micromark) Low — .mdfiles are in.prettierignoreexceptinjected/docs/**YAML v2 parser Low — no YAML in prettier-checked paths CSS Low — **/*.cssis in.prettierignore(stylelint handles CSS)Dropped import … assert { }syntaxNone found — no import … assertusage in the codebase3.9.1–3.9.5 patches Mostly Markdown/Less/CSS/Angular fixes; no additional diffs vs 3.9.4 on the affected JS/TS files (verified locally)
Test coverage
- Formatting is gated by CI:
npm run lintrunsnpx prettier . --check;test-clean-treerunsnpm run buildthengit diff-index --quiet.- There are no dedicated Prettier unit tests — coverage is entirely integration via lint + clean-tree. That is adequate for a formatter bump, but it means formatting diffs must be committed alongside the version bump.
- Re-validated locally: applying
prettier --writeon the 3 hand-written files + runningnpm run build -w special-pages(to refreshnew-tab.ts) makes bothprettier . --checkandtest-clean-treepass.
Is Prettier still needed?
Yes. It is the project's documented formatter (
CODING_STYLE.md), runs inlint/lint-fix, and is used by thebot-format.ymlworkflow.eslint-config-prettier(via@duckduckgo/eslint-config) disables conflicting ESLint rules. No alternative formatter is used elsewhere.
Supply chain risk
Factor Assessment Package prettieron npm, MIT, ~50M weekly downloads, maintained by the Prettier core teamSource Dependabot PR from 3.8.4→3.9.5with updated lockfile integrity hashRuntime exposure Dev-only — not bundled into injected scripts or special-pages production output Version pinning Correctly pinned as "prettier": "3.9.5"(exact, not caret) — matches Prettier's own recommendationProvenance Standard npm registry; no new postinstall scripts introduced Risk level: Low for supply chain; medium for merge friction due to formatting churn.
Companion fix PR
An open draft PR already covers the required formatting changes: #2859 (
cursor/dependency-update-risk-review-407d— bumps to 3.9.4 with all 4 file fixes). No new fix PR created to avoid duplication.Recommendation: Update #2859 to
3.9.5(patch delta from 3.9.4 produces identical formatting on the affected files), mark it ready for review, and merge it instead of or before this Dependabot PR. Alternatively, cherry-pick the formatting commit onto this branch.
Uncertain / low-priority
- Whether any
injected/docs/**/*.mdfiles would reformat differently under the new micromark parser — excluded from routine lint by.prettierignorebut not fromprettier . --checknegation. Worth a one-timeprettier --check injected/docsif docs formatting consistency matters.// prettier-ignoredirectives may need revisiting over time as Prettier's ignore semantics evolve (3.9.5 restoredcomment.placementfor plugin compatibility per changelog).Sent by Cursor Automation: Review dependabot
| "eslint-plugin-react-hooks": "^7.1.1", | ||
| "minimist": "^1.2.8", | ||
| "prettier": "3.8.4", | ||
| "prettier": "3.9.5", |
There was a problem hiding this comment.
This version bump alone is insufficient: Prettier 3.9.x changes JS/TS output enough that 4 files need updating before CI passes — 3 hand-written source files plus the generated special-pages/pages/new-tab/types/new-tab.ts (via json-schema-to-typescript's prettier dependency). See companion draft #2859 for the required formatting commit.
Bumps [prettier](https://github.com/prettier/prettier) from 3.8.4 to 3.9.5. - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) - [Commits](prettier/prettier@3.8.4...3.9.5) --- updated-dependencies: - dependency-name: prettier dependency-version: 3.9.5 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
a966955 to
dbc784e
Compare
There was a problem hiding this comment.
Injected PR Evaluation: Web Compatibility & Security
Re-assessed on synchronize (dbc784e71c1a34e8fef45b877d066bf533e27311)
Web Compatibility Assessment
No findings.
This PR only bumps prettier from 3.8.4 to 3.9.5 in root package.json and package-lock.json (2 files). There are no changes under injected/, messaging/ runtime code, special-pages/ source, platform entry points, wrapper utilities, or any shipped bundle artifacts. Prettier is a root devDependency used exclusively by lint / lint-fix scripts (npx prettier . --check / --write); it is not included in workspace files or native distribution outputs.
Security Assessment
No findings.
No runtime code, messaging transports, message-bridge logic, captured-globals.js, API overrides, or configuration paths are modified. The version bump does not affect code executed in page context.
Risk Level
Low Risk — dev-only formatting tool version bump with no injected/runtime code changes.
Recommendations
-
CI (info): After installing Prettier 3.9.5 locally,
npx prettier . --checkreports formatting drift in 3 files not included in this PR:messaging/lib/shared-types.ts(parentheses around conditional type constraints in generics)special-pages/pages/new-tab/app/activity/NormalizeDataProvider.js(semicolon in ternary underprettier-ignore)special-pages/pages/new-tab/app/components/BackgroundProvider.js(same pattern)
These are whitespace-only changes from Prettier 3.9.x JS/TS formatting improvements. Merge will likely fail the root
lintscript until a companionprettier --writecommit is added. No web-compat or security impact from applying those fixes. -
Process (info): Consider bundling the formatting fixes in this PR (or a follow-up on the same branch) so Dependabot PRs stay green without manual intervention.
Sent by Cursor Automation: Web compat and sec
There was a problem hiding this comment.
Dependency update review: prettier 3.8.4 → 3.9.5
Verdict: Approve with required companion changes. The version bump itself is low supply-chain risk, but merging this PR alone will fail CI until formatting output is reconciled.
Confirmed issues
-
CI will fail without formatting fixes (blocking)
npx prettier . --checkfails on this branch with 3 files needing reformat.- The snapshots
test-clean-treejob also fails because regeneratedspecial-pages/pages/new-tab/types/new-tab.tsoutput changes. - Root cause: Prettier 3.9.0 changed JS/TS formatting (not 3.9.5 specifically). Changelog: https://prettier.io/blog/2026/06/27/3.9.0
-
Affected files (verified locally with 3.9.5)
messaging/lib/shared-types.ts— adds parentheses around conditionalextendstype constraintsspecial-pages/pages/new-tab/app/activity/NormalizeDataProvider.js— adds semicolon to ternary branch inside// prettier-ignoreblockspecial-pages/pages/new-tab/app/components/BackgroundProvider.js— same ternary semicolon changespecial-pages/pages/new-tab/types/new-tab.ts— union type collapses to single line after rebuild
Changelog impact assessment (3.8.4 → 3.9.5)
| Area | Relevance to this repo | Risk |
|---|---|---|
| JS/TS formatting (3.9.0) | High — affects checked-in source | Confirmed CI breakage above |
| Markdown parser upgrade (micromark) | Low — **/*.md is in .prettierignore |
None expected |
| YAML parser upgrade | Low — no YAML in prettier scope | None expected |
| CSS/Less formatting fixes (3.9.x) | Low — **/*.css ignored; stylelint handles CSS |
None expected |
| Flow/GraphQL/Angular parsers | Low — not used in formatted file set | None expected |
Drop import ... assert syntax (3.9.0) |
None — no matches in codebase | None |
3.9.5 patch fixes (markdown lists, CSS type(), etc.) |
Low — outside formatted scope | None expected |
Test coverage
- Prettier is enforced via
npm run lint→npx prettier . --check(seepackage.json). - Generated artifact drift is caught by
npm run test-clean-treein the snapshots workflow. - No dedicated prettier unit tests exist; CI lint + clean-tree are the correct gates. This is adequate for a dev-tooling bump once formatting is applied.
Dependency necessity
Prettier remains appropriate here:
- Used in
lint/lint-fixscripts - Used in
.github/workflows/bot-format.ymlfor cursor bot auto-formatting - Pinned to an exact version (good practice; Prettier recommends this)
- No
@prettier/plugin-*packages in use
No alternative tooling migration is warranted for this bump.
Supply chain risk
Low.
- Official
prettierpackage from the Prettier org on npm - Exact version pin with lockfile integrity hash (
sha512-/FVl766LpUfB5vXgCYOYa0MeV/441Ia99AeICQIQFTY/Nw0roZwULcXpku5i1/m5kt/baz+s4Zogspd839HSMg==) - MIT license, widely used, no new transitive dependencies introduced by this bump
- Note: latest on npm is 3.9.6; 3.9.5 is one patch behind but still current minor line
Companion fix PR
An existing companion PR #2859 targets 3.9.4 with the same formatting fixes. I opened an updated companion PR at 3.9.5 with all required formatting + regenerated types:
→ https://github.com/duckduckgo/content-scope-scripts/pull/new/cursor/dependency-update-risk-review-f921 (branch: cursor/dependency-update-risk-review-f921)
Recommended merge path: Close #2859 in favor of the new companion PR, then merge the companion PR (or cherry-pick its formatting commit) before/alongside this Dependabot PR.
Uncertain / low-priority notes
- Runtime behavior: Formatting-only changes; no functional code changes expected. The
prettier-ignoreternary semicolon additions are stylistic. - Developer churn: Anyone on 3.8.4 locally will see the same diffs after
npm install+lint-fix. Consider a brief team heads-up. - 3.9.6 available: Dependabot may open another bump soon; formatting fixes from 3.9.0 should carry forward without additional changes.
Sent by Cursor Automation: Review dependabot


Bumps prettier from 3.8.4 to 3.9.5.
Release notes
Sourced from prettier's releases.
Changelog
Sourced from prettier's changelog.
... (truncated)
Commits
b6c7d18Release 3.9.5cd54cccAvoid corrupting empty Markdown link with title (#19487)2bb67cePreserving comments'placementproperty (#19567)91bcac8Add more tests for comment-only object type (#19587)cbee737Remove space in empty object type (#19583)6394c73Align empty module declaration with TS (#19568)a4e6f7aPrevent the addition of space intype()with+(#19516)3d063b5Ignore dangling comments when checking type parameter comments (#19572)908503eHandle dangling comments inSwitchStatement(#19581)943a475Angular: Support expression for exhaustive typechecking (#19571)Note
Low Risk
Dependency-only bump of a dev formatting tool with no runtime or security impact; no secrets or credentials in the diff.
Overview
Bumps the devDependency
prettierfrom 3.8.4 to 3.9.5 inpackage.json, with the matching lockfile update fornode_modules/prettier.This only changes the formatter version used by
npm run lint/lint-fix, CI bot formatting, and editor hooks—no application or injected script code is modified in this PR.Reviewed by Cursor Bugbot for commit dbc784e. Bugbot is set up for automated code reviews on this repo. Configure here.