A lightweight Laravel package to track changes over time


I’m proud to announce that our team has released a new package called spatie/laravel-stats. This package is a lightweight solution for summarizing changes in your database over time.

Tracking changes #

Here’s a quick example where we will track the number of subscriptions and cancellations over time.

First, you should create a stats class.

use Spatie\Stats\BaseStats;

class SubscriptionStats extends BaseStats {}

Next, you can call increase when somebody subscribes and decrease when somebody cancels their plan.

SubscriptionStats::increase(); 
SubscriptionStats::decrease() 

With this in place, you can query the stats. Here’s how you can get the subscription stats for the past two months,
grouped by week.

use Spatie\Stats\StatsQuery;

$stats = StatsQuery::for(SubscriptionStats::class)
    ->start(now()->subMonths(2))
    ->end(now()->subSecond())
    ->groupByWeek()
    ->get();

This will return an array like this one:

[
    [
        'start' => '2020-01-01',
        'end' => '2020-01-08',
        'value' => 102,
        'increments' => 32,
        'decrements' => 20,
        'difference' => 12,
    ],
    [
        'start' => '2020-01-08',
        'end' => '2020-01-15',
        'value' => 114,
        'increments' => 63,
        'decrements' => 30,
        'difference' => 33,
    ],
]

Instead of manually increasing and decreasing the stat, you can directly set it. This is useful when your particular stat does not get calculated by your own app but lives elsewhere. Using the subscription example, let’s imagine that subscriptions live elsewhere and that there’s an API call to get the count.

$count = AnAPi::getSubscriptionCount(); 

SubscriptionStats::set($count);

By default, that increase, decrease and sets methods assume that the event that caused your stats to change happened right now. Optionally, you can pass a date time as a second parameter to these methods. Your stat change will be recorded as if it happened at that moment.

SubscriptionStats::increase(1, $subscription->created_at); 

How it works on under the hood #

The implementation of this package is simple. The basic principles of event sourcing are being used: we don’t store a result, but only the changes.

The package stores all “events” in the stats_event table

screenshot

Inside the StatsQuery class, you’ll find the heart of the package. In its get function, you can see that all events for a given period are retrieved, summarized and mapped to DataPoint classes.

In closing #

We are going to use laravel-stats in Flare, our exception tracker for Laravel/PHP/JavaScript projects, to keep tracker of changes in subscribers and other key metrics. We hope that the package can be helpful in your projects as well.

As mentioned above, the package uses a lightweight event sourcy approach. If you want to know more about event sourcing, check out our upcoming premium course on event sourcing in Laravel.

I’d like to thank my colleague Alex, who did the bulk of the work creating spatie/laravel-stats.

Do also take a look at this list of packages our team has created previously. I’m sure there’s something there for your next project.

Laravel News Links

API Authentication using Laravel Sanctum

https://res.cloudinary.com/techvblogs/image/upload/v1617996645/banner/rjswos1leslvm0h4asbm.png

What is Laravel Sanctum?

Laravel Sanctum provides a featherweight authentication system for SPAs (single page applications), mobile applications, and simple, token-based APIs. Sanctum allows each user of your application to generate multiple API tokens for their account. These tokens may be granted abilities/scopes which specify which actions the tokens are allowed to perform. Here are some reasons you might want to choose Sanctum over Passport:

  1. Passport is implemented with OAuth2 authentication. If you are not using that, then Sanctum is your go-to for issuing API tokens.
  2. Sanctum is a featherweight, meaning it is light and simple to implement.
  3. Sanctum works with SPAs (Single Page Applications like Vue, Angular, and React) and supports mobile application authentication.

Getting started

First, open Terminal and run the following command to create a fresh laravel project:

composer create-project --prefer-dist laravel/laravel larasanctum-api

or, if you have installed the Laravel Installer as a global composer dependency:

laravel new larasanctum-api

Setup Database Detail

DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=<DATABASE NAME>
DB_USERNAME=<DATABASE USERNAME>
DB_PASSWORD=<DATABASE PASSWORD>

Read Also: Firebase Push Notification Laravel Tutorial

Installation and Setup

Now would be a good time to start the Laravel application to make sure everything is working as expected:

cd larasanctum-api
php artisan serve

Let’s add Laravel Sanctum to it. First, we need to install Laravel Sanctum into our application using Composer:

composer require laravel/sanctum

Next, we’ll publish Laravel Sanctum configuration and migration files using the following command:

php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"

Now, run the database migrations:

php artisan migrate

To use tokens for users, add the HasApiTokens trait inside the User model.

Open the app/Models/User.php file and add the following modifications:

namespace App\Models;

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable
{
    use HasFactory, Notifiable, HasApiTokens;
}

Setup Middleware

Edit your app/Http/Kernel.php file to add Sanctum’s middleware into your API middleware group.

'api' => [
    'throttle:api',
    \Illuminate\Routing\Middleware\SubstituteBindings::class,
    \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
],

Building the API

Let’s start with registering for an account. In your terminal create the controller responsible for authentication by running the following Artisan command:

php artisan make:controller AuthController

Now open the routes/api.php file to create the route for registering a user:

use App\Http\Controllers\AuthController;

Route::post('/register',[AuthController::class,'register']);

Open app/Http/Controllers/AuthController.php and create a method to register a user:

use Illuminate\Support\Facades\Hash;

public function register(Request $request){
    $post_data = $request->validate([
        'name'=>'required|string',
        'email'=>'required|string|email|unique:users',
        'password'=>'required|min:8'
    ]);

    $user = User::create([
        'name' => $post_data['name'],
        'email' => $post_data['email'],
        'password' => Hash::make($post_data['password']),
    ]);

    $token = $user->createToken('authToken')->plainTextToken;

    return response()->json([
        'access_token' => $token,
        'token_type' => 'Bearer',
    ]);
}

First, we validate the incoming request to make sure all required variables are present. Then we persist the supplied details into the database. Once a user has been created, we create a new personal access token for them using the createToken() method and give the token a name of authToken. Because createToken() will return an instance of Laravel\Sanctum\NewAccessToken, we call the plainTextToken property on the instance to access the plain-text value of the token. Finally, we return a JSON response containing the generated token as well as the type of the token.

Next, create a route for the login user, open routes/api.php, and update the following code into a file:

Route::post('/login', [AuthController::class, 'login']);

Now add login method to AuthController

use Illuminate\Support\Facades\Auth;

