Why donate
API Explorer
Upgrade Guide
Creating a New Project
The /quasar.config File
Convert q/app-webpack Project
Browser Compatibility
TypeScript Support
Directory Structure
Commands List
CSS Preprocessors
Page Routing with VueRouter
Lazy Loading - Code Splitting
Handling Assets
Boot Files
Prefetch Feature
API Proxying
Handling Vite
Handling import.meta.env
State Management with Pinia
Lint and Format Code
Testing & Auditing
Developing Mobile Apps
Fetching Data
Opening Dev Server To Public
Quasar CLI with Vite - @quasar/app-vite v3
Publishing to Stores

Store submission is handled by the native Android and iOS toolchains. Quasar builds the web application and synchronizes the Capacitor project; Android Studio, Xcode, and the store portals handle signing, packaging, and submission.

Android Publishing

To generate a release build for Android, we can use the following Quasar CLI command:

quasar build -m capacitor -T android

This will compile the web assets (and if “–ide” param is also specified, it will open up Android Studio IDE where you need to trigger a release build).

Next, we find our unsigned APK file generated by the Android Studio. Now, we need to sign the unsigned APK and run an alignment utility on it to optimize it and prepare it for the app store. If you already have a signing key, skip these steps and use that one instead.

Let’s generate our private key using the keytool command that comes with the JDK. If this tool isn’t found, refer to the installation guide:

keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 20000

You’ll first be prompted to create a password for the keystore. Then, answer the rest of the nice tool’s questions and when it’s all done, you should have a file called my-release-key.keystore created in the current directory.

WARNING

  • Keep the keystore and its passwords out of version control and build logs. Store encrypted backups separately from the source repository and restrict access to the people or release system that signs the app. Losing the signing key can prevent you from publishing updates; leaking it can let someone sign malicious releases as your app.
  • Store policies, target SDK requirements, signing workflows, and developer-program details change regularly. Treat the platform documentation linked below as authoritative.

Before creating a release:

  • commit or back up native changes under /src-capacitor
  • remove development-only endpoints, logging, and permissions
  • set the native version and build numbers
  • verify icons, splash screens, privacy disclosures, permissions, and production services
  • test a release build on physical devices

Google Play

Build the web assets, synchronize Capacitor, and open Android Studio:

quasar build -m capacitor -T android --ide

In Android Studio, use Build > Generate Signed Bundle / APK. Google Play normally expects an Android App Bundle (.aab). Configure a release signing key and keep both the key and its credentials backed up securely; losing the upload key can disrupt future releases.

Set the Android release versions in /src-capacitor/android/app/build.gradle (or build.gradle.kts, depending on the generated project):

  • versionCode is an integer that must increase for each Play upload.
  • versionName is the user-visible release version.

Then create or update the app in Google Play Console, complete its policy and store-listing requirements, upload the signed bundle to a testing track, and promote it after testing.

Refer to Android’s current guides for signing an app, preparing a release, and publishing on Google Play.

Apple App Store

Apple releases require macOS, Xcode, and membership in the Apple Developer Program. Build the web assets, synchronize Capacitor, and open Xcode:

quasar build -m capacitor -T ios --ide

In Xcode:

  1. Select the app target and configure Signing & Capabilities with the correct team and bundle identifier.
  2. Set the user-visible version and build number. Each uploaded build needs a unique build number.
  3. Select a generic or connected iOS device as the destination.
  4. Choose Product > Archive.
  5. In the Organizer, validate and distribute the archive to App Store Connect.

Create the app record in App Store Connect, select the uploaded build, complete the privacy and store metadata, test with TestFlight, and submit the release for review.

Refer to Apple’s current documentation for distributing an app through the App Store, uploading builds, and submitting for review.

Command-line native builds

Without --ide, Quasar invokes Gradle or xcodebuild and places the collected native output under /dist/capacitor/<target>. Signing requirements still come from the native project and platform toolchain. For store releases, opening the IDE is often the clearest way to select signing identities, inspect warnings, archive, and upload the build.