@rivium/flags-nextjs
v0.1.0
Published
Rivium Feature Flags SDK for Next.js - Server and client-side feature flag management
Maintainers
Readme
Installation
npm install @rivium/flags-nextjsQuick Start
Server Component (SSR)
import { RiviumFlags } from '@rivium/flags-nextjs';
const flags = new RiviumFlags({
apiKey: 'YOUR_API_KEY',
serverSecret: 'YOUR_SERVER_SECRET',
environment: 'production',
});
await flags.init();
const darkMode = flags.isEnabled('dark_mode', { userId: 'user-123' });
const variant = flags.evaluate('checkout_flow', {
userId: 'user-123',
userAttributes: { plan: 'pro', country: 'US' },
});Client Component (React Hook)
'use client';
import { RiviumFlagsProvider, useRiviumFlags } from '@rivium/flags-nextjs';
// Wrap your app
export default function Layout({ children }) {
return (
<RiviumFlagsProvider config={{ apiKey: 'YOUR_API_KEY', environment: 'production' }}>
{children}
</RiviumFlagsProvider>
);
}
// Use in any client component
function MyComponent() {
const { isEnabled, getValue, isReady } = useRiviumFlags();
if (!isReady) return <div>Loading...</div>;
return (
<div>
{isEnabled('dark_mode') && <DarkModeToggle />}
<p>Checkout: {getValue('checkout_flow')}</p>
</div>
);
}Standalone Client
import { RiviumFlagsClient } from '@rivium/flags-nextjs';
const client = new RiviumFlagsClient({
apiKey: 'YOUR_API_KEY',
environment: 'production',
});
await client.init();
client.setUserId('user-123');
client.setUserAttributes({ plan: 'pro', country: 'US' });
const enabled = client.isEnabled('dark_mode');Features
- Server & Client Evaluation — Full SSR support with
serverSecret, client-side withapiKeyonly - React Hook & Provider —
useRiviumFlags()hook withRiviumFlagsProvidercontext - Boolean & Multivariate Flags — Simple on/off toggles or multi-variant flags with weighted distribution
- Targeting Rules — Target users by attributes (equals, contains, regex, in, greater_than, and more)
- Rollout Percentages — Gradual rollouts with deterministic MD5-based bucketing
- Environment Overrides — Separate flag values per environment (development, staging, production)
- TypeScript — Full type safety with exported types and declarations
Documentation
For full documentation, visit rivium.co/docs.
License
MIT License — see LICENSE for details.
