Latest post
Run seeders from migrations
Manually running seeders on a production server is error-prone and can cause downtime if it goes wrong. Seed data from migrations to stay in the deployment pipeline without manual intervention.
Latest post
Manually running seeders on a production server is error-prone and can cause downtime if it goes wrong. Seed data from migrations to stay in the deployment pipeline without manual intervention.
Native HTML/CSS features like dialog, the Popover API, CSS Anchor Positioning, and customizable selects are catching up to what libraries like shadcn and Radix provide. Here's what changed, what's possible now, and how it might reshape how we build frontend components at Spatie.
With multiple large, long-running Inertia apps in production we know what we like, don't like, and what works. It’s time to formalize our thoughts and decisions as we’re starting new projects and onboarding a few developers this year.
Where possible, we try to stick with the popular choice for our tools. There's a lot of value in sticking to defaults. We only stray away from them when we have a really good reason. In the case of Laravel (and Inertia), the popular choice would be Vue, but we've landed on React. Why? Story time!
Need to handle image uploads in your Laravel app? In this post, we start with the basics and level up step-by-step—from a simple form upload to full-blown image handling with resizing, optimization, and a slick drag & drop UI. Whether you're building something quick or scaling up, there’s a Spatie package (or two) that can help you out.
Passkeys are very convenient for users to log in: they don’t have to type in an email/password, you aren’t redirected to a third party for authentication, and it’s fast.
We've made a new package that makes it easy to let your users authenticate to your app with passkeys.
We've been building Laravel applications with Livewire and Inertia for over 5 years. If you held an individual Spatie employee at gunpoint (please don't) and forced them to pick a favorite, you'll get a 50/50 split. It's like choosing between chocolate or vanilla ice cream: there's no objective winner (except vanilla). But when we look at the choice at hand as a team, it becomes easier to determine the right fit.
We just tagged & released a new major version of spatie/laravel-csp, a package to manage your Laravel app's content security policy. The development goal for version 3 was to reduce the boilerplate of configuring a policy for common services like Google Tag Manager, Fathom Analytics, Adobe Fonts… In addition, we've made it easier to add your own directives through your configuration file, without writing additional code.
A large, legacy codebase can't be overhauled in one take. An undertaking of that magnitude is risky and can hinder progress on features users are waiting for now. On the other hand, we want to avoid a never-ending race by coupling new features to legacy components. Configuring import aliases can make the distinction of "legacy, to be removed" or not explicit.