
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
flowboard-react
Advanced tools
Flowboard React Native SDK for SDUI onboarding flows.
It supports:
Install the SDK:
npm install flowboard-react
Install the native peer dependencies in one step:
npx --package flowboard-react flowboard-setup
Preview the commands first:
npx --package flowboard-react flowboard-setup --dry-run
flowboard-react keeps heavy native modules as peer dependencies to avoid duplicate binaries and version conflicts in host apps. The setup command installs the required peer set for you.
By default, flowboard-setup installs only missing peers. If your app already declares one of these native packages, the setup command leaves it untouched so it does not force a downgrade. Use --upgrade to install Flowboard's validated package matrix explicitly.
Expo Go is not supported. This SDK depends on custom native modules, so Expo users need a development build, expo prebuild, or EAS Build.
After running flowboard-setup, add the plugin to your app config:
{
"expo": {
"plugins": ["flowboard-react"]
}
}
If your onboarding flow uses request_permission actions, configure the plugin with permission options:
{
"expo": {
"plugins": [
[
"flowboard-react",
{
"permissions": ["camera", "photos", "microphone"],
"permissionMessages": {
"camera": "Allow $(PRODUCT_NAME) to access the camera during onboarding.",
"photos": "Allow $(PRODUCT_NAME) to access your photo library during onboarding.",
"microphone": "Allow $(PRODUCT_NAME) to access the microphone during onboarding."
}
}
]
]
}
}
Supported plugin options:
permissions: notifications, contacts, location, camera, microphone, photospermissionMessages: override default iOS usage descriptions for supported Flowboard permissionsiosPermissions: append advanced react-native-permissions iOS entries directlyandroidPermissions: append raw Android permissions directlyincludeVectorIconFonts: defaults to falseiconFonts: override the bundled FontAwesome6 font file listThe plugin does three things:
react-native-permissions for iOS permission Podfile setup when neededexpo-font when includeVectorIconFonts is enabledIf your Expo app needs Flowboard's bundled icon fonts, enable them explicitly:
{
"expo": {
"plugins": [
[
"flowboard-react",
{
"includeVectorIconFonts": true
}
]
]
}
}
flowboard-setup installs the validated peer set for React Native CLI apps too, but some native configuration still belongs to the host app.
After installation:
cd ios && pod install.react-native-permissions in your Podfile, Info.plist, and AndroidManifest.xml if your flow uses permission actions.react-native-vector-icons font bundling if your host app does not already do it.The SDK does not edit your app config files automatically in this phase. It installs the packages and prints the exact next steps.
flowboard-setup Installs| Package | Why it stays a peer |
|---|---|
@react-native-async-storage/async-storage | Native persistence backend |
@react-native-masked-view/masked-view | Native masked rendering |
lottie-react-native | Native animation runtime |
react-native-device-info | Native device/app metadata |
react-native-get-random-values | Native crypto randomness bridge |
react-native-in-app-review | Native review prompt support |
react-native-linear-gradient | Native gradient rendering |
react-native-pager-view | Native paged screen containers |
react-native-permissions | Native permissions bridge |
react-native-safe-area-context | Native safe-area insets |
react-native-svg | Native vector rendering |
react-native-vector-icons | Native font/icon bundling |
Expo apps also get expo-font so the plugin can bundle the FontAwesome 6 fonts used by Flowboard icons when includeVectorIconFonts is enabled.
These JS-only helpers are bundled by the SDK itself and do not need to be installed by host apps:
react-native-mask-inputexpr-evaluuidThe setup command supports:
--dry-run: print commands without installing anything--yes: skip the confirmation prompt--upgrade: force reinstall of the validated package set--verbose: print each command before it runs--project-root <path>: target a different host app directoryInitialize Flowboard once near app startup:
import React from 'react';
import { Flowboard, FlowboardProvider } from 'flowboard-react';
export default function App() {
React.useEffect(() => {
Flowboard.init({
apiToken: 'YOUR_BEARER_TOKEN',
debug: true,
});
}, []);
return <FlowboardProvider>{/* your app */}</FlowboardProvider>;
}
Launch the default onboarding:
await Flowboard.launchOnboarding({
customScreenBuilder: (ctx) => {
if (ctx.screenData.id === 'paywall') {
return (
<MyPaywall
onClose={ctx.onNext}
onSignup={() => ctx.onJumpTo('signup')}
/>
);
}
return null;
},
onOnboardEnd: (formData) => {
console.log('Flow completed:', formData);
},
});
Launch a specific onboarding by ID:
await Flowboard.launchOnboardingById('YOUR_ONBOARDING_ID', {
locale: 'fr_FR',
version: 'draft',
onOnboardEnd: (formData) => {
console.log('Specific flow completed:', formData);
},
});
Re-initialize if you rotate credentials or environment:
await Flowboard.reinit();
Flowboard.init({ apiToken, debug, enableAnalytics })Flowboard.launchOnboarding({ customScreenBuilder, customActionBuilder, onOnboardEnd, onStepChange, enableAnalytics, alwaysRestart, resumeProgress })Flowboard.launchOnboardingById(onboardingId, { locale, version, customScreenBuilder, customActionBuilder, onOnboardEnd, onStepChange, enableAnalytics, alwaysRestart, resumeProgress })Flowboard.reinit()FlowboardProviderUse jump_to in Flowboard JSON:
{
"type": "button",
"action": "jump_to",
"actionData": {
"screenId": "signup"
},
"properties": {
"label": "Jump to Sign Up"
}
}
Inside custom screens, use ctx.onJumpTo(screenId):
customScreenBuilder: (ctx) => {
if (ctx.screenData.id === 'paywall') {
return (
<Button title="Jump to Sign Up" onPress={() => ctx.onJumpTo('signup')} />
);
}
return null;
};
Flowboard wraps its native peers behind defensive adapters.
If a native module is installed but not linked or configured correctly:
unavailableThis does not replace installation. Metro still requires the peer packages to exist in the host app dependency graph.
Plugin "flowboard-react" was not found
flowboard-react is installed in the host app.npx --package flowboard-react flowboard-setup.Icons render as empty boxes
plugins: ["flowboard-react"] is present and rebuild the development client.react-native-vector-icons fonts are bundled in the native app.Permission requests do nothing on iOS
react-native-permissions is configured in the host app Podfile.Info.plist usage descriptions exist.pod install.Warnings about unavailable native modules
pod install, Android permissions, and Expo plugin setup for the affected module.yarn typecheck
yarn test
yarn lint
fontFamily.expo-font and @expo-google-fonts/<family> in your app, then use fontFamily + numeric fontWeight in JSON.@expo-google-fonts/<family> and react-native-dynamic-fonts; Flowboard will load those assets at runtime automatically.registerGoogleFontProvider and return either true (uses requested native name) or the actual loaded native font name string.uri or through a custom loader in the host app.autoFitLabels (default true) and labelOffset (default max(20, fontSize * 1.5)) to keep axis labels inside bounds.MIT
FAQs
Onboard your users with one click
The npm package flowboard-react receives a total of 3 weekly downloads. As such, flowboard-react popularity was classified as not popular.
We found that flowboard-react demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.