@synqid/react.
Provider. Hooks. Three tiers.
React SDK for Vite, CRA, and Remix. SynqProvider plus hooks for user, session, access token. Headless modals with three customization tiers — token-driven theme, compound parts with asChild, fully headless render-prop. Pick the tier that fits your design system.
Install
pnpm add @synqid/react @synqid/jsMount and consume
Wrap your tree once, then read state with hooks anywhere.
import { SynqProvider } from '@synqid/react'
import { SignIn } from '@synqid/react/ui'
export default function Root({ children }) {
return (
<SynqProvider
issuer="https://api.synq.id"
clientId={import.meta.env.VITE_SYNQ_CLIENT_ID}
redirectUri={`${location.origin}/auth/callback`}
theme="dark"
colorScheme="system"
>
{children}
<SignIn /> {/* mount once; opens via requestSignIn() */}
</SynqProvider>
)
}Pick the lightest that fits
Token presets
Brand colors, radii, fonts via tokens on <SynqProvider>. Five built-in presets (dark, light, glass, monochrome, brutalist) plus full override.
Compound parts
Replace any part of the modal with asChild. SignIn.Backdrop / Content / Header / Title / ProviderList / Provider / WalletButton / Footer.
Fully headless
Render-prop API. Synq hands you isOpen, providers, isLoading, error, signIn, walletAvailable. You render everything.
Pair it with
Common questions
Three customization tiers, one API.
Defaults work out of the box; compound parts handle 80% of designs; headless render-prop covers everything else.
