npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@vpdev2/metakyc

v1.0.116

Published

React SDK for MetaKYC due diligence workflows with configurable API endpoints and comprehensive step coverage

Readme

MetaKYC SDK

A comprehensive React SDK for MetaKYC due diligence workflows with configurable API endpoints, dynamic form generation, and complete workflow step coverage.

Features

  • Configurable API Endpoints - Support for both Host Controller and Application Service patterns
  • Complete Workflow Coverage - All 9 workflow step types supported
  • Dynamic Applicant Form - 23 configurable form fields for applicant creation
  • 🎨 Backend-Driven Theming - Multi-tenant theme customization with 6 presets, custom logo, colors, and CSS (NEW v1.2.0)
  • React Hooks - Clean API with hooks for each workflow step
  • Pre-built Components - Ready-to-use UI components with Tailwind CSS
  • Dynamic Form Validation - Automatic zod schema generation from API rules
  • Identity Provider Integration - Sumsub, Onfido, and SardinAI support
  • TypeScript - Full type safety with types generated from C# DTOs
  • Session Token Auth - Server-side token creation with optional externalRefId scoping guard
  • Dark Mode - Built-in dark mode support

Installation

npm install @metakyc/sdk
# or
yarn add @metakyc/sdk
# or
pnpm add @metakyc/sdk

Quick Start

Step 1 — Server: create a session token

Create a short-lived session token on your backend. The API key and secret never leave your server.

// ── Server-side (Next.js API route, Express, etc.) ──
import { MetaKYCSession } from '@vpdev2/metakyc';

export async function POST() {
  const { accessToken, expiresInSeconds } = await MetaKYCSession.createToken({
    baseUrl:       'https://api.example.com',
    clientId:      'your-client-id',           // or tenantId: 1
    apiKey:        process.env.METAKYC_API_KEY!,
    secretKey:     process.env.METAKYC_SECRET_KEY!,
    externalRefId: 'USER-12345',               // optional — scopes the token to this user
  });
  return Response.json({ accessToken, expiresInSeconds });
}

| Parameter | Type | Required | Description | |---|---|---|---| | baseUrl | string | Yes | MetaKYC API base URL | | apiKey | string | Yes | Your tenant API key | | secretKey | string | Yes | Your tenant secret key | | tenantId | number | One of | Numeric tenant ID (provide this or clientId) | | clientId | string | One of | String client ID (provide this or tenantId) | | externalRefId | string | No | When set, the returned token is scoped: all API calls made with it can only create or access applicants matching this externalRefId. Tokens created without it remain unrestricted (backward-compatible). |

Step 2 — Client: initialize the SDK

Pass the token to the frontend SDK via getAccessToken:

import { MetaKYCProvider } from '@vpdev2/metakyc';

function App() {
  return (
    <MetaKYCProvider
      config={{
        getAccessToken: () => fetchSessionToken(), // returns the accessToken string
        clientId: 'your-client-id',
        baseUrl: 'https://api.example.com',
        endpoints: { pattern: 'host-controller' },
        applicantForm: {
          externalRefId: 'USER-12345',
        },
        // Optional: Configure identity providers (e.g., SardinAI)
        identityProviders: {
          sardinai: process.env.SARDINAI_CLIENT_ID ? {
            clientId: process.env.SARDINAI_CLIENT_ID,
            environment: 'sandbox', // or 'production'
            region: 'us',           // 'us', 'eu', 'ca', or 'au'
            enableBiometrics: true,
            enablePortScanning: false,
          } : undefined,
        },
      }}
    >
      <YourApp />
    </MetaKYCProvider>
  );
}

Tip: You can also pass apiKey directly instead of getAccessToken for quick testing, but session tokens are recommended for production since they keep your secret key on the server.

Step 3 — Use the workflow component

import { KycWorkflow } from '@metakyc/sdk';

function KYCPage() {
  return (
    <KycWorkflow
      applicantId={applicantId}
      onComplete={(result) => console.log('Complete:', result)}
      onError={(error) => console.error('Error:', error)}
    />
  );
}

Step 4 — Or build custom UI with hooks

import { useKycWorkflow, useQuestionnaire } from '@metakyc/sdk';

function CustomKYC() {
  const { progress, currentStep, moveToNext } = useKycWorkflow(applicantId);
  const questionnaire = useQuestionnaire(applicantId);

  // Build your custom UI...
}

Documentation

Core Features

Backend Integration

Migration & Changes

  • Migration Guide - Migrate from custom form to dynamic configuration (v1.0.0 → v1.1.0)
  • Changelog - Version history and changes

License

MIT