@flagpole/react
v0.0.4
Published
React SDK for integration with FlagPole api.
Readme
@flagpole/client-react-sdk
A React SDK for integrating feature flags into your application.
Features
- Real-time feature flag updates via WebSocket
- Environment-based flag configuration
- Simple API key authentication
- TypeScript support
- Zero configuration required
Installation
npm install @flagpole/client-react-sdkUsage
Basic Implementation
import {
FeatureFlagProvider,
useFeatureFlag,
} from "@flagpole/client-react-sdk";
// Wrap your app with the provider
function App() {
return (
<FeatureFlagProvider apiKey="your_api_key_here" environment="development">
<YourApp />
</FeatureFlagProvider>
);
}
// Use flags in your components
function MyComponent() {
const { isFeatureEnabled } = useFeatureFlags();
return (
<div>
{isFeatureEnabled("new-feature") && <div>This is a new feature!</div>}
</div>
);
}Available Hooks
// Check a specific flag
const isEnabled = useFeatureFlag("feature-name");
// Access all flags and metadata
const { flags, isLoading, error, isFeatureEnabled } = useFeatureFlags();HOC Usage
import { withFeatureFlag } from "@flagpole/client-react-sdk";
const MyComponent = ({ title }) => <div>{title}</div>;
// Wrap component with feature flag
const FeatureFlaggedComponent = withFeatureFlag(MyComponent, "feature-name");
// Optional fallback component
const FeatureFlaggedWithFallback = withFeatureFlag(
MyComponent,
"feature-name",
FallbackComponent
);Development
Prerequisites
- Node.js >= 16
- npm >= 7
Local Development
- Clone the repository
git clone [repository-url]
cd client-react-sdk- Install dependencies
npm install- Start development build
npm run build:watchTesting with Local Projects
- Install yalc globally
npm install -g yalc- Build and publish to local yalc store
npm run build
yalc publish- In your test project
yalc add @flagpole/client-react-sdk- To update after making changes
# In SDK directory
npm run build
yalc push
# Or use watch mode
npm run build:watch
yalc push --watchConfiguration
Environment Variables
None required! The SDK works out of the box with default configurations.
Provider Props
| Prop | Type | Required | Default | Description | | ----------- | ------ | -------- | ------------- | ---------------------------------------- | | apiKey | string | Yes | - | Your API key from the FlagPole dashboard | | environment | string | No | 'development' | Environment for feature flags |
Error Handling
The SDK includes built-in error handling and will return false for any feature flags when:
- The connection fails
- The API key is invalid
- The flag doesn't exist
You can access error states through the useFeatureFlags hook:
const { error, isLoading } = useFeatureFlags();
if (isLoading) return <Loading />;
if (error) return <Error message={error.message} />;Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
ISC
Support
For support, contact [support email/link]
