@resolve_medical_bills/flagsmith
v0.1.0
Published
Shared Flagsmith keys, React hooks and node client for Resolve apps
Readme
@resolve_medical_bills/flagsmith
Shared Flagsmith code for Resolve apps: flag keys, React hooks with exposure tracking, SSR helper, and node client factory.
Exports
| Subpath | Use from | Contents |
| --- | --- | --- |
| @resolve_medical_bills/flagsmith/keys | anywhere | per-app key maps (DASHBOARD_FLAGSMITH_KEYS, QUESTIONNAIRE_FLAGSMITH_KEYS, PATIENT_BE_FLAGSMITH_KEYS) — single source of truth for flag names |
| @resolve_medical_bills/flagsmith/react | client components | useGetFlagValue, ResolveFlagsmithProvider, initFlagsmith, ExposureTracker |
| @resolve_medical_bills/flagsmith/isomorphic | Next.js server | getServerSideFlagsmithState |
| @resolve_medical_bills/flagsmith/node | node backends | createFlagsmithClient (flagsmith-nodejs) |
Exposure tracking
The package owns the dedup logic and event shape (flag-exposure event,
flag_<key> user property). The app injects delivery via an ExposureTracker:
import { type ExposureTracker, ResolveFlagsmithProvider } from "@resolve_medical_bills/flagsmith/react";
const heapTracker: ExposureTracker = {
setUserProperty: (key, value) => {
if (!window.heap?.loaded) return;
window.heap.addUserProperties({ [key]: value });
},
// Return true only when delivered — dedup marker is written only then.
trackExposure: (payload) => {
if (!window.heap?.loaded) return false;
window.heap.track("flag-exposure", payload);
return true;
},
};
<ResolveFlagsmithProvider flagsmith={flagsmith} tracker={heapTracker}>
{children}
</ResolveFlagsmithProvider>;import { QUESTIONNAIRE_FLAGSMITH_KEYS } from "@resolve_medical_bills/flagsmith/keys";
import { useGetFlagValue } from "@resolve_medical_bills/flagsmith/react";
const { enable, value, ready } = useGetFlagValue(QUESTIONNAIRE_FLAGSMITH_KEYS.SHOW_NEW_FEATURE_V1);Backend
import { createFlagsmithClient } from "@resolve_medical_bills/flagsmith/node";
export const flagsmithClient = createFlagsmithClient({
environmentKey: process.env["FLAGSMITH_TOKEN"]!,
});Scripts
pnpm validate— prettier check + typecheck + lint + buildpnpm build— tsup, dual ESM/CJS with types intodist/
Pre-commit hook (husky) runs typecheck, lint --fix and prettier.
