<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
  <title>Larasoft Insights</title>
  <subtitle>Practical guides on AI-driven development, Laravel security, upgrades and hosting.</subtitle>
  <link href="https://larasoft.io/insights/feed.xml" rel="self"/>
  <link href="https://larasoft.io/insights/"/>
  <id>https://larasoft.io/insights/</id>
  <updated>2026-10-24T00:00:00Z</updated>
  <author><name>Larasoft</name><uri>https://larasoft.io/</uri></author>
  <entry>
    <title>Taking a vibe-coded app to production: a 25-point checklist</title>
    <link href="https://larasoft.io/insights/vibe-coded-app-production-checklist/"/>
    <id>https://larasoft.io/insights/vibe-coded-app-production-checklist/</id>
    <published>2026-10-24T00:00:00Z</published>
    <updated>2026-10-24T00:00:00Z</updated>
    <summary>Built your app with Lovable, Bolt, Cursor or Claude Code? This checklist covers the security, data, payments and reliability gaps to close before real customers arrive.</summary>
    <content type="html">&lt;p&gt;AI app builders and coding agents have made it possible to go from an idea to a working app in a weekend. That is a real change, and a good one: founders can now test ideas with real users before spending serious money.&lt;/p&gt;
&lt;p&gt;The trouble is that &amp;quot;working&amp;quot; and &amp;quot;ready for customers&amp;quot; are not the same thing. AI tools are very good at producing code that does what you asked for in the demo. They are much less reliable at the things nobody asked for, such as stopping one customer reading another customer&#39;s invoices.&lt;/p&gt;
&lt;p&gt;This is the checklist we use as the starting point for our &lt;a href=&quot;https://larasoft.io/vibe-code-review/&quot;&gt;vibe code reviews&lt;/a&gt;. Work through it before you launch, or before you start charging.&lt;/p&gt;
&lt;h2 id=&quot;security&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#security&quot;&gt;&lt;span&gt;Security&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;These are the issues that can end a young business, so start here.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Every request checks who is asking.&lt;/strong&gt; Open your app in a private window and try visiting a page you should only see when logged in. Then try the same with the API endpoints your front end calls.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Every record checks who owns it.&lt;/strong&gt; Log in as one user, copy the URL of one of their records, then log in as a second user and paste it. If you can see the first user&#39;s data, you have an authorisation problem. This is the single most common serious issue we find.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No secrets in the browser.&lt;/strong&gt; API keys for your database, payment provider or AI service must live on the server. Search your front-end code for strings like &lt;code&gt;sk_&lt;/code&gt;, &lt;code&gt;key&lt;/code&gt; and &lt;code&gt;secret&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Database rules are switched on.&lt;/strong&gt; If your app talks to a hosted database such as Supabase or Firebase directly from the browser, row-level security or equivalent rules must be enabled and tested.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Passwords and sessions are handled by a proven library.&lt;/strong&gt; Hand-rolled login code is a red flag.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;File uploads are restricted.&lt;/strong&gt; Check file types and sizes on the server, and store uploads outside the public web folder.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dependencies are real and current.&lt;/strong&gt; AI tools sometimes suggest packages that do not exist, or very old versions of ones that do. Run your package manager&#39;s audit command and check anything unfamiliar.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;data&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#data&quot;&gt;&lt;span&gt;Data&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol start=&quot;8&quot;&gt;
&lt;li&gt;&lt;strong&gt;Backups run automatically, and you have restored one.&lt;/strong&gt; A backup you have never restored is a hope, not a backup.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Personal data is mapped.&lt;/strong&gt; Know what personal data you collect, where it is stored and who can access it. Under UK GDPR you need a lawful basis for each type and a privacy notice that explains it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deleting means deleting.&lt;/strong&gt; When a customer closes their account, their data should go with it, or be anonymised.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Production data stays in production.&lt;/strong&gt; Developers and AI tools should work with test data, not copies of real customer records.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;payments&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#payments&quot;&gt;&lt;span&gt;Payments&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol start=&quot;12&quot;&gt;
&lt;li&gt;&lt;strong&gt;Payment results are confirmed on the server.&lt;/strong&gt; Never trust the browser to say a payment succeeded. Use your payment provider&#39;s webhooks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Webhooks are verified.&lt;/strong&gt; Check the signature on every webhook so nobody can fake a &amp;quot;payment succeeded&amp;quot; message.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Failed payments are handled.&lt;/strong&gt; Decide what happens when a card is declined at renewal, and test it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prices live on the server.&lt;/strong&gt; If the price is sent from the browser, someone will change it.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;reliability&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#reliability&quot;&gt;&lt;span&gt;Reliability&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol start=&quot;16&quot;&gt;
&lt;li&gt;&lt;strong&gt;Errors are tracked.&lt;/strong&gt; Install an error tracking service so you hear about problems before your customers tell you.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Uptime is monitored.&lt;/strong&gt; A simple external check that alerts you when the site goes down.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Slow work happens in the background.&lt;/strong&gt; Sending emails, calling AI models and processing files should run in a queue, not while the user waits.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;There is a staging environment.&lt;/strong&gt; Somewhere to try changes before they reach customers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deploys are repeatable.&lt;/strong&gt; You should be able to deploy with one command or one click, and roll back just as easily.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;maintainability&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#maintainability&quot;&gt;&lt;span&gt;Maintainability&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol start=&quot;21&quot;&gt;
&lt;li&gt;&lt;strong&gt;The code is in Git, in an account you own.&lt;/strong&gt; Not only in the AI tool&#39;s workspace.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;There are tests for the paths that make money.&lt;/strong&gt; Sign-up, login, checkout and the core feature, at minimum.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The structure is consistent.&lt;/strong&gt; AI tools often solve the same problem three different ways in one codebase. That makes every future change slower and riskier.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Someone can explain how it works.&lt;/strong&gt; If the only explanation is &amp;quot;the AI wrote it&amp;quot;, plan time to document it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;You know which parts are fragile.&lt;/strong&gt; Every codebase has them. The danger is not knowing where they are.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;what-to-do-with-the-results&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#what-to-do-with-the-results&quot;&gt;&lt;span&gt;What to do with the results&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If you can tick most of these, you are in better shape than many funded startups. If you cannot, do not panic. Most of these problems are quick to fix once you know they are there, and fixing them before launch is far cheaper than after a breach or a lost customer.&lt;/p&gt;
&lt;p&gt;There are three common routes from here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fix it yourself&lt;/strong&gt;, using this list, if you or your team are comfortable with the code.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Get an independent review.&lt;/strong&gt; Our &lt;a href=&quot;https://larasoft.io/vibe-code-review/&quot;&gt;vibe code review&lt;/a&gt; costs a fixed £395 and gives you a ranked list of what to fix, with the critical issues explained in plain English.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rebuild the core properly&lt;/strong&gt;, using the prototype as a detailed specification. For some apps this is the cheaper option, and our &lt;a href=&quot;https://larasoft.io/mvp-development/&quot;&gt;MVP development&lt;/a&gt; service is designed for it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Whichever you choose, keep using AI tools. They are not the problem. The problem is shipping code that nobody with the right experience has checked. Our guide to &lt;a href=&quot;https://larasoft.io/insights/ai-driven-development-guardrails/&quot;&gt;AI-driven development guardrails&lt;/a&gt; explains how to keep the speed without the risk.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>AI-driven development without the mess: the guardrails we use</title>
    <link href="https://larasoft.io/insights/ai-driven-development-guardrails/"/>
    <id>https://larasoft.io/insights/ai-driven-development-guardrails/</id>
    <published>2026-10-24T00:00:00Z</published>
    <updated>2026-10-24T00:00:00Z</updated>
    <summary>How we use AI coding agents on client Laravel projects without losing quality: context files, small tasks, tests first, static analysis and senior review.</summary>
    <content type="html">&lt;p&gt;We use AI coding agents on almost every project now. They write code, tests, migrations and documentation, investigate bugs and do the repetitive parts of upgrades. Used well, they let a small senior team deliver what used to take a much larger one.&lt;/p&gt;
