From dbcbe506fc3b81500cb6ce9462b68cdb6e52e9bf Mon Sep 17 00:00:00 2001 From: Graham Neubig Date: Thu, 7 May 2026 12:32:33 -0400 Subject: [PATCH] deps(deps): group related dependabot updates (#144) Group npm packages by feature area so related libraries land in a single PR rather than as separate, racing updates. This avoids the package-lock.json conflicts we saw when sequential PRs all touched the same lockfile entries (e.g. tailwindcss + @tailwindcss/vite), and reduces churn for users that watch the dependencies label. Groups: - tailwind, tanstack, i18next, react, react-router, testing, eslint, monaco, xterm, types High-impact packages that are not assigned to a group (vite, framer-motion, axios, posthog-js, lucide-react, etc.) still get their own PR so each can be reviewed and tested independently. GitHub Actions updates are now also grouped into a single weekly PR. Co-authored-by: openhands --- .github/dependabot.yml | 74 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 01daf8201a..600313e7a8 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -17,6 +17,76 @@ updates: labels: - dependencies - npm + # Group related packages together so they ship in a single PR. + # Packages that aren't matched by any group still get their own PR + # (the default behavior), which is what we want for high-impact deps + # like vite, react-router, framer-motion, etc. + groups: + tailwind: + patterns: + - "tailwindcss" + - "@tailwindcss/*" + - "tailwind-merge" + - "tailwind-scrollbar" + tanstack: + patterns: + - "@tanstack/*" + i18next: + patterns: + - "i18next" + - "i18next-*" + - "react-i18next" + - "eslint-plugin-i18next" + react: + patterns: + - "react" + - "react-dom" + - "@types/react" + - "@types/react-dom" + - "@types/react-*" + - "eslint-plugin-react" + - "eslint-plugin-react-hooks" + react-router: + patterns: + - "react-router" + - "@react-router/*" + - "@vercel/react-router" + - "isbot" + testing: + patterns: + - "vitest" + - "@vitest/*" + - "@testing-library/*" + - "jsdom" + - "@playwright/test" + - "msw" + - "@mswjs/*" + eslint: + patterns: + - "eslint" + - "eslint-config-*" + - "eslint-plugin-*" + - "@typescript-eslint/*" + - "prettier" + exclude-patterns: + # These are grouped under their feature area instead. + - "eslint-plugin-i18next" + - "eslint-plugin-react" + - "eslint-plugin-react-hooks" + monaco: + patterns: + - "monaco-editor" + - "@monaco-editor/*" + xterm: + patterns: + - "@xterm/*" + types: + patterns: + - "@types/*" + exclude-patterns: + - "@types/react" + - "@types/react-dom" + - "@types/react-*" - package-ecosystem: github-actions directory: "/" @@ -34,3 +104,7 @@ updates: labels: - dependencies - github-actions + groups: + actions: + patterns: + - "*"