A trailing comma after the last argument of a function call. PHP 7.3 came out at the start of the month, and this is the feature I noticed first, because I meet the missing comma in every second diff:

$this->logger->info(
    'order created',
    ['order_id' => $order->id],
);

A tiny thing that kills a whole class of noisy diffs, the ones where adding an argument touches the previous line too. Arrays got this years ago. Calls only now.

Flexible heredoc is the change I waited for longest. The closing marker can be indented, so a SQL query in a heredoc no longer crawls to the left edge of the file and ruins the indentation of the whole method. Cosmetic, and I meet it every day.

And JSON_THROW_ON_ERROR. Until now json_decode returned null on garbage input, and null is also a valid decode result, so proper error handling needed json_last_error(), which nobody called. Now you can ask for an exception and handle failure the normal way. A bug class removed from the language, if you opt in.

None of this justifies an upgrade by itself, and that is the actual point. No headline feature, nothing for a conference slide. The yearly PHP upgrade is cheap when it is yearly. Add 7.3 to the CI matrix next to 7.2 in January, watch it, fix the couple of deprecations, switch production in spring. A few days of calendar time, hours of real work. I have also walked the other path, 5.6 to 7.x on an old codebase, and that was a project with a budget and meetings.

The cost of an upgrade grows faster than linearly with the distance. Keep the distance short. Put the new version in CI while it is still boring.