How to move your existing v3.0 app onto the new v3.1 codebase.
Web2Go v3.1 is a fresh codebase built on the latest React Native with many new features. The safest way to upgrade is not to merge your old code into it. Instead, start from the clean v3.1 project and copy only your own configuration and identity files across. This page lists exactly which files to copy and what's new that you must keep.
Before you begin, make a full backup of your current working v3.0 project — especially your Android release keystore. If you lose the keystore you will not be able to update your app on the Play Store.
New to Web2Go v3.1? See What's New in v3.1 for the full feature list, then follow the steps below to upgrade.
Back up, then get the new code ready.
You will carry three groups of things from v3.0 into v3.1: (1) your config files, (2) your Firebase / signing / identity files, and (3) your app version. The next sections walk through each.
Bring your settings across, then set the new v3.1 fields.
Copy the values from these two files in your v3.0 project into the same files in v3.1. We recommend copying the values field-by-field rather than overwriting the whole file, because v3.1 added new fields and comments.
isAdminPanelUsed, apiBaseUrl, and your internalSetting, internalAppSetup, internalTabs, internalBottomTabs and internalOnbording objects.apiKey (leave empty unless you enable the API key in the admin panel), apiCertHashes (leave [] unless you use SSL pinning), and theme_color inside internalAppSetup (bottom-nav color; leave empty to use the default).statusBarColor and BaseColor.primary / activeTab / inactiveTab.
The admin-driven settings (allowed domains, custom CSS/JS, maintenance
mode, capability toggles, ad frequency) are not in
Url.js. When you use the admin panel, those are set from
the panel (see App Controls & Appearance), not this file.
Reuse the same Firebase, keystore, name, icons and package id.
android/app/google-services.json and ios/GoogleService-Info.plist from v3.0. Full setup: Firebase Installation.~/.gradle/gradle.properties as WEB2GO_UPLOAD_STORE_FILE, WEB2GO_UPLOAD_STORE_PASSWORD, WEB2GO_UPLOAD_KEY_ALIAS, WEB2GO_UPLOAD_KEY_PASSWORD. Never commit these.android/app/src/main/res/values/strings.xml (app_name); iOS ios/web2go/Info.plist (CFBundleDisplayName). See Change App Name.applicationId and namespace in android/app/build.gradle; iOS PRODUCT_BUNDLE_IDENTIFIER. See Change Package Name.android/app/src/main/res/mipmap-*; iOS AppIcon.appiconset. See Change App Logo.res/drawable*/screen.png; iOS LaunchScreen.storyboard. See Change Splash Screen.ios/web2go/Info.plist, ios/web2go/web2go.entitlements, and the pods in ios/Podfile.These ship with v3.1 and are needed for the app to build.
When copying files across, do not replace these v3.1 files with your old v3.0 versions — the app will not build without them:
newArchEnabled=falseandroid/build.gradle and the apply plugin lines in android/app/build.gradle.APPLICATION_ID in AndroidManifest.xml.GADApplicationIdentifier in Info.plist.web2go:// intent-filter (Android) and CFBundleURLTypes (iOS).
In the v3.1 project run npm install. This pulls the new
libraries v3.1 uses — Firebase Analytics & Crashlytics, ads,
network info, splash, biometrics, QR scanner, in-app browser, haptics,
in-app review and share.
Bump the version before releasing an update.
android/app/build.gradle, increase versionCode (e.g. 1 → 2) and set versionName (e.g. "1.0" → "3.1"). The store requires a higher versionCode than your live build.MARKETING_VERSION and increase CURRENT_PROJECT_VERSION.internalSetting.android_app_version / ios_app_version in Url.js so the force-update check works.Install dependencies and build a release.
From the web2go project folder, install the libraries and build:
cd web2go
npm install
# Android release build
cd android
./gradlew assembleRelease
The finished Android APK is at
android/app/build/outputs/apk/release/app-release.apk. A debug
build is fine for testing on your own phone; a real upload key is required for
the Play Store. For the full store-release steps see
Release App.
Deploy the v3.1 admin code, keeping your database and .env.
The simplest and safest path: upload the whole new Admin_panel
folder to your server, but keep your existing .env file and
your existing MySQL database. If you prefer to upload only what changed,
these are the new / updated files in v3.1:
app/Filters/ApiAuthFilter.php (API rate-limit + optional key), app/Controllers/Admin/Dashboard.php, AppControls.php, Appearance.php + their views app/Views/dashboard.php, appControls.php, appearance.php, app/Helpers/firebase_helper.php, app/Models/NotificationModel.php, and the 4 files in app/Database/Migrations/.app/Controllers/Webview/Api.php, app/Config/Routes.php, app/Config/Filters.php, app/Controllers/Admin/Notification.php, app/Models/ExtraScreenManagementModel.php, app/Views/template/sidebar.php, app/Views/notification.php, app/Views/adsSetup.php.
Do not overwrite your .env or your database. They hold your
live settings and are not part of the upgrade.
One command brings your database up to v3.1.
On the server, from the admin panel folder, run:
cd Admin_panel
php spark migrate
This updates your database to match v3.1:
extra_screen_mangement table to extra_screen_management.notification table (for image notifications and tap-to-open-a-page).These migrations are safe to run on your existing database — each one checks whether the change already exists first and never overwrites your data. The app even works before you migrate (thanks to a built-in fallback), but running it is recommended.
.env (Optional but Recommended)New settings the v3.1 admin code understands.
All of these are optional — the panel runs without them — but they
unlock the new security options. Add to your server's .env:
# API protection (optional)
api.requireKey = false # set true only after your app ships a matching apiKey
api.key = '' # long random secret; must equal apiKey in Url.js
api.rateLimit = 60 # requests per minute per IP (default 60)
# Firebase (recommended: move the service account out of the database)
firebase.serviceAccountJson = '' # paste the full service-account JSON
firebase.projectId = '' # your Firebase project id
api.requireKey = true and a matching api.key. Only enable this after your app is shipped with the same apiKey in Url.js, or older installs will stop loading.firebase.serviceAccountJson so it lives only on the server.What you'll see in the panel after upgrading.
After upgrading, three new items appear in the admin sidebar:
How to get assistance
Thank you for purchasing our product! For any support or assistance, feel free to reach out to us via the provided email address. Our dedicated support team is available 24/7, ready to help with any questions, technical issues, or inquiries you may have. We are committed to providing prompt and reliable assistance to ensure a seamless experience with our product. Your satisfaction is our priority, and we are here to support you every step of the way.