&lt;p&gt;Used badly, they produce codebases that work for a while and then become impossible to change. We see the results in our &lt;a href=&quot;https://larasoft.io/laravel-development/laravel-rescue/&quot;&gt;rescue&lt;/a&gt; and &lt;a href=&quot;https://larasoft.io/vibe-code-review/&quot;&gt;vibe code review&lt;/a&gt; work every week.&lt;/p&gt;
&lt;p&gt;The difference is not which tool you use. It is the guardrails around it. These are the ones we use on client projects.&lt;/p&gt;
&lt;h2 id=&quot;1-make-the-codebase-easy-for-an-agent-to-understand&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#1-make-the-codebase-easy-for-an-agent-to-understand&quot;&gt;&lt;span&gt;1. Make the codebase easy for an agent to understand&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;AI agents copy what they see. If a codebase has three different ways of doing validation, an agent will happily add a fourth. So before we scale up AI-assisted work on an existing app, we spend time on consistency:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;One way to validate input (Laravel form requests).&lt;/li&gt;
&lt;li&gt;One way to authorise actions (policies).&lt;/li&gt;
&lt;li&gt;One place for business logic (action or service classes, not controllers).&lt;/li&gt;
&lt;li&gt;Clear naming that matches Laravel conventions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This pays off for human developers too, but it matters even more for agents.&lt;/p&gt;
&lt;h2 id=&quot;2-write-the-rules-down&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#2-write-the-rules-down&quot;&gt;&lt;span&gt;2. Write the rules down&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Most AI coding tools read a project instructions file, such as &lt;code&gt;CLAUDE.md&lt;/code&gt; or &lt;code&gt;AGENTS.md&lt;/code&gt;, before they start work. We keep one in every repository. It covers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the commands to run tests, static analysis and code style checks,&lt;/li&gt;
&lt;li&gt;the architecture and where different kinds of code belong,&lt;/li&gt;
&lt;li&gt;conventions the agent must follow, such as &amp;quot;every new endpoint needs a policy and a feature test&amp;quot;,&lt;/li&gt;
&lt;li&gt;things it must never do, such as editing old migrations or adding packages without asking.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A good instructions file is short, specific and kept up to date. It is the cheapest quality improvement you can make.&lt;/p&gt;
&lt;h2 id=&quot;3-keep-tasks-small&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#3-keep-tasks-small&quot;&gt;&lt;span&gt;3. Keep tasks small&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Agents are at their best on tasks a person could review in a few minutes. &amp;quot;Add a CSV export to the orders page, with a test&amp;quot; works well. &amp;quot;Build the reporting module&amp;quot; does not.&lt;/p&gt;
&lt;p&gt;Small tasks are easier to describe precisely, easier for the agent to get right and, most importantly, easier for an engineer to review properly. A 2,000-line pull request will not be reviewed carefully, whoever wrote it.&lt;/p&gt;
&lt;h2 id=&quot;4-tests-first-or-at-least-tests-always&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#4-tests-first-or-at-least-tests-always&quot;&gt;&lt;span&gt;4. Tests first, or at least tests always&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The best way to tell an agent what you want is often a failing test. The best way to check its work is a passing one. Every change we accept from an agent includes tests, and the full suite must pass before review.&lt;/p&gt;
&lt;p&gt;For older codebases with few tests, our first job is usually to add tests around the most important behaviour. That makes every later change, by person or agent, safer.&lt;/p&gt;
&lt;h2 id=&quot;5-let-the-machines-check-the-machines&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#5-let-the-machines-check-the-machines&quot;&gt;&lt;span&gt;5. Let the machines check the machines&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Automated checks catch a surprising share of agent mistakes before a person ever looks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Static analysis&lt;/strong&gt; with &lt;a href=&quot;https://github.com/larastan/larastan&quot; rel=&quot;noopener&quot;&gt;Larastan&lt;/a&gt; finds type errors, missing methods and dead code.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Code style&lt;/strong&gt; with &lt;a href=&quot;https://laravel.com/docs/pint&quot; rel=&quot;noopener&quot;&gt;Laravel Pint&lt;/a&gt; keeps formatting consistent, so reviews focus on substance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dependency audits&lt;/strong&gt; with &lt;code&gt;composer audit&lt;/code&gt; and &lt;code&gt;npm audit&lt;/code&gt; flag vulnerable or suspicious packages.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CI&lt;/strong&gt; runs all of the above on every pull request.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the checks fail, the agent fixes them before anyone reviews the change.&lt;/p&gt;
&lt;h2 id=&quot;6-a-senior-engineer-owns-every-change&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#6-a-senior-engineer-owns-every-change&quot;&gt;&lt;span&gt;6. A senior engineer owns every change&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This is the rule that matters most. An agent can write a change, but a named engineer reviews it, understands it and is accountable for it. Reviews focus on what tools cannot check well:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Does it do the right thing?&lt;/strong&gt; Not just what the ticket literally said.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Is it secure?&lt;/strong&gt; Authorisation, data exposure and input handling in particular.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Does it fit?&lt;/strong&gt; Is it consistent with the rest of the codebase, or a new pattern in disguise?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Will it scale?&lt;/strong&gt; Query counts, memory use and behaviour with real data volumes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If an engineer cannot explain a change, it does not ship.&lt;/p&gt;
&lt;h2 id=&quot;7-protect-production-and-personal-data&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#7-protect-production-and-personal-data&quot;&gt;&lt;span&gt;7. Protect production and personal data&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Agents work in development environments with test data. They do not get production database access, production secrets or real customer data. Where we use AI services for analysis or code generation, we check that the provider&#39;s terms fit the client&#39;s data protection obligations.&lt;/p&gt;
&lt;h2 id=&quot;what-this-means-for-cost-and-speed&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#what-this-means-for-cost-and-speed&quot;&gt;&lt;span&gt;What this means for cost and speed&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;These guardrails take some effort to set up, but they are what make AI-assisted development cheaper over time, not just faster in the first week. A consistent, tested codebase lets agents do more of the work safely, which is how we keep our rates at £20 to £25 per hour while every change still gets senior review.&lt;/p&gt;
&lt;p&gt;If you want to adopt AI-driven development in your own team, or want us to work this way on your project, see our &lt;a href=&quot;https://larasoft.io/ai-driven-development/&quot;&gt;AI-driven development&lt;/a&gt; service. If you already have an AI-built app and are worried about what is in it, start with our &lt;a href=&quot;https://larasoft.io/insights/vibe-coded-app-production-checklist/&quot;&gt;production checklist for vibe-coded apps&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Adding AI features to a Laravel app: a practical guide</title>
    <link href="https://larasoft.io/insights/adding-ai-features-to-a-laravel-app/"/>
    <id>https://larasoft.io/insights/adding-ai-features-to-a-laravel-app/</id>
    <published>2026-10-24T00:00:00Z</published>
    <updated>2026-10-24T00:00:00Z</updated>
    <summary>Where AI features actually help in a Laravel application, how to build them with queues, structured output and cost controls, and the mistakes to avoid.</summary>
    <content type="html">&lt;p&gt;Most businesses we speak to want &amp;quot;AI in the product&amp;quot;, but are not sure what that should mean. The good news is that the most valuable AI features are usually the least glamorous. They take a slow, repetitive task that a person already does and make it quicker.&lt;/p&gt;
