How to Upgrade LinkQR and Packages
Upgrading keeps LinkQR and installed packages up to date with new features, bug fixes, compatibility changes, and security improvements. LinkQR uses the built-in Marketplace system to check versions, download update packages, apply database changes, and save the new installed version.
Upgrade Workflow Overview
The Marketplace compares the locally installed version with the latest version available from the Marketplace server. If the remote version is newer than the installed version, an Update or Upgrade version action appears.
Where updates appear:
- Admin > Marketplace: the Product catalog shows product cards. Installed products can show an Update action when a newer version is available.
- Admin > Marketplace > Packages: installed packages show their current version, source, active status, license information, and update state.
- Marketplace header: the Packages button opens the installed package manager.
1. Check for Updates
Open the admin panel and go to Marketplace. Use the product catalog for browsing and the Packages button for installed package maintenance.
Marketplace Page
The Marketplace page loads the product catalog from the Marketplace API and compares catalog products against locally installed packages.
- The top summary shows installed packages, active packages, catalog products, and featured products.
- The Product catalog section supports search, category filtering, featured-only filtering, main-only filtering, and addons-only filtering.
- If a product is installed and a newer version is available, the product card can show an Update action.
- If the installed version is current, the product card shows Installed.
- If the product is not installed, the card can show purchase, demo, add-to-cart, or detail actions depending on the marketplace source.
Packages Page
The Packages page lists packages physically present in the app and is the main place for installed package operations.
- Search installed packages by package name, module name, or version.
- Filter packages by status: All, Active, or Inactive.
- Review source type: Marketplace purchase, manual ZIP package, or local directory.
- Review version, product ID, masked license code, and licensed domain where available.
- If a marketplace package has an update, the table shows Upgrade version.
- If no update is available, the package shows Current.
- Manual ZIP and local directory packages show No remote update because they are not tied to a marketplace purchase update flow.
2. Backup Before Updating
Always create a backup before upgrading. The update process overwrites files and may run database migrations, so backup is not optional for production sites.
Back up these items:
- Database: full MySQL/MariaDB export.
- Application files: the project files, especially modules and custom changes.
- .env file: database, mail, storage, queue, payment, and API configuration.
- storage folder: uploaded files, generated assets, logs, and public media.
- custom code or theme edits: any edits made directly in modules or views.
If anything fails during the update, restore the database and files from this backup before trying again.
3. Confirm the Package Source
Automatic remote updates are available for packages installed from a marketplace purchase code. Manual ZIP packages and local directory packages may be visible in Packages, but they do not have the same remote update flow.
Open Marketplace > Packages and confirm the package source is Marketplace, the package has a product ID, and the license information is present. If the row shows No remote update, it is usually a ZIP or local package rather than a purchase-managed package.
4. Start the Update
Click Update from a Marketplace product card or Upgrade version from the Packages table. Do not refresh the browser tab while the update request is running.
When the update starts, LinkQR sends the following information to the Marketplace update endpoint:
- Purchase code saved for the installed product.
- Product ID.
- Current installed version.
The Marketplace server responds with the update package URL, latest version, install path, and module name. If the response is missing required update data, the update stops and returns an error.
5. Update the Main Product Before Other Packages
When both the main product and extension packages have updates available, update the main LinkQR package first, then update other packages. This reduces compatibility issues because extension packages may depend on newer core files, routes, helpers, migrations, or UI components.
Recommended order:
- Backup database and files.
- Update the main LinkQR product if an update is available.
- Refresh the admin panel.
- Open Marketplace > Packages.
- Update each marketplace package that shows Upgrade version.
- Clear caches if the UI still shows old views or routes.
- Test the main customer workflows.
6. Post-Update Checks
After updating, verify the site before allowing customers to continue normal work.
- Open Admin Dashboard and confirm it loads without errors.
- Open Marketplace > Packages to confirm package versions are updated.
- Test login and logout.
- Create or edit a Link Bio page.
- Create or preview a QR campaign.
- Create and click-test a Short URL.
- Scan a dynamic QR code and confirm redirect works.
- Open analytics pages and confirm reports load.
- Test file upload if the update changed media or storage modules.
- Test payment checkout or subscription pages if billing modules were updated.
- Review storage/logs for migration or runtime warnings.
7. Manual ZIP Update for Modules
The Install modal also includes a Via ZIP File tab. This can install a new module or update an existing module from a ZIP package, but it is intended for module packages only.
ZIP package requirements:
- The uploaded file must be a ZIP file.
- The ZIP must contain a root module folder.
- The root module folder must contain module.json.
- The ZIP is extracted into the modules/ directory.
If a module with the same root folder already exists, the system deletes the existing module folder before extracting the uploaded ZIP. Because of this, manual ZIP updates must be used carefully and only after a backup.
Do not upload:
- The main script package.
- Core application folders that are not valid modules.
- Random ZIP archives without module.json.
8. Important Notes
- Do not interrupt the update request after clicking the update button.
- Do not refresh the browser while the update is running.
- Keep the server connected to the internet so it can reach the Marketplace API and download package URL.
- Make sure the install path and modules folder are writable by the web server user.
- Always update the main product before extension packages when both need updates.
- Keep a database and file backup before updating production.
- If a custom file was edited directly, the update may overwrite it.
- If an update fails, restore from backup before retrying.
9. Troubleshooting
Update button does not appear
Confirm the package was installed from Marketplace, has a product ID, has a saved purchase code, and the Marketplace API can load remote product versions. For manually uploaded ZIP packages, the Packages table shows No remote update.
Only marketplace purchase packages can be updated automatically
The update route only updates packages installed from Marketplace purchase code. Manually installed ZIP modules may need to be updated through the ZIP installer or replaced manually.
Package is missing marketplace license information
Open Marketplace > Packages and confirm the package row has product ID and licensed purchase information. If not, reinstall from purchase code or update the package manually.
Download failed
Check server internet access, firewall rules, SSL/cURL support, and whether the Marketplace download URL is available.
Unable to unzip addon
Confirm PHP ZIP support is available and the target install path is writable.
Migration warning after update
Open Laravel logs and inspect the migration error. The updater logs migration warnings, so verify database structure and rerun migrations manually if needed.