Run the destination engine
SQLite had quietly stored UUID strings in integer columns made by foreignId() for over a year. MySQL refused them. Run migrations and real queries against the database you are moving to.
A migration story
Eight teams moved Laravel applications to Cloud from Forge, Heroku, AWS and servers of their own. None of them was escaping a broken host. Each decided which parts of running an application it no longer wanted to do itself.
The idea in one line Moving to Cloud is a choice to stop operating, not an escape.
The operating ledgerEight teams · one list of duties
Every duty above is named in that team's own published story.
Your code · your call
What the teams stopped operating
Read across a row. On the left, the work a team did to keep a Laravel application running. On the right, who does it now. The application code on each side is the same.
Work that sat with a small engineering team, or with one contractor, on top of building the product.
The same duties, now fulfilled by the platform. The team still owns the decisions about them.
Forge and Laravel VPS are Laravel's own, and a team that wants root, a fixed topology or its own cloud account is well served there. Pinkary's maintainer put it plainly: Forge was not the problem.
Sources: Monitor 997 (Filament), 1186 (DropInBlog), 1003 (CMS Max), 994 (Roomies), 993 (Sportmonks), 5 (Pinkary). Each row is the customer's own account, from its published story.
Where they came from
Each starting point has real strengths, and the teams said so. What they had in common was a short list of duties they no longer wanted on their own plate.
Forge gave these teams control of their own servers, and Dan Harrin notes that Forge now has one-click Octane too. They moved because they wanted the platform, not themselves, to answer for scaling and configuration.
Monitor 997, 1186, 5, 730.
Both teams ran on Heroku and moved their Laravel applications to Cloud, one of them to Private Cloud.
Monitor 998, 994.
These teams assembled and ran their own infrastructure. Sportmonks kept AWS services such as ElastiCache, now beside its apps in Private Cloud.
Monitor 1003, 993, 267.
Heroku's enterprise contract announcement is reported in both customer stories (Monitor 998, 994). DropInBlog's remark that Forge did not handle autoscaling refers to its setup at the time.
The honest part
SQLite had quietly stored UUID strings in integer columns made by foreignId() for over a year. MySQL refused them. Run migrations and real queries against the database you are moving to.
A feed query grouped by IFNULL(root_id, id) failed under ONLY_FULL_GROUP_BY. The rewrite ranks rows with ROW_NUMBER() and breaks ties by id.
Second-level timestamps tied, and tests that assumed they would not began to fail. A secondary order by id fixed production; clock helpers fixed the tests.
Hardcoded Storage::disk('public') calls ignored the new default. On object storage, every exists() check became a network request.
A dump-and-convert path mangled UUID-like values. One-off Artisan commands that checked columns and counted rows did the job.
“The environment exposes every shortcut the old one let you get away with.”Pinkary core maintainer, Laravel blog, 30 September 2026 · Monitor 5
Source: Monitor 5 (Laravel blog, "Migrating Pinkary from Laravel Forge to Laravel Cloud") and 724 (Laravel on X). The team says Pinkary felt faster afterwards but ran no controlled benchmark, so no speed figure is claimed here.
Their results, in their figures
One move first, step by step, then each team's own figures. They are not averages and not a promise. Where a team said the cost went up, that is here too.
Filament's flow from Monitor 997. Every figure is the customer's own, from its published story or post. Dates are when each story was first seen, on or before 4 October 2026, except DropInBlog (8 October 2026), Pinkary (30 September 2026) and Freek (2 October 2026).
Three questions for a team on its own servers: which line of the ledger would you most like to stop doing; which shortcut is your current environment letting you keep, a local disk or a forgiving database; and which one site would you move first to learn the process.