&lt;p&gt;This guide covers where AI features earn their keep in a Laravel application, how to build them so they are reliable, and the mistakes we see most often.&lt;/p&gt;
&lt;h2 id=&quot;where-ai-features-actually-help&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#where-ai-features-actually-help&quot;&gt;&lt;span&gt;Where AI features actually help&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The best candidates share three traits: the task is repetitive, the input is mostly text or documents, and a person can easily check the result.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Summaries.&lt;/strong&gt; A long customer history, support thread or set of notes condensed into a few lines for the person about to call the customer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Classification.&lt;/strong&gt; Tagging support tickets, routing enquiries, flagging risky content or categorising transactions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Extraction.&lt;/strong&gt; Pulling names, dates, amounts and line items out of uploaded documents, emails or PDFs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Drafting.&lt;/strong&gt; First drafts of replies, descriptions or reports that a person edits and approves.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Search.&lt;/strong&gt; Finding records by meaning rather than exact words, using embeddings and vector search.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A general-purpose chatbot is rarely the right first project. It is hard to make reliable, hard to measure and easy for users to push in directions you did not plan for.&lt;/p&gt;
&lt;h2 id=&quot;treat-the-model-like-any-other-api&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#treat-the-model-like-any-other-api&quot;&gt;&lt;span&gt;Treat the model like any other API&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;From your application&#39;s point of view, an AI model is a third-party API that is slow, costs money per call and sometimes fails or returns something unexpected. Laravel already has good tools for that kind of service.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Use queues.&lt;/strong&gt; Model calls can take several seconds. Run them in a queued job so the user is not left waiting, and update the page when the result is ready.&lt;/p&gt;
&lt;pre class=&quot;language-php&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-php&quot;&gt;&lt;span class=&quot;token class-name static-context&quot;&gt;SummariseCustomerHistory&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;dispatch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$customer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Retry sensibly.&lt;/strong&gt; Use the job&#39;s retry and back-off settings to handle rate limits and temporary errors without manual work.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Log every call.&lt;/strong&gt; Record the prompt version, model, token counts, cost and outcome. When a user reports a strange result, you will want to see exactly what happened.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Use a package rather than raw HTTP calls.&lt;/strong&gt; Laravel 13 introduced a first-party AI SDK, and community packages such as &lt;a href=&quot;https://github.com/prism-php/prism&quot; rel=&quot;noopener&quot;&gt;Prism&lt;/a&gt; give a consistent interface across providers. Either makes it easier to switch models later.&lt;/p&gt;
&lt;h2 id=&quot;ask-for-structure-then-validate-it&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#ask-for-structure-then-validate-it&quot;&gt;&lt;span&gt;Ask for structure, then validate it&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Free text is hard to use in code. Ask the model to return JSON that matches a schema you define, such as a category, a confidence score and a short reason. Most providers now support structured output directly.&lt;/p&gt;
&lt;p&gt;Then validate the response exactly as you would validate user input. Check the category is one you recognise and the numbers are in range. If validation fails, retry or fall back to a person.&lt;/p&gt;
&lt;h2 id=&quot;keep-a-person-in-the-loop&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#keep-a-person-in-the-loop&quot;&gt;&lt;span&gt;Keep a person in the loop&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;For anything that affects customers, money or legal obligations, the AI suggests and a person decides. In practice that means:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;drafts that must be approved before sending,&lt;/li&gt;
&lt;li&gt;suggested categories that a person can change,&lt;/li&gt;
&lt;li&gt;extracted data shown for review before it is saved.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is not only about safety. It also gives you a steady stream of corrections, which show you where the feature works and where it needs better prompts or examples.&lt;/p&gt;
&lt;h2 id=&quot;control-the-cost&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#control-the-cost&quot;&gt;&lt;span&gt;Control the cost&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;AI costs are easy to ignore in development and surprising in production. From the first day:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;record the cost of every call against the feature and the customer account,&lt;/li&gt;
&lt;li&gt;set limits per account, especially on free plans,&lt;/li&gt;
&lt;li&gt;cache results where the same input is likely to come up again, and&lt;/li&gt;
&lt;li&gt;use smaller, cheaper models for simple tasks such as classification.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;protect-personal-data&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#protect-personal-data&quot;&gt;&lt;span&gt;Protect personal data&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Before sending customer data to a model, check the provider&#39;s terms on data retention and training, and whether processing happens in a region that suits your obligations under UK GDPR. Send only the fields the task needs. For some tasks you can strip or replace names and contact details before the call and add them back afterwards.&lt;/p&gt;
&lt;p&gt;Update your privacy notice to explain how AI processing is used.&lt;/p&gt;
&lt;h2 id=&quot;measure-whether-it-works&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#measure-whether-it-works&quot;&gt;&lt;span&gt;Measure whether it works&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Decide how you will judge the feature before you build it. Useful measures include how often people accept a suggestion without changes, how much time a task now takes and how many results are corrected. Keep a small set of real examples with known good answers, and run them whenever you change a prompt or a model.&lt;/p&gt;
&lt;h2 id=&quot;getting-started&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#getting-started&quot;&gt;&lt;span&gt;Getting started&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A good first AI feature can often be built and in front of users within a few weeks. If you would like help choosing the right one and building it properly, see our &lt;a href=&quot;https://larasoft.io/laravel-development/laravel-ai-integration/&quot;&gt;Laravel AI integration&lt;/a&gt; service, or book a free call to talk it through.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Laravel security checklist for 2026</title>
    <link href="https://larasoft.io/insights/laravel-security-checklist/"/>
    <id>https://larasoft.io/insights/laravel-security-checklist/</id>
    <published>2026-10-24T00:00:00Z</published>
    <updated>2026-10-24T00:00:00Z</updated>
    <summary>A practical Laravel security checklist covering versions, authorisation, input handling, secrets, dependencies, headers, servers and monitoring.</summary>
    <content type="html">&lt;p&gt;Laravel gives you a secure starting point. It protects against cross-site request forgery, escapes output in Blade templates, uses prepared statements for database queries and hashes passwords properly. Most Laravel applications that get breached are not let down by the framework. They are let down by something the application itself does, or forgets to do.&lt;/p&gt;
&lt;p&gt;This is the checklist we start from in our &lt;a href=&quot;https://larasoft.io/security-review/&quot;&gt;security reviews&lt;/a&gt;. It is not exhaustive, but if you can tick every item you will have closed the gaps we find most often.&lt;/p&gt;
&lt;h2 id=&quot;versions-and-patching&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#versions-and-patching&quot;&gt;&lt;span&gt;Versions and patching&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Laravel is on a supported version.&lt;/strong&gt; As of October 2026, Laravel 13 is fully supported and Laravel 12 receives security fixes until 24 February 2027. Laravel 11 and older no longer receive security fixes. See our &lt;a href=&quot;https://larasoft.io/resources/laravel-version-support/&quot;&gt;version support tracker&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PHP is on a supported version.&lt;/strong&gt; PHP 8.1 is out of support, and PHP 8.2 reaches the end of security support on 31 December 2026.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dependencies are audited.&lt;/strong&gt; Run &lt;code&gt;composer audit&lt;/code&gt; and &lt;code&gt;npm audit&lt;/code&gt; regularly, and in CI. Our guide to &lt;a href=&quot;https://larasoft.io/insights/patching-laravel-dependencies/&quot;&gt;patching Laravel dependencies&lt;/a&gt; explains a routine that works.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;authentication&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#authentication&quot;&gt;&lt;span&gt;Authentication&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Use a first-party starter kit or package&lt;/strong&gt; for login, registration and password resets rather than custom code.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rate-limit login and password reset routes.&lt;/strong&gt; Laravel&#39;s rate limiter makes this a few lines of code.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Offer or require two-factor authentication&lt;/strong&gt; for admin accounts and anyone with access to sensitive data.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Expire sessions&lt;/strong&gt; sensibly, and invalidate other sessions when a password changes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;authorisation&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#authorisation&quot;&gt;&lt;span&gt;Authorisation&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This is where we find the most serious issues.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Every action checks permission, not just login.&lt;/strong&gt; Use policies and call them in controllers, form requests or Livewire components. Being logged in is not the same as being allowed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Every query is scoped to the right owner.&lt;/strong&gt; In multi-tenant apps, a user should never be able to load another tenant&#39;s record by changing an ID in the URL.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Admin routes are protected&lt;/strong&gt; by both authentication and an explicit role or permission check.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API endpoints have the same checks&lt;/strong&gt; as the web pages that use them.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;input-and-output&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#input-and-output&quot;&gt;&lt;span&gt;Input and output&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Validate everything&lt;/strong&gt; with form requests, including data from your own front end and from webhooks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Guard against mass assignment.&lt;/strong&gt; Define &lt;code&gt;$fillable&lt;/code&gt; on models, and never pass &lt;code&gt;$request-&amp;gt;all()&lt;/code&gt; straight into &lt;code&gt;create()&lt;/code&gt; or &lt;code&gt;update()&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Be careful with raw queries.&lt;/strong&gt; &lt;code&gt;DB::raw()&lt;/code&gt;, &lt;code&gt;whereRaw()&lt;/code&gt; and &lt;code&gt;orderByRaw()&lt;/code&gt; with user input are injection risks. Use bindings.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Avoid unescaped output.&lt;/strong&gt; Treat every &lt;code&gt;{!! !!}&lt;/code&gt; in a Blade template as something to justify.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Restrict file uploads&lt;/strong&gt; by type and size, store them outside the public folder and serve them through a controller that checks permission.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;secrets-and-configuration&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#secrets-and-configuration&quot;&gt;&lt;span&gt;Secrets and configuration&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;APP_DEBUG is false in production.&lt;/strong&gt; Debug pages expose environment variables, including your keys.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The .env file is not in Git&lt;/strong&gt; and is not reachable from the web.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Secrets are rotated&lt;/strong&gt; when a developer or supplier leaves, and after any suspected leak.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Each environment has its own keys&lt;/strong&gt;, so a leaked staging key cannot touch production.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;APP_KEY is unique per environment&lt;/strong&gt; and never shared.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;http-and-browser-security&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#http-and-browser-security&quot;&gt;&lt;span&gt;HTTP and browser security&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;HTTPS everywhere&lt;/strong&gt;, with HSTS enabled.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Security headers&lt;/strong&gt; are set, including a Content Security Policy, &lt;code&gt;X-Content-Type-Options&lt;/code&gt;, &lt;code&gt;Referrer-Policy&lt;/code&gt; and a frame policy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cookies are secure.&lt;/strong&gt; Session cookies should be &lt;code&gt;Secure&lt;/code&gt;, &lt;code&gt;HttpOnly&lt;/code&gt; and have a suitable &lt;code&gt;SameSite&lt;/code&gt; setting.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CORS is restricted&lt;/strong&gt; to the origins that need it.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;servers-and-infrastructure&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#servers-and-infrastructure&quot;&gt;&lt;span&gt;Servers and infrastructure&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The operating system is patched&lt;/strong&gt; automatically or on a schedule.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SSH uses keys&lt;/strong&gt;, not passwords, and root login is disabled.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Only the ports you need are open.&lt;/strong&gt; Databases and Redis should not be reachable from the internet.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Backups are encrypted, stored off the server and tested.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Access is reviewed.&lt;/strong&gt; Remove former staff and suppliers from servers, Git hosting, DNS and third-party dashboards.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Our &lt;a href=&quot;https://larasoft.io/infrastructure-management/&quot;&gt;infrastructure management&lt;/a&gt; service covers this layer.&lt;/p&gt;
&lt;h2 id=&quot;monitoring-and-response&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#monitoring-and-response&quot;&gt;&lt;span&gt;Monitoring and response&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Errors are tracked&lt;/strong&gt;, so unusual failures are spotted quickly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Important events are logged&lt;/strong&gt;, such as logins, permission changes and exports, without logging passwords or full card numbers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;You know who to call.&lt;/strong&gt; Have a short written plan for what happens if you suspect a breach, including how to meet the ICO&#39;s 72-hour reporting window for personal data breaches.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;getting-help&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#getting-help&quot;&gt;&lt;span&gt;Getting help&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If working through this list raised more questions than it answered, our &lt;a href=&quot;https://larasoft.io/security-review/&quot;&gt;security review&lt;/a&gt; covers all of it and more, with a written report, a free retest once fixes are in and the option of a monthly patching plan afterwards.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>How to keep Laravel and its dependencies patched</title>
    <link href="https://larasoft.io/insights/patching-laravel-dependencies/"/>
    <id>https://larasoft.io/insights/patching-laravel-dependencies/</id>
    <published>2026-10-24T00:00:00Z</published>
    <updated>2026-10-24T00:00:00Z</updated>
    <summary>A monthly patching routine for Laravel apps: composer audit, npm audit, Dependabot, staging tests and emergency fixes, plus how to handle major versions.</summary>
    <content type="html">&lt;p&gt;Your application code is only a small part of what runs in production. A typical Laravel application pulls in well over a hundred Composer packages and often hundreds more JavaScript packages, plus PHP itself, the web server and the operating system. Any of them can have a security flaw discovered tomorrow.&lt;/p&gt;
