Contributing to BetterAuth

Thank you for your interest in contributing to Better Auth! This guide is a concise guide to contributing to Better Auth.

Getting Started

Before diving in, here are a few important resources:

Development Setup

To get started with development:

Make sure you have Node.JS installed, preferably on LTS.

1. Fork the repository

Visit https://github.com/better-auth/better-auth

Click the "Fork" button in the top right.

2. Clone your fork

# Replace YOUR-USERNAME with your GitHub username
git clone https://github.com/YOUR-USERNAME/better-auth.git
cd better-auth

3. Install dependencies

Make sure you have pnpm installed!

pnpm install

4. Prepare ENV files

Copy the example env file to create your new .env file.

cp -n ./docs/.env.example ./docs/.env

Making changes

Once you have an idea of what you want to contribute, you can start making changes. Here are some steps to get started:

1. Create a new branch

# Make sure you're on main
git checkout main
 
# Pull latest changes
git pull upstream main
 
# Create and switch to a new branch
git checkout -b feature/your-feature-name

2. Start development server

Start the development server:

pnpm dev

To start the docs server:

pnpm -F docs dev

3. Make Your Changes

  • Make your changes to the codebase.

  • Write tests if needed. (Read more about testing here)

  • Update documentation. (Read more about documenting here)

Issues and Bug Fixes

  • Check our GitHub issues for tasks labeled good first issue
  • When reporting bugs, include steps to reproduce and expected behavior
  • Comment on issues you'd like to work on to avoid duplicate efforts

Framework Integrations

We welcome contributions to support more frameworks:

  • Focus on framework-agnostic solutions where possible
  • Keep integrations minimal and maintainable
  • All integrations currently live in the main package

Plugin Development

  • For core plugins: Open an issue first to discuss your idea
  • For community plugins: Feel free to develop independently
  • Follow our plugin architecture guidelines

Documentation

  • Fix typos and errors
  • Add examples and clarify existing content
  • Ensure documentation is up-to-date with code changes

Testing

We use Vitest for testing. Place test files next to the source files they test:

import { describe, it, expect } from "vitest";
import { getTestInstance } from "./test-utils/test-instance";
 
describe("Feature", () => {
    it("should work as expected", async () => {
        const { client } = getTestInstance();
        // Test code here
        expect(result).toBeDefined();
    });
});

Testing Best Practices

  • Write clear commit messages
  • Update documentation to reflect your changes
  • Add tests for new features
  • Follow our coding standards
  • Keep pull requests focused on a single change

Need Help?

Don't hesitate to ask for help! You can:

Thank you for contributing to Better Auth!