What’s New

  • ZenAppBuilder Pro

1.3.0Added: – Event-triggered push notifications for ZenCommunity Pro (`ZenCommunityPush`): private messages, live chat agent messages, and ticket created / reply / status-change events deliver a push to the affected mobile user via the existing FCM pipeline. Loaded only when ZenCommunity Pro is active.Added: – Notification-tap deep linking in the generated app: tapping a push opens the relevant screen (private chat, agent live chat, or ticket detail) from the foreground, background, or a cold start.Added: – Google Fonts settings (`Settings_Google_Fonts`): store a Google Fonts API key under Settings → Google Fonts for use in app typography.Added: – Stable release identity: package name (applicationId / bundleIdentifier) is frozen on first build and stored permanently, preventing accidental package-name drift when an app is renamed after publishing.Added: – Automatic Android version code and iOS build number tracking, incremented on each saved version snapshot in Build → Build History, with an override field in the Save Version modal for apps already published at a higher build number.Added: -Signing Keystore Custody: the Android release keystore is held server-side, encrypted at rest with the site’s WordPress security keys, with “Generate New Keystore” and “Upload Existing Keystore” paths plus a Download Keystore Backup action.Fixed: -Docker build failure for apps without push notifications — `@react-native-firebase/messaging` is no longer statically imported or bundled unless notifications are enabled, resolving the Metro “Unable to resolve module” error and the demand for `google-services.json` on apps that do not use push.Fixed: – Firebase token expiry causing silent `500` error on Docker bundle download — expired refresh token is now auto-cleared and the UI shows a “Reconnect Firebase” link instead of a raw error message.Fixed: – Docker bundle error response being unreadable in the frontend — Axios `responseType: ‘blob’` was swallowing the JSON error body; it is now parsed back before surfacing the message.Fixed: – Firebase auto-disconnect wiping project ID and service account key on token expiry, which caused re-provisioning on reconnect and invalidated all registered FCM device tokens. Only OAuth tokens are now cleared on `invalid_grant`.Fixed: – Firebase Connection Guide in the Build tab still referencing the removed “Connect to Firebase” modal dialog — steps 4, 5, and 7 now point to Settings → Firebase.Fixed: – Android version code and iOS build number always being written as `1` in the generated `app.json`, causing every upload after the first to be rejected by Play Console / App Store Connect.Fixed: – package name being re-derived from the app’s display name on every build in two independent places (browser and server) that could silently drift apart; both now read the stored frozen value.Improvements: – Signing keystore is kept out of Docker image layers — it lives only in the runtime-mounted `output/` folder, so built images carry no signing secrets. Keystore passwords and aliases are Groovy-escaped before being written into `release-signing.gradle` to prevent build-script breakage or injection.Improvements: – Docker build guide updated: simplified run command removes the `credentials/` volume mount — output and keystore now live in a single `output/` folder.
Jun 24, 2026
Jun 24, 2026
Jun 10, 2026
May 26, 2026