&lt;p&gt;Patching is not exciting, but it is one of the most effective security measures there is. This is the routine we use on our &lt;a href=&quot;https://larasoft.io/security-review/#patching-plans&quot;&gt;security patching plans&lt;/a&gt;, and you can run it yourself.&lt;/p&gt;
&lt;h2 id=&quot;know-what-you-depend-on&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#know-what-you-depend-on&quot;&gt;&lt;span&gt;Know what you depend on&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Start by looking at what is installed:&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;composer&lt;/span&gt; show &lt;span class=&quot;token parameter variable&quot;&gt;--direct&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;composer&lt;/span&gt; outdated &lt;span class=&quot;token parameter variable&quot;&gt;--direct&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;npm&lt;/span&gt; outdated&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;composer show --direct&lt;/code&gt; lists the packages you chose. Everything else is a dependency of those. &lt;code&gt;composer outdated&lt;/code&gt; shows what has newer versions available. Look out for packages that have been abandoned or have not been updated in years, as they will not get security fixes either.&lt;/p&gt;
&lt;h2 id=&quot;check-for-known-vulnerabilities&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#check-for-known-vulnerabilities&quot;&gt;&lt;span&gt;Check for known vulnerabilities&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Composer and npm can both check your installed packages against public security advisories:&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;composer&lt;/span&gt; audit
&lt;span class=&quot;token function&quot;&gt;npm&lt;/span&gt; audit &lt;span class=&quot;token parameter variable&quot;&gt;--omit&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;dev&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Run these now, and then make them part of your CI pipeline so a pull request fails if it introduces a known vulnerability. For extra protection, the &lt;code&gt;roave/security-advisories&lt;/code&gt; package stops Composer installing versions with known issues in the first place.&lt;/p&gt;
&lt;h2 id=&quot;automate-the-routine-updates&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#automate-the-routine-updates&quot;&gt;&lt;span&gt;Automate the routine updates&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;GitHub&#39;s Dependabot, or a similar tool, can open pull requests when new versions of your dependencies are released. Configure it to group minor and patch updates together, so you get one tidy pull request a week rather than dozens.&lt;/p&gt;
&lt;p&gt;Automated pull requests are only safe if you have tests. Each update should run through your test suite in CI before anyone merges it.&lt;/p&gt;
&lt;h2 id=&quot;a-monthly-routine&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#a-monthly-routine&quot;&gt;&lt;span&gt;A monthly routine&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Once a month:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Update minor and patch versions&lt;/strong&gt; of Laravel and your packages with &lt;code&gt;composer update&lt;/code&gt;, and the same for front-end packages.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Run the full test suite&lt;/strong&gt;, static analysis and a build of your front-end assets.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deploy to staging&lt;/strong&gt; and check the critical paths: login, checkout, the main features your customers use.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deploy to production&lt;/strong&gt; at a quiet time, with a way to roll back.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Update the operating system&lt;/strong&gt; and PHP minor version on your servers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write down what changed&lt;/strong&gt;, so you can trace any issue back to a specific update.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For most well-tested applications, this takes an hour or two a month.&lt;/p&gt;
&lt;h2 id=&quot;when-an-urgent-advisory-lands&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#when-an-urgent-advisory-lands&quot;&gt;&lt;span&gt;When an urgent advisory lands&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Sometimes a critical vulnerability is announced in a package you use, and waiting for the monthly cycle is not an option. Have a faster route ready:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Subscribe to security advisories for Laravel, PHP and your key packages, or use a monitoring service that alerts you.&lt;/li&gt;
&lt;li&gt;Decide in advance who can approve an emergency deploy.&lt;/li&gt;
&lt;li&gt;Apply the single patched package with &lt;code&gt;composer update vendor/package&lt;/code&gt;, rather than updating everything at once.&lt;/li&gt;
&lt;li&gt;Test the affected area, deploy and then return to normal.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On our patching plans, critical patches are applied within one working day.&lt;/p&gt;
&lt;h2 id=&quot;major-versions-need-a-plan&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#major-versions-need-a-plan&quot;&gt;&lt;span&gt;Major versions need a plan&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Minor and patch updates should be routine. Major versions, of Laravel itself or of big packages, usually include breaking changes and need more care. Laravel releases a new major version every year, each with bug fixes for 18 months and security fixes for two years. Plan your upgrade well before your current version&#39;s security support ends.&lt;/p&gt;
&lt;p&gt;Our &lt;a href=&quot;https://larasoft.io/insights/laravel-13-upgrade-guide/&quot;&gt;Laravel 13 upgrade guide&lt;/a&gt; covers what is involved, and our &lt;a href=&quot;https://larasoft.io/resources/laravel-upgrade-planner/&quot;&gt;Laravel upgrade planner&lt;/a&gt; shows each step from your current version.&lt;/p&gt;
&lt;h2 id=&quot;do-not-forget-the-servers&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#do-not-forget-the-servers&quot;&gt;&lt;span&gt;Do not forget the servers&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;PHP versions and operating systems have their own support windows. Check your PHP version against the dates on &lt;a href=&quot;https://www.php.net/supported-versions.php&quot; rel=&quot;noopener&quot;&gt;php.net&lt;/a&gt;, and make sure your servers apply operating system security updates automatically or on a schedule.&lt;/p&gt;
&lt;h2 id=&quot;if-this-sounds-like-a-lot&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#if-this-sounds-like-a-lot&quot;&gt;&lt;span&gt;If this sounds like a lot&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;It is less work than it looks once the routine is in place, but it does need to happen every month, without fail. If you would rather not think about it, our &lt;a href=&quot;https://larasoft.io/security-review/#patching-plans&quot;&gt;security patching plans&lt;/a&gt; start at £149 per month per application and include monthly updates, advisory monitoring, emergency patches and a short report.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Laravel 13 upgrade guide for business owners</title>
    <link href="https://larasoft.io/insights/laravel-13-upgrade-guide/"/>
    <id>https://larasoft.io/insights/laravel-13-upgrade-guide/</id>
    <published>2026-10-24T00:00:00Z</published>
    <updated>2026-10-24T00:00:00Z</updated>
    <summary>Should you upgrade to Laravel 13 now? Support dates, PHP requirements, what usually breaks, how long it takes and what it costs, explained for business owners.</summary>
    <content type="html">&lt;p&gt;Laravel 13 was released in March 2026. If your application runs on Laravel, you are probably wondering whether you need to upgrade, how risky it is and what it will cost. This guide answers those questions without assuming you are a developer.&lt;/p&gt;
