Each version of Postgres.app is available with different major versions of PostgreSQL bundled. If you use “Check For Updates…”, it will show you new releases either bundled with the same single major version of PostgreSQL or all supported versions depending on the release you are currently running.
PostgreSQL itself has major and minor updates (see versioning policy). Major versions (first part of version number since ‘10’, first two parts till ‘9.6’) are released about once a year, contain new features and require a manual process to convert a data directory to a new major version, see migrating data. You can run multiple major versions in parallel if you use a multi version bundle of Postgres.app from the downloads page and different Port numbers.
PostgreSQL minor versions are indicated by the last part of the version number (e.g. ‘14.3’ or ‘9.6.24’). Minor updates are released for all supported major versions about once per quarter. These updates only require a restart of the application and are highly recommended as they contain bugfixes and security updates both to PostgreSQL and it’s bundled dependencies.
Postgres.app 2.0 or later has an automatic update function. Just open the app, and select “Check For Updates…” from the “Postgres” menu.
While the self-update of Postgres.app and the bundled PostgreSQL binaries generally is an easy and painless process, we recommend to perform some additional steps:
SELECT * FROM pg_available_extensions WHERE installed_version IS NOT NULL AND default_version <> installed_version;
If there are results, run
ALTER EXTENSION xyz UPDATE; for each listed extension xyz.
In the likely case, PostGIS extensions are listed, it’s better to run
SELECT postgis_extensions_upgrade(); instead to respect all their inner dependencies.
This again, needs to be done to each database separately.
You can upgrade to Postgres.app 2 just by replacing the app in your
/Applications with the new version
If you want to upgrade from earlier versions of Postgres.app, you will need to migrate your data.
Alternatively, you can make a custom version of Postgres.app 2 that supports the older server versions. See this page for details.