I deleted a million rows from a two-million-row table and the table stayed exactly the same size. That part isn't news; it's how VACUUM has always worked in Postgres, because it marks space reusable rather than giving it back to the filesystem. What changes in PostgreSQL 19 is what you do next.
Source: [Dev.to](https://dev.to/alexgeorgiev17/postgresql-19s-repack-concurrently-swaps-a-five-second-table-lock-for-one-under-a-second-34kp)