Skip to content

Conversation

@alexcarpenter
Copy link
Member

@alexcarpenter alexcarpenter commented Dec 9, 2025

Description

  • faster
  • less subdependencies
  • used by Vite, SWC, copy-webpack-plugin, tsup, tsdown, unbuild, nx, lerna, etc.

Checklist

  • pnpm test runs as expected.
  • pnpm build runs as expected.
  • (If applicable) JSDoc comments have been added or updated for any package exports
  • (If applicable) Documentation has been updated

Type of change

  • 🐛 Bug fix
  • 🌟 New feature
  • 🔨 Breaking change
  • 📖 Refactoring / dependency upgrade / documentation
  • other:

Summary by CodeRabbit

  • Chores
    • Replaced the file-matching library across dev tools, upgrade utilities, and repository scripts (dependency updates in package manifests).
    • Added a changeset recording the package updates.
    • No user-facing behavior or public APIs changed; only internal tooling and devDependencies were adjusted.

✏️ Tip: You can customize this high-level summary in your review settings.

@changeset-bot
Copy link

changeset-bot bot commented Dec 9, 2025

🦋 Changeset detected

Latest commit: d1eb6cd

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 2 packages
Name Type
@clerk/dev-cli Patch
@clerk/upgrade Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel
Copy link

vercel bot commented Dec 9, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Preview Comments Updated (UTC)
clerk-js-sandbox Skipped Skipped Dec 9, 2025 8:14pm

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 9, 2025

Walkthrough

Replaces the globby dependency with tinyglobby across the monorepo and updates source imports/calls to use tinyglobby's glob API for file discovery in scripts and tooling.

Changes

Cohort / File(s) Summary
Root & package manifests
package.json, packages/dev-cli/package.json, packages/upgrade/package.json
Removed globby from devDependencies/dependencies and added tinyglobby (devDependency) in its place.
Dev CLI utilities
packages/dev-cli/src/utils/getClerkPackages.js
Import switched from globbyglob from tinyglobby; call sites updated to use glob(...) with same filtering logic.
Upgrade codemods
packages/upgrade/src/codemods/index.js
Import changed to glob from tinyglobby; runCodemod parameter renamed from globpatterns; internal call updated to glob(patterns, ...).
Upgrade runner
packages/upgrade/src/runner.js
Replaced globby-based discovery with glob from tinyglobby, using computed cwd and absolute: true to produce absolute file lists; ignore rules preserved.
Repository scripts
scripts/format-non-workspace.mjs, scripts/notify.mjs, scripts/renovate-config-generator.mjs
Imports and invocations changed from globbyglob (tinyglobby); file-matching calls updated accordingly, preserving control flow.
Changeset
.changeset/thin-eggs-bathe.md
Adds changeset noting the two packages bumped and the dependency swap from globby to tinyglobby.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

  • Areas to review:
    • Ensure tinyglobby's options and return values used (e.g., cwd, absolute, ignore) match prior globby behavior in each call site.
    • Confirm the runCodemod parameter rename (globpatterns) is consistent with all internal usages.
    • Verify any assumptions about path formats (relative vs absolute) remain valid after switching to glob(..., { cwd, absolute: true }).

Poem

🐇 I hopped through files to lend a paw,
Swapped big globby for tinyglobby's maw.
Patterns match with lighter cheer,
Fewer deps and springtime near —
A rabbit's nod for build-time awe. 🥕

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 25.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: migrating from globby to tinyglobby across multiple packages in the monorepo.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch alexcarpenter/migrate-to-tinyglobby

📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 7ac622a and d1eb6cd.