public function login(Request $request){
    if (!\Auth::attempt($request->only('email', 'password'))) {
        return response()->json([
            'message' => 'Invalid login details'
        ], 401);
    }

    $user = User::where('email', $request['email'])->firstOrFail();

    $token = $user->createToken('authToken')->plainTextToken;

    return response()->json([
            'access_token' => $token,
            'token_type' => 'Bearer',
    ]);
}

Add the routes that require authentication inside the middleware group. As the login route doesn’t use the authentication middleware, it goes outside the middle group.

routes/api.php

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

use App\Http\Controllers\AuthController;

Route::post('/register',[AuthController::class,'register']);
Route::post('/login', [AuthController::class, 'login']);

Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
    return $request->user();
});

Now, All sets to go, and Let’s test API routes.

Create a new User

API Authentication using Laravel SanctumLogin User

API Authentication using Laravel SanctumGet Authenticated User

API Authentication using Laravel Sanctum

Thank you for reading this article.

It’d be a good idea to follow along with the simple demo app that can be found in this GitHub repo.

Read Also: Implement Passport In Laravel

Laravel News Links

Laravel Migration Generator – Take a database and convert to migrations

https://avatars.githubusercontent.com/u/4967100?s=400&v=4

Laravel Migration Generator

Generate migrations from existing database structures, an alternative to the schema dump provided by Laravel. A primary use case for this package would be a project that has many migrations that alter tables using ->change() from doctrine/dbal that SQLite doesn’t support and need a way to get table structures updated for SQLite to use in tests.
Another use case would be taking a project with a database and no migrations and turning that database into base migrations.

Installation

composer require --dev bennett-treptow/laravel-migration-generator
php artisan vendor:publish --provider="LaravelMigrationGenerator\LaravelMigrationGeneratorProvider"

Usage

Whenever you have database changes or are ready to squash your database structure down to migrations, run:

php artisan generate:migrations

By default, the migrations will be created in tests/database/migrations. You can specify a different path with the --path option:

php artisan generate:migrations --path=database/migrations

You can specify the connection to use as the database with the --connection option:

php artisan generate:migrations --connection=mysql2

You can also clear the directory with the --empty-path option:

php artisan generate:migrations --empty-path

Configuration

Each database driver can have separate configs, as specified in config/laravel-migration-generator.php.

Want to customize the migration stubs? Make sure you’ve published the vendor assets with the artisan command to publish vendor files above.

Stubs

There is a default stub for tables and views, found in resources/stubs/vendor/laravel-migration-generator/.
Each database driver can be assigned a specific migration stub by creating a new stub file in resources/stubs/vendor/laravel-migration-generator/ with a driver-prefix, e.g. mysql-table.stub for a MySQL specific table stub.

Stub Naming

Stubs can be named using the (table|view)_naming_scheme in the config. See below for available tokens that can be replaced.

Table Stubs

Table stubs have the following tokens available for the naming scheme:

  • [TableName] – Table’s name, same as what is defined in the database
  • [TableName:Studly] – Table’s name with Str::studly() applied to it (useful for standardizing table names if they are inconsistent)
  • [TableName:Lowercase] – Table’s name with strtolower applied to it (useful for standardizing table names if they are inconsistent)
  • [Timestamp] – The standard migration timestamp format, at the time of calling the command: Y_m_d_His
  • [Timestamp:{format}] – Specify a format for the timestamp, e.g. [Timestamp:Y_m]

Table schema stubs have the following tokens available:

  • [TableName] – Table’s name, same as what is defined in the database
  • [TableName:Studly] – Table’s name with Str::studly() applied to it, for use with the class name
  • [Schema] – The table’s generated schema

View Stubs

View stubs have the following tokens available for the naming scheme:

  • [ViewName] – View’s name, same as what is defined in the database
  • [ViewName:Studly] – View’s name with Str::studly() applied to it (useful for standardizing view names if they are inconsistent)
  • [ViewName:Lowercase] - View's name with strtolower` applied to it (useful for standardizing view names if they are inconsistent)
  • [Timestamp] – The standard migration timestamp format, at the time of calling the command: Y_m_d_His
  • [Timestamp:{format}] – Specify a format for the timestamp, e.g. [Timestamp:Y_m]

View schema stubs have the following tokens available:

  • [ViewName] – View’s name, same as what is defined in the database
  • [ViewName:Studly] – View’s name with Str::studly() applied to it, for use with the class name
  • [Schema] – The view’s schema

Example Usage

Given a database structure for a users table of:

CREATE TABLE `users` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `first_name` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `last_name` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `timezone` varchar(45) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'America/New_York',
  `location_id` int(10) unsigned NOT NULL,
  `deleted_at` timestamp NULL DEFAULT NULL,
  `remember_token` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `users_username_index` (`username`),
  KEY `users_first_name_index` (`first_name`),
  KEY `users_last_name_index` (`last_name`),
  KEY `users_email_index` (`email`),
  KEY `fk_users_location_id_index` (`location_id`)
  CONSTRAINT `users_location_id_foreign` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

A tests/database/migrations/[TIMESTAMP]_create_users_table.php with the following Blueprint would be created:

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateTestActionRemindersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('username', 128)->nullable()->index();
            $table->string('email', 255)->index();
            $table->string('password', 255);
            $table->string('first_name', 45)->nullable()->index();
            $table->string('last_name', 45)->index();
            $table->string('timezone', 45)->default('America/New_York');
            $table->unsignedInteger('location_id');
            $table->softDeletes();
            $table->string('remember_token', 255)->nullable();
            $table->timestamps();
            $table->foreign('location_id', 'users_location_id_foreign')->references('id')->on('locations')->onUpdate('cascade')->onDelete('cascade');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('users');
    }
}

Currently Supported DBMS’s

These DBMS’s are what are currently supported for creating migrations from. Migrations created will, as usual, follow what database drivers Laravel migrations allow for

Laravel News Links

How Steel Chains are Made

https://theawesomer.com/photos/2021/04/how_steel_chain_is_made_t.jpg

How Steel Chains are Made

Link

Think of how strong a steel chain can be. Then imagine the forces that must be necessary to shape and connect its links. In this video from Engineering and Architecture, we get an up-close look at a specialized machine that takes lengths of steel wire, then scores, cuts, bends, and presses the pieces together.

The Awesomer

The 5 Best Tools to Download Streaming Video From Any Website

https://static1.makeuseofimages.com/wordpress/wp-content/uploads/2021/04/videodownloadhelper.png

