ImageGenius Changes:
use \n
immich Changes:
v1.133.0 - The Hot Summer Release
Caution
BREAKING CHANGES
-
Mobile app version
Please make sure to have the mobile app and the server on the same version for this release. Older versions of the mobile app will not work correctly with version
v1.133.0
of the server. At the time of this release, the updated version of the mobile app should be available on the app stores. -
Upgrading the server from a very old release
As of 1.133.0, Immich only supports upgrading directly from 1.107.2 or later. If you’re trying to upgrade a version of Immich below this, please upgrade to 1.107.2 first and ensure Immich starts up successfully before continuing to the latest release.
-
New database vector extension
We are migrating off the deprecated pgvecto.rs database extension to its successor VectorChord, which comes with performance improvements in almost all aspects. This change is a major milestone we want to perform prior to the stable release.
Before making any other changes, please back up your database. While every effort has been made to make this migration as smooth as possible, there’s always a chance that something can go wrong.
After making a backup, please modify your docker-compose.yml
file with the following information, adjusting the pg major version and pgvecto.rs version if you changed them from the default.
[...]
database:
container_name: immich_postgres
- image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:739cdd626151ff1f796dc95a6591b55a714f341c737e27f045019ceabf8e8c52
+ image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0-pgvectors0.2.0
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
+ # Uncomment the DB_STORAGE_TYPE: 'HDD' var if your database isn't stored on SSDs
+ # DB_STORAGE_TYPE: 'HDD'
volumes:
# Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
- healthcheck:
- test: >-
- pg_isready --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" || exit 1;
- Chksum="$$(psql --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" --tuples-only --no-align
- --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')";
- echo "checksum failure count is $$Chksum";
- [ "$$Chksum" = '0' ] || exit 1
- interval: 5m
- start_interval: 30s
- start_period: 5m
- command: >-
- postgres
- -c shared_preload_libraries=vectors.so
- -c 'search_path="$$user", public, vectors'
- -c logging_collector=on
- -c max_wal_size=2GB
- -c shared_buffers=512MB
- -c wal_compression=on
restart: always
[...]
After making these changes, you can start Immich as normal. Immich will make some changes to the DB during startup, which can take seconds to minutes to finish, depending on hardware and library size. In particular, it’s normal for the server logs to be seemingly stuck at Reindexing clip_index
and Reindexing face_index
for some time if you have over 100k assets in Immich and/or Immich is on a relatively weak server. If you see these logs and there are no errors, just give it time.
Important
Note: after switching to VectorChord, you should not downgrade Immich below 1.133.0.
Please don’t hesitate to contact us here on GitHub or Discord if you encounter migration issues.
VectorChord FAQ
I have a separate PostgreSQL instance shared with multiple services. How can I switch to VectorChord?
Please see https://immich.app/docs/administration/postgres-standalone#migrating-to-vectorchord for migration instructions. The migration path will be different depending on whether you’re currently using pgvecto.rs or pgvector, as well as whether Immich has superuser DB permissions.
What will happen if I upgrade Immich to 1.133.0 without changing the DB image?
Immich will auto-detect the vector extension available in the DB and continue to work without manual intervention. However, we will drop support for pgvecto.rs in a later release, so please switch at your convenience.
I’m using a different deployment method than Docker Compose. How should I migrate?
If you’re using Immich through turnkey deployment methods such as TrueNAS apps, the respective maintainers will either perform the migration transparently or inform you of what to do if not.
Why are so many lines removed from the docker-compose.yml
file? Does this mean the health check is removed?
These lines are now incorporated into the image itself along with some additional tuning.
What does this change mean for my existing DB backups?
The new DB image includes pgvector and pgvecto.rs in addition to VectorChord, so you can use this image to restore from existing backups that used either of these extensions. However, backups made after switching to VectorChord require an image containing VectorChord to restore successfully.
Do I still need pgvecto.rs installed after migrating to VectorChord?
pgvecto.rs only needs to be available during the migration, or if you need to restore from a backup that used pgvecto.rs. For a leaner DB and a smaller image, you can optionally switch to an image variant that doesn’t have pgvecto.rs installed after you’ve performed the migration and started Immich: ghcr.io/immich-app/postgres:14-vectorchord0.3.0
, changing the PostgreSQL version as appropriate.
Why does it matter whether my database is on an SSD or an HDD?
These storage mediums have different performance characteristics. As a result, the optimal settings for an SSD are not the same as those for an HDD. Either configuration is compatible with SSD and HDD, but using the right configuration will make Immich snappier. As a general tip, we recommend users store the database on an SSD whenever possible.
Can I use the new database image as a general PostgreSQL image outside of Immich?
It’s a standard PostgreSQL container image that additionally contains the VectorChord, pgvector, and (optionally) pgvecto.rs extensions. If you were using the previous pgvecto.rs image for other purposes, you can similarly do so with this image.
If pgvecto.rs and pgvector still work, why should I switch to VectorChord?
VectorChord is faster, more stable, uses less RAM, and (with the settings Immich uses) offers higher-quality results than pgvector and pgvecto.rs. This translates to better search and facial recognition experiences. In addition, pgvecto.rs support will be dropped in the future, so changing it sooner will avoid disruption.
Highlights
Welcome to the release v1.133.0
of Immich, which is the hottest release yet for this summer, with more than 200 commits since the last version. This version brings you a new database extension, an even more optimized and faster timeline, more unified components on the web, some cool new features that have been requested for a long time, and many bug fixes and improvements. Let’s dive in!
- VectorChord database extension
- In-app notification
- Show map in albums view (web only)
- Locked folder
- Google Cast Support (web only)
- User detail page
- RTL text support on the web
- Performance improvement in web timeline
- Notable fix: thumbnail caching issue on the mobile app
- Notable fix: For users who use OAuth, you can now configure
TOKEN_ENDPOINT_AUTH_METHOD
to eitherclient_sect_post
orclient_secret_basic
after entering theCLIENT_SECRET
- Sneak peek
In-app notification
Introducing an in-app, or internal, notification system. Previously, there was no way to notify you on the client if a database backup failed. Now, the failed backup will show up under a new notification section on the web. This mechanism paves the way for other helpful notifications, such as when a new album is shared with you or when new assets are added to a shared album, directly in the app.
Show map in albums view
On the web, you can now click this button to see the map view that shows the location of all the photos and videos in an album.
Locked folder
Have you ever taken embarrassing selfies that you don’t want anyone to see, and worry that you could accidentally reveal them while showcasing your superb Immich library? Locked folder view got you covered, with a personal PIN code, and an option to use biometric verification on the mobile app. You can access the page from the sidebar on the web or in the Library
page on the app
You can select any assets and add them to the locked folder. They will only be shown in the locked folder view.
Google Cast Support
We now have casting support! Immich now supports casting to Google Cast enabled devices like the Google Chromecast. This feature is currently only available on the web, with mobile app support coming in the near future. You can use images, videos and slideshows with casting.
Note
Your Immich instance must be accessed through a public HTTPS endpoint in order for the casting device to successfully load media. Accessing the instance and casting from a private HTTPS endpoint (or an HTTP endpoint) will result in the cast receiver failing to load any media.
User detail page
From the user management page of the admin view, you can now get a more in-depth view of individual users for their information, usage statistics, and which features they have enabled, etc, by clicking on the email from the user’s table
RTL text support on the web
The web styling has been changed to accommodate RTL languages

