v2.1.0
Welcome to release v2.1.0
of Immich!
It’s been about 2 weeks since our stable release 🎉 and the celebratory Retro DVD 📀, which many of you are starting to receive. For those outside the US still waiting for theirs, we're currently awaiting a new batch of DVDs. Hopefully, those start shipping early next week at the latest.
We’d like to take a moment to thank everyone for the support, kind words, and otherwise positive feedback. It’s been great to hear, and it means more to us than you know ♥️.
Highlights
This release contains mostly bug fixes, with a few minor enhancements. Here are some of the highlights:
- Improved slideshow shuffle order (web)
- Edit seconds and milliseconds (web)
- Upload to stack (web)
- Local album event notifications (web)
- Notable fix: mobile search page scrolls back to the top
As always, this release also contains the latest translations.
Improved slideshow shuffle order (web)
This release improves on the algorithm used to implement the Shuffle
order for the slideshow feature on the web. You should now see a better distribution of photos (fewer repeats).

Edit seconds and milliseconds (web)
The change date modal on the web now supports the option to specify seconds and milliseconds.

Upload to stack (web)
For stacks, a new menu option has been added: Add upload to stack
. This action will open a file picker, allowing you to upload directly to the stack.

Local album event notifications (web)
This release adds a new in-app notification type: Shared Album Invitation
and Shared Album Update
. When you are invited to a shared album, and when a new asset is added to it, all users will receive a notification about the update. You can click on the notification to go directly to the mentioned album.
The foundation for in-app (web) notifications was introduced in #17701, and we’re still working on expanding it to include more event types, with the hope of eventually incorporating it into the mobile app as a push notification.

Notable fix: mobile search page scrolls back to the top
The search page on mobile uses “infinite scroll”, which means new chunks of assets are automatically loaded in as you scroll down the page. However, prior to this release, the scroll position would reset to the top whenever new chunks were added, resulting in a frustrating user experience. This has been fixed, and the scroll position no longer resets.
Support Immich
If you find the project helpful, you can support Immich by purchasing a product key at https://buy.immich.app or our merchandise at https://immich.store
What's Changed
🌟 Enhancements
- feat(server): improve checkAlbumAccess query performance by @skatsubo in #22467
- fix(web): do not notify on patch releases by @jrasm91 in #22591
- fix(web): Uniform random distribution during shuffle by @Pascal-So in #19902
- feat(web): seconds and milliseconds in timestamps by @kaziu687 in #20337
- feat(web): Add upload to stack action by @Sese-Schneider in #19842
- feat(server): add
immich.users.total
metric by @Tushar-Harsora in #21780 - feat: local album events notification by @alextran1502 in #22817
🐛 Bug fixes
- fix(docs): link to immich docs does not lead correctly to docs by @XavierDupuis in #22687
- fix(server): fix chunking Postgres query parameters by @skatsubo in #22684
- fix(ml): Resolve IPv6 startup crash and healthcheck failure by @CaptainJack2491 in #22387
- fix(server): override reserved color metadata for video thumbnails by @mertalev in #22348
- fix(mobile): trash description cut off by @YarosMallorca in #22662
- fix(mobile): empty album description does not save by @YarosMallorca in #22649
- fix(mobile): video player using ref after disposal by @mertalev in #21843
- fix: missing responsive calculation in UserPageLayout by @midzelis in #22455
- fix: use full-size image for non-web-compatible panoramas by @grgergo1 in #20359
- fix: hide view in timeline button on local timeline by @bwees in #22713
- fix: Fix issue fail to download iOS live photos by @CuberL in #22708
- fix(mobile): closing editor goes back to main page by @YarosMallorca in #22647
- fix: improve the selected sidebar item text color in dark mode by @alextran1502 in #22640
- fix: promote to foreground service before starting engine by @shenlong-tanwen in #22517
- fix: bottom sheet blank with local assets that have remote counterparts by @bwees in #22743
- fix: skip local only assets in move to lock action by @shenlong-tanwen in #22728
- fix: brief flashing when swiping from video by @Saschl in #22187
- fix: persist search page scroll offset between rebuilds by @shenlong-tanwen in #22733
- fix: only cast to device if the asset is a RemoteAsset by @bwees in #22805
- fix: ios skip posting hash response after detached from engine by @shenlong-tanwen in #22695
- fix: shared album control permissions by @bwees in #22435
- fix: show dialog before delete local action by @shenlong-tanwen in #22280
- chore: refactor show view in timeline button by @bwees in #22894
📚 Documentation
- docs: update Synology install guide by @TDR001 in #21996
- docs: add some external library notes by @jrasm91 in #22776
- docs: add Immich-Stack to community-projects by @Qhilm in #21563
🌐 Translations
New Contributors
- @XavierDupuis made their first contribution in #22687
- @adrianjost made their first contribution in #22631
- @CaptainJack2491 made their first contribution in #22387
- @USBAkimbo made their first contribution in #22673
- @MontejoJorge made their first contribution in #22702
- @diogotcorreia made their first contribution in #21602
- @CuberL made their first contribution in #22708
- @TDR001 made their first contribution in #21996
- @PeterDaveHello made their first contribution in #22703
Full Changelog: v2.0.1...v2.1.0