Best Practices
Optimize your app store presence and keep your credentials secure.
Security Best Practices
API Key Management
- Use environment variables — Never hardcode API keys in source code
- Rotate keys regularly — Generate new API keys periodically and revoke old ones
- Use scoped keys — Create keys with minimal required permissions
- Separate environments — Use different keys for development, staging, and production
API Key Usagebash
# Good: Use environment variablesexport ASC_API_KEY="asc_live_xxx"asc push# Bad: Hardcoded in commands (visible in shell history)asc push --key asc_live_xxx
Store Credentials
- Service accounts — Use dedicated service accounts for automation
- Least privilege — Grant only the permissions needed for specific tasks
- Secure storage — Store credentials in your CI/CD platform's secrets manager
Never Commit Credentials
Add .env and credential files to your .gitignore. Use secret scanning tools to prevent accidental commits.
App Store Optimization (ASO)
Title & Subtitle
- Include primary keyword — Put your most important keyword in the title
- Keep it memorable — Balance SEO with brand recognition
- Use subtitle wisely — Include secondary keywords and value proposition
Keywords (App Store)
- Use all 100 characters — Don't waste valuable keyword space
- No spaces after commas — Maximize character usage
- Avoid duplicates — Don't repeat words from your title
- Research competitors — See what keywords successful apps target
Keyword Formattingtext
# Good: Efficient keyword usagefitness,workout,exercise,health,tracker,gym,training,weight,loss# Bad: Wasted charactersfitness, workout, exercise, health, tracker
Description
- Front-load value — First 1-3 lines are visible before "Read More"
- Use formatting — Break up text with bullet points and headers
- Include social proof — Mention awards, press coverage, user numbers
- Call to action — End with a clear CTA to download
Screenshots
- First three matter most — Users often don't scroll past the first few
- Show real UI — Use actual app screenshots, not mockups
- Add context — Use captions to explain features
- Localize everything — Text in screenshots should match the locale
Localization Best Practices
Translation Quality
- Provide context — Use the
--contextflag to improve AI translations - Review translations — Have native speakers review important markets
- Localize, don't just translate — Adapt messaging for cultural relevance
- Test character limits — Some languages expand 20-30% in length
Translation with Contextbash
# Provide context for better translationsasc translate --from en-US --to ja \--context "This is a fitness tracking app for casual users.Use friendly, encouraging language. Avoid technical jargon."
Priority Markets
Focus your efforts on high-value markets first:
| Tier | Markets | Priority |
|---|---|---|
| Tier 1 | US, UK, Canada, Australia | Essential |
| Tier 2 | Germany, France, Japan, South Korea | High |
| Tier 3 | Spain, Italy, Brazil, Mexico | Medium |
| Tier 4 | Other markets | As needed |
Automation Best Practices
CI/CD Integration
- Validate before pushing — Run
asc validatein CI before deployment - Use dry-run mode — Test workflows with
--dry-runfirst - Version control metadata — Store metadata in your repo for history
- Automate release notes — Generate from commit messages or changelogs
Validation in CIyaml
name: Validate Metadataon: [pull_request]jobs:validate:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v4- run: npm install -g @appstorecopilot/cli- run: asc validate --strictenv:ASC_API_KEY: ${{ secrets.ASC_API_KEY }}
Error Handling
- Check exit codes — CLI returns non-zero on failure
- Parse JSON output — Use
--jsonfor programmatic access - Implement retries — Handle transient API failures gracefully
- Monitor status — Check submission status after publishing
Performance Tips
- Batch operations — Use
--allflags instead of multiple commands - Cache translations — Only translate changed content
- Compress screenshots — Optimize images before uploading
- Use webhooks — React to events instead of polling for status
Batch Operationsbash
# Efficient: Single command for all localesasc translate --from en-US --all# Less efficient: Multiple commandsasc translate --from en-US --to es-ESasc translate --from en-US --to fr-FRasc translate --from en-US --to de-DE# ...