← Back to Portal Setup
Return to the Portal setup overview to explore other deployment options.
Migrate to the Cloud Portal
For users on Solana
Portal is currently in beta. Please report any bugs or suggestions to the SQD Portal Beta chat or to Squid Devs.
We’re currently experimenting with data request complexity limits. If you see an HTTP 400 error with a message like:where
X is above 50, or any other HTTP 400 response, please let us know.Prerequisites
Before you begin, ensure you have:- An existing Solana squid using gateways or RPC endpoints
- Access to your squid’s source code
- Node.js and your preferred package manager (npm, yarn, or pnpm) installed
Portal endpoint
For this migration, you’ll use the following Portal endpoint:A dedicated Cloud Solana Portal with enhanced performance and real-time support will be available soon.
Migration steps
1
Install Portal API packages
Portal support requires special Remove your lock file and Upgrade all SQD packages to their Freeze the versions of Install the updated dependencies:
@portal-api tagged versions of SQD packages. These versions include Portal-specific features and optimizations for Solana.Navigate to your squid’s folder:node_modules folder to ensure a clean installation:- NPM
- Yarn
- PNPM
@portal-api versions:@portal-api packages by removing version range specifiers (^, ~, <, >, >=, <=):- NPM
- Yarn
- PNPM
Verify that all
@subsquid/* packages in your package.json now have -portal-api in their version strings.2
Update your code
Migrate your data source configuration and update Solana-specific code patterns for Portal compatibility.Remove any imports of
Replace data sources with Portal
Update your data source builder to use the Portal endpoint instead of gateways or RPC:SolanaRpcClient from your code:Update block range to use slot numbers
Portal uses slot numbers instead of block heights. Update your block range configuration:A convenient block height to slot number converter will be added to the documentation soon.
Update slot field references
If you reference theslot field of block headers in your code, update it to use .number:Request block height if needed (optional)
If you need block height for compatibility with existing code or databases, request it explicitly in your fields configuration:Verify your code compiles without errors by running
npm run build or equivalent.3
Test your migration
We highly recommend testing your migrated squid with a full re-sync. This ensures everything works correctly across the entire chain and allows you to catch any issues early.See the slots and tags documentation for detailed instructions.
Zero-downtime update procedure
Follow these steps to test without disrupting your production deployment:- Deploy your updated squid into a new slot
- Wait for it to sync completely, observing the improved data fetching performance
- Assign your production tag to the new deployment to redirect GraphQL requests
Verify that your GraphQL API returns the same data as before and that your squid syncs successfully to the chain head.

