You bought a Flutter template. It runs on your phone, and it still shows someone else's name under the icon. The obvious next move is to open the project and swap the logo. Wait a little. The expensive reskin mistakes happen before any code changes: a package name picked in a hurry, a developer account in someone else's name, a signing key that lives on one laptop.
This app reskin checklist covers what to decide and gather first. A reskin means branding an existing app: name, icon, colours, package name, signing and accounts. It is not a UX redesign. New screens or a different flow are custom development. Work through the steps in order, because the package name and store accounts are hard to undo later.
1. Check your licence covers the app you plan to ship
On CodeCanyon the test is whether end users pay. A Regular licence covers one end product that is free to the end user. If users must pay to use it (a paid app, a subscription, a paid tier), you need the Extended licence. Each licence covers one end product, so two branded apps from one template need two licences.
The free-app-grows-a-paid-tier trap is covered in CodeCanyon Regular vs Extended license for Flutter apps. For Codester or another marketplace, read the licence page for your specific item.
2. Pick the final app name
The name shows up as the Android launcher label, under the icon on iOS, and on both store listings. Search both stores for the same or a very similar name, and decide on a short form for the home screen, where long names get cut off.
3. Choose the package name and bundle ID once
This is the decision you can't take back. On Android it is the applicationId; on iOS, the bundle ID. Most people use reverse-domain style, such as com.yourcompany.yourapp, with the same value on both platforms.
Android's documentation says never to change the application ID after publishing, because Google Play treats an upload with a different ID as a completely different app: new listing, no reviews, no installs. Apple is similar. Once a build is uploaded to App Store Connect, the bundle ID can't change, and the fix is a new app record.
When choosing:
- Base it on a domain you own.
- Leave out the template author's name and words like
demoortest. - Use lowercase letters, digits and dots. Android needs at least two segments, each starting with a letter, with only letters, digits and underscores inside. Hyphens fail on Android.
Applying the change touches files on both platforms. The steps are in how to change your Flutter app's package name.
4. Collect your brand assets
Put these in one folder:
- Logo as an SVG, or a PNG of at least 1024 × 1024 pixels.
- Brand colours as hex codes, for example
#1E6FD9: at minimum a primary and an accent, ideally your background and text colours too.
Hex codes beat "the blue from our website", because a template theme takes exact values. In MemberKeep, for example, brand colours and AdMob ad units sit in app_config.dart and app_colors.dart. Other templates differ, so check their documentation.
5. Prepare the app icon and splash screen
The icon is a separate job from the logo: a wordmark that reads well on a website turns into a smudge at launcher size.
Make one square master at 1024 × 1024 pixels. Xcode can generate every iOS icon variant from a single image that size. Google Play also wants a 512 × 512 store listing icon: a 32-bit PNG with alpha, no larger than 1024 KB.
For the splash screen, keep the mark simple and centred. On Android 12 and later, the launch splash shows your app icon and masks anything outside a central circle, so a wide or detailed logo gets clipped.
6. Open the developer accounts in your own name
Both store accounts should belong to you or your company. Apple's guideline 4.2.6 rejects apps made from a commercialized template unless they are submitted by the provider of the app's content. So submit from your own account, not a freelancer's.
| Google Play Console | Apple Developer Program | |
|---|---|---|
| Fee | US$25, one time | 99 USD per membership year (local prices vary) |
| Account types | Personal or Organization | Individual or Organization |
| Watch for | Identity verification; closed test for new personal accounts | Organizations need a D-U-N-S Number; individuals enrol under their legal name |
The Play rule catches a lot of founders. If your account is personal and was created after 13 November 2023, you must run a closed test with at least 12 testers opted in for at least 14 consecutive days before applying for production access. Testers who opt out early don't count. Those two weeks can't be shortened, so open the account and recruit testers now, not when the build is ready.
7. Decide who holds the signing key
New Android apps are enrolled in Play App Signing by default. Google holds the key that signs what users download, and you hold an upload key. Lose the upload key and you can request a reset in Play Console. Recoverable, but slow.
Before the first release build, settle three things:
- Who creates and keeps the upload keystore and its passwords. You, even if someone else builds the app.
- Where the backup lives. A password manager or encrypted storage, not only the laptop that made it.
- Source control. Flutter's Android deployment guide says to keep the keystore and
key.propertiesout of public repositories.
On iOS, signing runs through your Apple Developer account, which is one more reason it has to be yours.
8. List the third-party accounts your template uses
Only list services your template actually uses. Check its documentation or search the project for config files.
- Firebase. Look for
google-services.json,GoogleService-Info.plistorfirebase_options.dart. Firebase won't let you change an Android app's package name after registration, so register under your new package name in your own Firebase project, after step 3. - AdMob. If the template shows ads, you need your own AdMob account and ad unit IDs. SubZero and Zenith, among our templates, ship with AdMob integrated.
- A backend or hosted media. Zenith streams its sounds and radio from audio URLs you host, so it needs hosting. Most of our mobile templates keep data on the device in Hive or Isar with no server, so this may not apply to you.
- Payments, maps, analytics. Your account, your keys.
Steps 3, 7 and 8 are where the hours go. The rename touches Gradle and Xcode, the keystore has to be wired into the release build, and the Firebase setup has to follow the new package name. Get one wrong and you find out from a failed build, or from push notifications that quietly stop arriving. If you'd rather hand this list to someone, we do all of it as part of our Flutter app reskinning service. The Pro package starts at $150 and ends with a store-ready build signed with keys you keep.
9. Strip the demo content
Templates ship with sample names, placeholder text, test records and sometimes the author's links. Apple's guideline 2.1(a) asks for placeholder text and other temporary content to be removed before submission.
New colours alone won't make the app distinct. Two Apple guidelines are worth reading now rather than after a rejection:
- 4.3(b) targets apps indistinguishable from what is already widely available. Your own content, data and use case set the app apart; new colours on demo data are unlikely to be enough.
- 4.3(a) says not to create multiple bundle IDs of the same app. Read it before planning several branded copies of one template.
Troubleshooting: where pre-reskin plans go wrong
You already published under the template's package name. That listing keeps that ID. Live with it, or publish under a new ID, which Google Play treats as a separate app with its own listing.
Your Play account is personal and you have no testers. Solve this before the build. Line up at least 12 people with Android phones who will opt in and stay opted in for the full 14 days.
You lost the keystore. With Play App Signing, generate a new upload key and request a reset in Play Console. If you managed the app signing key yourself and lost it, Google can't reset it.
You can't find the Firebase config. Projects set up with the FlutterFire CLI keep it in firebase_options.dart. Check the template documentation.
You aren't sure the licence fits. Ask the item author or the marketplace before launch. Upgrading after you have paying users is the expensive version of this question.
More setup and launch guides are in the Stacklyn Labs Help Center.