Most of today’s internet traffic is spent streaming online video, with YouTube taking up a massive chunk. Over 400 hours of video content is uploaded to YouTube every minute, and YouTube has a greater reach in the 18-49 demographic than even cable TV.

And then you have to consider other video streaming sites like Vimeo, Dailymotion, Metacafe, Twitch, and so on. That’s a lot of data flowing around—and if your ISP caps your monthly data allowance, then all this video streaming can be expensive.

The solution is to capture or download online videos to watch offline, allowing you to re-watch as many times as you want without wasting data.

Here are some of the best tools for capturing and downloading streaming video from websites online so you can watch them offline.

1. Video DownloadHelper


Available on: Chrome, Firefox.

Supported sites: YouTube, Facebook, Instagram, Vimeo, Dailymotion, Lynda, Twitter, Udemy, and hundreds of other sites.

Video DownloadHelper is easily one of the most useful browser extensions for downloading streaming video that you’ll ever install. The downside (sort of) is that you have to install it on your browser; if you already run a lot of extensions, the last thing you need is another one making Chrome even slower. But if you download a lot of videos on a day-to-day basis, Video DownloadHelper is definitely worth it.

The extension adds a button next to your browser’s address bar. Whenever you come across an online video, just click the button to download any video on the current page. Use the pop-up box to decide where to save it on your computer.

2. 4K Video Downloader


Available on: Windows, Mac, Linux.

Supported sites: YouTube, Facebook, Vimeo, Flickr, Dailymotion, and several other sites.

4K Video Downloader is the simplest and most straightforward tool to capture video from a website. We recommend it if you want a no-hassle option that requires close to zero effort on your part. It works extremely quickly and doesn’t throttle your download, plus it’s really easy to get to grips with.

Just copy the URL of an online video and paste it into 4K Video Downloader. You can paste links to YouTube playlists or YouTube channels to download every video available, and you can even subscribe to YouTube channels and auto-download new videos as they’re made available. You can also download the annotations and subtitles in YouTube videos.

Video downloads are available in 8K, 4K, 1080p, or 720p (as long as the source video was uploaded at that resolution, of course). Videos can be downloaded in MP4, MKV, and FLV formats. Or you can download only the audio portion in MP3 or M4A formats.

3. Freemake Video Downloader


Available on: Windows.

Supported sites: YouTube, Facebook, Liveleak, Veoh, Vimeo, Dailymotion, and dozens of other sites.

Freemake Video Downloader is one of the most popular video downloading tools out there. It’s completely free, easy to use, and relatively flexible as far as quality and format options are concerned. The one big downside is that it’s only available on Windows.

Videos can be downloaded in a handful of formats, including AVI, FLV, MKV, MP4, and WMV. Videos can also be downloaded in MP3 format if you only want the audio portion. The actual process only requires the URL of the video—just copy and paste it in.

4. JDownloader


Available on: Windows, Mac, Linux.

Supported sites: Nearly any site with streaming video.

JDownloader is like Freemake Video Downloader but with a twist. You take the URL of any page that has a streamed video on it, paste it into the app, and it will scan the page for all the videos it can detect. You get to pick which of the detected videos you want to download.

The nice thing about JDownloader is that you don’t need the direct URL of a specific video. Take a MakeUseOf article with five embedded videos, for example, and all of them will be detected. No need to fumble around finding out the direct URL of the video. This makes it very easy to capture several videos at once.

However, be aware that the installer comes with bundleware, which is where other programs are pushed on you that you don’t need. When you run the installer, you’ll come across a page that offers to install "Bing Search" or something else. On this page, the buttons will change to Decline and Accept. Ensure you click Decline, because this will prevent bundleware from being installed on your system.

5. youtube-dl


Available on: Windows, Mac, Linux.

Supported sites: YouTube, Facebook, HBO, Metacafe, Vimeo, Dailymotion, and thousands of other sites.

youtube-dl is a tool for advanced users who are comfortable using the command line. If you prefer graphical interfaces, save yourself the headache and just use one of the ones listed above.

But if you’re okay with command line utilities, then youtube-dl offers the most flexibility of any video downloading tool. It’s complicated enough to have a non-trivial learning curve though, so prepare to read the documentation, or else you’ll be lost.

You could also try youtube-dl-gui, which is an unofficial front-end user interface that’s available for Windows and Linux.

Features include several video selection and quality parameters, playlist processing, download rate limit, batch video downloading, automatic naming of files, inclusion of ads, and downloading subtitles (for sites like YouTube).

The following formats are supported: 3GP, AAC, FLV, M4A, MP3, MP4, OGG, WAV, and WEBM.

The Last Resort for Capturing Online Videos

If you encounter a video that isn’t supported by any of the above tools, the last resort is to play the video in full screen mode and record your screen as it plays.

It’s not a perfect solution, but it normally works when nothing else does. Keep in mind, however, that some sites and apps (especially TV streaming services) will not let a screen recorder capture the footage. When you go to play the video back again, you will just be faced with a blank screen.

If you can get the direct URL of an online video, you can also use VLC to play and record online videos as a kind of streaming video recorder.

MUO – Feed

Heads-Up Comparison: P365 vs. Hellcat vs. MAX-9 vs. M&P9 Shield Plus

https://cdn0.thetruthaboutguns.com/wp-content/uploads/2021/04/Quadfecta-SIG-SAUER-P365-Springfield-Hellcat-Ruger-MAX-9-Smith-Wesson-MP9-Shield-Plus.jpg

TTAG’s Managing Editor, Dan Zimmerman, and I took all four of the hottest, most in-demand concealed carry guns on the market — the four micro-compacts with double-digit capacity, flush-fit magazines — and hit the range. Shooting the SIG SAUER P365, Springfield Hellcat, Ruger MAX-9, and Smith & Wesson M&P9 Shield Plus (listed in order of when they were released) back-to-back-to-back-to-back, the following is our takeaways on how these four fantastic little pistols stack up.

The size and weight specs more or less tell the story of how these four pistols compare on paper, though there is some nuance that can’t be seen or felt in these figures.

In the Rumble-hosted video embedded above (direct link HERE), Dan and I both put a full mag through all four of these guns and provide some thoughts and feedback. Check it out!

As an example of an on-paper stat that may be misleading in real life, while the Hellcat is shorter in max height than the P365, its backstrap is longer so its heel sticks out a little farther than the P365’s. The Hellcat’s magazine baseplate is nearly parallel with the slide, though, whereas the P365’s angles downward toward the frontstrap, so the P365’s toe sticks out more than the Hellcat’s.

