SDK UI Component

Add a full feature request UI to your app with FeatureRequestsScreen or FeaturamaView.

Basic usage

import { FeatureRequestsScreen } from '@featurama/react-native';
import { useColorScheme } from 'react-native';

function FeedbackScreen({ onClose }: { onClose: () => void }) {
  const colorScheme = useColorScheme() ?? 'light';

  return (
    <FeatureRequestsScreen
      colorScheme={colorScheme}
      accentColor="#6366f1"
      onClose={onClose}
    />
  );
}

Props

React Native — FeatureRequestsScreen

PropTypeRequiredDescription
colorScheme'light' | 'dark'YesControls light/dark theme
accentColorstringYesHex color for buttons, votes, active states
onClose() => voidNoCalled when user taps the close button
safeAreaTopnumberNoTop safe area inset (for full-screen modals)
themePartial<FeaturamaTheme>NoOverride individual theme colors

Swift — FeaturamaView

ParameterTypeRequiredDescription
accentColorColorYesAccent color for buttons, votes, active states
colorSchemeColorScheme?NoForce light/dark (defaults to system)
themeFeaturamaThemeOverrides?NoOverride individual theme colors
onClose(() -> Void)?NoCalled when user taps the close button
stringsFeaturamaStrings?NoCustom localization strings

Theming

The theme is auto-generated from colorScheme and accentColor. Override any key with the theme prop:

<FeatureRequestsScreen
  colorScheme="dark"
  accentColor="#4cb211"
  theme={{
    background: '#1a1a2e',
    card: '#16213e',
  }}
/>

Available theme keys:

KeyDescription
backgroundPage background
cardCard/item background
secondarySecondary background
textPrimary text color
textSecondarySecondary/muted text
accentAccent color (buttons, links)
accentLightLight accent variant
accentForegroundText on accent background
borderDefault border color
borderAccentAccent border color
gray100Neutral gray
warningWarning accent (pending review)
warningLightWarning background
warningTextWarning text

Localization

Both SDKs support localization, but the approach differs by platform.

React Native: Language is auto-detected from the device locale. No configuration needed. Supported: English, German, French, Spanish, Portuguese, Italian, Dutch, Polish, Japanese, Korean, Chinese. Detection order: expo-localization > react-native-localize > NativeModules > English fallback.

Swift: Pass custom strings for full localization:

let strings = FeaturamaStrings(
    featureRequests: "Funktionswünsche",
    newRequest: "Neuer Wunsch",
    vote: "Stimme"
    // ... see FeaturamaStrings for all keys
)

FeaturamaView(accentColor: .blue, strings: strings)

Features included

  • Filter tabs — New, Planned, In Progress, Done
  • Create form — Title, description, optional email (respects project's email collection setting)
  • Vote toggle — Tap to vote, tap again to remove vote
  • Detail view — Full request details with comment thread
  • Comments — View, add, and vote on comments
  • Pending badge — Shows "Pending Review" for unapproved submissions
  • Branding — "Powered by Featurama" footer (controlled in Dashboard Settings)
  • Developer badge — Comments from developers show a "Developer" label
// app/feedback.tsx
import { FeatureRequestsScreen } from '@featurama/react-native';
import { useRouter } from 'expo-router';
import { useColorScheme } from 'react-native';

export default function FeedbackModal() {
  const router = useRouter();
  const colorScheme = useColorScheme() ?? 'light';

  return (
    <FeatureRequestsScreen
      colorScheme={colorScheme}
      accentColor="#6366f1"
      onClose={() => router.back()}
    />
  );
}