Skip to main content
Optimize your Solana transactions by setting compute unit limits and priority fees. This helps ensure transactions succeed during network congestion and controls execution costs.

Setup Solana Libraries First

  • @solana/web3.js
  • @solana/web3.js-v2
  • Anchor
import { useParaSolana } from './hooks/useParaSolana';
import { 
  Transaction, 
  SystemProgram, 
  LAMPORTS_PER_SOL, 
  PublicKey,
  ComputeBudgetProgram 
} from '@solana/web3.js';

function ComputeUnitsExample() {
  const { connection, signer } = useParaSolana();
  
  const sendWithPriorityFee = async () => {
    const recipient = new PublicKey("RECIPIENT_ADDRESS");
    
    // Get recent prioritization fees
    const recentFees = await connection.getRecentPrioritizationFees();
    const avgFee = recentFees.reduce((sum, fee) => sum + fee.prioritizationFee, 0) / recentFees.length;
    const priorityFee = Math.ceil(avgFee * 1.2); // 20% above average
    
    const transaction = new Transaction()
      .add(
        // Set compute unit limit
        ComputeBudgetProgram.setComputeUnitLimit({
          units: 200000, // Adjust based on your transaction needs
        })
      )
      .add(
        // Set priority fee
        ComputeBudgetProgram.setComputeUnitPrice({
          microLamports: priorityFee,
        })
      )
      .add(
        // Your actual transaction instruction
        SystemProgram.transfer({
          fromPubkey: signer.sender,
          toPubkey: recipient,
          lamports: LAMPORTS_PER_SOL * 0.1,
        })
      );
    
    try {
      const signature = await signer.sendTransaction(transaction, {
        skipPreflight: false,
        maxRetries: 3,
      });
      
      console.log("Transaction sent with priority fee:", signature);
      console.log("Priority fee used:", priorityFee, "microLamports");
      
      const confirmation = await connection.confirmTransaction(signature, "confirmed");
      console.log("Transaction confirmed:", confirmation);
    } catch (error) {
      console.error("Transaction failed:", error);
    }
  };
  
  return <button onClick={sendWithPriorityFee}>Send with Priority Fee</button>;
}

Next Steps

I