&lt;h2 id=&quot;do-you-need-to-upgrade&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#do-you-need-to-upgrade&quot;&gt;&lt;span&gt;Do you need to upgrade?&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Laravel supports each major version for a fixed period: bug fixes for 18 months and security fixes for two years. After that, if a security flaw is found in the framework, your version will not be patched.&lt;/p&gt;
&lt;p&gt;As of October 2026:&lt;/p&gt;
&lt;div class=&quot;table-wrap&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Version&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;th&gt;Security fixes until&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Laravel 13&lt;/td&gt;
&lt;td&gt;Fully supported&lt;/td&gt;
&lt;td&gt;17 March 2028&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Laravel 12&lt;/td&gt;
&lt;td&gt;Security fixes only&lt;/td&gt;
&lt;td&gt;24 February 2027&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Laravel 11&lt;/td&gt;
&lt;td&gt;End of life&lt;/td&gt;
&lt;td&gt;Ended 12 March 2026&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Laravel 10 and older&lt;/td&gt;
&lt;td&gt;End of life&lt;/td&gt;
&lt;td&gt;Ended&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;So:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;On Laravel 12?&lt;/strong&gt; You have until February 2027. Plan the upgrade for the next few months, while it is still a small job.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;On Laravel 11 or older?&lt;/strong&gt; Your framework no longer gets security fixes. Upgrading should be a priority.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;On Laravel 5, 6 or 7?&lt;/strong&gt; You are several years out of support, and probably on an unsupported PHP version too. This is a bigger project, but a very common one.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Our &lt;a href=&quot;https://larasoft.io/resources/laravel-version-support/&quot;&gt;Laravel version support tracker&lt;/a&gt; has the full list of dates.&lt;/p&gt;
&lt;h2 id=&quot;what-laravel-13-requires&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#what-laravel-13-requires&quot;&gt;&lt;span&gt;What Laravel 13 requires&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The most important requirement is &lt;strong&gt;PHP 8.3 or newer&lt;/strong&gt;. If your servers run PHP 8.2 or older, they will need upgrading as part of the project. Laravel 13 supports PHP 8.3, 8.4 and 8.5.&lt;/p&gt;
&lt;p&gt;Laravel 13 itself has relatively few breaking changes. Most applications on Laravel 12 can move across with modest effort, as long as their packages support the new version.&lt;/p&gt;
&lt;h2 id=&quot;what-usually-causes-the-work&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#what-usually-causes-the-work&quot;&gt;&lt;span&gt;What usually causes the work&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;In our experience, the framework is rarely the hard part. The work comes from everything around it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Packages.&lt;/strong&gt; Every third-party package in your application must support Laravel 13. Popular, well-maintained packages usually update quickly. Abandoned packages do not, and need replacing or rewriting.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PHP versions.&lt;/strong&gt; Jumping several PHP versions at once can surface deprecated functions and changed behaviour in your own code.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Missing tests.&lt;/strong&gt; Without automated tests, the only way to know whether the upgrade broke something is to check every feature by hand. We usually add basic tests for the most important paths before upgrading.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Skipped versions.&lt;/strong&gt; Laravel has to be upgraded one major version at a time, because each step has its own changes. Going from Laravel 8 to 13 means five upgrades in a row, each one tested.&lt;/p&gt;
&lt;h2 id=&quot;how-long-does-it-take&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#how-long-does-it-take&quot;&gt;&lt;span&gt;How long does it take?&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;As a rough guide, for a typical business application:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Laravel 12 to 13&lt;/strong&gt;, well tested, few packages: often a day or two.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Laravel 10 or 11 to 13&lt;/strong&gt;: usually a few days.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Laravel 5.x to 8 to 13&lt;/strong&gt;: typically one to two weeks, mostly because of packages and PHP.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Large applications, unusual packages and very thin test coverage all add time.&lt;/p&gt;
&lt;h2 id=&quot;what-does-it-cost&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#what-does-it-cost&quot;&gt;&lt;span&gt;What does it cost?&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Our core framework upgrades start at £195 per codebase, excluding VAT. A short assessment of your code, packages and tests gives you a fixed quote before work starts. Work on bespoke or abandoned packages is quoted separately, so there are no surprises. See our &lt;a href=&quot;https://larasoft.io/laravel-development/laravel-upgrades/&quot;&gt;Laravel upgrade service&lt;/a&gt; for details.&lt;/p&gt;
&lt;h2 id=&quot;how-a-safe-upgrade-works&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#how-a-safe-upgrade-works&quot;&gt;&lt;span&gt;How a safe upgrade works&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Assess.&lt;/strong&gt; Review the current version, PHP version, packages and test coverage, and list the risks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prepare.&lt;/strong&gt; Add tests for critical paths and make sure staging matches production.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Upgrade step by step.&lt;/strong&gt; One major version at a time, following the official upgrade guides, with tests run at every step. Automated tools such as Rector, and AI coding agents, handle much of the repetitive editing, with an engineer reviewing every change.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Upgrade PHP&lt;/strong&gt; on staging, then production.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Check on staging.&lt;/strong&gt; You test the key features yourself.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Release&lt;/strong&gt; at a quiet time, with a rollback plan ready.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;is-it-worth-it-if-everything-works&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#is-it-worth-it-if-everything-works&quot;&gt;&lt;span&gt;Is it worth it if everything works?&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Usually, yes. Beyond security fixes, staying current means packages keep working, developers are easier to find and future upgrades stay small. Our &lt;a href=&quot;https://larasoft.io/resources/laravel-upgrade-planner/&quot;&gt;Laravel upgrade planner&lt;/a&gt; shows every step from your current version, with notes on what changes along the way.&lt;/p&gt;
&lt;p&gt;Once you are on Laravel 13, a &lt;a href=&quot;https://larasoft.io/laravel-development/laravel-support-maintenance/&quot;&gt;support and maintenance plan&lt;/a&gt; keeps you current, so you never face a big catch-up again.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>12 signs your Laravel app needs rescuing</title>
    <link href="https://larasoft.io/insights/signs-your-laravel-app-needs-rescuing/"/>
    <id>https://larasoft.io/insights/signs-your-laravel-app-needs-rescuing/</id>
    <published>2026-10-24T00:00:00Z</published>
    <updated>2026-10-24T00:00:00Z</updated>
    <summary>From a developer who has gone quiet to releases that always break something, these are the warning signs that a Laravel project needs help, and what to do next.</summary>
    <content type="html">&lt;p&gt;Software projects rarely fail all at once. They drift: releases slow down, bugs come back, and the people who understand the system become harder to reach. By the time it feels like a crisis, the warning signs have usually been there for months.&lt;/p&gt;
&lt;p&gt;These are the signs we hear about most often from businesses that come to us for a &lt;a href=&quot;https://larasoft.io/laravel-development/laravel-rescue/&quot;&gt;project rescue&lt;/a&gt;. If several of them sound familiar, it is time to act.&lt;/p&gt;
&lt;h2 id=&quot;warning-signs-about-people-and-access&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#warning-signs-about-people-and-access&quot;&gt;&lt;span&gt;Warning signs about people and access&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;1. Your developer has gone quiet.&lt;/strong&gt; Replies take days, estimates keep slipping and you are not sure what is being worked on. Sometimes there is a good reason. Often it means the project has become hard to work on, or has been quietly deprioritised.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. You are not sure you own everything.&lt;/strong&gt; Is the code in a Git repository in your company&#39;s name? Are the server, domain, DNS and email accounts yours? If a supplier holds the keys, you are exposed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Only one person understands it.&lt;/strong&gt; If one developer left tomorrow, could anyone else deploy a fix? Knowledge held by a single person is a risk, however good that person is.&lt;/p&gt;
&lt;h2 id=&quot;warning-signs-in-the-software&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#warning-signs-in-the-software&quot;&gt;&lt;span&gt;Warning signs in the software&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;4. Every release breaks something.&lt;/strong&gt; Fixing one bug creates another, and releases have become stressful. This usually means there are few automated tests and the code is tightly tangled together.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. Simple changes take weeks.&lt;/strong&gt; A new field on a form, a tweak to an email or a small report should not be a project. When they are, technical debt is slowing everything down.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6. It is getting slower.&lt;/strong&gt; Pages that were fast at launch now take seconds, or time out, as data grows. Common causes are missing database indexes, inefficient queries and heavy work done during page loads.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;7. Errors are discovered by customers.&lt;/strong&gt; If you hear about problems from support tickets rather than alerts, there is no error tracking or monitoring in place.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;8. It is stuck on an old version.&lt;/strong&gt; The app runs on Laravel 5, 6 or 7 and an old PHP version, and every attempt to update packages fails. Those versions no longer get security fixes. Our &lt;a href=&quot;https://larasoft.io/resources/laravel-version-support/&quot;&gt;version support tracker&lt;/a&gt; shows the dates.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;9. Nobody understands the code.&lt;/strong&gt; This is increasingly common with applications built quickly using AI tools. The app works, but it grew without a plan, and now nobody can safely change it.&lt;/p&gt;
&lt;h2 id=&quot;warning-signs-in-operations&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#warning-signs-in-operations&quot;&gt;&lt;span&gt;Warning signs in operations&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;10. Deploys are manual and scary.&lt;/strong&gt; Releasing means someone logging into a server and running commands by hand, and only at weekends.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;11. You have never restored a backup.&lt;/strong&gt; There may be backups, but nobody has checked they work, or where they are stored.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;12. Security questions get vague answers.&lt;/strong&gt; When you ask about patching, access control or data protection, the answers are not specific. That is often because nobody is actively looking after it.&lt;/p&gt;
&lt;h2 id=&quot;what-to-do-next&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#what-to-do-next&quot;&gt;&lt;span&gt;What to do next&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If several of these sound familiar, these steps will make things better, whoever ends up doing the work.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Secure access first.&lt;/strong&gt; Make a list of every account the application depends on: code hosting, servers, domain registrar, DNS, email sending, payments, storage and any third-party services. Make sure each one is in your company&#39;s name, and that you can log in.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Get the facts.&lt;/strong&gt; An independent &lt;a href=&quot;https://larasoft.io/laravel-development/laravel-code-review/&quot;&gt;code review&lt;/a&gt;, or a &lt;a href=&quot;https://larasoft.io/vibe-code-review/&quot;&gt;vibe code review&lt;/a&gt; for AI-built apps, tells you what you actually have, what is urgent and what can wait. It costs a few hundred pounds and gives you a basis for every decision that follows.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stabilise before you rebuild.&lt;/strong&gt; It is tempting to start again from scratch. Sometimes that is right, but most struggling applications can be stabilised step by step: add monitoring and backups, fix the critical issues, add tests around the most important features and then improve the code area by area. That is usually faster and cheaper than a rebuild, and you keep a working product throughout.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Put maintenance in place.&lt;/strong&gt; Once things are stable, a regular &lt;a href=&quot;https://larasoft.io/laravel-development/laravel-support-maintenance/&quot;&gt;support and maintenance plan&lt;/a&gt; stops the same problems coming back.&lt;/p&gt;
&lt;h2 id=&quot;how-we-can-help&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#how-we-can-help&quot;&gt;&lt;span&gt;How we can help&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We take over Laravel projects in every state, from a tidy handover to a supplier who has disappeared. The first step is always a free call to understand what is going on. From there, our &lt;a href=&quot;https://larasoft.io/laravel-development/laravel-rescue/&quot;&gt;Laravel rescue service&lt;/a&gt; gets you back in control.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Laravel hosting in 2026: Forge, Laravel Cloud or AWS?</title>
    <link href="https://larasoft.io/insights/laravel-hosting-forge-cloud-aws/"/>
    <id>https://larasoft.io/insights/laravel-hosting-forge-cloud-aws/</id>
    <published>2026-10-24T00:00:00Z</published>
    <updated>2026-10-24T00:00:00Z</updated>
    <summary>How to choose hosting for a Laravel application: Laravel Forge, Laravel Cloud, Vapor and AWS compared on cost, control, scaling and the work needed to run them.</summary>
    <content type="html">&lt;p&gt;Where your Laravel application runs affects how much it costs, how well it copes with busy periods and how much work it takes to keep running. The good news is that the Laravel ecosystem now has excellent options for almost every situation. The challenge is picking the right one.&lt;/p&gt;
