AXIS docs
v1.0.0
Live demo Get help
● Ship · When it breaks

Troubleshooting
symptom, cause, fix.

The problems you are most likely to meet, grouped by where they show up. Search with / for the exact error text.

01Build and run

Error: app_localizations.dart not found / AppLocalizations undefined

The translations are generated, not stored. Run flutter gen-l10n, then build again. Repeat it after every flutter clean.

flutter pub get fails on the SDK version

pubspec.yaml needs Dart 3.2 or newer. Update Flutter to a current stable release (flutter upgrade). Verified with Flutter 3.41.4.

Android build says "no google-services.json — building without Firebase"

That is a notice, not an error. Firebase is optional; the build continues without it. Run flutterfire configure if you want push, crash reports or the Firebase config channel (how).

Google Play rejects the upload as debug-signed

android/key.properties is missing or incomplete, so the release build used the debug key. Set all four signing values (how).

iOS: CocoaPods or signing errors

Run cd ios && pod install, open ios/Runner.xcworkspace (not the .xcodeproj) and pick your team under Signing & Capabilities.

"FirebaseService: dev placeholder credentials detected" in the log

Expected while lib/firebase_options.dart is the shipped placeholder. The app runs without Firebase.

02Trading

New orders are refused; closing still works

Perps are off. hyperliquid_perps_enabled ships false. Publish true in your config, or switch it on for one device in Operator console → Surfaces.

Prices look wrong, volumes are tiny

The build is on testnet. Check the network badge in the header and Operator console → Network. A build started with --dart-define=HYPERLIQUID_NETWORK=testnet, or a device switched to testnet in the console, stays there until changed back.

Stock / commodity markets (TSLA, GOLD) are missing

stocks_enabled is off, either in your published config or in the operator console on that device.

A deposit was sent but the balance did not change

Deposits bridge native USDC on Arbitrum to Hyperliquid. Amounts below 5 USDC are not credited, and bridged USDC.e is not accepted. Crediting usually takes about a minute and can take a few; the app keeps checking and says so if it is still waiting.

A withdrawal is smaller than requested

Hyperliquid charges a flat 1 USDC withdrawal fee, shown in the withdraw sheet. Withdrawals arrive on Arbitrum after a few minutes.

Market data stops updating

The live data comes over Hyperliquid's WebSocket. Check the connection, firewalls and ad blockers that block wss://api.hyperliquid.xyz/ws, then reload.

03Earnings

Earnings says NO BUILDER CODE

The builder fee is off, the address is empty or malformed, or the fee is 0 or above 100. Fix the values in your published config; the console shows the reason for a rejected value.

Orders carry the fee, but nothing arrives

Your builder address holds less than 100 USDC of perps collateral, or it is not in standard account mode. Check Earnings → Prerequisites (details).

ORDERS WITHOUT THE FEE is above zero

Those orders left without your code: the wallet had not approved your rate, the approval lookup failed, or the approval was revoked. The screen names the reason. Raising your fee makes every wallet approve again.

My users are not paying the fee I set in the console

The operator console changes only the device it is used on. Publish the builder fee in config.json or Firebase (why).

04Configuration

My config.json changes do not appear

Check in order: kAdminConfigUrl in lib/core/config/app_config.dart holds your address (not kAxisAdminConfigUrl, which nothing reads) and you rebuilt after setting it; the URL opens in a browser and returns valid JSON with status 200; on the web, the host sends a CORS header for your terminal's origin; the value is not overridden on that device (console tag OPERATOR → press CLEAR). The app fetches in the background, so the change shows on the next cold start.

Values keep changing back

With Firebase configured, the Firestore document app_config/runtime_admin_config is watched live and replaces the settings when it changes. Keep one channel, or keep both identical.

A device is stuck on the maintenance screen

maintenance_mode is on. Publish false. If it was set in the console on that device, the override stays until the app's data is cleared (web: clear the site data; mobile: reinstall), because the console is not reachable from the maintenance screen.

WalletConnect screen says it is unavailable

No Reown project ID. Set walletconnect_project_id or build with --dart-define=REOWN_PROJECT_ID=…, and check walletconnect_enabled is not false.

05Still stuck?

See Support. Include the version, the platform, the output of flutter --version, the exact command and the full error text.