Common issues and solutions for Mova Store development and production.
Symptoms: Error during dependency installation
Solutions:
-
Clear npm cache:
npm cache clean --force rm -rf node_modules package-lock.json npm install
-
Check Node.js version (requires 18+):
node --version
-
On Mac, install Xcode tools:
xcode-select --install
Symptoms: App shows "Missing configuration" errors
Solutions:
- Ensure
.env.localexists (copy from.env.local.example) - Restart the dev server after changing env vars
- Verify variable names start with
NEXT_PUBLIC_for client-side access - Check for typos in variable names
Symptoms: Auth failures, empty shop, or "Invalid API key" in console
Solutions:
- Verify
NEXT_PUBLIC_SUPABASE_URLandNEXT_PUBLIC_SUPABASE_ANON_KEYin.env.local - Confirm the Supabase project is active
- Run
supabase/schema.sqlin the SQL editor - Enable Email and/or Google providers under Authentication → Providers
- Add
http://localhost:3000/**to Auth → URL Configuration → Redirect URLs
Symptoms: "Please install Freighter" message
Solutions:
- Install Freighter from freighter.app
- Enable the extension in browser settings
- Refresh the page
- Try a different browser (Chrome/Firefox)
Symptoms: "Please switch to testnet/mainnet"
Solutions:
- Open Freighter → Settings → Network
- Select the correct network (Testnet or Mainnet)
- Refresh the page
Symptoms: Freighter popup doesn't appear or closes immediately
Solutions:
- Ensure popup blockers are disabled
- Check Freighter is unlocked
- Verify the account has XLM for fees
- Check the transaction isn't malformed (look at console)
Symptoms: Error when trying to pay on testnet
Solutions:
- Testnet: The app auto-funds via Friendbot, wait a moment
- If Friendbot fails, manually fund at https://friendbot.stellar.org
- Check account status:
stellar account info --network testnet <YOUR_PUBLIC_KEY>
Symptoms: Payment fails with TokenNotAllowed
Solutions:
- Verify the token is whitelisted in the contract:
stellar contract invoke --id <CONTRACT_ID> --network testnet -- \ is_token_allowed --token <TOKEN_CONTRACT_ID>
- Add the token if missing:
stellar contract invoke --id <CONTRACT_ID> --source-account <MERCHANT> --network testnet -- \ add_token --token <TOKEN_CONTRACT_ID>
Symptoms: Payment simulation fails with balance error
Solutions:
- Ensure user has enough tokens for the payment
- User needs XLM for transaction fees (~1 XLM recommended)
- For USDC, user needs a trustline (app creates automatically)
Symptoms: "Transaction timed out" after 60 seconds
Solutions:
- Check Stellar network status: https://status.stellar.org
- Try a different RPC endpoint
- Increase timeout in
lib/stellar/config.ts - Check if transaction is actually pending on explorer
Symptoms: Funds moved but checkout stuck
Solutions:
- Check transaction on Stellar Expert
- Refresh the page
- Event indexer may be behind - wait a few seconds
- Check browser console for event polling errors
Symptoms: Logged in but can't access admin
Solutions:
- Verify your email is in
NEXT_PUBLIC_ADMIN_EMAILS:NEXT_PUBLIC_ADMIN_EMAILS=your@email.com,other@admin.com - Emails are case-insensitive but check for typos
- Restart the app after changing admin emails
Symptoms: Admin panel shows loading or empty
Solutions:
- Check RLS policies allow read access on
products - Verify the
productstable exists (runsupabase/schema.sql) - Check browser console for Supabase errors
- Ensure the
productsstorage bucket is public
Symptoms: Action buttons fail with error
Solutions:
- Connect Freighter with the merchant wallet (the one used to initialize contract)
- Check order status is "Paid" (can only dispatch/refund paid orders)
- Verify you're on the correct network (testnet/mainnet)
Symptoms: stellar contract build or cargo build errors
Solutions:
- Install wasm target:
rustup target add wasm32-unknown-unknown
- Update Rust:
rustup update
- Clean and rebuild:
cd contracts/checkout cargo clean cargo build --target wasm32-unknown-unknown --release
Symptoms: Deployment fails with account error
Solutions:
- Ensure deployer account is funded:
stellar keys generate alice --network testnet --fund
- Check account exists:
stellar account info --network testnet --source-account alice
Symptoms: "AlreadyInitialized" or authorization error
Solutions:
- Contract can only be initialized once
- The merchant address must sign the initialization
- For a fresh start, deploy a new contract instance
Symptoms: npm run build errors
Solutions:
- Check TypeScript errors:
npm run type-check
- Fix ESLint issues:
npm run lint:fix
- Ensure all env vars are set (even placeholder values)
Symptoms: Build or deploy errors on Vercel
Solutions:
- Check all environment variables are set in Vercel dashboard
- Verify Node.js version in
package.jsonengines - Check build logs for specific errors
- Try local build first:
npm run build
Symptoms: Product images 404 or broken
Solutions:
- Check Supabase Storage public bucket settings for
products - Verify
NEXT_PUBLIC_SUPABASE_URLmatches your project - Confirm image URLs use
/storage/v1/object/public/products/... - Check storage RLS policies for the
productsbucket
If you can't resolve an issue:
- Search existing issues: GitHub Issues
- Check Stellar docs: developers.stellar.org
- Ask in Discord: Stellar Discord
- Open a new issue with:
- Error message
- Steps to reproduce
- Environment (OS, Node version, browser)
- Relevant logs
Enable verbose logging:
// In browser console
localStorage.setItem('debug', 'mova-store:*');Check Stellar transaction details:
stellar tx details <TX_HASH> --network testnetMonitor contract events:
stellar events --id <CONTRACT_ID> --network testnet --start-ledger <LEDGER>