Installation
Add the @nfid/embed package and dependencies
npm i @nfid/embed @dfinity/agent @dfinity/identity @dfinity/auth-client @dfinity/principal
Import NFID class
import { NFID } from "@nfid/embed"
The static NFID.init()
method returns a promise that resolves as soon as the mounted NFID iframe
is ready to use. You can use the await
keyword to wait for the promise to resolve:
type IdleOptions = {
onIdle?: () => unknown; // callback after the user has gone idle
idleTimeout?: number; // timeout in ms, default is 600000 (10 minutes)
captureScroll?: boolean; // capture scroll events
scrollDebounce?: number; // scroll debounce time in ms, default is 100
disableIdle?: boolean; // disables idle functionality
disableDefaultIdleCallback?: boolean; // disables default idle behavior - call logout & reload window
}
type NFIDConfig = {
origin?: string; // default is "https://nfid.one"
application?: { // your application details to display in the NFID iframe
name?: string; // your app name user can recognize
logo?: string; // your app logo user can recognize
};
identity?: SignIdentity;
storage?: AuthClientStorage;
keyType?: "ECDSA" | "Ed25519" // default is "ECDSA"
idleOptions?: IdleOptions;
};
const nfid = await NFID.init({
application: {
name: "My Sweet App",
logo: "https://dev.nfid.one/static/media/id.300eb72f3335b50f5653a7d6ad5467b3.svg"
},
}: NFIDConfig);
You're now ready to onboard users and request approvals without interrupting your dApp UX.
Sample implementation to demonstrate how this could look in your app: NFID Playground (opens in a new tab)