`dvc push --dry`? List unpushed files?

Is there a way to see what dvc push will do, before doing it?

Relatedly: is there a way to see files that exist locally but not in a given remote?

Sounds like you are looking for dvc data status --not-in-remote and maybe legacy dvc status -c