For the vast majority of concealed carriers, it’s the heel of the grip that prints (“pokes” into one’s cover garment, giving away the fact that an object is underneath) first, before any other part of the gun. So, while the Hellcat is technically shorter, the P365 with its more rounded (slightly “bobbed”), shorter heel will likely conceal like the shorter gun.

On the other hand, the frontstrap is where the shooter’s fingers do most of their gripping, and the lower toe of the P365 allows my men’s size large hands to place precisely half a pinky firmly on the frontstrap. That same pinky wraps underneath the grip of the Hellcat.

Even that, however, doesn’t really translate to what you might expect when going loud with these little pistols. Thanks to the larger grip circumference and different shape of the Hellcat’s grip, it feels and shoots like it’s larger than the P365 even if one’s pinky is wrapped under the mag.

Okay, onto our thoughts of how each micro-compact concealed carry handgun stacks up compared to the others:

SIG SAUER P365

SIG’s little P365 shook up the concealed carry market when it was released in early 2018. In a sea of slim, easy-to-conceal pistols with 6+1 and 7+1 capacities, the P365’s 10+1 capacity within the same tiny footprint was a full-on mic drop that gave it an immediate, huge leg up on the competition.

Shoehorning 10+ rounds into a skinny micro-compact was and certainly still is a fantastic recipe for sales success, and, as this very article shows, others have jumped into the fray.

All that said, I’d be remiss not to mention that the SIG SAUER P365 was the first to accomplish this feat only if you don’t count the KELTEC P11, which was released in 1995 and would absolutely belong in this group were it not discontinued in 2019.

At least, on paper the P11 belongs here (5.6″ length, 4.3″ height, 1.0″ width, 17.1 oz, 10+1 flush-fit with a 12-round and 15-round magazine available). Though specific units were rock solid, as a whole the P11 wasn’t reliable enough to be taken seriously by most concealed carriers and they — we — instead chose pistols with lower capacities but higher trustworthiness.

Anyway, three years later and the P365 still feels the smallest of these four handguns. Much of that can be chalked up to it having the smallest grip circumference. Sure, it’s the lightest of the four by a small amount and perhaps it balances slightly differently, but I think these differences are too small to really notice on the range.

What you do notice is more muzzle flip than the other guns. I’ve always considered my personal EDC since 2018, my P365 seen in these photos, to be a highly controllable gun and dang do I shoot the thing quickly and accurately, but without a doubt it has the most felt recoil and muzzle flip of the guns in this quadfecta. Next is the Ruger MAX-9, which is only very slightly less “flippy” than the P365, then there’s a jump to the Springfield Hellcat, which is noticeably softer, and then another solid leap to the Smith & Wesson M&P9 Shield Plus, which shoots like a well-tuned compact, not a sub-compact or micro-compact.

SIG’s X-RAY3 sights are fantastic; exactly what I prefer. A bright, eye-catching, tritium-illuminated front sight and an all-black, serrated rear. They’re steel, durable, quick, and accurate. One could argue that the tritium-illuminated fiber optic front sight on the MAX-9 is better, but my eye prefers the P365’s front dot.

There has been some variability in P365 trigger pull quality. For instance, my early P365 here has a slightly better trigger than my P365XL, which was made two years later. In either case, though, I’d describe both triggers as very good — well above the average for compact (or sub-compact or micro-compact) polymer pistols of its time.

The P365’s trigger has a fairly short travel, followed by a skosh of creep before a crisp break. The reset travel is fairly short and the reset is nicely tactile and audible. Pull weight is exactly what I prefer in a carry gun: about 5 pounds.

Grip texture on the P365 is just about perfect for me. It’s basically “pebbled” like sandpaper, but with the peaks softened just enough that it doesn’t cause too much irritation if it’s against your skin while being carried concealed. The grip is smooth in the nicely-shaped trigger guard undercut and the underside of the beavertail, which is the correct choice in both cases, and textured elsewhere.

The large magazine release is easy to use, but not so tall that it risks accidental activation. I appreciate the windows on each side of the bottom of the grip frame, which allow a jammed magazine to be stripped out more easily.

Front and rear slide serrations are traditional and simple.

But they’re also very grippy with 90-degree edges and enough depth to provide really solid purchase. The P365 ranks second for functional slide serrations.

After shooting all four guns, I won’t be trading in my P365. Without a question I shoot the Shield Plus a little bit better — again, it shoots like a compact — but it’s just enough larger and heavier and I’ve become so familiar and used to my P365 that it’s still my choice.

Springfield Hellcat

For an MSRP premium of just $30, you’d be silly not to buy the optics-ready Hellcat. As the first challenger to the P365, though, Springfield clearly wanted to undercut the SIG’s MSRP and the non-optics-cut base model allowed ’em to do that by $10.

Springfield also [literally] one-upped the P365’s capacity by squeezing 11 rounds into the Hellcat’s magazine. This gives it the highest flush-fit capacity of all four of these little gats, despite the fact that it’s the shortest of the quadfecta. Impressive.

As mentioned above, the Hellcat shoots pretty darn softly given its lilliputian size and light weight. It’s an easy gun to shoot well. It’s an extremely easy micro-compact to shoot well.

The Hellcat’s tritium front sight with bright green outline is great — a lot like the P365’s. I’m definitely not a fan of the rounded-notch rear with white outline, though obviously this is personal preference. No argument on the quality of the steel sights.

Dan swapped an Apex trigger into this Hellcat, which improved its trigger in all ways (obviously) but it’s fair to say that the Hellcat ships from Springfield with an extremely competitive trigger pull quality to begin with. It’s better than what we all became used to with polymer pistols of the past. It still isn’t the best trigger of this group, though.

While the grip texture on the Hellcat is similar to that of the P365, the grip shape is not — it’s quite blocky. Sides, front, and back are fairly darn straight and flat across and the edges between all four sides are rounded, yes, but make a sharper transition than on most pistols.

I do not like the feel of the Hellcat in my hand. It’s just too square for me. It’s still small, of course, so it’ll fit basically anyone’s hand (or at least shouldn’t be too large for anyone), but I just find it weird. Too flat across the backstrap, in particular, with too-sharp transitions to the sides.

Dan has smaller hands (and less hair on his head and he’s also shorter and, like, super old and stuff), though, and feels differently. He likes the size and shape of the Hellcat’s grip frame. I think the joints in his fingers and the shape of his palm and thumb joint and such align better with the edges of the grip.