&lt;p&gt;This guide compares the main choices we recommend to clients, and when each one makes sense.&lt;/p&gt;
&lt;h2 id=&quot;option-1-laravel-forge-and-a-cloud-server&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#option-1-laravel-forge-and-a-cloud-server&quot;&gt;&lt;span&gt;Option 1: Laravel Forge and a cloud server&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://forge.laravel.com/&quot; rel=&quot;noopener&quot;&gt;Laravel Forge&lt;/a&gt; is a server management service from the Laravel team. You connect it to a cloud provider such as DigitalOcean, Hetzner, Vultr, Akamai or AWS, and it sets up and manages servers configured for Laravel: PHP, Nginx, databases, queues, scheduled tasks, SSL certificates and deployments.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Good for:&lt;/strong&gt; most business applications, SaaS products in their first few years, internal tools and marketing sites.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Strengths:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Predictable monthly costs: a Forge subscription plus the servers you choose.&lt;/li&gt;
&lt;li&gt;Full control. It is your server, and you can install what you need.&lt;/li&gt;
&lt;li&gt;Simple deployments from Git, with zero-downtime options.&lt;/li&gt;
&lt;li&gt;A large community and plenty of experience to draw on.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Trade-offs:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You are responsible for the servers. Operating system updates, PHP upgrades, monitoring and backups still need someone to look after them.&lt;/li&gt;
&lt;li&gt;Scaling beyond a few servers takes planning, such as load balancers, separate database servers and queue workers.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This site is deployed with Forge.&lt;/p&gt;
&lt;h2 id=&quot;option-2-laravel-cloud&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#option-2-laravel-cloud&quot;&gt;&lt;span&gt;Option 2: Laravel Cloud&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://cloud.laravel.com/&quot; rel=&quot;noopener&quot;&gt;Laravel Cloud&lt;/a&gt; is a fully managed platform from the Laravel team, launched in 2025. You push your code, and Cloud runs it. There are no servers to manage, and it can scale up and down automatically, with managed databases, caches and object storage available alongside.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Good for:&lt;/strong&gt; teams that do not want to manage servers at all, applications with spiky or unpredictable traffic, and new projects that want to move quickly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Strengths:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No servers to patch, monitor or upgrade.&lt;/li&gt;
&lt;li&gt;Automatic scaling, and options to reduce cost when traffic is low.&lt;/li&gt;
&lt;li&gt;Built specifically for Laravel, so queues, scheduling and deployments work as you expect.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Trade-offs:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Usage-based pricing is harder to predict than a fixed server, so set budgets and alerts.&lt;/li&gt;
&lt;li&gt;Less low-level control than your own server, which matters if you need unusual software or system settings.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;option-3-laravel-vapor-and-aws-lambda&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#option-3-laravel-vapor-and-aws-lambda&quot;&gt;&lt;span&gt;Option 3: Laravel Vapor and AWS Lambda&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://vapor.laravel.com/&quot; rel=&quot;noopener&quot;&gt;Laravel Vapor&lt;/a&gt; runs Laravel serverlessly on AWS Lambda, inside your own AWS account. It suits applications that need to absorb very large traffic spikes and teams that are already committed to AWS. It adds some constraints of its own, such as how files and long-running tasks are handled, so it is worth planning for those from the start.&lt;/p&gt;
&lt;h2 id=&quot;option-4-aws-or-another-cloud-directly&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#option-4-aws-or-another-cloud-directly&quot;&gt;&lt;span&gt;Option 4: AWS or another cloud, directly&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Some organisations run Laravel directly on AWS, Azure or Google Cloud, using containers or virtual machines with their own tooling.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Good for:&lt;/strong&gt; strict compliance or data residency requirements, organisations with an existing cloud team, and very large or complex systems.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Trade-offs:&lt;/strong&gt; much more to set up and run. Without people who know the platform well, this is the easiest option to get expensive or insecure.&lt;/p&gt;
&lt;h2 id=&quot;how-to-choose&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#how-to-choose&quot;&gt;&lt;span&gt;How to choose&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A few questions usually settle it:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Who will look after the servers?&lt;/strong&gt; If nobody, choose Laravel Cloud, or Forge with a managed service on top.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How predictable is your traffic?&lt;/strong&gt; Steady traffic suits fixed servers. Large, sudden spikes suit Cloud or Vapor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Do you need a predictable bill?&lt;/strong&gt; Fixed servers are easier to budget for.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Do you have compliance requirements?&lt;/strong&gt; Some contracts specify where data must be stored, or which certifications a provider must hold.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What does your team already know?&lt;/strong&gt; The best platform is often the one your team can run confidently.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For most of the UK businesses we work with, Forge on a well-sized cloud server, with a separate managed database for larger applications, is the best balance of cost, control and simplicity. Laravel Cloud is an increasingly strong choice for teams that never want to think about servers.&lt;/p&gt;
&lt;h2 id=&quot;what-matters-more-than-the-platform&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#what-matters-more-than-the-platform&quot;&gt;&lt;span&gt;What matters more than the platform&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Whichever option you choose, these make the biggest difference to how reliable your application is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Accounts in your name.&lt;/strong&gt; Your hosting, domain, DNS and Git accounts should belong to your company, not your supplier.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Backups that have been restored.&lt;/strong&gt; Test restoring a backup at least every few months.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoring and alerts&lt;/strong&gt; for uptime, errors and disk space.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Patching.&lt;/strong&gt; Operating systems, PHP and dependencies kept up to date.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Staging.&lt;/strong&gt; A copy of production where changes are tested first.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Documentation&lt;/strong&gt;, so someone else can take over if they need to.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;getting-help&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#getting-help&quot;&gt;&lt;span&gt;Getting help&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Our &lt;a href=&quot;https://larasoft.io/infrastructure-management/&quot;&gt;infrastructure planning&lt;/a&gt; service gives you a fixed-price hosting plan with costs, a backup and recovery plan and a migration path, and our managed infrastructure plans look after servers on Forge, Laravel Cloud or AWS each month, with the accounts always in your name.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>How much does custom software cost in the UK?</title>
    <link href="https://larasoft.io/insights/custom-software-cost-uk/"/>
    <id>https://larasoft.io/insights/custom-software-cost-uk/</id>
    <published>2026-10-24T00:00:00Z</published>
    <updated>2026-10-24T00:00:00Z</updated>
    <summary>What drives the cost of bespoke software in the UK, typical budgets for internal tools, portals and SaaS products, and how AI-assisted development changes the numbers.</summary>
    <content type="html">&lt;p&gt;&amp;quot;How much will it cost?&amp;quot; is the first question almost every client asks, and the honest answer is that it depends. That is not very helpful on its own, so this guide explains what it depends on, gives realistic ranges and shows how to keep the cost under control.&lt;/p&gt;
