Vue 2.6 changed the slot syntax, and the old one still works

2.6 introduced v-slot, unifying named and scoped slots under one directive and deprecating the two attributes that came before it.

<!-- deprecated in 2.6, removed in 3 -->
<template slot="header" slot-scope="{ item }">

<!-- 2.6 -->
<template v-slot:header="{ item }">

<!-- and the shorthand -->
<template #header="{ item }">

<!-- the default slot, which no longer needs a template wrapper -->
<Card v-slot="{ item }">{{ item.name }}</Card>

Both syntaxes work in 2.6, which makes this a migration with no deadline until Vue 3 — and that is exactly the situation where nothing gets migrated. Doing it as one mechanical commit while both are supported is considerably cheaper than doing it as part of a major upgrade. The # shorthand only works with an argument, so the default slot cannot be written as # alone, which is a small inconsistency worth knowing before it costs ten minutes.