← Back to Posts

Mobile App Bundle Naming Conventions

TL;DR: For cross-platform projects, stick strictly to lowercase alphanumeric characters (a-z, 0-9) separated by dots (.). Android allows underscores (_) but strictly rejects dashes (-). iOS allows hyphens/dashes (-) but strictly rejects underscores (_). Both platforms fully support multi-segment reverse-domain notation (e.g., com.drawk.retro.dudedrop).

Cross-Platform Comparison

Platform Identifier Name Allowed Characters Prohibited Characters Multi-Dot Segments Recommended Example
Android (Google Play) Application ID / Package Name Letters (A-Z, a-z), numbers (0-9), underscores (_) Hyphens / Dashes (-) Supported (.) com.drawk.retro.dudedrop
iOS (App Store) Bundle Identifier Alphanumeric (A-Z, a-z, 0-9), hyphens (-), dots (.) Underscores (_) Supported (.) com.drawk.retro.dudedrop
Cross-Platform Standard Unified Application ID Lowercase letters (a-z), numbers (0-9), dots (.) Symbols, dashes (-), underscores (_) Supported (.) com.drawk.retro.dudedrop

Dots and Segments

Both Apple's App Store and Google's Play Store fully support multiple dots in their identifiers. Using a deeply nested namespace structure like com.drawk.retro.dudedrop is perfectly valid across both platforms.

com.drawk.retro.dudedrop
 ──┬── ──┬── ──┬── ────┬───
   │     │     │       └─ Product Name
   │     │     └───────── Category / Studio Subdomain
   │     └─────────────── Entity / Studio Brand
   └───────────────────── Top-Level Domain (TLD)

Android (Google Play) Rules

Android uses the Application ID (traditionally tied to the Java package name declared in Gradle):

  • Required Segments: Must have at least two segments (meaning a minimum of one dot, e.g., com.drawk).
  • Valid Characters: Uppercase letters, lowercase letters, numbers, and underscores (_).
  • Invalid Characters: Dashes (-) are strictly prohibited by the Android Gradle build toolchain and the Play Console.
  • Starting Characters: Every individual segment between dots must begin with a letter (e.g., com.drawk._retro is invalid).

iOS (App Store) Rules

Apple uses the Bundle Identifier, strongly encouraging reverse-domain format in Xcode and App Store Connect:

  • Valid Characters: Alphanumeric characters (A-Z, a-z, 0-9), dots (.), and hyphens (-).
  • Invalid Characters: Underscores (_) are strictly prohibited in App Store Connect bundle identifier validation.
  • Format Structure: Typically formatted as reverse DNS (e.g., com.drawk.gamename).

The Unified Cross-Platform Strategy

When managing multi-target build configurations in game engines and frameworks like Unity, Unreal, Godot, Flutter, or React Native, maintaining a single Application / Bundle ID simplifies automated CI/CD and deployment pipelines:

  • Eliminate Ambiguity: Avoid hyphens (-) and underscores (_) entirely so you never hit platform-specific validation rules.
  • Lowercase Only: Stick to lowercase ASCII characters (a-z), numbers (0-9), and dot separators (.).
  • Hierarchical Structure: Follow com.[company].[category].[product] (e.g., com.drawk.retro.dudedrop).
  • Guaranteed Ingest: This pattern guarantees zero rejection or naming mismatch during automated store submissions.

← Back to All Posts