Looking for the TOP 10 Most Essential Laravel Nova Packages? Click here!
Laravel is a well known PHP Framework, super popular, with thousands of extraordinary features.
Each year, Taylor Otwell (the creator of Laravel) releases new tools and packages to help you extend your existing Laravel Application. The community arround the frameworks works hard every day to release awesome packages to boost Laravel Applications. Let's honor them here by dressing a list of the most essential packages!
I'm going to completely exclude the official Laravel Packages from this list, so we can focus on what Laravel does not provide officially, and packages that are included by default in the framework (eg. Carbon).
The goal is to list packages that could be implemented in almost any Laravel app. Lot of package solve very specific problems. Here are some package that almost anyone could use, and solve frequent problems:
And we obviously start with a package from Spatie! 😄This first one allows you to store multiple translations of a same Model. Meaning a same database record can have multiple translations, that will be automatically fetched according to the Laravel App Locale. If you're looking to use this package, I recommend reading my in depth tutorial.
Markdown is becoming the new MUST in term of content management, replacing more and more classic wysiwyg that often provide a lot of errors. This helpful package by Graham Campbell allow you to easily transform markdown into HTML in your views. I'm using it in almost all my projects!
Currently the best solution to generate PDF file from a simple blade view. As simple as that! Works like a charm.
I don't want to do any advertising here, but I must admit, I use Sentry in almost all my projects. It simply reports all errors that happen on my website and send me an email with all the details about the error. It releives the furstration of not knowing if one of your user encountered a bug in your system, and not knowing how to solve it. Many other services do the same thing, but Sentry is clean and has a very persmissive free tier. I never paid for it although I use it everywhere!
I only discovered this package list a few weeks ago and it blew my mind! You're all well aware of the super handy Laravel native Notifications feature, that support a few channels out of the box. Now this collection of packages extends the notification feature by supporting SO MUCH CHANNELS like twitter, telegram, discord, and a lot more.
A little self-promotion won't hurt you ;) Laravel Kustomer is a package that provides a feedback popup service on your website!
Stop losing time implementing custom invoicy-stuff when you charge your users. Stripe indeed comes with invoicing for Subscription, but when you do single charges, you're probably looking for a simple way to log an invoice based on a simple charge.
This list can't be legit without some packages from Spatie! Get ready to review some of their package here! Laravel-Sitemap allows you to generate a sitemap file by simply crawling your website. No need to code anything here!
Of course, a sluggable package! Can't live without that... it's very important for your SEO to have clean URLs for your content. This is a "classic"!
For years I've been used to store images of a model into the model's table, either in a varchar or in a JSON column for images collection. I don't know why I didn't switch to Spatie's MediaLibrary sooner. It provides a clean way to store images and files attached to your models. It even allows you to generate thumbnails in the process. Very useful!!
This package is super powerful to manipulate image, add watermark, perform file type conversion, resizing, cropping, etc. The ultimate image manipulation package! Very helpful and powerful.
You're planning to open your website to API calls? Or simply any HTTP call from the outside? Then you'll need the help this package, otherwise Laravel will not allow the request by default. Essential for APIs!3
Impressive package allowing you to use the same codebase for multiple website, and still be able to use different assets, views and logic per website. Very helpful if you're cloning websites!
Although it's a package that I personally use less and less, it's still an incredible powerful package that many use to build form and smart html input.
Tired of seeing the primary ID of your model in the URL? Can't use slugs? UUID to the rescue! This package not only generate valid UUID for your models, but also make sure they are unique. I use it on findamaker.io for example, to allow user edit their job offer with a unique link, that nobody can ever discover by mistake (unless they are very, very lucky).
We all want to make sure our project has some backups, you know, just in case... This Laravel package creates a backup of your application. The backup is a zip file that contains all files in the directories you specify along with a dump of your database. The backup can be stored on any of the filesystems you have configured in Laravel 5.
A multi purpose package allowing your to automate everything related to twitter! Automatic tweet posting, timeline scrapping, followers management, etc. May not really boost your laravel project but I find myself using it in almost all project, so I suppose it deserves a place in this list!
Spatie is everywhere! With this package you will be able to build API requests with parameters with ease! Provides some super helpful Eloquent extensions.
How can we not mention guzzle? THE most complete HTTP Request package. Used by some Laravel features but not implemented by default, guzzle will allow you to easily perform HTTP requests on any URL with tons of parameters.
Corporate people love Excel. In general, every clients love Excel. Everyone love Excel! How many times were you asked to implement the ability to export a data set in Excel? A lot, yeah. This package makes it incredibly easy!
Everytime I start a new Laravel project, this is the first package I always implement. It makes flash notifications so much easier and clean! Simply call
flash() before your redirect to a route or a view and it just works!
This is a no brainer for since I started working with Laravel, I just use it all the time!