📒 Files selected for processing (2)
  • .changeset/thin-eggs-bathe.md (1 hunks)
  • packages/upgrade/src/codemods/index.js (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • packages/upgrade/src/codemods/index.js
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (24)
  • GitHub Check: Integration Tests (sessions, chrome)
  • GitHub Check: Integration Tests (quickstart, chrome, 16)
  • GitHub Check: Integration Tests (ap-flows, chrome)
  • GitHub Check: Integration Tests (quickstart, chrome, 15)
  • GitHub Check: Integration Tests (nextjs, chrome, 16, RQ)
  • GitHub Check: Integration Tests (billing, chrome, RQ)
  • GitHub Check: Integration Tests (machine, chrome, RQ)
  • GitHub Check: Integration Tests (nextjs, chrome, 15)
  • GitHub Check: Integration Tests (nextjs, chrome, 16)
  • GitHub Check: Integration Tests (billing, chrome)
  • GitHub Check: Integration Tests (machine, chrome)
  • GitHub Check: Integration Tests (vue, chrome)
  • GitHub Check: Integration Tests (custom, chrome)
  • GitHub Check: Integration Tests (nuxt, chrome)
  • GitHub Check: Integration Tests (express, chrome)
  • GitHub Check: Integration Tests (react-router, chrome)
  • GitHub Check: Integration Tests (astro, chrome)
  • GitHub Check: Integration Tests (sessions:staging, chrome)
  • GitHub Check: Integration Tests (localhost, chrome)
  • GitHub Check: Integration Tests (tanstack-react-start, chrome)
  • GitHub Check: Integration Tests (handshake:staging, chrome)
  • GitHub Check: Integration Tests (handshake, chrome)
  • GitHub Check: Integration Tests (generic, chrome)
  • GitHub Check: Analyze (javascript-typescript)
🔇 Additional comments (1)
.changeset/thin-eggs-bathe.md (1)

1-6: Verify changeset captures all package changes.

The changeset lists @clerk/dev-cli and @clerk/upgrade for patch updates, but the enriched context indicates root package.json also had globby→tinyglobby changes (removed globby^13.2.2, added tinyglobby^0.2.15). Confirm whether the root dependency change requires a separate changeset entry or if this is a workspace-wide infrastructure change that doesn't affect versioning.

Otherwise, the changeset format is correct, the semver bump level (patch) is appropriate for a dependency replacement, and the description clearly communicates the rationale.


Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
packages/upgrade/src/runner.js (1)

71-76: Glob call migration is correct; consider explicitly pinning onlyFiles

The switch to glob('**/*', { cwd, absolute: true, ignore }) matches tinyglobby’s API and options (cwd, absolute, ignore) and keeps behavior consistent with globby, since onlyFiles defaults to true and you then safely readFile each path.(superchupu.dev)

As a small defensive tweak, you could explicitly set onlyFiles: true to encode the intent and guard against any future default change in tinyglobby:

-    const files = await glob('**/*', {
-      cwd,
-      absolute: true,
-      ignore: [...GLOBBY_IGNORE, ...(options.ignore || [])],
-    });
+    const files = await glob('**/*', {
+      cwd,
+      absolute: true,
+      onlyFiles: true,
+      ignore: [...GLOBBY_IGNORE, ...(options.ignore || [])],
+    });
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 1b37f2a and 7ac622a.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (9)
  • package.json (1 hunks)
  • packages/dev-cli/package.json (1 hunks)
  • packages/dev-cli/src/utils/getClerkPackages.js (2 hunks)
  • packages/upgrade/package.json (1 hunks)
  • packages/upgrade/src/codemods/index.js (2 hunks)
  • packages/upgrade/src/runner.js (2 hunks)
  • scripts/format-non-workspace.mjs (3 hunks)
  • scripts/notify.mjs (1 hunks)
  • scripts/renovate-config-generator.mjs (2 hunks)
🧰 Additional context used
📓 Path-based instructions (9)
**/*.{js,jsx,ts,tsx,json,md,yml,yaml}

📄 CodeRabbit inference engine (.cursor/rules/development.mdc)

Use Prettier for consistent code formatting

Files:

  • packages/dev-cli/package.json
  • packages/dev-cli/src/utils/getClerkPackages.js
  • packages/upgrade/src/codemods/index.js
  • packages/upgrade/package.json
  • package.json
  • packages/upgrade/src/runner.js
packages/*/package.json

📄 CodeRabbit inference engine (.cursor/rules/development.mdc)

packages/*/package.json: Packages should export TypeScript types alongside runtime code
Follow semantic versioning for all packages

All packages must be published under @clerk namespace

packages/*/package.json: Framework packages should depend on @clerk/clerk-js for core functionality
@clerk/shared should be a common dependency for most packages in the monorepo

Files:

  • packages/dev-cli/package.json
  • packages/upgrade/package.json
**/package.json

📄 CodeRabbit inference engine (.cursor/rules/global.mdc)

Use pnpm as the package manager for this monorepo

Files:

  • packages/dev-cli/package.json
  • packages/upgrade/package.json
  • package.json
**/*.{js,ts,jsx,tsx,json,md,yml,yaml}

📄 CodeRabbit inference engine (.cursor/rules/monorepo.mdc)

Use Prettier for code formatting across all packages

Files:

  • packages/dev-cli/package.json
  • packages/dev-cli/src/utils/getClerkPackages.js
  • packages/upgrade/src/codemods/index.js
  • packages/upgrade/package.json
  • package.json
  • packages/upgrade/src/runner.js
**/*.{js,jsx,ts,tsx}

📄 CodeRabbit inference engine (.cursor/rules/development.mdc)

All code must pass ESLint checks with the project's configuration

Files:

  • packages/dev-cli/src/utils/getClerkPackages.js
  • packages/upgrade/src/codemods/index.js
  • packages/upgrade/src/runner.js
**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (.cursor/rules/development.mdc)

Follow established naming conventions (PascalCase for components, camelCase for variables)

Files:

  • packages/dev-cli/src/utils/getClerkPackages.js
  • packages/upgrade/src/codemods/index.js
  • packages/upgrade/src/runner.js
packages/**/src/**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (.cursor/rules/development.mdc)

packages/**/src/**/*.{ts,tsx,js,jsx}: Maintain comprehensive JSDoc comments for public APIs
Use tree-shaking friendly exports
Validate all inputs and sanitize outputs
All public APIs must be documented with JSDoc
Use dynamic imports for optional features
Provide meaningful error messages to developers
Include error recovery suggestions where applicable
Log errors appropriately for debugging
Lazy load components and features when possible
Implement proper caching strategies
Use efficient data structures and algorithms
Implement proper logging with different levels

Files:

  • packages/dev-cli/src/utils/getClerkPackages.js
  • packages/upgrade/src/codemods/index.js
  • packages/upgrade/src/runner.js
**/*.{js,ts,jsx,tsx}

📄 CodeRabbit inference engine (.cursor/rules/monorepo.mdc)

Use ESLint with custom configurations tailored for different package types

Files:

  • packages/dev-cli/src/utils/getClerkPackages.js
  • packages/upgrade/src/codemods/index.js
  • packages/upgrade/src/runner.js
package.json

📄 CodeRabbit inference engine (.cursor/rules/development.mdc)

package.json: Requires Node.js 18.17.0+ and pnpm 9.15.9+
Regularly update dependencies

Files:

  • package.json
🧬 Code graph analysis (4)
packages/dev-cli/src/utils/getClerkPackages.js (1)
packages/upgrade/src/runner.js (1)
  • glob (40-40)
scripts/format-non-workspace.mjs (1)
packages/upgrade/src/runner.js (2)
  • matches (87-87)
  • glob (40-40)
packages/upgrade/src/codemods/index.js (5)
scripts/renovate-config-generator.mjs (1)
  • __dirname (8-8)
packages/upgrade/src/__tests__/helpers/create-fixture.js (1)
  • __dirname (6-6)
packages/upgrade/src/__tests__/integration/cli.test.js (1)
  • __dirname (12-12)
packages/upgrade/src/config.js (1)
  • __dirname (7-7)
packages/upgrade/src/runner.js (2)
  • glob (40-40)
  • GLOBBY_IGNORE (11-31)
scripts/renovate-config-generator.mjs (1)
packages/upgrade/src/runner.js (2)
  • files (72-76)
  • glob (40-40)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (26)
  • GitHub Check: Integration Tests (quickstart, chrome, 16)
  • GitHub Check: Integration Tests (nextjs, chrome, 15)
  • GitHub Check: Integration Tests (billing, chrome)
  • GitHub Check: Integration Tests (quickstart, chrome, 15)
  • GitHub Check: Integration Tests (nextjs, chrome, 16)
  • GitHub Check: Integration Tests (machine, chrome, RQ)
  • GitHub Check: Integration Tests (machine, chrome)
  • GitHub Check: Integration Tests (custom, chrome)
  • GitHub Check: Integration Tests (nextjs, chrome, 16, RQ)
  • GitHub Check: Integration Tests (vue, chrome)
  • GitHub Check: Integration Tests (generic, chrome)
  • GitHub Check: Integration Tests (handshake, chrome)
  • GitHub Check: Integration Tests (react-router, chrome)
  • GitHub Check: Integration Tests (nuxt, chrome)
  • GitHub Check: Integration Tests (billing, chrome, RQ)
  • GitHub Check: Integration Tests (astro, chrome)
  • GitHub Check: Integration Tests (sessions:staging, chrome)
  • GitHub Check: Integration Tests (tanstack-react-start, chrome)
  • GitHub Check: Integration Tests (sessions, chrome)
  • GitHub Check: Integration Tests (handshake:staging, chrome)
  • GitHub Check: Integration Tests (localhost, chrome)
  • GitHub Check: Integration Tests (ap-flows, chrome)
  • GitHub Check: Integration Tests (express, chrome)
  • GitHub Check: Build Packages
  • GitHub Check: semgrep-cloud-platform/scan
  • GitHub Check: Analyze (javascript-typescript)
🔇 Additional comments (9)
scripts/renovate-config-generator.mjs (1)

5-5: LGTM! Import and usage updated correctly.

The migration from globby to tinyglobby's glob function is straightforward here. The pattern and cwd option are compatible with tinyglobby's API.

Also applies to: 113-113

scripts/notify.mjs (1)

4-4: LGTM! Migration to tinyglobby completed correctly.

The import and usage are properly updated. The pattern array and cwd option are standard glob features that tinyglobby supports.

Also applies to: 145-145

packages/dev-cli/package.json (1)

30-31: LGTM! Dependency updated correctly.

The migration from globby to tinyglobby in the dependencies is consistent with the broader repository changes.

packages/upgrade/package.json (1)

45-46: LGTM! Dependency updated correctly.

The migration from globby to tinyglobby in the dependencies aligns with the codebase-wide migration.

scripts/format-non-workspace.mjs (1)

3-3: LGTM! Migration completed correctly.

The import and usage of glob from tinyglobby are properly updated. The ignore option is a standard glob feature that tinyglobby supports.

Also applies to: 19-30

packages/upgrade/src/codemods/index.js (1)

5-5: Good improvement avoiding shadowing the glob import.

The migration to tinyglobby is implemented correctly. Renaming the parameter from glob to patterns makes the parameter name more descriptive and conventional. The single internal caller in packages/upgrade/src/runner.js uses positional arguments (runCodemod(transform, glob, options)), so this parameter rename does not break the existing call.

packages/dev-cli/src/utils/getClerkPackages.js (1)

4-4: Negation pattern is compatible with tinyglobby.

tinyglobby supports negation patterns (prefixed with !) in the patterns array, so '!*node_modules*' will work as intended to exclude node_modules directories. The syntax used at line 20 is valid and correct. Note that the codebase uses two different approaches for exclusions—negation patterns here and an ignore option elsewhere (e.g., in packages/upgrade). Consider standardizing on one approach for consistency.

package.json (1)

140-140: No action required. Version 0.2.15 is the latest stable release of tinyglobby and fully supports negation patterns, the ignore option, cwd, and absolute options as required.

packages/upgrade/src/runner.js (1)

6-6: tinyglobby import usage looks correct

Importing glob directly from tinyglobby matches the documented API and is tree‑shaking friendly; no issues here.(superchupu.dev)

@pkg-pr-new
Copy link

pkg-pr-new bot commented Dec 9, 2025

Open in StackBlitz

@clerk/agent-toolkit

npm i https://pkg.pr.new/@clerk/agent-toolkit@7415

@clerk/astro

npm i https://pkg.pr.new/@clerk/astro@7415

@clerk/backend

npm i https://pkg.pr.new/@clerk/backend@7415

@clerk/chrome-extension

npm i https://pkg.pr.new/@clerk/chrome-extension@7415

@clerk/clerk-js

npm i https://pkg.pr.new/@clerk/clerk-js@7415

@clerk/dev-cli

npm i https://pkg.pr.new/@clerk/dev-cli@7415

@clerk/expo

npm i https://pkg.pr.new/@clerk/expo@7415

@clerk/expo-passkeys

npm i https://pkg.pr.new/@clerk/expo-passkeys@7415

@clerk/express

npm i https://pkg.pr.new/@clerk/express@7415

@clerk/fastify

npm i https://pkg.pr.new/@clerk/fastify@7415

@clerk/localizations

npm i https://pkg.pr.new/@clerk/localizations@7415

@clerk/nextjs

npm i https://pkg.pr.new/@clerk/nextjs@7415

@clerk/nuxt

npm i https://pkg.pr.new/@clerk/nuxt@7415

@clerk/react

npm i https://pkg.pr.new/@clerk/react@7415

@clerk/react-router

npm i https://pkg.pr.new/@clerk/react-router@7415

@clerk/shared

npm i https://pkg.pr.new/@clerk/shared@7415

@clerk/tanstack-react-start

npm i https://pkg.pr.new/@clerk/tanstack-react-start@7415

@clerk/testing

npm i https://pkg.pr.new/@clerk/testing@7415

@clerk/ui

npm i https://pkg.pr.new/@clerk/ui@7415

@clerk/upgrade

npm i https://pkg.pr.new/@clerk/upgrade@7415

@clerk/vue

npm i https://pkg.pr.new/@clerk/vue@7415

commit: d1eb6cd

Copy link
Member

@brkalow brkalow left a comment

Choose a reason for hiding this comment

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

thanks!

@brkalow brkalow merged commit 4c88768 into main Dec 12, 2025
42 checks passed
@brkalow brkalow deleted the alexcarpenter/migrate-to-tinyglobby branch December 12, 2025 16:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants