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:
- Take a look at our existing issues and pull requests
- Join our community discussions in Discord
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
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
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:
- Open an issue with questions
- Join our community discussions
- Reach out to project maintainers
Thank you for contributing to Better Auth!