One thing we certainly agree on is that the Hellcat’s slide serrations suck. They look good, but they’re so dang shallow they’re barely functional. Even with dry hands I worry about sliding off of the serrations while trying to manipulate the slide.

If this were my carry gun I’d put sandpaper style grip tape in-between, below, and behind the serrations (probably cutting my own from Talon Grips granulate material). Alternatively, it would be a further selling point to running a micro red dot and I’d karate chop that bad boy as my sole means of slide manipulation.

Dan has put a ton of rounds through this Hellcat and it has proven itself reliable and easy to carry. It’s a good shooting gun, too. Without a doubt, it’s a very good choice for concealed carry.

Ruger MAX-9

There’s no question whatsoever that Ruger’s new MAX-9 represents the best value of the pack. At an MSRP of just $499 (and when the market gets back to normal it’s going to retail for substantially less than the other three pistols) it includes the optics-ready slide and the tritium-illuminated fiber optic front sight. Heck of a deal.

The MAX-9 isn’t as flippy as my P365, but it has some snap to it. It’s the skinniest gun of the group with the second smallest grip circumference, but it’s taller than the SIG and Springfield, which pair very closely on height and then the Ruger and S&W pair closely at about a third of an inch taller.

Trigger pull on the MAX-9 feels far lighter than its approximately five-and-a-half-pound break weight. This is likely due to Ruger’s rotary sear, which gives the trigger a smooth, rolling break that lacks the more typical feel of take-up followed by a firm “wall.”

When the trigger does break it’s clean and crisp. If you ride the reset it’s a little shorter than the initial pull, but I did find the reset to be a bit on the light side in terms of its sound and feel. Overall this is a very good trigger, and doubly so for anyone who prefers a rolling style break.

Sights are great and allowed us to shoot rapidly and accurately. While the front is undeniably easy and fast to pick up, it just doesn’t snag my eye as well as the front sight on the P365 and Hellcat.

While it looks fairly square and blocky — and it is compared to the P365 or Shield Plus — the slimmer width and more rounded edges feel more comfortable and less blocky than the Hellcat. It’s also shorter front-to-rear, so it feels smaller in the hand than all but the P365.

Grip texture on the MAX-9 is the most love handle-friendly. Though very similar in appearance to the SIG’s and Springfield’s texture, the Ruger’s is smoothed out even more — flatter high points — and is therefore less aggressive, less grippy, and more comfortable. At least on the sides.

On the frontstrap and backstrap it has more bite than on the sides, which is how it should be. Frankly, if I made a pistol like this (and didn’t care about lefties) I’d design the left side of the grip to be extra comfortable and the back, front, and right side to be extra grippy.

Of the four guns in our quadfecta here, the MAX-9’s magazine release is the most shrouded and flush and, therefore, takes the most deliberate action to activate. The same goes for the MAX-9’s slide catch, which is gated by a polymer ridge that makes it difficult to engage manually. Overall its controls, including its takedown method, are the most difficult to use of the four guns.

That said, the manual safety on the Ruger MAX-9 is just right. It’s small yet easy to reach and use, with positive detent clicks in both positions. While all four pistols do offer a manual thumb safety as an option, the MAX-9 was the only gun in our test that was so equipped so we can’t compare this feature.

Ruger wins the slide serration contest. While relatively traditional like those on the P365, the MAX-9 provides more empty space between thinner ridges and it’s really grippy.

Perhaps that change in angle also helps, but whatever the secret is the end result is extremely effective slide serrations that you won’t slip off of. If the judges give the MAX-9’s slide serrations a 10, the P365 gets an 8, the Shield Plus a 4, and the Hellcat a DNF.

The Ruger MAX-9 is a good gun that, for whatever reason, doesn’t feel quite as nice or as refined as the others and is a little taller than the P365 and Hellcat, but shoots accurately and reliably and represents one hell of a good value.

Smith & Wesson M&P9 Shield Plus

Still a micro-compact, the Shield Plus represents a meaningful bump in backstrap length versus the P365 despite its identical 10+1 flush-fit capacity. It’s also the widest gun here.

While S&W officially states the Shield Plus’ width, exclusive of the controls, as 0.94 inches I must disagree. The widest part of the palm swell measures 1.06 inches in my calipers (and it does measure out at S&W’s stated 1.1 inches from the slide stop to the other side of the slide).

Front-to-rear length of the grip frame is also significantly longer than any of the other guns here. And the Shield Plus weighs two ounces more.

Still, it’s a half inch shorter and about 0.2 inches skinnier than most of the smaller sub-compacts out there, so I think it’s fair to say it still clearly belongs right here in the micro-compact category.

On the plus side, this small amount of additional size packs a large amount of prowess on the range. The Shield Plus is markedly flatter and softer shooting than the other three pistols in this roundup, and the larger grip circumference and curvier shape provide tons of confidence and control.

As mentioned previously, the Shield Plus shoots like a well-sorted sub-compact or maybe even compact pistol. I’d put it head-to-head with a GLOCK 19, for instance, and I expect most shooters would outperform on speed and accuracy with the Shield Plus.

Additionally, this bad boy has the best trigger of the bunch. Yes, it’s better than the aftermarket trigger in the Hellcat. Holy heck is it short and crisp with an insanely short, crisp reset as well. It feels like a competition trigger.

In fact, perhaps it’s too good? Trigger pull weight is right at three pounds. It’s awesome on the range, but it’s pretty dang light for concealed carry self-defense use. Following all safety best practices related to holster choice, holstering, and use it obviously won’t present any sort of issue, but it’s undoubtedly a deviation from the norm for a self-defense gun without a manual safety (though a thumb safety is an option).

On the base model, which is what Dan and I tested, the Shield Plus’ standard 3-dot sights are nothing to write home about. It’s your typical, white painted dot front and 2-dot rear. No tritium or other flavor of night visibility.

Night sights are an option, of course, but they raise the MSRP to $623 ($44 higher than the closest competitor) while the SIG, Springfield, and Ruger all sport tritium as standard.

Grip texture on the Shield Plus is just about dead-on perfect. It provides more grip and control than appearances might suggest, yet it won’t scratch up or overly irritate the tender princess skin on your hip. It’s the sharpest and most aggressive of these four pistols, though.

The tapered shape of the Shield Plus’ grip as it transitions from rounded palm swells down to a somewhat sharply rounded or tapered backstrap sets it apart in this group. As blocky as the Hellcat is, the Shield Plus’ grip might stand out even more in the other direction.

