Upgrade from v3.0 to v3.1

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.

New to Web2Go v3.1? See What's New in v3.1 for the full feature list, then follow the steps below to upgrade.

Before You Start

Back up, then get the new code ready.

  • Back up v3.0:
    Keep a full copy of your current project. Do not delete it until v3.1 is built and tested.
  • Protect your keystore:
    Locate your Android release/upload keystore from v3.0 — you must reuse the same one so the store accepts your update.
  • Download v3.1:
    Get the fresh Web2Go v3.1 code from your download area and unzip it into a new folder.

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.

Copy Your Config Files

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.

  • src/constants/Url.js
    Carry over isAdminPanelUsed, apiBaseUrl, and your internalSetting, internalAppSetup, internalTabs, internalBottomTabs and internalOnbording objects.
  • New in v3.1 — set these after copying:
    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).
  • src/constants/theme.js
    Carry over statusBarColor and BaseColor.primary / activeTab / inactiveTab.

Copy Firebase, Signing & Identity

Reuse the same Firebase, keystore, name, icons and package id.

  • Firebase config:
    Copy android/app/google-services.json and ios/GoogleService-Info.plist from v3.0. Full setup: Firebase Installation.
  • Android signing key:
    Reuse your v3.0 release/upload keystore and put its passwords/alias in your machine-local ~/.gradle/gradle.properties as WEB2GO_UPLOAD_STORE_FILE, WEB2GO_UPLOAD_STORE_PASSWORD, WEB2GO_UPLOAD_KEY_ALIAS, WEB2GO_UPLOAD_KEY_PASSWORD. Never commit these.
  • App name:
    Android android/app/src/main/res/values/strings.xml (app_name); iOS ios/web2go/Info.plist (CFBundleDisplayName). See Change App Name.
  • Package / bundle id:
    Android applicationId and namespace in android/app/build.gradle; iOS PRODUCT_BUNDLE_IDENTIFIER. See Change Package Name.
  • App icon:
    Android android/app/src/main/res/mipmap-*; iOS AppIcon.appiconset. See Change App Logo.
  • Splash screen:
    Android res/drawable*/screen.png; iOS LaunchScreen.storyboard. See Change Splash Screen.
  • AdMob:
    Re-apply your AdMob App IDs. See Admob Installation.
  • iOS extras:
    Review ios/web2go/Info.plist, ios/web2go/web2go.entitlements, and the pods in ios/Podfile.

Keep the New v3.1 Files (Don't Overwrite)

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:

  • react-native.config.js
    Required. It disables Android auto-linking for two libraries that break the v3.1 build. Keep it as shipped.
  • android/gradle.properties → newArchEnabled=false
    Required for the current native libraries.
  • Firebase Crashlytics plugin:
    The classpath line in android/build.gradle and the apply plugin lines in android/app/build.gradle.
  • New Android permissions:
    Location, biometric, camera and media permissions plus the AdMob APPLICATION_ID in AndroidManifest.xml.
  • New iOS usage strings:
    Face ID, location, camera and photo descriptions plus GADApplicationIdentifier in Info.plist.
  • Deep links:
    The web2go:// intent-filter (Android) and CFBundleURLTypes (iOS).

Update the App Version

Bump the version before releasing an update.

  • Android:
    In 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.
  • iOS:
    In your Xcode project, set MARKETING_VERSION and increase CURRENT_PROJECT_VERSION.
  • No-admin mode only:
    If you run without the admin panel, also mirror the version into internalSetting.android_app_version / ios_app_version in Url.js so the force-update check works.

Rebuild the App

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.

Upload the Changed Admin Files

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:

  • New: 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/.
  • Changed: 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.

Run the Database Migration

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:

  • Renames the misspelled extra_screen_mangement table to extra_screen_management.
  • Adds image and target-link columns to the notification table (for image notifications and tap-to-open-a-page).
  • Seeds the new v3.1 settings (feature toggles, theme color, custom CSS/JS, allowed domains, maintenance mode, ad frequency, and app-open / rewarded ad ids).

Update .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 key & rate limit:
    Turn on the shared key by setting 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 service account:
    Recommended — move your Firebase service-account JSON out of the database and into firebase.serviceAccountJson so it lives only on the server.

New Admin Screens

What you'll see in the panel after upgrading.

After upgrading, three new items appear in the admin sidebar:

  • Dashboard:
    At-a-glance counts of registered devices, notifications, screens and onboarding slides.
  • App Controls:
    Turn native features on/off (share, QR, location, files, downloads, fingerprint), set allowed website domains, enable maintenance mode, and set how often the interstitial ad shows.
  • Appearance:
    Set your app's theme color and inject custom CSS / JavaScript into the loaded website.

Support

How to get assistance

Whatsapp Us: +91 9766846429