> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getpara.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Setup Solana Libraries

> Install and configure Solana libraries for use with Para SDK

export const Link = ({href, label, newTab = false}) => {
  const [isHovered, setIsHovered] = useState(false);
  return <a href={href} target={newTab ? '_blank' : '_self'} rel={newTab ? 'noopener noreferrer' : undefined} className="not-prose inline-block relative text-black font-semibold cursor-pointer border-b-0 no-underline" onMouseEnter={() => setIsHovered(true)} onMouseLeave={() => setIsHovered(false)}>
      {label}
      <span className={`absolute left-0 bottom-0 w-full rounded-sm bg-gradient-to-r from-orange-600 to-purple-600 transition-all duration-300 ${isHovered ? 'h-0.5' : 'h-px'}`} />
    </a>;
};

Para supports multiple Solana libraries. Choose your library below.

## Prerequisites

<Card title="Para SDK Setup Required" description="You must have Para SDK installed and configured before setting up Solana libraries" href="/v3/react-native/quickstart" horizontal />

<Tabs>
  <Tab title="@solana/kit">
    The modern Solana library with the `@solana/signers` interface. Recommended for new projects.

    ## Install

    ```bash theme={null}
    npm install @getpara/react-native-wallet @getpara/solana-signers-v2-integration @solana/kit
    ```

    <Info>`@getpara/solana-signers-v2-integration` is a separate package — install it alongside `@getpara/react-native-wallet`.</Info>

    ## Usage

    <Tabs>
      <Tab title="Hook (React)">
        Use the <Link label="useParaSolanaSigner" href="/v3/react-native/guides/hooks/use-para-solana-signer" /> hook to create a Solana signer for your user's Para embedded wallet or external wallet. The <Link label="useParaSolanaSignAndSend" href="/v3/react-native/guides/hooks/use-para-solana-sign-and-send" /> hook wraps transaction signing in a React Query mutation.

        ```tsx theme={null}
        import { useParaSolanaSigner } from "@getpara/react-native-wallet/solana";
        import { createSolanaRpc } from "@solana/kit";
        import { Text } from "react-native";

        const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");

        function SolanaExample() {
          const { solanaSigner, isLoading } = useParaSolanaSigner({ rpc });

          if (isLoading) return <Text>Loading...</Text>;
          return <Text>Address: {solanaSigner?.address}</Text>;
        }
        ```

        ### Wallet Resolution

        When no `address` or `walletId` is passed, the hook resolves the wallet in this order:

        1. **Selected wallet** — if the user selected a Solana wallet in the UI. If there is only one Solana wallet in the session, it is already selected by default
        2. **First Solana wallet** — the first available Solana wallet on the account

        To target a specific wallet:

        ```tsx theme={null}
        const { solanaSigner } = useParaSolanaSigner({ rpc, address: "SoLaNa..." });
        ```
      </Tab>

      <Tab title="Direct (Non-React)">
        Use `createParaSolanaSigner` to create a signer directly.

        ```typescript theme={null}
        import { createParaSolanaSigner } from "@getpara/solana-signers-v2-integration";
        import { createSolanaRpc } from "@solana/kit";

        const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");
        const signer = createParaSolanaSigner({ para, rpc });
        console.log("Address:", signer.address);
        ```

        ### Wallet Resolution

        When no `address` or `walletId` is passed, the factory picks the first available Solana wallet.
      </Tab>
    </Tabs>
  </Tab>

  <Tab title="@solana/web3.js">
    The legacy Solana Web3.js library. Use for compatibility with existing projects.

    ## Install

    ```bash theme={null}
    npm install @getpara/solana-web3.js-v1-integration @solana/web3.js
    ```

    <Warning>There is no built-in hook for `@solana/web3.js` — use the constructor directly or create a custom hook.</Warning>

    ## Usage

    ```typescript theme={null}
    import { ParaSolanaWeb3Signer } from "@getpara/solana-web3.js-v1-integration";
    import { Connection, clusterApiUrl } from "@solana/web3.js";

    const connection = new Connection(clusterApiUrl("mainnet-beta"));
    const signer = new ParaSolanaWeb3Signer(para, connection);
    ```
  </Tab>

  <Tab title="Anchor">
    Use `useParaSolanaSigner` with [Codama](https://github.com/solana-program/codama)-generated clients for type-safe Anchor program interaction. No separate Anchor integration package needed — the signer from the @solana/kit tab works directly.

    ```typescript theme={null}
    import { useParaSolanaSigner } from "@getpara/react-native-wallet/solana";
    import { createSolanaRpc } from "@solana/kit";
    // Import from your Codama-generated client
    import { getYourInstruction } from "./generated";

    const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");

    function MyComponent() {
      const { solanaSigner, isLoading } = useParaSolanaSigner({ rpc });

      // Use solanaSigner with Codama-generated instructions
      // Same pattern as the @solana/kit tab
    }
    ```

    <Info>
      Generate your client: `npx codama idl path/to/your_program.json -o src/generated`
    </Info>
  </Tab>
</Tabs>

## Next Steps

<CardGroup cols={3}>
  <Card title="Sign Messages" description="Sign text and binary messages with Solana" href="/v3/react-native/guides/web3-operations/solana/sign-messages" icon="signature" />

  <Card title="Execute Transactions" description="Create and send Solana transactions" href="/v3/react-native/guides/web3-operations/solana/execute-transactions" icon="paper-plane" />

  <Card title="Query Balances" description="Check SOL and token balances" href="/v3/react-native/guides/web3-operations/solana/query-balances" icon="wallet" />
</CardGroup>