I’m a big fan of the texture, size, and shape of this grip frame and I found that the rounded/tapered backstrap gave me a really clear index point or frame of reference for where the muzzle was pointing. Sort of an intuitive feel for the exact orientation of the gun.

The backstrap, as sharply rounded as it is, isn’t as comfortable as the backstrap of the P365 as it focuses its force in a more distinct vertical line across my palm, but I love how functional it is. It gives me confidence and I really feel like I can “drive” the Shield Plus hard, with great control and intuitive knowledge of where the gun is pointing.

Dan, however, prefers the wider, flatter backstrap feel of the other pistols in our heads-up round-up quadfecta shootout. Bottom line: a lot of this stuff boils down to personal preference.

That said, there’s zero question whatsoever that the Shield Plus is the best shooting pistol here — in part, yes, because it’s the largest and heaviest — and that it has the best trigger.

What it doesn’t have, though, is the best slide serrations even if they might look the niftiest.

I’ve never thought of the M&P’s serrations as sub-par or anything, and they’re without a doubt plenty functional and nothing I would normally complain about, but in this heads-up comparison they simply don’t compete on the same level as the P365’s and MAX-9’s.

Granted, slide serrations aren’t an end-all-be-all feature and I wouldn’t necessarily discount carrying a gun due to mediocre slide serrations (though the Hellcat truly has a problem in this regard and needs an overhaul to achieve slide serration mediocrity). Again though, it was one clear area in which these four pistols differed so I chose to call it out.

Ultimately, I came close. Close to putting the Shield Plus on my hip in place of my P365. I simply love how the Shield Plus shoots.

It ended up being the extra size — namely the well over a half-inch more backstrap height and how the heel of the grip juts out much farther and to a sharper point — that kept the SIG in my holster. Frankly, it’s hollow, unused polymer in the heel of the Shield Plus and I think they should have bobtailed the thing hard.

We’re living in a golden age of concealed carry pistols, that much is for sure. In this heads-up comparison there really isn’t a loser. Every single one of these pistols is reliable, accurate, and easy to conceal. They all have great triggers, great sights (or at least the option of great sights), optics cuts (or the option for that), and double-digit capacities.

It’s remarkable, really, to pack so much into such small pistols. For me, I’m sticking with the “original” — I like the P365 the best. Dan prefers the Hellcat. In a competition stage we’d both shoot the Shield Plus. The MAX-9 knocks it out of the park on performance per dollar.

They’re all great guns.

 

The Truth About Guns

Heads-Up Comparison: P365 vs. Hellcat vs. MAX-9 vs. M&P9 Shield Plus

https://cdn0.thetruthaboutguns.com/wp-content/uploads/2021/04/Quadfecta-SIG-SAUER-P365-Springfield-Hellcat-Ruger-MAX-9-Smith-Wesson-MP9-Shield-Plus.jpg

TTAG’s Managing Editor, Dan Zimmerman, and I took all four of the hottest, most in-demand concealed carry guns on the market — the four micro-compacts with double-digit capacity, flush-fit magazines — and hit the range. Shooting the SIG SAUER P365, Springfield Hellcat, Ruger MAX-9, and Smith & Wesson M&P9 Shield Plus (listed in order of when they were released) back-to-back-to-back-to-back, the following is our takeaways on how these four fantastic little pistols stack up.

The size and weight specs more or less tell the story of how these four pistols compare on paper, though there is some nuance that can’t be seen or felt in these figures.

In the Rumble-hosted video embedded above (direct link HERE), Dan and I both put a full mag through all four of these guns and provide some thoughts and feedback. Check it out!

As an example of an on-paper stat that may be misleading in real life, while the Hellcat is shorter in max height than the P365, its backstrap is longer so its heel sticks out a little farther than the P365’s. The Hellcat’s magazine baseplate is nearly parallel with the slide, though, whereas the P365’s angles downward toward the frontstrap, so the P365’s toe sticks out more than the Hellcat’s.

For the vast majority of concealed carriers, it’s the heel of the grip that prints (“pokes” into one’s cover garment, giving away the fact that an object is underneath) first, before any other part of the gun. So, while the Hellcat is technically shorter, the P365 with its more rounded (slightly “bobbed”), shorter heel will likely conceal like the shorter gun.

On the other hand, the frontstrap is where the shooter’s fingers do most of their gripping, and the lower toe of the P365 allows my men’s size large hands to place precisely half a pinky firmly on the frontstrap. That same pinky wraps underneath the grip of the Hellcat.

Even that, however, doesn’t really translate to what you might expect when going loud with these little pistols. Thanks to the larger grip circumference and different shape of the Hellcat’s grip, it feels and shoots like it’s larger than the P365 even if one’s pinky is wrapped under the mag.

Okay, onto our thoughts of how each micro-compact concealed carry handgun stacks up compared to the others:

SIG SAUER P365

SIG’s little P365 shook up the concealed carry market when it was released in early 2018. In a sea of slim, easy-to-conceal pistols with 6+1 and 7+1 capacities, the P365’s 10+1 capacity within the same tiny footprint was a full-on mic drop that gave it an immediate, huge leg up on the competition.

Shoehorning 10+ rounds into a skinny micro-compact was and certainly still is a fantastic recipe for sales success, and, as this very article shows, others have jumped into the fray.

All that said, I’d be remiss not to mention that the SIG SAUER P365 was the first to accomplish this feat only if you don’t count the KELTEC P11, which was released in 1995 and would absolutely belong in this group were it not discontinued in 2019.

At least, on paper the P11 belongs here (5.6″ length, 4.3″ height, 1.0″ width, 17.1 oz, 10+1 flush-fit with a 12-round and 15-round magazine available). Though specific units were rock solid, as a whole the P11 wasn’t reliable enough to be taken seriously by most concealed carriers and they — we — instead chose pistols with lower capacities but higher trustworthiness.

Anyway, three years later and the P365 still feels the smallest of these four handguns. Much of that can be chalked up to it having the smallest grip circumference. Sure, it’s the lightest of the four by a small amount and perhaps it balances slightly differently, but I think these differences are too small to really notice on the range.