&lt;h2 id=&quot;what-drives-the-cost&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#what-drives-the-cost&quot;&gt;&lt;span&gt;What drives the cost&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Custom software is priced by the time it takes to design, build, test and launch. Four things decide how much time that is.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Scope.&lt;/strong&gt; How many types of user, screens, features and rules the software has. This is by far the biggest factor.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Integrations.&lt;/strong&gt; Each connection to another system, such as payments, accounting, a CRM or an AI model, adds work, and some third-party systems are much easier to work with than others.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Complexity of the rules.&lt;/strong&gt; A booking system with simple time slots is very different from one with resources, discounts, cancellation rules and multiple locations.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Quality expectations.&lt;/strong&gt; Accessibility, performance targets, security reviews, audit trails and high availability are all worth having, and all take time.&lt;/p&gt;
&lt;h2 id=&quot;typical-ranges&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#typical-ranges&quot;&gt;&lt;span&gt;Typical ranges&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;These are rough guides for UK businesses, assuming a competent team and a reasonably clear brief. Your project could be smaller or larger.&lt;/p&gt;
&lt;div class=&quot;table-wrap&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type of project&lt;/th&gt;
&lt;th&gt;Typical scope&lt;/th&gt;
&lt;th&gt;Indicative time&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Internal tool or admin panel&lt;/td&gt;
&lt;td&gt;A few user roles, forms, reports, one or two integrations&lt;/td&gt;
&lt;td&gt;3 to 8 weeks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Customer portal&lt;/td&gt;
&lt;td&gt;Logins, account management, documents, notifications, integration with your systems&lt;/td&gt;
&lt;td&gt;6 to 12 weeks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SaaS product, first release&lt;/td&gt;
&lt;td&gt;Multi-tenant accounts, billing, onboarding, core feature set, admin panel&lt;/td&gt;
&lt;td&gt;8 to 16 weeks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Marketplace or platform&lt;/td&gt;
&lt;td&gt;Several user types, payments between users, reviews, search, mobile app API&lt;/td&gt;
&lt;td&gt;4 to 9 months&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;To turn time into money, multiply by the team&#39;s rate. At Larasoft, that is £20 per hour for engineers and £25 per hour for senior engineers, excluding VAT. Many UK agencies charge several hundred pounds per day or more, so the same weeks of work can cost very different amounts.&lt;/p&gt;
&lt;h2 id=&quot;why-the-cheapest-rate-is-rarely-the-cheapest-project&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#why-the-cheapest-rate-is-rarely-the-cheapest-project&quot;&gt;&lt;span&gt;Why the cheapest rate is rarely the cheapest project&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A low hourly rate does not help if the work takes twice as long, needs redoing or leaves you with code nobody else can maintain. When comparing quotes, look at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Who does the work.&lt;/strong&gt; Ask who will write and review the code, and how experienced they are.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What is included.&lt;/strong&gt; Testing, project management, deployment and documentation are sometimes extra.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Who owns the result.&lt;/strong&gt; You should own the code and every account from day one.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What happens after launch.&lt;/strong&gt; Ask about support, response times and the cost of changes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Our guide on &lt;a href=&quot;https://larasoft.io/insights/how-to-choose-a-laravel-agency/&quot;&gt;how to choose a Laravel agency&lt;/a&gt; has a full list of questions to ask.&lt;/p&gt;
&lt;h2 id=&quot;how-ai-changes-the-numbers&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#how-ai-changes-the-numbers&quot;&gt;&lt;span&gt;How AI changes the numbers&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;AI coding tools have genuinely changed the economics of software. Experienced teams using them well can deliver the same scope in less time, especially the repetitive parts: forms, admin screens, tests, integrations with well-documented APIs and documentation.&lt;/p&gt;
&lt;p&gt;What AI has not changed is the need for judgement. Someone still has to design the system, decide what to build, check that the code is secure and correct, and take responsibility for it. Projects that skip that step tend to cost more later, often in a &lt;a href=&quot;https://larasoft.io/laravel-development/laravel-rescue/&quot;&gt;rescue&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;That is why we pair AI-assisted delivery with senior review on every change. It is how we keep our rates low without passing risk on to clients.&lt;/p&gt;
&lt;h2 id=&quot;how-to-keep-the-cost-down&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#how-to-keep-the-cost-down&quot;&gt;&lt;span&gt;How to keep the cost down&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Build less first.&lt;/strong&gt; Launch the smallest version that is genuinely useful, then add features based on what users actually do. This is the single most effective way to save money.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use what exists.&lt;/strong&gt; Well-maintained packages and services for login, payments, email and admin panels are cheaper than building your own.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Be clear about rules.&lt;/strong&gt; The more precisely you can describe how things should work, the less time is spent on rework.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Choose fixed prices for well-defined work&lt;/strong&gt; and time-based billing for discovery and changing requirements.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Make decisions quickly.&lt;/strong&gt; Waiting for decisions is one of the hidden costs of any project.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;running-costs-after-launch&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#running-costs-after-launch&quot;&gt;&lt;span&gt;Running costs after launch&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Software needs looking after once it is live. Budget for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hosting&lt;/strong&gt;, which for most business applications is tens to a few hundred pounds a month. See our &lt;a href=&quot;https://larasoft.io/insights/laravel-hosting-forge-cloud-aws/&quot;&gt;hosting comparison&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Third-party services&lt;/strong&gt;, such as email sending, error tracking, payments and any AI usage.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Maintenance&lt;/strong&gt;, to keep the framework, packages and servers up to date and secure. Our &lt;a href=&quot;https://larasoft.io/laravel-development/laravel-support-maintenance/&quot;&gt;support plans&lt;/a&gt; start at £200 per month.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Improvements&lt;/strong&gt;, because once people use the software, they will have ideas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;getting-an-accurate-figure&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#getting-an-accurate-figure&quot;&gt;&lt;span&gt;Getting an accurate figure&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The fastest way to an accurate number is a short conversation about what you need. Book a free call and we will give you either a fixed price or an estimate range for each milestone, with the assumptions written down. See our &lt;a href=&quot;https://larasoft.io/bespoke-software-development/&quot;&gt;bespoke software development&lt;/a&gt; service and our &lt;a href=&quot;https://larasoft.io/pricing/&quot;&gt;pricing&lt;/a&gt; for more.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>How to choose a Laravel development agency</title>
    <link href="https://larasoft.io/insights/how-to-choose-a-laravel-agency/"/>
    <id>https://larasoft.io/insights/how-to-choose-a-laravel-agency/</id>
    <published>2026-10-24T00:00:00Z</published>
    <updated>2026-10-24T00:00:00Z</updated>
    <summary>What to look for in a Laravel development agency, the questions to ask before you sign, and the warning signs that a supplier is the wrong fit.</summary>
    <content type="html">&lt;p&gt;Choosing a development partner is one of the most important decisions you will make about your software. A good one can save you months and a lot of money. A poor one can leave you with a codebase that has to be rescued, or rewritten.&lt;/p&gt;
