Build reusable backend components for the Convex ecosystem. Ship something useful, get recognized, and earn rewards.
Convex Components are self-contained TypeScript modules that add backend functionality to Convex app. Think of them as npm packages for your backend: authentication, file storage, rate limiting, analytics, or any reusable pattern you find yourself rebuilding across projects.
Components have their own tables, functions, and scheduled jobs. They install with npm and wire into your existing Convex app without touching your schema.
See the list of components challenges and rewards here.
We're looking for developers to build and submit components.
Each challenge focuses on a specific use case or pattern in the following categories:
- Auth / Identity
- AI / Agent Infrastructure
- Analytics
- API Usage
- Content Management
- Full-Stack Drop-In Features
- Storage
- Third-Party Sync
Visit the Components Directory to see existing components and find inspiration.
Selected components receive:
- Featured placement on the Components Directory
- $100 gift card or more
- Convex swag
- Build a convex component you need or pick challenge from the components challenge list
- Follow the authoring guide to structure your component
- Publish to npm
- Submit your component for review
Learn how components work and how to build them:
| Resource | Description |
|---|---|
| Understanding Components | Architecture and concepts behind Convex Components |
| Using Components | How to install and integrate components into your app |
| Authoring Components | Step by step guide to building your own component |
| Submit a Component | Submit your component for review and potential featuring |
| Components Directory | Browse existing components |
A valid Convex Component needs:
- A
convex.config.tsthat defines the component - Exported functions that other apps can call
- Published to npm with the right entry points
- Documentation showing how to install and use it
The authoring guide covers the full specification.
Join the Convex Discord and ask in the component authoring channel channel.
