Short answer: yes, but only in a specific setup.
1. Default Convex + Better Auth component
With the default @convex-dev/better-auth component install (no Local Install):
- The component ships with a fixed, preconfigured schema for its tables (including
user).
- That schema is not alterable: you cannot add custom fields or change validators. [Basic usage]
- So in this mode, your statement is effectively true:
“Component's internal schema – we can't modify this … no custom fields allowed”
If you need extra user‑related data in this mode, you have to store it in your own Convex tables that reference the Better Auth user via _id or userId (depending on your migration path), not by modifying the component’s user table.
2. Local Install: where additionalFields is supported
If you use Local Install for Convex + Better Auth:
- You define a local Better Auth component under
convex/betterAuth/.
- You generate the schema with the Better Auth CLI and import it as your component schema. [Local install]
- In this mode, you can use Better Auth’s
additionalFields to extend the user schema, then regenerate the schema:
export const createAuth = (
ctx: GenericCtx<DataModel>,
{ optionsOnly } = { optionsOnly: false }
) => {
return betterAuth({
user: {
additionalFields: {
bio: { type: "string", required: false },
},
},
});
};
Then:
cd convex/betterAuth
npx @better-auth/cli generate -y
This updates the component schema with those fields. [Local install – usage]