Performance improvement in web timeline
Last time, we discussed thinking that the timeline performance has reached its prime and that adding more gains would be difficult. In this release, we managed to squeeze that gain like a ripe orange.
The timeline will automatically cancel the requests to the server when you scroll very fast, displaying the thumbnails instantaneously when the scrolling stops. Previously, the web needed to finish the requests for the thumbnails being scrolled by, even if they are not displayed on the viewport. This change significantly reduces the load time.
An additional optimization has been made to reduce the data packet for each thumbnail to about 30% of its original size. This optimization contributes to a greater loading speed on the timeline.
We hope you enjoy these impressive improvements.
Sneak Peak
Besides the cool features and enhancements that made their way into the application, along with many bug fixes, our highest priority at the moment is moving toward the stable release. A big chunk of time and dedication from the team is now spent on improving the mobile app synchronization system, basically rewriting the flow and designing the data model from the ground up. At the same time, we’re working to properly allocate CPU-intensive tasks to background threads to avoid app stuttering and jerkiness when the data sync between the server and the mobile app happens.
Below is the chart result comparing the local album sync between the current version and the reworked version.
We are working hard to get it into the application in the coming months and are very excited about this new improvement.
Cheers!
The Immich Team
Support Immich
If you find the project helpful, you can support Immich by purchasing a product key at https://buy.immich.app or purchase our merchandise at https://immich.store
What's Changed
🚨 Breaking Changes
- refactor: user avatar color by @jrasm91 in immich-app/immich#17753
- chore: remove old memory lane implementation by @jrasm91 in immich-app/immich#18000
- feat: vectorchord by @mertalev in immich-app/immich#18042
🚀 Features
- feat: rtl by @jrasm91 in immich-app/immich#17860
- feat: notifications by @jrasm91 in immich-app/immich#17701
- feat(web): Map in albums & shared albums by @davidpcrd in immich-app/immich#17906
- feat(server): visibility column by @alextran1502 in immich-app/immich#17939
- feat: user pin-code by @alextran1502 in immich-app/immich#18138
- feat(web): user detail page by @jrasm91 in immich-app/immich#18230
- feat: locked/private view by @alextran1502 in immich-app/immich#18268
- feat: add session creation endpoint by @bwees in immich-app/immich#18295
- feat(web): continue after login by @jrasm91 in immich-app/immich#18302
- feat: bulk change description by @koostamas in immich-app/immich#18288
- feat: locked view mobile by @alextran1502 in immich-app/immich#18316
- feat(web): add support for casting by @bwees in immich-app/immich#18231
🌟 Enhancements
- feat: api response compression by @zackpollard in immich-app/immich#17878
- feat(mobile): Capitalize month names in asset grid by @atollk in immich-app/immich#17898
- feat: preload and cancel images with a service worker by @midzelis in immich-app/immich#16893
- feat(mobile): save grid size on gesture resize by @YarosMallorca in immich-app/immich#17891
- feat(web): move duplicates controls above preview of duplicate images by @LukeTowers in immich-app/immich#17837
- feat(server): JXL previews from DNG 1.7+ by @eligao in immich-app/immich#17861
- feat(web): responsive date group header height by @midzelis in immich-app/immich#17944
- feat: configure token endpoint auth method by @jrasm91 in immich-app/immich#17968
- feat: Add DB_SSL_MODE environment variable for Postgres sslmode by @typokign in immich-app/immich#18025
- feat(web): stat card tweaks by @jrasm91 in immich-app/immich#18189
- feat(web): clear person birthdate by @jrasm91 in immich-app/immich#18330
- fix(web): format dates with the locale preference by @Sese-Schneider in immich-app/immich#18259
- feat(web): lighter timeline buckets by @midzelis in immich-app/immich#17719
- feat(server): sort images in duplicate groups by date by @GeoffreyFrogeye in immich-app/immich#18347
- feat(server): lighter buckets by @midzelis in immich-app/immich#17831
🐛 Bug fixes
- fix(web): Make date-time formatting follow locale by @atollk in immich-app/immich#17899
- fix(mobile): Share page URL by @mmomjian in immich-app/immich#17834
- fix(server): handle orientation of imported face regions by @skatsubo in immich-app/immich#18021
- fix: update assets when
duplicateId
is provided asnull
by @TitanNano in immich-app/immich#18071 - fix(mobile): empty translation placeholders by @shenlong-tanwen in immich-app/immich#18063
- fix(server): more robust person thumbnail generation by @mertalev in immich-app/immich#17974
- fix(mobile): Remote video playback and asset download on Android with mTLS by @rovo89 in immich-app/immich#16403
- fix: z-index war in the asset viewer by @danieldietzler in immich-app/immich#18091
- fix: properly work with languages with multiple scripts by @LPkkjHD in immich-app/immich#18167
- fix(web): user restore by @jrasm91 in immich-app/immich#18188
- fix(server): vacuum after deleting people by @mertalev in immich-app/immich#18299
- refactor(server): "on this day" memory creation by @mertalev in immich-app/immich#18333
- fix(web): Make QR code colors solid by @Snowknight26 in immich-app/immich#18340
- fix: delay settings apply for slideshow popup by @dj0024javia in immich-app/immich#18028
- fix(mobile): reduce stutter/jank on search pages by @Saschl in immich-app/immich#18363
- fix(mobile): stale thumbnail cache by @alextran1502 in immich-app/immich#18351
- fix(server): select main stream according to bitrate by @wuzihao051119 in immich-app/immich#18375
- fix(mobile): do not continue on remote stream parse error by @shenlong-tanwen in immich-app/immich#18344
📚 Documentation
- fix: documentation - synology install docker link by @peterdenham in immich-app/immich#18084
- fix(docs): update nginx reverse proxy by @mmomjian in immich-app/immich#18104
- fix(docs): remove old patch versions from version switcher by @NicholasFlamy in immich-app/immich#18130
- chore: update truenas install guide by @DjP-iX in immich-app/immich#18142
- docs: face lift, botox x3 by @alextran1502 in immich-app/immich#18184
- fix(docs): Update old jellyfin docs links by @tetrois in immich-app/immich#18311
- chore: update docker-compose to add storage type configuration by @zackpollard in immich-app/immich#18415
- fix(docs): vchord migration by @mmomjian in immich-app/immich#18418
- chore: remove duplicate finder from community projects by @bo0tzz in immich-app/immich#18424
- chore: update milestones by @danieldietzler in immich-app/immich#18426
🌐 Translations
- chore(mobile): translate toast messages by @ben-basten in immich-app/immich#17964
- fix: add missing translations to face editor by @danieldietzler in immich-app/immich#17993
- chore(web): update translations by @weblate in immich-app/immich#17817
- chore: add language requests from weblate by @danieldietzler in immich-app/immich#18050
- chore(web): update translations by @weblate in immich-app/immich#18083
New Contributors
- @LukeTowers made their first contribution in immich-app/immich#17837
- @davidpcrd made their first contribution in immich-app/immich#17906
- @peterdenham made their first contribution in immich-app/immich#18084
- @TitanNano made their first contribution in immich-app/immich#18071
- @typokign made their first contribution in immich-app/immich#18025
- @dahool made their first contribution in immich-app/immich#18127
- @LPkkjHD made their first contribution in immich-app/immich#18167
- @tetrois made their first contribution in immich-app/immich#18311
- @koostamas made their first contribution in immich-app/immich#18288
- @dj0024javia made their first contribution in immich-app/immich#18028
- @TomK32 made their first contribution in immich-app/immich#17309
Full Changelog: https://github.com/immich-app/immich/compare/v1.132.3...