&lt;p&gt;This guide covers what to look for in a Laravel agency, the questions to ask and the warning signs to watch for. We are a Laravel agency ourselves, so we have tried to keep it fair: these are the questions we would want a client to ask us.&lt;/p&gt;
&lt;h2 id=&quot;start-with-specialism&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#start-with-specialism&quot;&gt;&lt;span&gt;Start with specialism&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Laravel is a large ecosystem, with its own tools for queues, payments, admin panels, testing and deployment. An agency that works with Laravel every day will know the right tool for each job, and the pitfalls of each.&lt;/p&gt;
&lt;p&gt;Look for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A clear focus on Laravel and PHP&lt;/strong&gt;, rather than Laravel as one of twenty listed technologies.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Case studies&lt;/strong&gt; with real Laravel applications, ideally ones you can visit.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Evidence of community involvement&lt;/strong&gt;, such as open-source packages, talks or writing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Certifications&lt;/strong&gt;, such as the Laravel Certified company programme, as one signal among several.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;questions-to-ask-before-you-sign&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#questions-to-ask-before-you-sign&quot;&gt;&lt;span&gt;Questions to ask before you sign&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;about-the-people&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#about-the-people&quot;&gt;&lt;span&gt;About the people&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Who will write the code, and who will review it?&lt;/strong&gt; Ask for names and experience, not just &amp;quot;our team&amp;quot;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Will the same people work on my project throughout?&lt;/strong&gt; Constant changes of developer slow projects down.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How do you use AI coding tools?&lt;/strong&gt; Every serious agency uses them now. The important part is how changes are checked before they ship.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;about-the-work&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#about-the-work&quot;&gt;&lt;span&gt;About the work&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ol start=&quot;4&quot;&gt;
&lt;li&gt;&lt;strong&gt;How do you handle testing?&lt;/strong&gt; Expect automated tests for the important features, not just manual checking.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How will I see progress?&lt;/strong&gt; Look for regular releases to a staging site you can try yourself.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How do you estimate?&lt;/strong&gt; Good agencies explain their assumptions and break the work into milestones.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What happens when requirements change?&lt;/strong&gt; They will. Ask how changes are priced and agreed.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;about-ownership&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#about-ownership&quot;&gt;&lt;span&gt;About ownership&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ol start=&quot;8&quot;&gt;
&lt;li&gt;&lt;strong&gt;Who owns the code?&lt;/strong&gt; The answer should be you, from the first commit.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Whose name are the accounts in?&lt;/strong&gt; Hosting, domain, Git repository, payment and email accounts should all belong to your company.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Could another developer take over?&lt;/strong&gt; Ask about documentation and coding standards.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;about-support&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#about-support&quot;&gt;&lt;span&gt;About support&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ol start=&quot;11&quot;&gt;
&lt;li&gt;&lt;strong&gt;What happens after launch?&lt;/strong&gt; Ask about support plans, response times and the cost of small changes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How do you handle security updates?&lt;/strong&gt; Laravel and its packages need regular patching.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What would you do if our project was in trouble?&lt;/strong&gt; A good partner tells you early and honestly.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;about-fit&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#about-fit&quot;&gt;&lt;span&gt;About fit&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ol start=&quot;14&quot;&gt;
&lt;li&gt;&lt;strong&gt;What projects like ours have you done?&lt;/strong&gt; Similar size, sector or technical challenge.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Can I speak to a client?&lt;/strong&gt; References from current clients are more useful than logos on a website.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;warning-signs&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#warning-signs&quot;&gt;&lt;span&gt;Warning signs&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Very low prices without explanation.&lt;/strong&gt; Ask what is excluded and who does the work.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reluctance to give you access&lt;/strong&gt; to the code or hosting during the project.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No staging environment&lt;/strong&gt;, or no way for you to try features before launch.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vague answers about testing and security.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pressure to sign a long contract&lt;/strong&gt; before any work has been delivered.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A recommendation to rebuild everything&lt;/strong&gt; before anyone has properly reviewed your existing code.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;start-small&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#start-small&quot;&gt;&lt;span&gt;Start small&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The best way to judge a supplier is to work with them on something small and paid. A &lt;a href=&quot;https://larasoft.io/laravel-development/laravel-code-review/&quot;&gt;code review&lt;/a&gt;, a short discovery phase or a single well-defined feature will tell you more about their communication, quality and honesty than any sales call.&lt;/p&gt;
&lt;h2 id=&quot;how-we-answer-these-questions&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#how-we-answer-these-questions&quot;&gt;&lt;span&gt;How we answer these questions&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We publish our &lt;a href=&quot;https://larasoft.io/pricing/&quot;&gt;prices&lt;/a&gt;, explain &lt;a href=&quot;https://larasoft.io/about/how-we-work/&quot;&gt;how we work&lt;/a&gt; and show our &lt;a href=&quot;https://larasoft.io/work/&quot;&gt;case studies&lt;/a&gt;. Every change we deliver is reviewed by a senior engineer, you own the code and accounts from day one, and our fixed-price reviews are a low-risk way to see how we work. If you are comparing agencies, book a free call and ask us anything on this list.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>What is Laravel? A guide for business owners</title>
    <link href="https://larasoft.io/insights/what-is-laravel/"/>
    <id>https://larasoft.io/insights/what-is-laravel/</id>
    <published>2026-10-24T00:00:00Z</published>
    <updated>2026-10-24T00:00:00Z</updated>
    <summary>What Laravel is, what it is used for, why so many businesses build on it and what to consider before choosing it for your next web application.</summary>
    <content type="html">&lt;p&gt;If you have been talking to developers about a new web application, there is a good chance someone has mentioned Laravel. This guide explains what it is, why it is so popular and what it means for your business if your software is built on it.&lt;/p&gt;
&lt;h2 id=&quot;laravel-in-one-paragraph&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#laravel-in-one-paragraph&quot;&gt;&lt;span&gt;Laravel in one paragraph&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Laravel is a free, open-source framework for building web applications with PHP, one of the most widely used programming languages on the web. It was created by Taylor Otwell in 2011 and is now maintained by a company, Laravel, alongside a very large community of contributors. A framework is a set of ready-made building blocks and conventions that developers use, so they do not have to solve the same common problems from scratch on every project.&lt;/p&gt;
&lt;h2 id=&quot;what-laravel-is-used-for&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#what-laravel-is-used-for&quot;&gt;&lt;span&gt;What Laravel is used for&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Laravel is used to build almost any kind of web software:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SaaS products&lt;/strong&gt;, such as subscription software for businesses or consumers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Customer portals&lt;/strong&gt; and member areas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Marketplaces&lt;/strong&gt; and booking platforms.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Internal tools&lt;/strong&gt;, CRMs and admin systems.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;APIs&lt;/strong&gt; that power mobile apps and connect systems together.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ecommerce&lt;/strong&gt; with custom rules that standard shop platforms cannot handle.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Our &lt;a href=&quot;https://larasoft.io/work/&quot;&gt;case studies&lt;/a&gt; include a security operations platform, a travel review app for airline crew, a digital credentials platform and a self-updating film and TV database, all built on Laravel.&lt;/p&gt;
&lt;h2 id=&quot;why-businesses-choose-laravel&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#why-businesses-choose-laravel&quot;&gt;&lt;span&gt;Why businesses choose Laravel&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;It is quicker to build with.&lt;/strong&gt; Laravel includes well-tested building blocks for logins, password resets, email, file storage, scheduled tasks, background jobs and subscription billing. That means more of your budget goes on the features that make your product different.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It is secure by default.&lt;/strong&gt; Laravel protects against many common attacks out of the box, such as cross-site request forgery and SQL injection, and the team releases security fixes for each version for two years.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It is easy to find developers.&lt;/strong&gt; Laravel is among the most popular frameworks in the world, so you are never stuck looking for rare skills, and you are never tied to a single supplier.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It has a complete ecosystem.&lt;/strong&gt; First-party tools cover hosting and deployment (&lt;a href=&quot;https://forge.laravel.com/&quot; rel=&quot;noopener&quot;&gt;Laravel Forge&lt;/a&gt; and &lt;a href=&quot;https://cloud.laravel.com/&quot; rel=&quot;noopener&quot;&gt;Laravel Cloud&lt;/a&gt;), admin panels, testing, real-time features and more, all designed to work together.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It keeps moving.&lt;/strong&gt; A new major version is released every year, with a predictable support policy. Laravel 13, released in March 2026, added first-party tools for building AI features.&lt;/p&gt;
&lt;h2 id=&quot;what-to-consider&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#what-to-consider&quot;&gt;&lt;span&gt;What to consider&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;No technology is perfect for everything. Before choosing Laravel, consider:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Upgrades.&lt;/strong&gt; Each major version is supported for two years, so plan to upgrade regularly. It is cheap when done routinely, and expensive when left for years. See our &lt;a href=&quot;https://larasoft.io/resources/laravel-version-support/&quot;&gt;version support tracker&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Simple websites.&lt;/strong&gt; For a brochure site or blog that marketing staff edit, a content management system or a static site may be simpler. Our comparison of &lt;a href=&quot;https://larasoft.io/resources/laravel-vs-wordpress/&quot;&gt;Laravel and WordPress&lt;/a&gt; covers this.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quality varies.&lt;/strong&gt; Laravel makes good software easier to build, but it does not guarantee it. The experience of the team matters more than the framework.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;laravel-and-ai&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#laravel-and-ai&quot;&gt;&lt;span&gt;Laravel and AI&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;AI coding tools work particularly well with Laravel. Its strong conventions and excellent documentation mean AI agents can produce consistent code, as long as experienced engineers set the structure and review the results. That combination is how we build: see our &lt;a href=&quot;https://larasoft.io/ai-driven-development/&quot;&gt;AI-driven development&lt;/a&gt; service.&lt;/p&gt;
&lt;h2 id=&quot;next-steps&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;header-anchor&quot; href=&quot;#next-steps&quot;&gt;&lt;span&gt;Next steps&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If you are deciding whether Laravel is right for your project, or you have inherited a Laravel application and want to know what state it is in, we are happy to help. See our &lt;a href=&quot;https://larasoft.io/laravel-development/&quot;&gt;Laravel development&lt;/a&gt; services or book a free call.&lt;/p&gt;
</content>
  </entry>
</feed>
