Skip to content

Getting Started

Install Midl.js via your package manager of choice.

bash
pnpm add @midl-xyz/midl-js-core @midl-xyz/midl-js-react
bash
npm install @midl-xyz/midl-js-core @midl-xyz/midl-js-react
bash
yarn add @midl-xyz/midl-js-core @midl-xyz/midl-js-react

Integration

Create and export a new Midl.js config file in your project. And wrap your app with the Midl.js context provider.

ts
import { createConfig, regtest, leather } from "@midl-xyz/midl-js-core";

export const config = createConfig({
  networks: [regtest],
  connectors: [leather()],
  persist: true,
});
tsx
import { MidlProvider } from "@midl-xyz/midl-js-react";
import { QueryClientProvider } from "@tanstack/react-query";
import { queryClient } from "./query-client";
import { config } from "./midl.config";

function App() {
  return (
    <MidlProvider config={midlConfig}>
      <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
    </MidlProvider>
  );
}

Usage

Use Midl.js hooks to interact with the blockchain.

tsx
import { useConnect, useAccounts } from "@midl-xyz/midl-js-react";

function Page() {
  const { connect, connectors } = useConnect();
  const { accounts, isConnected } = useAccounts();

  return (
    <div>
      {connectors.map(connector => (
        <button
          key={connector.name}
          onClick={() =>
            connect({
              id: connector.id,
            })
          }
        >
          {connector.name}
        </button>
      ))}

      {isConnected && (
        <div>
          <h2>Accounts</h2>
          <ul>
            {accounts.map(account => (
              <li key={account}>{account}</li>
            ))}
          </ul>
        </div>
      )}
    </div>
  );
}