Skip to main content
When a new Flex Forms release ships, upgrade your Laravel app in three layers: Composer (package code), database (migrations), and upgrade tasks (one-off data fixes the package tracks between versions).

Standard upgrade path

1

Update the package

From your Laravel project root, with Composer authenticated to the private registry (Installation):
2

Run migrations

Apply any new tables or columns:
In production, use your normal deploy flow (--force when non-interactive).
3

Run the upgrade command

Flex Forms bundles migrations and idempotent upgrade tasks (backfills, reindexes, health checks):
This runs migrate --force, executes pending upgrade tasks, and prints a health check for core tables.
4

Republish assets when needed

After releases that touch Studio, fill, or embed JS/CSS, republish and refresh Filament assets:
Or manually:
5

Clear caches

After config or env changes:

CI / CD

Add the same steps to your deploy pipeline after composer install:
In CI, pass --skip-migrate to flex-forms:upgrade only when you already ran migrate in an earlier step — the upgrade command calls migrate by default.
Store cmp_… in CI secrets exactly as on Installation. Regenerating a Composer token in the portal requires updating every secret in the same change window.

Upgrade tasks

flex-forms:upgrade may run package-owned data tasks after migrate. Recent tasks include backfilling Integration Connections from legacy Google Sheets / Salesforce global credentials when a Connection does not exist yet (global credentials remain as a fallback). Applied tasks are recorded in flex_forms_upgrade_tasks so they are durable across cache clears. Use --dry-run to preview pending task ids before applying them.

Dry run (preview tasks)

See what upgrade tasks would run without executing them:
Output lists pending task IDs and descriptions. Remove --skip-migrate when you are ready to apply everything. Useful flags:

Troubleshooting

Core tables are missing. Run:
Confirm the database user can create tables. Read the failing migration name in the error output.
Republish assets (php artisan flex-forms:upgrade --assets), hard-refresh the browser, and clear opcache if you use it in production.
Fix the underlying issue (permissions, disk space, missing column), then re-run php artisan flex-forms:upgrade. Tasks are idempotent — completed tasks are skipped on the next run.
No. Your Public API key (pk_forms_…) in Global Settings → License is unchanged by package upgrades. Re-register domains only when you add new hostnames.
Composer token missing or revoked. Re-copy Install via Composer from the License Portal and update CI/server auth.json.
Do not skip migrations permanently. Studio, submissions, Insights, and integrations depend on the full schema.
Last modified on September 7, 2026