Abby is an open-source platform for managing feature flags, remote configuration, and A/B tests with a focus on type safety and developer experience. It’s built for engineering teams using modern JavaScript frameworks who need to safely roll out features, test variations, and configure apps remotely without compromising user privacy. Abby eliminates the complexity of feature deployment by offering statically typed APIs and a visual dashboard for non-developers.
The platform is built as a monorepo using Turborepo and pnpm, with core SDKs written in TypeScript and integrated with the T3 Stack. It supports server-side rendering (SSR) and static site generation (SSG) out of the box, and can be self-hosted using Docker or used via the hosted service at tryabby.com. The system includes built-in fallbacks for reliability, environment isolation, and a devtools extension for real-time debugging.
What You Get
- Type-Safe SDKs - Fully typed JavaScript SDKs for React, Next.js, Svelte, Angular, and Remix with autocompletion and compile-time checks for feature flags and remote config keys.
- Multi-Environment Support - Create and manage separate environments (e.g., dev, staging, prod) for each feature flag or remote config variable to test safely before production rollout.
- A/B Testing with Variants - Define and run A/B tests with multiple variants (e.g., ‘oldFooter’, ‘newFooter’) and track performance without tracking personal user data.
- DevTools Extension - Install a browser extension to debug feature flags and remote config values in real time directly in the browser’s developer tools.
- Server-Side Rendering (SSR) Support - Built-in support for SSR and SSG in Next.js and other frameworks to ensure fast, stable user experiences during feature toggling.
- Privacy-First Design - No marketing cookies or personalized user tracking; anonymized event data and full self-hosting capability for compliance and data control.
Common Use Cases
- Rolling out a new UI component to 10% of users - A frontend engineer uses Abby’s A/B testing to compare ‘oldFooter’ vs ‘newFooter’ variants in staging, then gradually enables it for 10% of production users using environment-based flag rules.
- Configuring feature flags for different customer tiers - A SaaS team uses remote config to toggle features like ‘showPrices’ or ‘userLimit’ based on subscription tier, without deploying new code.
- Debugging a broken feature in production - A developer installs Abby’s DevTools to inspect which feature flags and remote config values are active for a specific user session, reducing incident resolution time.
- Running a compliance-sensitive A/B test - A healthcare startup self-hosts Abby to ensure no PII is collected during an A/B test on a new onboarding flow, meeting HIPAA requirements.
Under The Hood
Architecture
- Monorepo structure coordinated by Turbo, enabling isolated build contexts and efficient incremental builds across web, documentation, and shared packages
- Next.js application uses standalone output tracing and multi-stage Docker builds to minimize runtime images and enforce security via non-root execution
- Prisma ORM is tightly integrated with automated migration pipelines and type-safe data access, synchronized across the monorepo via Turbo tasks
- Shared React components and UI props are defined in dedicated packages to ensure consistency and reuse, with dependency injection supported through modular exports and environment-aware configuration
- Biome and Turbo enforce uniform code formatting, linting, and build orchestration, creating a scalable foundation for distributed frontend and tooling development
Tech Stack
- Next.js and React with TypeScript form the core of the web application, leveraging server-side rendering and Dockerized deployment for performance and security
- Hono serves as the lightweight API framework, paired with Zod for robust request validation across endpoints and CDN functions
- Prisma manages database interactions with MariaDB in containerized environments, supported by automated migration workflows
- Turbo orchestrates the entire monorepo build process with intelligent caching and dependency graph awareness
- Biome unifies code formatting and linting across all projects, replacing fragmented tooling with a single, consistent pipeline
- Docker Compose provides a full-stack local development environment with MariaDB, Redis, and MailHog for comprehensive testing
Code Quality
- Extensive test coverage spans multiple frontend frameworks with consistent use of API mocking to ensure reliable integration tests
- Strong TypeScript usage enforces type safety across services and components, with precise generics and clear type boundaries
- Modular architecture cleanly separates core logic, framework adapters, and test utilities, promoting maintainability and reuse
- Shared test utilities and standardized mocking patterns reduce duplication and ensure consistent behavior across environments
- Robust error handling and environment-aware defaults enhance reliability, though custom error classes are not utilized
- Consistent linting and testing configurations across packages maintain high standards without requiring per-project configuration
What Makes It Unique
- Dynamic code snippet renderer that switches between frameworks in real time via a unified API backend, eliminating page reloads for context-aware examples
- Built-in plan enforcement system that intelligently extends trial periods for non-Stripe users through secure, user-experience-integrated endpoints
- Unified component library abstracting UI primitives across React, Angular, and Svelte while preserving type safety through shared TypeScript interfaces
- Intelligent caching layer that invalidates project-specific data caches upon plan changes, reducing database load and improving response times
- MDX-based documentation with embedded analytics that tracks content consumption and user behavior in real time
- Custom code snippet component that renders syntax-highlighted HTML server-side, avoiding client-side bundling overhead while preserving styling and structure