Under some elementary scenarios (and using some Postgres offerings), you can do a full major upgrade using logical replication (even with replicas). It depends on your situation, generally I agree, any sophisticated use of Postgres (lot of views, materialized or not, fast changing schema, large objects, and so on) makes upgrades a pain and is generally somewhat of an unresolved problem in my opinion.