@solana/web3-compat es el puente entre aplicaciones de larga duración de
@solana/web3.js y el runtime más reciente de Kit. Cambia la importación,
mantén la interfaz que tu aplicación ya conoce y adopta progresivamente las
características de Kit sin reescribir cada helper o instrucción de una vez.
Instalar con dependencias de Kit
$npm install @solana/web3-compat @solana/kit @solana/client
La capa de compatibilidad reexporta los tipos clásicos de Web3 (Connection,
PublicKey, Transaction, etc.) mientras internamente delega en la red de Kit
y códecs. Mantén tus endpoints RPC existentes, pero benefíciate del manejo de
blockhash más predecible de Kit y las abstracciones de wallet.
Reemplazar importaciones (sin otros cambios de código)
La mayoría de los proyectos pueden migrar archivo por archivo cambiando la fuente de importación. Tanto las importaciones nombradas como las de espacio de nombres reflejan el paquete antiguo.
import { Connection, PublicKey } from "@solana/web3.js";
import { Connection, PublicKey } from "@solana/web3-compat";
CommonJS también funciona:
const solanaWeb3 = require("@solana/web3-compat");const connection = new solanaWeb3.Connection("https://api.devnet.solana.com");
Detrás de escena Connection reenvía lecturas y escrituras a través de
@solana/client, por lo que helpers como sendAndConfirmTransaction,
simulateTransaction y getProgramAccounts se benefician del runtime más
reciente sin tocar tu lógica de negocio.
Helpers puente cuando necesites tipos de Kit
A medida que adoptes Kit directamente (quizás en nuevos componentes usando
@solana/client o @solana/react-hooks), usa los helpers puente incluidos en
el paquete de compatibilidad para convertir entre los dos ecosistemas:
import {PublicKey,toAddress,toPublicKey,toWeb3Instruction,toKitSigner} from "@solana/web3-compat";const legacyKey = new PublicKey("11111111111111111111111111111111");const kitAddress = toAddress(legacyKey);const backToWeb3 = toPublicKey(kitAddress);
Mezclar runtimes se vuelve seguro: los hooks más recientes pueden emitir
instrucciones de Kit, luego toWeb3Instruction las envolverá para flujos
heredados hasta que todo el proyecto se migre completamente.
Patrones de migración progresiva
- Despliegues incrementales: actualiza una carpeta de funcionalidad a la
vez. Cuando un módulo ya no necesite compat, apúntalo directamente a
@solana/client/@solana/react-hookssin tocar el resto del árbol. - Ajuste de RPC compartido: dado que compat depende de las conexiones de Kit, ajustar niveles de compromiso, tarifas de priorización o URLs de RPC fluye a través de un único objeto de configuración.
- Helpers de SPL + transacciones: mantén los constructores de transacciones
legacy por ahora, pero recurre a
client.helpers.transaction.preparecuando estés listo. Compat puede seguir enviando los mismos payloads firmados. - Testing: reutiliza los mocks de Web3 existentes ya que la superficie pública permanece idéntica, pero en las pruebas puedes simular el cliente de Kit para simulaciones más ricas.
Qué se incluye en la fase 0
ConnectioncongetLatestBlockhash,getBalance,getAccountInfo,getProgramAccounts,getSignatureStatuses,sendRawTransaction,confirmTransaction, ysimulateTransaction.- Utilidades como
LAMPORTS_PER_SOL,sendAndConfirmTransaction, ycompileFromCompat. SystemProgram.transfermás todas las primitivas principales de Web3 (Keypair,Transaction,VersionedTransaction,TransactionInstruction).
La cobertura aún se está expandiendo
Los métodos fuera de la lista anterior recurren al @solana/web3.js legacy
hoy. Mantén la dependencia antigua hasta que el resto de tu superficie llegue
a compat, y sigue las versiones futuras para soporte de suscripciones y mayor
cobertura de RPC.
Combina esta guía con la descripción general de @solana/client y la guía de @solana/react-hooks cuando estés listo para comenzar a construir nueva UI sobre el mismo runtime de Kit.
Is this page helpful?