What you do notice is more muzzle flip than the other guns. I’ve always considered my personal EDC since 2018, my P365 seen in these photos, to be a highly controllable gun and dang do I shoot the thing quickly and accurately, but without a doubt it has the most felt recoil and muzzle flip of the guns in this quadfecta. Next is the Ruger MAX-9, which is only very slightly less “flippy” than the P365, then there’s a jump to the Springfield Hellcat, which is noticeably softer, and then another solid leap to the Smith & Wesson M&P9 Shield Plus, which shoots like a well-tuned compact, not a sub-compact or micro-compact.

SIG’s X-RAY3 sights are fantastic; exactly what I prefer. A bright, eye-catching, tritium-illuminated front sight and an all-black, serrated rear. They’re steel, durable, quick, and accurate. One could argue that the tritium-illuminated fiber optic front sight on the MAX-9 is better, but my eye prefers the P365’s front dot.

There has been some variability in P365 trigger pull quality. For instance, my early P365 here has a slightly better trigger than my P365XL, which was made two years later. In either case, though, I’d describe both triggers as very good — well above the average for compact (or sub-compact or micro-compact) polymer pistols of its time.

The P365’s trigger has a fairly short travel, followed by a skosh of creep before a crisp break. The reset travel is fairly short and the reset is nicely tactile and audible. Pull weight is exactly what I prefer in a carry gun: about 5 pounds.

Grip texture on the P365 is just about perfect for me. It’s basically “pebbled” like sandpaper, but with the peaks softened just enough that it doesn’t cause too much irritation if it’s against your skin while being carried concealed. The grip is smooth in the nicely-shaped trigger guard undercut and the underside of the beavertail, which is the correct choice in both cases, and textured elsewhere.

The large magazine release is easy to use, but not so tall that it risks accidental activation. I appreciate the windows on each side of the bottom of the grip frame, which allow a jammed magazine to be stripped out more easily.

Front and rear slide serrations are traditional and simple.

But they’re also very grippy with 90-degree edges and enough depth to provide really solid purchase. The P365 ranks second for functional slide serrations.

After shooting all four guns, I won’t be trading in my P365. Without a question I shoot the Shield Plus a little bit better — again, it shoots like a compact — but it’s just enough larger and heavier and I’ve become so familiar and used to my P365 that it’s still my choice.

Springfield Hellcat

For an MSRP premium of just $30, you’d be silly not to buy the optics-ready Hellcat. As the first challenger to the P365, though, Springfield clearly wanted to undercut the SIG’s MSRP and the non-optics-cut base model allowed ’em to do that by $10.

Springfield also [literally] one-upped the P365’s capacity by squeezing 11 rounds into the Hellcat’s magazine. This gives it the highest flush-fit capacity of all four of these little gats, despite the fact that it’s the shortest of the quadfecta. Impressive.

As mentioned above, the Hellcat shoots pretty darn softly given its lilliputian size and light weight. It’s an easy gun to shoot well. It’s an extremely easy micro-compact to shoot well.

The Hellcat’s tritium front sight with bright green outline is great — a lot like the P365’s. I’m definitely not a fan of the rounded-notch rear with white outline, though obviously this is personal preference. No argument on the quality of the steel sights.

Dan swapped an Apex trigger into this Hellcat, which improved its trigger in all ways (obviously) but it’s fair to say that the Hellcat ships from Springfield with an extremely competitive trigger pull quality to begin with. It’s better than what we all became used to with polymer pistols of the past. It still isn’t the best trigger of this group, though.

While the grip texture on the Hellcat is similar to that of the P365, the grip shape is not — it’s quite blocky. Sides, front, and back are fairly darn straight and flat across and the edges between all four sides are rounded, yes, but make a sharper transition than on most pistols.

I do not like the feel of the Hellcat in my hand. It’s just too square for me. It’s still small, of course, so it’ll fit basically anyone’s hand (or at least shouldn’t be too large for anyone), but I just find it weird. Too flat across the backstrap, in particular, with too-sharp transitions to the sides.

Dan has smaller hands (and less hair on his head and he’s also shorter and, like, super old and stuff), though, and feels differently. He likes the size and shape of the Hellcat’s grip frame. I think the joints in his fingers and the shape of his palm and thumb joint and such align better with the edges of the grip.

One thing we certainly agree on is that the Hellcat’s slide serrations suck. They look good, but they’re so dang shallow they’re barely functional. Even with dry hands I worry about sliding off of the serrations while trying to manipulate the slide.

If this were my carry gun I’d put sandpaper style grip tape in-between, below, and behind the serrations (probably cutting my own from Talon Grips granulate material). Alternatively, it would be a further selling point to running a micro red dot and I’d karate chop that bad boy as my sole means of slide manipulation.

Dan has put a ton of rounds through this Hellcat and it has proven itself reliable and easy to carry. It’s a good shooting gun, too. Without a doubt, it’s a very good choice for concealed carry.

Ruger MAX-9

There’s no question whatsoever that Ruger’s new MAX-9 represents the best value of the pack. At an MSRP of just $499 (and when the market gets back to normal it’s going to retail for substantially less than the other three pistols) it includes the optics-ready slide and the tritium-illuminated fiber optic front sight. Heck of a deal.

The MAX-9 isn’t as flippy as my P365, but it has some snap to it. It’s the skinniest gun of the group with the second smallest grip circumference, but it’s taller than the SIG and Springfield, which pair very closely on height and then the Ruger and S&W pair closely at about a third of an inch taller.

Trigger pull on the MAX-9 feels far lighter than its approximately five-and-a-half-pound break weight. This is likely due to Ruger’s rotary sear, which gives the trigger a smooth, rolling break that lacks the more typical feel of take-up followed by a firm “wall.”

When the trigger does break it’s clean and crisp. If you ride the reset it’s a little shorter than the initial pull, but I did find the reset to be a bit on the light side in terms of its sound and feel. Overall this is a very good trigger, and doubly so for anyone who prefers a rolling style break.

Sights are great and allowed us to shoot rapidly and accurately. While the front is undeniably easy and fast to pick up, it just doesn’t snag my eye as well as the front sight on the P365 and Hellcat.

While it looks fairly square and blocky — and it is compared to the P365 or Shield Plus — the slimmer width and more rounded edges feel more comfortable and less blocky than the Hellcat. It’s also shorter front-to-rear, so it feels smaller in the hand than all but the P365.

Grip texture on the MAX-9 is the most love handle-friendly. Though very similar in appearance to the SIG’s and Springfield’s texture, the Ruger’s is smoothed out even more — flatter high points — and is therefore less aggressive, less grippy, and more comfortable. At least on the sides.

