<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Notes on Laravel</title><description>Notes, tutorials, and practical tips on building with Laravel.</description><link>https://notesonlaravel.com/</link><item><title>How a 6KB Column Was Slowing Down Every Page in My Laravel App</title><link>https://notesonlaravel.com/excluding-large-columns-laravel/</link><guid isPermaLink="true">https://notesonlaravel.com/excluding-large-columns-laravel/</guid><description>Every page in Growth Method was loading 6KB of invisible vector data per campaign. Here&apos;s how I found the problem, the three options I evaluated, and the ten-line global scope that fixed it.</description><pubDate>Thu, 09 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Adding User Impersonation to Laravel (The Right Way)</title><link>https://notesonlaravel.com/laravel-impersonate-users/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-impersonate-users/</guid><description>I removed my is_admin column two weeks ago. Now I need to log in as users again. Here&apos;s how I added impersonation to Growth Method without reintroducing the super admin concept I&apos;d just deleted.</description><pubDate>Thu, 09 Apr 2026 00:00:00 GMT</pubDate></item><item><title>When Your Laravel App Needs Both MCP and API Access</title><link>https://notesonlaravel.com/mcp-and-api-integration-laravel/</link><guid isPermaLink="true">https://notesonlaravel.com/mcp-and-api-integration-laravel/</guid><description>MCP servers are great for AI chat, but sometimes you need the underlying API too. How we handle both in Growth Method using a driver pattern — one credential, two access strategies.</description><pubDate>Thu, 09 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Removing Spatie Permissions for a Single Laravel Gate</title><link>https://notesonlaravel.com/removing-spatie-permissions/</link><guid isPermaLink="true">https://notesonlaravel.com/removing-spatie-permissions/</guid><description>How I removed spatie/laravel-permission from Growth Method, replaced it with a single Gate and a team_user pivot, and shipped the change in three safe phases. Net result: 295 fewer lines of code and one rule instead of five tables.</description><pubDate>Wed, 08 Apr 2026 00:00:00 GMT</pubDate></item><item><title>The Axios Supply Chain Attack: What Laravel Developers Need to Know</title><link>https://notesonlaravel.com/axios-supply-chain-attack/</link><guid isPermaLink="true">https://notesonlaravel.com/axios-supply-chain-attack/</guid><description>A compromised npm account turned Axios into a RAT dropper for 3.5 hours. Here&apos;s what happened, why AI coding agents make supply chain attacks worse, and 10 protections every Laravel project should have.</description><pubDate>Tue, 31 Mar 2026 00:00:00 GMT</pubDate></item><item><title>I Just Tried the New laravel-best-practices Skill</title><link>https://notesonlaravel.com/laravel-boost-best-practices-audit/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-boost-best-practices-audit/</guid><description>Laravel Boost shipped a new laravel-best-practices skill that checks your code against 100+ rules. I ran it against Growth Method and fixed 7 priorities -- security, performance, queues, and more. Here&apos;s the full breakdown.</description><pubDate>Wed, 25 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Turning a REST API into AI Tools in Laravel</title><link>https://notesonlaravel.com/rest-api-to-ai-tools-laravel/</link><guid isPermaLink="true">https://notesonlaravel.com/rest-api-to-ai-tools-laravel/</guid><description>How to wrap any REST API — like Google Search Console — as AI tools in Laravel, without needing an MCP server. Covers OAuth, a service wrapper, tool classes, and wiring it all together.</description><pubDate>Wed, 25 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Your (Flux UI) Rich Text Editor (Probably) Shouldn&apos;t Have a Scrollbar</title><link>https://notesonlaravel.com/flux-editor-scrollbar/</link><guid isPermaLink="true">https://notesonlaravel.com/flux-editor-scrollbar/</guid><description>The Flux editor defaults to a 500px max height, creating nested scrollbars on full-page forms. Here&apos;s how to fix it, why context matters, and what the industry standard actually is.</description><pubDate>Tue, 24 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Building a Reusable AI Chat Component with the Laravel AI SDK and Livewire Streaming</title><link>https://notesonlaravel.com/reusable-ai-chat-component/</link><guid isPermaLink="true">https://notesonlaravel.com/reusable-ai-chat-component/</guid><description>How we built one generic Livewire chat component that works with any AI agent — streaming responses, MCP tool support, and per-team security boundaries — using the Laravel AI SDK.</description><pubDate>Tue, 24 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Pulse vs Filament vs Nova: Choosing the Right Laravel Admin Panel</title><link>https://notesonlaravel.com/laravel-pulse-admin-dashboard/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-pulse-admin-dashboard/</guid><description>Two days after removing Laravel Pulse, I reinstalled it to build an admin dashboard for Growth Method. Here&apos;s how I chose Pulse over Filament and Nova, built four custom cards, and fixed a nasty serialization bug in Laravel 13.</description><pubDate>Mon, 23 Mar 2026 00:00:00 GMT</pubDate></item><item><title>An Introduction to the Laravel Scheduler</title><link>https://notesonlaravel.com/laravel-scheduler/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-scheduler/</guid><description>How the Laravel Scheduler works, the three automated tasks we run at Growth Method, whether a per-minute cron job is wasteful, and the production safeguards every app should use.</description><pubDate>Mon, 23 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Do You Actually Need a Super Admin?</title><link>https://notesonlaravel.com/laravel-super-admin/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-super-admin/</guid><description>I spent two years with an is_admin flag in my users table before asking whether I needed it at all. Here&apos;s the decision framework that led to removing it entirely.</description><pubDate>Mon, 23 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Implementing Semantic Search with the Laravel AI SDK</title><link>https://notesonlaravel.com/semantic-search-laravel-ai-sdk/</link><guid isPermaLink="true">https://notesonlaravel.com/semantic-search-laravel-ai-sdk/</guid><description>How we replaced Algolia with pgvector semantic search in our Laravel app — saving money, removing a dependency, and getting better results.</description><pubDate>Mon, 23 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Why I Replaced Laravel Horizon with a Forge Queue Worker</title><link>https://notesonlaravel.com/laravel-horizon-forge-queue/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-horizon-forge-queue/</guid><description>Laravel Horizon was overkill for my app. Here&apos;s why I replaced it with a simple Forge queue worker, what the Laravel community says about it, and a gotcha with retry_after that could cause duplicate jobs.</description><pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Migrating from MySQL to PostgreSQL on Laravel Forge</title><link>https://notesonlaravel.com/laravel-mysql-to-postgres-migration/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-mysql-to-postgres-migration/</guid><description>I migrated a production Laravel app from MySQL to PostgreSQL on Laravel Forge. Here&apos;s the full process — provisioning, data migration with pgloader, the gotchas that broke things, and how to roll back safely.</description><pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate></item><item><title>I Tried Laravel Shift&apos;s Test Generator</title><link>https://notesonlaravel.com/laravel-shift-test-generator/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-shift-test-generator/</guid><description>What happened when I ran Laravel Shift&apos;s Test Generator on a Laravel 13 codebase with Pest 4. What it generated, what broke, and what was actually useful.</description><pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Why I Removed Laravel Pulse (and You Might Not Need It Either)</title><link>https://notesonlaravel.com/removing-laravel-pulse/</link><guid isPermaLink="true">https://notesonlaravel.com/removing-laravel-pulse/</guid><description>I had Laravel Pulse running in production for over a year alongside Sentry. Here&apos;s why I removed it, how the two tools differ, and the step-by-step process for cleanly uninstalling Pulse from a Laravel app.</description><pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Replacing a Custom Notification System with Flux::toast()</title><link>https://notesonlaravel.com/migrating-to-flux-toast/</link><guid isPermaLink="true">https://notesonlaravel.com/migrating-to-flux-toast/</guid><description>How I replaced a hand-rolled Alpine.js notification system across 17 files with Flux&apos;s built-in toast component. Fewer files, less custom code, and better conventions.</description><pubDate>Fri, 20 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Updating My Codebase to Follow the Laravel Way</title><link>https://notesonlaravel.com/the-laravel-way/</link><guid isPermaLink="true">https://notesonlaravel.com/the-laravel-way/</guid><description>I audited my Laravel app against the conventions that Laravel Shift checks for and fixed everything that mattered -- return types, environment checks, stale code. Here&apos;s what I changed, what I skipped, and why.</description><pubDate>Fri, 20 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Upgrading to Laravel 13 with Laravel Shift &amp; Laravel Boost</title><link>https://notesonlaravel.com/upgrading-to-laravel-13/</link><guid isPermaLink="true">https://notesonlaravel.com/upgrading-to-laravel-13/</guid><description>How I used Laravel Shift and Laravel Boost (via Claude Code) together to upgrade a production app to Laravel 13 — and why using both gave me the best of both worlds.</description><pubDate>Fri, 20 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Backups Are the Most Important Thing You&apos;re Not Doing</title><link>https://notesonlaravel.com/laravel-backups/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-backups/</guid><description>AI agents can delete your database, wipe your files, and destroy months of work in seconds. Here&apos;s why backups matter more than ever for agentic engineers, and how to set them up with Laravel and Backblaze.</description><pubDate>Fri, 13 Mar 2026 00:00:00 GMT</pubDate></item><item><title>The Laravel Skills Directory — And Why It Matters for Agentic Engineers</title><link>https://notesonlaravel.com/laravel-skills-directory/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-skills-directory/</guid><description>Laravel launched a community-powered Skills Directory at skills.laravel.cloud — an open collection of reusable AI agent skills for Laravel and PHP. Here&apos;s why it matters, especially if you&apos;re building with AI agents and can&apos;t write a line of PHP.</description><pubDate>Fri, 13 Mar 2026 00:00:00 GMT</pubDate></item><item><title>What Would Taylor Otwell Do?</title><link>https://notesonlaravel.com/laravel-what-would-taylor-otwell-do/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-what-would-taylor-otwell-do/</guid><description>WWTD — What Would Taylor Do? — is a five-word prompt that changed how I learn Laravel. After using it in 49 coding sessions, here&apos;s why it works, seven real examples, and how it evolved from a one-off question into a reusable AI skill.</description><pubDate>Tue, 10 Mar 2026 00:00:00 GMT</pubDate></item><item><title>YAGNI: The Most Useful Word I Learned Building a Laravel App</title><link>https://notesonlaravel.com/laravel-yagni/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-yagni/</guid><description>Real examples of applying YAGNI (You Aren&apos;t Gonna Need It) while building a Laravel SaaS app with an AI coding agent. From polymorphic relationships to vector databases, the simplest solution almost always wins.</description><pubDate>Mon, 09 Mar 2026 00:00:00 GMT</pubDate></item><item><title>I&apos;m Not a Developer. I&apos;m an Agentic Engineer.</title><link>https://notesonlaravel.com/agentic-engineering/</link><guid isPermaLink="true">https://notesonlaravel.com/agentic-engineering/</guid><description>Agentic engineering is a new discipline — not vibe coding, not traditional development. It&apos;s directing AI agents to build real software with intent, oversight, and taste. Here&apos;s what it means and why it matters.</description><pubDate>Sun, 08 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Why Foreign Key Cascades Don&apos;t Work With Soft Deletes (And What To Do Instead)</title><link>https://notesonlaravel.com/laravel-fk-cascade-soft-deletes/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-fk-cascade-soft-deletes/</guid><description>Foreign key cascadeOnDelete looks like the perfect cleanup solution — until you use soft deletes. Here&apos;s why it silently fails, three ways to fix it, and what Taylor Otwell recommends.</description><pubDate>Sun, 08 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Why Laravel Uses a Separate Testing Database (And How It Works)</title><link>https://notesonlaravel.com/laravel-testing-database/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-testing-database/</guid><description>Why every Laravel test failed with &quot;Unknown database &apos;testing&apos;&quot;, what the testing database actually does, and how LazilyRefreshDatabase keeps your real data safe.</description><pubDate>Sun, 08 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Everything Announced at Laracon EU 2026 (and What It Means for Non-Developers)</title><link>https://notesonlaravel.com/laracon-eu-2026/</link><guid isPermaLink="true">https://notesonlaravel.com/laracon-eu-2026/</guid><description>The biggest announcements from Laracon EU 2026 in Amsterdam — Laravel 13, passkeys, the AI SDK going stable, NativePHP going free, and more — filtered through what actually matters if you&apos;re building with Laravel but don&apos;t write code.</description><pubDate>Sat, 07 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Migrating from PrismPHP to the Laravel AI SDK</title><link>https://notesonlaravel.com/laravel-ai-sdk-migration/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-ai-sdk-migration/</guid><description>Migrating from PrismPHP to Laravel&apos;s official AI SDK broke two agents silently. Here&apos;s what went wrong with temperature support, strict mode schemas, and error handling — and how to fix each one.</description><pubDate>Fri, 06 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Choosing MySQL vs PostgreSQL for Your Laravel Application</title><link>https://notesonlaravel.com/laravel-mysql-vs-postgresql/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-mysql-vs-postgresql/</guid><description>I migrated my production Laravel app from MySQL to PostgreSQL. Here&apos;s what changed in the code — DATEDIFF to Carbon, FIELD() to a reusable scope, LIKE to whereLike — plus what the Laravel community thinks and what Taylor Otwell would do.</description><pubDate>Fri, 06 Mar 2026 00:00:00 GMT</pubDate></item><item><title>I Asked AI to Audit My Laravel App&apos;s Security. It Found 4 Things I&apos;d Never Have Caught.</title><link>https://notesonlaravel.com/laravel-security-audit/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-security-audit/</guid><description>A real security audit of a Laravel app found IDOR vulnerabilities in Livewire components, XSS through strip_tags(), mass assignment with $guarded = [], and predictable share tokens. Here&apos;s what was wrong and how I fixed each one.</description><pubDate>Fri, 06 Mar 2026 00:00:00 GMT</pubDate></item><item><title>My Signup Flow Silently Failed and Nobody Told Me</title><link>https://notesonlaravel.com/laravel-signup-silent-failure/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-signup-silent-failure/</guid><description>A user clicked Create Account and nothing happened. Three bugs were hiding behind that one symptom — hardcoded database IDs, a synchronous email that timed out, and a validation error on the wrong step.</description><pubDate>Fri, 06 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Everything That Went Wrong When I Tried to Delete a Team</title><link>https://notesonlaravel.com/laravel-team-deletion/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-team-deletion/</guid><description>Deleting a team in a multi-tenant Laravel app broke transactions, orphaned pivot rows, and wiped user data across teams. Here are the five things that went wrong and how I fixed them.</description><pubDate>Fri, 06 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Why My Livewire AI Chat Flashed Raw Markdown Before Rendering</title><link>https://notesonlaravel.com/livewire-streaming-markdown/</link><guid isPermaLink="true">https://notesonlaravel.com/livewire-streaming-markdown/</guid><description>Streaming AI responses in Livewire caused a flash of raw markdown (**bold text**) before the HTML rendered. The fix was moving markdown conversion server-side and removing a 5-step client-side pipeline.</description><pubDate>Fri, 06 Mar 2026 00:00:00 GMT</pubDate></item><item><title>I Can&apos;t Write a Single Line of PHP. Here&apos;s What I Can Do.</title><link>https://notesonlaravel.com/laravel-cant-write-php/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-cant-write-php/</guid><description>I literally cannot write a line of PHP from memory. But I&apos;ve shipped a full Laravel SaaS, fixed N+1 queries, handled security reports, and made 120+ commits in two months. Code is no longer the bottleneck.</description><pubDate>Thu, 05 Mar 2026 00:00:00 GMT</pubDate></item><item><title>I Asked AI to Audit My Page Speed. It Found 9 Issues.</title><link>https://notesonlaravel.com/laravel-performance/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-performance/</guid><description>One question to Claude Code — &quot;is there anything obvious that could be having a negative impact on performance?&quot; — turned up 9 issues on a single page. Here&apos;s what it found and why each one matters.</description><pubDate>Sat, 28 Feb 2026 00:00:00 GMT</pubDate></item><item><title>I Switched WYSIWYG Editors and All My Images Disappeared</title><link>https://notesonlaravel.com/laravel-wysiwyg-migration/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-wysiwyg-migration/</guid><description>Switching from Froala to TipTap broke every image in our app. Here&apos;s how we cleaned the legacy HTML — and the Laravel migration bug that silently skipped half our records.</description><pubDate>Sat, 28 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Your Laravel App Is Shipping JavaScript Nobody Uses</title><link>https://notesonlaravel.com/laravel-dead-javascript/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-dead-javascript/</guid><description>A performance audit found three JavaScript libraries shipping on every page that nothing in the app actually used. Removing them cut the bundle by 28%.</description><pubDate>Wed, 25 Feb 2026 00:00:00 GMT</pubDate></item><item><title>What the Heck Is Blaze and Why Do I Need It?</title><link>https://notesonlaravel.com/laravel-blaze/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-blaze/</guid><description>Laravel Blaze makes your Blade components render up to 97% faster with zero code changes. A plain-English guide for non-traditional developers to the optimized compiler, memoization, and code folding — and why Flux + Blaze is the easiest performance win you&apos;ll ever get.</description><pubDate>Tue, 24 Feb 2026 12:00:00 GMT</pubDate></item><item><title>Why Laravel Is Perfect for Non-Traditional Software Developers</title><link>https://notesonlaravel.com/laravel-non-traditional-developers/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-non-traditional-developers/</guid><description>Laravel&apos;s conventions, curated ecosystem, and readable syntax make it uniquely suited for non-traditional developers building real products with AI. Here&apos;s why.</description><pubDate>Sun, 22 Feb 2026 00:00:00 GMT</pubDate></item><item><title>What Building a Laravel App With AI Actually Taught Me About AI</title><link>https://notesonlaravel.com/laravel-ai-lessons/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-ai-lessons/</guid><description>Five things I learned about AI by building a real Laravel app with Claude Code. Not from reading articles — from doing the work and getting it wrong.</description><pubDate>Fri, 13 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Why Flux UI Ignored My Date Format (And How I Fixed It)</title><link>https://notesonlaravel.com/laravel-flux-chart-dates/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-flux-chart-dates/</guid><description>When Flux UI&apos;s chart format prop silently does nothing, the fix is to format your data in PHP instead. Three attempts, one lesson.</description><pubDate>Wed, 11 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Why My Flux UI Checkbox Didn&apos;t Work (And When to Use Native HTML Instead)</title><link>https://notesonlaravel.com/laravel-flux-checkbox/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-flux-checkbox/</guid><description>Flux UI&apos;s checkbox component silently does nothing in traditional HTML forms. Here&apos;s why, and when you need native HTML instead.</description><pubDate>Wed, 11 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Git for Non-Developers: You Don&apos;t Need to Learn the Commands</title><link>https://notesonlaravel.com/laravel-git/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-git/</guid><description>You don&apos;t need to memorise git commands to ship Laravel code. Here&apos;s how I learned git by asking an AI assistant to walk me through it — and how it eventually just handled it for me.</description><pubDate>Wed, 11 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Fixing Common Local Dev Errors When You First Pull a Laravel Project</title><link>https://notesonlaravel.com/laravel-local-dev-errors/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-local-dev-errors/</guid><description>A practical guide to fixing the most common errors you&apos;ll hit when pulling a Laravel project locally for the first time — S3, Algolia, Livewire, and more.</description><pubDate>Wed, 11 Feb 2026 00:00:00 GMT</pubDate></item><item><title>How Laravel Migrations Work (And Why You Don&apos;t Touch the Database Directly)</title><link>https://notesonlaravel.com/laravel-migrations/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-migrations/</guid><description>A plain-language explanation of Laravel migrations for non-developers. What they are, why they exist, and how they work in practice — with a real example from changing a campaign duration setting.</description><pubDate>Wed, 11 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Three Bugs Hiding Behind One Production Error</title><link>https://notesonlaravel.com/laravel-production-debugging/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-production-debugging/</guid><description>A single 500 error on my idea edit page turned out to be three separate bugs stacked on top of each other. Here&apos;s how I found and fixed each one.</description><pubDate>Wed, 11 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Why updateOrCreate With a Null ID Always Creates Duplicates</title><link>https://notesonlaravel.com/laravel-updateorcreate/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-updateorcreate/</guid><description>Laravel&apos;s updateOrCreate silently creates duplicates when passed a null ID. Here&apos;s why SQL id = NULL never matches, and the simple guard to fix it.</description><pubDate>Wed, 11 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Small UX Fixes That Make Your Laravel App Feel More Polished</title><link>https://notesonlaravel.com/laravel-ux-polish/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-ux-polish/</guid><description>A collection of small but meaningful UX improvements for Laravel apps — external link indicators, preventing layout shift, and more. Real examples from building a Livewire app.</description><pubDate>Wed, 11 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Preventing Visual Shift in Your Laravel App</title><link>https://notesonlaravel.com/laravel-visual-shift/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-visual-shift/</guid><description>Three types of visual shift that make your Laravel app feel janky, and the patterns to fix each one. Conditional UI, loading states, and modal content.</description><pubDate>Wed, 11 Feb 2026 00:00:00 GMT</pubDate></item><item><title>How to Handle a Spam Vulnerability Report (And What to Actually Fix)</title><link>https://notesonlaravel.com/laravel-vulnerability-reports/</link><guid isPermaLink="true">https://notesonlaravel.com/laravel-vulnerability-reports/</guid><description>I received a scary-sounding security vulnerability report about my Laravel app. It was mostly spam — but it highlighted two real gaps worth fixing.</description><pubDate>Wed, 11 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Livewire Components vs Blade: A Non-Developer&apos;s Guide to Making the Right Choice in Laravel</title><link>https://notesonlaravel.com/livewire-vs-blade/</link><guid isPermaLink="true">https://notesonlaravel.com/livewire-vs-blade/</guid><description>When should you use a Livewire component and when should you use Blade? A practical guide for non-developers building with Laravel, with real code examples and quotes from Taylor Otwell.</description><pubDate>Tue, 10 Feb 2026 22:00:00 GMT</pubDate></item></channel></rss>