Rebranding
name, IDs, icon, scheme.
Every identifier lives in one Dart file plus the platform manifests. Do this before your first store upload: bundle IDs are hard to change once an app is live.
01One file first
lib/app/product_identity.dart is the single source of truth for the product's identifiers. Change these constants:
| Constant | Shipped value | What it is |
|---|---|---|
displayName | SOLSCOPE | Name in the app bar and store listing |
tagline, description | "Solana token terminal"… | One-line descriptors |
androidApplicationId, appleBundleId | com.solscope.app | Mirrors of the platform IDs (change the platform files too, below) |
website | https://solscope-demo.mikodes.com | The one author address left in the app (the public demo); wallets also show it as the requesting app. Replace it with your own site. The status-bar Docs button opens <site>/docs/. Can also be set with --dart-define=SOLSCOPE_LIVE_HOST=…. |
deepLinkScheme | solscope | Return leg of the Phantom / Solflare / Backpack handshake |
vaultStorageName, vaultKeychainAccount, prefsPrefix | solscope_vault… | Storage names. Change them before your first release so two products never share a vault; changing them later makes existing users' stored data unreadable. |
version | 1.0.0 | The version string shown in the status bar and in Setup. Keep it equal to the part of pubspec.yaml version: before the + on every release. |

02Bundle IDs
The package uses com.solscope.app. Pick your own reverse-domain ID, for example com.yourcompany.terminal.
| Platform | File | What to change |
|---|---|---|
| Android | android/app/build.gradle.kts | namespace and applicationId |
| Android | android/app/src/main/kotlin/com/solscope/app/MainActivity.kt | Move it to a folder matching your ID and change the package line |
| iOS | ios/Runner.xcodeproj/project.pbxproj | PRODUCT_BUNDLE_IDENTIFIER (app and .RunnerTests). Easiest in Xcode: ios/Runner.xcworkspace → Runner → Signing & Capabilities. |
| iOS | ios/Runner/Info.plist | The CFBundleURLName entry that repeats the bundle ID |
The flutter and git commands on this page are the same in Windows PowerShell. Put a command whose lines end in \ on one line (or end each line with a backtick `), and run any other shell command from Git Bash or WSL.
flutter clean
flutter pub get
03App name
| Where | File | Key |
|---|---|---|
| Inside the app | lib/app/product_identity.dart | displayName |
| Android launcher | android/app/src/main/AndroidManifest.xml | android:label |
| iOS home screen | ios/Runner/Info.plist | CFBundleDisplayName, CFBundleName |
| Web | web/index.html, web/manifest.json | <title>, apple-mobile-web-app-title, name, short_name |
After the change, search the project for SOLSCOPE and solscope to catch remaining texts. test/deep_link_return_test.dart checks that the solscope scheme is wired on Android and iOS; update its expected scheme to yours.
04Deep-link scheme
External wallets return to the app through the solscope:// scheme. If you change deepLinkScheme, change it in the same three places: product_identity.dart, the intent filter in AndroidManifest.xml and CFBundleURLSchemes in Info.plist. Keep the phantom, solflare and backpack query entries — they let the app find those wallets.
05Icons and colours
- App icon:
assets/brand/app_icon_1024.png(andapp_icon.svg,app_icon_512.png) is a placeholder. Regenerate the platform icon slots from your own artwork:android/app/src/main/res/mipmap-*,ios/Runner/Assets.xcassets/AppIcon.appiconset,web/icons/andweb/favicon.png. No icon generator is included inpubspec.yaml. - Colours: design tokens in
lib/theme/solscope_tokens.dart(ground, surfaces, text, accents) andlib/theme/terminal/terminal_tokens.dart. - Font: JetBrains Mono, bundled in
assets/fonts/and declared inpubspec.yaml.
06Rebrand checklist
product_identity.dartupdated: name, IDs, site, scheme, storage names.- Android
applicationId,namespaceandMainActivity.ktpackage changed. - iOS bundle ID changed in Xcode and
Info.plist. - App name changed on Android, iOS and web.
- Icons replaced on every platform.
- Your own security contact published;
docs/SECURITY.mdnames none. flutter testpasses after you update the scheme intest/deep_link_return_test.dart.