Shift knows
Laravel upgrades.
AI knows
your code.
Over a decade of automating Laravel upgrades, now guiding AI to finish the job. Together, the most automated and thorough upgrade.
Upgrades automated
Prompts included
The default values for CACHE_PREFIX, REDIS_PREFIX, and SESSION_COOKIE changed in Laravel 13. Shift recommends explicitly setting these ENV variables to avoid potential cache or session invalidation.
The default values for `CACHE_PREFIX`, `REDIS_PREFIX`, and `SESSION_COOKIE` have changed. In Laravel 12 and earlier, these were derived from `APP_NAME` using `Str::slug(env('APP_NAME', 'laravel'), '_')` as a base (e.g. `myapp_cache_`, `myapp_database_`, `myapp_session`). Check my app configuration to determine if it relied on the old defaults and suggest the explicit values I should set to preserve the previous behavior.
“If you're running an old version of Laravel, this is the fastest way to upgrade.”
Taylor Otwell
· Creator of Laravel
- years automating Laravel upgrades
- 10+
- Laravel upgrades automated to date
- 181,316
- of customers use Shift again
- 83%
01 — Why Shift + AI
Every change,
automated since 2015.
Shift’s goal is a fully upgraded Laravel app, as if it ran that version all along. Left alone, AI settles for compatible. With Shift’s changes and prompts to guide it, you get the most from both.
Shift · deterministic
Knows upgrades.
- Every version since Laravel 4.2
- Goes beyond the Upgrade Guide
- Adopts latest conventions
- Same result, every time
AI · generative
Knows your code.
- Reads your codebase
- Understands your edge cases
- Writes code in your style
- Adapts its approach each run
Together (with fewer tokens burned)
Fully upgraded.
- Shift makes every reliable change
- AI handles beyond what’s mechanical
- Better context from Shift’s changes
- Guide the rest with Shift’s prompts
02 — How it works
From outdated to upgraded in one PR.
-
01
Connect
with GitHub, GitLab, or Bitbucket and pick a repository.
-
02
Shift
Shift opens a PR with changes in nice, atomic commits.
-
03
Finalize
Anything needing a closer look gets a comment, often with an AI prompt.
-
04
Merge
When you’re ready, merge the PR, and continue with your next Shift.
03 — Your AI options
Finish with any AI.
Shift makes every reliable change. You choose how the rest gets done: bring your own AI, borrow ours, or let your agent drive Shift itself.
Copy the prompt
IncludedShift’s comments come with prompts written for your code. Paste them into any AI.
Upgrade acme/legacy-reports to a version compatible with Laravel 13. Review its changelog for breaking changes, then update any usage within app/Reports.
Add an AI Review
+$9No AI handy? Shift runs one on your PR after it finishes, guided by its own comments. Tokens included.
Beta · runs automatically
Let your agent drive
SkillsShift AI skills let Claude Code, Laravel Boost, and other agents analyze, run, and review Shifts for you.
❯ /shift:analyze
❯ /shift:run
❯ /shift:review
04 — What Shift knows
Over a decade of edge cases, automated.
Every release, every support email, and every run since 2015 has made Shift a little smarter.
RedirectResponse to helper
Add new exceptions to $dontReport property
Migration for sessions table
Update FormRequest inheritance
Remove old providers
Convert implicit controller routes
Rename collection methods
Convert container methods
Bump Laravel dependencies
Convert dynamic "with" view variables
Convert bcrypt to Hash::make
Convert Blade or to PHP ??
Inject new request parameter
Convert Cache TTL from minutes to seconds
Leverage HOME constant
Shift to Carbon 2
Shift Blade "tag components"
Convert factory types to states
Rename retryAfter and timeoutAt
Convert route options to fluent methods
Convert deprecated $dates property to $casts
Convert optional() to nullsafe operator
Convert removed $dates property to $casts
Remove redundant typing in DocBlocks
Remove default app files
Convert $casts property to method
Re-register exceptions
Bump Composer dependencies
Dispatch jobs directly
Remove unused ValidatesRequests trait
Remove base controller inheritance
Adopt new PHP attributes for simple properties
Shift ENV variables
Bump community package dependencies
Remove unnecessary $table property
Convert validation rules to array syntax
Convert to helper methods
Leverage command autoloading
Consolidate service providers
Include helpful testing packages
Generate HTTP tests for controllers
Generate tests for console commands
Namespace models under App\Models
Bump laravel/framework
Add npm dependencies
Configure Vite
Rename ENV variables
Convert test helpers
Swap dependencies
Convert Html facade
Adopt short array syntax
event helper
Rename test assertions
Update Eloquent method visibility
Shift deprecated Resource class
Move assets
Remove explicit deleted_at date cast
Replace deprecated Array and String helpers
Convert Input to Request facade
Add laravel/ui dependency
Unindent vendor mail templates
Remove web.config
Set return type of base TestCase methods
Shift to class based routes
Add uuid to failed_jobs table
Use Faker methods
Add type hints for Laravel
Shift config files
Streamline config files
Re-register HTTP middleware
Re-register scheduled commands
Adopt new PHP attributes in models
Use Gate facade for controller authorization
Modernize controller middleware
Add Laravel composer run scripts
Refactor deprecated request access
Bump NPM dependencies
Bump minimum constraints
Leverage injected request object
Streamline calls to orderBy
Modernize Blade directives
Set new ENV variables
Re-register exception handling
Generate model factories
Generate unit tests for form requests
Configure basic testing environment
Condense Example into default Laravel namespace
Bump fzaninotto/faker
Update npm scripts
Use ES modules
Use new @vite Blade directive
Update build command references
Convert Form facade
Convert Blade directives
Convert string references to ::class
05 — Pricing
Pay per Shift.
Or subscribe.
Run a single Shift for a one-time price. Or subscribe to a Shifty Plan and run every Shift it includes, with automated PRs to keep you current.
A la carte
Automated Shifts
from $19 $19 $39 per Shift
- One Shift for each Laravel version
- Pay once. No subscription.
- Add an AI Review for $9
Subscription
Shifty Plans
from $99 $899 per year, per repository
- Every Laravel Shift in your plan
- Weekly and monthly PRs to stay current
- Full Shift Workbench access
Tell us your version and we'll tell you how to start. Or run the free Laravel PreShift to get a feel for your first Shift.
06 — Loved by Laravel developers
Trusted for over a decade.
Even AI fans still use Shift.
“I can't tell you how much time Shift has saved us. By running the Shifts paired with AI, we were able to upgrade Laravel, Livewire, Unit Tests, Tailwind, and PHP with very little issue.”
Eric Umoh
IT Director at teamqualify.com
“We use Shift to upgrade all our projects every time a new version of Laravel is released.”
Freek Van der Herten
Laravel Package Creator
“I'll yeet everything else over the wall to AI, but not the upgrade. That's a job for Shift.”
Shawn Lindstrom
Laravel Developer
“After spending a few hours on a manual upgrade, I opted to try out Shift. It went far beyond what I expected. I thought, "eh, I might not need to pay for that", but I'm walking away feeling the total opposite.”
Mark Bingham
Laravel Developer
“The amount of time and mental power Shift saves is worth much, much more than the cost.”
Matt Stauffer
Partner at Tighten
“Just purchased another Shift and am so happy that this service exists. You seriously must give it a try.”
Jacob Bennett
Host of Laravel News
“I used AI to upgrade a project from Laravel 8 to 12. It took about two weeks. Then I tested Shift for comparison. The result? Shift beat AI by miles.”
Jaber Al-Amari
Principal Engineer at ProcureIn.net
“For 20 bucks, Shift is a no-brainer to upgrade your Laravel projects.”
Jeffrey Way
Creator of Laracasts
“Tried to update an old Laravel app with AI. After a few hours wasted, I just paid for Shift and was done in an hour. I will never not use Shift. I need something I can trust.”
Marco Kaiser
Creator of Questlog.app
- You can, and plenty of developers do. But AI aims for compatible, and it spends a lot of tokens rediscovering changes Shift has automated for over a decade. Use both. Shift applies every change it knows in atomic commits, then hands your AI a prompt for the rest.
- Yes. A lot more. The Upgrade Guide focuses on new features and breaking changes, treating the rest as optional. Shift upgrades all changes, so your app looks like it ran that version of Laravel all along.
- Shift handles the mechanical changes. For anything that needs judgment, it leaves a detailed comment on the PR with a copyable AI prompt. Paste it into your AI, or add an AI Review and Shift runs it for you.
- Write access, so Shift can create a branch and open a PR. Nothing lands on your main branch until you merge. Your code lives on Shift’s server only while the upgrade runs, usually under a minute, then it’s removed. You can deauthorize Shift after you merge. If your code can’t leave your machine, Shift for Docker runs any Shift locally.
- Any of them. The prompts are markdown text, so paste them anywhere. Shift AI skills work with Claude Code, Laravel Boost, and other agents that support skills.
- Shifts run one version at a time, so you can verify each upgrade. A Shifty Plan lets you run every Shift it includes for one price.
Start with Shift.
Finish with AI.
Connect with Git and your first PR is a few clicks away.