On the frontstrap and backstrap it has more bite than on the sides, which is how it should be. Frankly, if I made a pistol like this (and didn’t care about lefties) I’d design the left side of the grip to be extra comfortable and the back, front, and right side to be extra grippy.

Of the four guns in our quadfecta here, the MAX-9’s magazine release is the most shrouded and flush and, therefore, takes the most deliberate action to activate. The same goes for the MAX-9’s slide catch, which is gated by a polymer ridge that makes it difficult to engage manually. Overall its controls, including its takedown method, are the most difficult to use of the four guns.

That said, the manual safety on the Ruger MAX-9 is just right. It’s small yet easy to reach and use, with positive detent clicks in both positions. While all four pistols do offer a manual thumb safety as an option, the MAX-9 was the only gun in our test that was so equipped so we can’t compare this feature.

Ruger wins the slide serration contest. While relatively traditional like those on the P365, the MAX-9 provides more empty space between thinner ridges and it’s really grippy.

Perhaps that change in angle also helps, but whatever the secret is the end result is extremely effective slide serrations that you won’t slip off of. If the judges give the MAX-9’s slide serrations a 10, the P365 gets an 8, the Shield Plus a 4, and the Hellcat a DNF.

The Ruger MAX-9 is a good gun that, for whatever reason, doesn’t feel quite as nice or as refined as the others and is a little taller than the P365 and Hellcat, but shoots accurately and reliably and represents one hell of a good value.

Smith & Wesson M&P9 Shield Plus

Still a micro-compact, the Shield Plus represents a meaningful bump in backstrap length versus the P365 despite its identical 10+1 flush-fit capacity. It’s also the widest gun here.

While S&W officially states the Shield Plus’ width, exclusive of the controls, as 0.94 inches I must disagree. The widest part of the palm swell measures 1.06 inches in my calipers (and it does measure out at S&W’s stated 1.1 inches from the slide stop to the other side of the slide).

Front-to-rear length of the grip frame is also significantly longer than any of the other guns here. And the Shield Plus weighs two ounces more.

Still, it’s a half inch shorter and about 0.2 inches skinnier than most of the smaller sub-compacts out there, so I think it’s fair to say it still clearly belongs right here in the micro-compact category.

On the plus side, this small amount of additional size packs a large amount of prowess on the range. The Shield Plus is markedly flatter and softer shooting than the other three pistols in this roundup, and the larger grip circumference and curvier shape provide tons of confidence and control.

As mentioned previously, the Shield Plus shoots like a well-sorted sub-compact or maybe even compact pistol. I’d put it head-to-head with a GLOCK 19, for instance, and I expect most shooters would outperform on speed and accuracy with the Shield Plus.

Additionally, this bad boy has the best trigger of the bunch. Yes, it’s better than the aftermarket trigger in the Hellcat. Holy heck is it short and crisp with an insanely short, crisp reset as well. It feels like a competition trigger.

In fact, perhaps it’s too good? Trigger pull weight is right at three pounds. It’s awesome on the range, but it’s pretty dang light for concealed carry self-defense use. Following all safety best practices related to holster choice, holstering, and use it obviously won’t present any sort of issue, but it’s undoubtedly a deviation from the norm for a self-defense gun without a manual safety (though a thumb safety is an option).

On the base model, which is what Dan and I tested, the Shield Plus’ standard 3-dot sights are nothing to write home about. It’s your typical, white painted dot front and 2-dot rear. No tritium or other flavor of night visibility.

Night sights are an option, of course, but they raise the MSRP to $623 ($44 higher than the closest competitor) while the SIG, Springfield, and Ruger all sport tritium as standard.

Grip texture on the Shield Plus is just about dead-on perfect. It provides more grip and control than appearances might suggest, yet it won’t scratch up or overly irritate the tender princess skin on your hip. It’s the sharpest and most aggressive of these four pistols, though.

The tapered shape of the Shield Plus’ grip as it transitions from rounded palm swells down to a somewhat sharply rounded or tapered backstrap sets it apart in this group. As blocky as the Hellcat is, the Shield Plus’ grip might stand out even more in the other direction.

I’m a big fan of the texture, size, and shape of this grip frame and I found that the rounded/tapered backstrap gave me a really clear index point or frame of reference for where the muzzle was pointing. Sort of an intuitive feel for the exact orientation of the gun.

The backstrap, as sharply rounded as it is, isn’t as comfortable as the backstrap of the P365 as it focuses its force in a more distinct vertical line across my palm, but I love how functional it is. It gives me confidence and I really feel like I can “drive” the Shield Plus hard, with great control and intuitive knowledge of where the gun is pointing.

Dan, however, prefers the wider, flatter backstrap feel of the other pistols in our heads-up round-up quadfecta shootout. Bottom line: a lot of this stuff boils down to personal preference.

That said, there’s zero question whatsoever that the Shield Plus is the best shooting pistol here — in part, yes, because it’s the largest and heaviest — and that it has the best trigger.

What it doesn’t have, though, is the best slide serrations even if they might look the niftiest.

I’ve never thought of the M&P’s serrations as sub-par or anything, and they’re without a doubt plenty functional and nothing I would normally complain about, but in this heads-up comparison they simply don’t compete on the same level as the P365’s and MAX-9’s.

Granted, slide serrations aren’t an end-all-be-all feature and I wouldn’t necessarily discount carrying a gun due to mediocre slide serrations (though the Hellcat truly has a problem in this regard and needs an overhaul to achieve slide serration mediocrity). Again though, it was one clear area in which these four pistols differed so I chose to call it out.

Ultimately, I came close. Close to putting the Shield Plus on my hip in place of my P365. I simply love how the Shield Plus shoots.

It ended up being the extra size — namely the well over a half-inch more backstrap height and how the heel of the grip juts out much farther and to a sharper point — that kept the SIG in my holster. Frankly, it’s hollow, unused polymer in the heel of the Shield Plus and I think they should have bobtailed the thing hard.

We’re living in a golden age of concealed carry pistols, that much is for sure. In this heads-up comparison there really isn’t a loser. Every single one of these pistols is reliable, accurate, and easy to conceal. They all have great triggers, great sights (or at least the option of great sights), optics cuts (or the option for that), and double-digit capacities.

It’s remarkable, really, to pack so much into such small pistols. For me, I’m sticking with the “original” — I like the P365 the best. Dan prefers the Hellcat. In a competition stage we’d both shoot the Shield Plus. The MAX-9 knocks it out of the park on performance per dollar.

They’re all great guns.

 

The Truth About Guns