Skip to content

Conversation

wobsoriano
Copy link
Member

@wobsoriano wobsoriano commented Oct 7, 2025

Description

We have an issue (slack convo) where signing in via OAuth with an email that doesn't exist leads to a "External account not found" error instead of being transferred to the sign up flow.

The issue is that the transferable prop defaults to true in our clerk-js components, but Vue casts Boolean props without default value to false. We need to set a default value of undefined for it to use whatever default value is in our clerk-js package. This issue is similar to #6809.

From https://vuejs.org/guide/components/props

Screenshot 2025-10-07 at 9 36 33 AM

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

  • Bug Fixes

    • Fixed SignIn behavior where the "transferable" option could incorrectly default to false; now optional flags behave as intended.
  • Refactor

    • Standardized default handling for optional SignIn props for more consistent behavior when options are omitted.
  • Chores

    • Added a changeset entry documenting the SignIn fix.
  • Compatibility

    • Backward compatible; no action required.

Copy link

changeset-bot bot commented Oct 7, 2025

🦋 Changeset detected

Latest commit: 53ca573

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

This PR includes changesets to release 2 packages
Name Type
@clerk/vue Patch
@clerk/nuxt 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

Copy link

vercel bot commented Oct 7, 2025

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

Project Deployment Preview Comments Updated (UTC)
clerk-js-sandbox Ready Ready Preview Comment Oct 7, 2025 4:29pm

Copy link
Contributor

coderabbitai bot commented Oct 7, 2025

Walkthrough

Updated the Vue SignIn component to use withDefaults around defineProps for SignInProps, setting default values of undefined for transferable and withSignUp. No other logic, control flow, or error handling changes.

Changes

Cohort / File(s) Summary of Changes
Vue SignIn props defaulting
packages/vue/src/components/ui-components/SignIn.vue
Wrapped defineProps<SignInProps>() with withDefaults(...), providing { transferable: undefined, withSignUp: undefined }. Prop types unchanged; only default value handling adjusted.
Changeset
.changeset/eight-horses-nail.md
Added a changeset entry for @clerk/vue (patch) noting the fix where transferable no longer wrongly defaults to false due to Vue boolean prop coercion.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

I twitch my ears at props so neat,
Defaults now gentle, soft, and sweet.
Undefined where they should be free,
A little hop in Vue’s marquee.
Thump-thump—props tidy, code feels light. 🐰✨

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Title Check ✅ Passed The title succinctly describes the primary change to prevent unintended boolean prop coercion in the Vue SignIn component, following conventional commit style with a clear scope ("vue") and brief description of the issue being fixed. It accurately reflects the core adjustment of setting default prop values to avoid Vue’s boolean coercion and aligns with the PR’s objective to use clerk-js’s default behavior. This phrasing makes it easy for reviewers to understand the pull request’s intention at a glance. Overall, it captures the main change clearly and concisely.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
✨ 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 rob/fix-vue-sign-in-transferable

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/vue/src/components/ui-components/SignIn.vue (1)

8-11: Approve SignIn.vue boolean props handling

  • withDefaults in SignIn.vue correctly prevents coercion of transferable and withSignUp, preserving clerk-js defaults (true for transferable).
  • GoogleOneTap.vue already applies the same pattern.
  • Audit other Vue UI components under packages/vue/src/components/ui-components using defineProps without withDefaults and add undefined defaults for their boolean props.
📜 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 69ca381 and e0942f3.

📒 Files selected for processing (1)
  • packages/vue/src/components/ui-components/SignIn.vue (1 hunks)
⏰ 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). (5)
  • GitHub Check: Formatting | Dedupe | Changeset
  • GitHub Check: semgrep/ci
  • GitHub Check: semgrep-cloud-platform/scan
  • GitHub Check: semgrep-cloud-platform/scan
  • GitHub Check: Analyze (javascript-typescript)

@wobsoriano wobsoriano enabled auto-merge (squash) October 7, 2025 16:35
Copy link

pkg-pr-new bot commented Oct 7, 2025

Open in StackBlitz

@clerk/agent-toolkit

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

@clerk/astro

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

@clerk/backend

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

@clerk/chrome-extension

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

@clerk/clerk-js

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

@clerk/dev-cli

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

@clerk/elements

npm i https://pkg.pr.new/@clerk/elements@6935

@clerk/clerk-expo

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

@clerk/expo-passkeys

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

@clerk/express

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

@clerk/fastify

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

@clerk/localizations

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

@clerk/nextjs

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

@clerk/nuxt

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

@clerk/clerk-react

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

@clerk/react-router

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

@clerk/remix

npm i https://pkg.pr.new/@clerk/remix@6935

@clerk/shared

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

@clerk/tanstack-react-start

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

@clerk/testing

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

@clerk/themes

npm i https://pkg.pr.new/@clerk/themes@6935

@clerk/types

npm i https://pkg.pr.new/@clerk/types@6935

@clerk/upgrade

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

@clerk/vue

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

commit: 53ca573

@wobsoriano wobsoriano merged commit 0efe78d into main Oct 7, 2025
49 checks passed
@wobsoriano wobsoriano deleted the rob/fix-vue-sign-in-transferable branch October 7, 2025 16:38
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.

3 participants