Releases: immich-app/immich
v1.140.1
v1.140.1
What's Changed
🐛 Bug fixes
- fix(server): folder sort order by @skatsubo in #21383
- fix(server): refresh faces query by @mertalev in #21380
- fix(devcontainer): logging typo by @aaronliu0130 in #21415
- fix(mobile): memory lane query causes Photos page render a gray screen by @mertalev in #21422
- fix: default zoom level when location is not set by @bwees in #21428
- fix(web): Prevent changing asset location triggering keyboard shortcuts by @Snowknight26 in #21451
- fix: network criteria for upload LivePhotos by @alextran1502 in #21386
- fix: show "preparing" when sharing in beta timeline by @bwees in #21390
📚 Documentation
New Contributors
- @aaronliu0130 made their first contribution in #21415
Full Changelog: v1.140.0...v1.140.1
v1.140.0
v1.140.0
Highlights
Welcome to the release v1.140.0
of Immich, one more release, and one more day closer to 🐴 Stable-Day 🐴. This release continues the ramp-up effort to bring the beta timeline up to the same feature parity as the old one, while also addressing as many bugs as possible. Thanks to our active contributors, some cool features also made their way into this release. We encourage all Immich users to switch to the beta timeline and use it to help us identify and resolve issues. Let’s dive into the highlights of this release.
- [beta] Background sync
- [beta] Read-only mode
- Location management utility
[beta] Background sync
The background sync feature has now been added to the beta timeline. New assets are now detected and pushed to an upload queue, which will be handled automatically by the OS.
Some tasks, such as local and remote data sync, now also run in the background periodically. So that, as soon as you open the app, the newly taken assets are immediately available on the timeline.
For those who have been using the beta timeline, please toggle the upload button off then on again to enable the background workers.
[beta] Read-only mode
For parents who have kids who want to look over photos but don’t want them to accidentally delete or perform any action on them, this feature is for you. By double-tapping on the profile photo in the app, you can only view assets in the main timeline, and all the action buttons will be hidden. Thanks, @Sud-Puth, for proposing and initiating work on this nifty feature!

Location management utility
Thanks to @Johannbr for putting in time and effort into this feature. You can now find and edit missing location data on a specific date. By going to Utilities > Manage location
on the web, you will be presented with an interface to select the date to find the assets with missing GPS location and to update them in bulk


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
🚀 Features
- feat: beta background sync by @shenlong-tanwen in #21243
- feat(web): geolocation utility by @Johannbr in #20758
- feat(mobile): read only mode by @Sud-Puth and @bwees in #19368
🌟 Enhancements
- feat: add support for custom headers to TS SDK by @LukeHagar in #21205
- feat: expose createdAt in getAssetInfo by @Wingysam in #21184
- feat(web): Refresh album page after sharing by @Snowknight26 in #21283
- feat(web): Album picker shortcut info by @xCJPECKOVERx in #21273
🐛 Bug fixes
- fix: devcontainer after pnpm changes by @midzelis in #21227
- fix(web): Album multi-select 'm' shortcut prevents typing m in title box by @xCJPECKOVERx in #21249
- refactor: service worker by @jrasm91 in #21250
- fix(web): allow numeric input fields to be zero by @jrasm91 in #21258
- fix(web): Duplicate arrow shortcuts go to next/previous duplicate when viewing assets by @xCJPECKOVERx in #21200
- fix(web): handle multiple downloads in safari by @jrasm91 in #21259
- fix: album start/end dates on shared links by @jrasm91 in #21268
- fix: prevent an offline asset from being used as a person feature photo by @jrasm91 in #21278
- fix(web): suppress auto-play errors by @jrasm91 in #21282
- fix(mobile): caching thumbnails to disk by @mertalev in #21275
- fix(mobile): skip animation for offscreen thumbnails by @mertalev in #21277
- fix: invalid storage quota with decimals by @jrasm91 in #21271
- fix(mobile): user storage quota not showing by @YarosMallorca in #21263
- fix(web): album multi-select filter doesn't include other selected albums by @xCJPECKOVERx in #21322
- fix(mobile): capitalize month & day labels in beta timeline by @YarosMallorca in #21323
- fix: timeline scroll error handling by @jrasm91 in #21324
- fix(web): sign up double click by @jrasm91 in #21349
- fix: motion video extraction race condition by @jrasm91 in #21285
- fix(web): add primary text color to file upload toast by @Prajwalg19 in #21340
- fix(mobile): thumbnail requests not being cancelled by @mertalev in #21331
- fix(mobile): memory lane rebuild by @mertalev in #21350
- fix(mobile): fast animations when "disable animations" enabled by @YarosMallorca in #21309
- fix(web): middle click not working on videos by @YarosMallorca in #21304
- fix(mobile): allow gestures in asset viewer before image is loaded by @mertalev in #21354
- fix(web): Slideshow fade occurs when not in slideshow by @xCJPECKOVERx in #21326
📚 Documentation
- docs: update italian README: better wording, add some important sections, fixed links and alt texts by @gablilli in #21221
- fix: docs typo by @jrasm91 in #21269
- chore: faq commercial guidelines by @alextran1502 in #21320
🌐 Translations
- fix(web): Translate confirmation modal header and action buttons by @Snowknight26 in #21330
New Contributors
- @gablilli made their first contribution in #21221
- @LukeHagar made their first contribution in #21205
- @Prajwalg19 made their first contribution in #21340
- @Johannbr made their first contribution in #20758
- @Sud-Puth made their first contribution in #19368
Full Changelog: v1.139.4...v1.140.0
v1.139.4
v1.139.4
What's Changed
🐛 Bug fixes
- fix: cannot load thumbnail from unknown content length by @alextran1502 in #21192
- fix: border around dark theme button on onboarding page by @NicholasFlamy in #20846
- fix(web): handle edge cases in timeToSeconds function to prevent crashes by @baldarn in #21019
- fix: use composite cache key in user circle avatar by @shenlong-tanwen in #21220
- fix: wait for watched files to finish being written (#17100) by @TapuCosmo in #21180
New Contributors
Full Changelog: v1.139.3...v1.139.4
v1.139.3
v1.139.3
What's Changed
🐛 Bug fixes
- fix(web): add to multiple albums translation doesn't have plural formatting by @DevServs in #21087
- fix: shared album asset count query by @alextran1502 in #21157
- fix: parse correct metadata to userDto for SQlite store implmentation by @alextran1502 in #21154
- fix: sync flow block oAuth login page navigation by @alextran1502 in #21187
- fix: local offset hours by @jrasm91 in #21147
- fix: prefer local video if available by @shenlong-tanwen in #21119
📚 Documentation
- docs: update oauth.md - Authentik link leads to Page Not Found error by @pojlFDlxCOvZ4Kg8y1l4 in #21186
New Contributors
- @DevServs made their first contribution in #21087
- @pojlFDlxCOvZ4Kg8y1l4 made their first contribution in #21186
Full Changelog: v1.139.2...v1.139.3
v1.139.2
v1.139.2
v1.139.0
and v1.139.1
have made the ultimate sacrifice for switching from npm
to pnpm
in our release pipeline
Welcome to release v1.139.2
. This version continues to bring improvements to the beta timeline, from fixing bugs to significantly improving the image rendering pipeline, especially on Android. We appreciate users who have helped us test out the beta timeline! We encourage you all to switch to it to help us catch more bugs as the stable release is nigh. Let’s dive into the highlights of this release.
Highlights
- [beta] New image rendering pipeline
- [beta] Show remainder assets detail
- Option to skip in the duplicate resolver tools
- Add to multiple albums action
- [beta] Fixed the bug that upload progress doesn’t resume upon app restart (really fix it this time)
[beta] New image rendering pipeline
Thanks to our one and only wizard @mertalev 🧙, the mobile app now uses our own custom image loading and rendering pipeline, featuring multithreading and a series of other optimizations. In particular, this significantly improves displaying of local images on Android. Not only does this improve thumbnail loading speed, but local thumbnails are noticeably higher quality by avoiding compression. The experience of scrolling the timeline should now be on par with the local gallery app. Additionally, remote assets now benefit from request cancellation to avoid downloading thumbnails that are no longer relevant, further improving responsiveness when quickly scrolling the timeline.
[beta] Show assets pending backup
You can now view which assets are in the remaining list of backups. This helps track down problematic assets that cannot be uploaded for some reason. *cough, iCloud assets, cough*
Option to skip an entry in the duplicate resolution utility
You can now navigate back and forth to get to other entries in the duplicate list.
Add to multiple albums action
On the web, you can now add assets to multiple albums at once from the album selection modal.
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(web): Skip duplicates by @xCJPECKOVERx in #20880
- feat: get metadata about the current api key by @jrasm91 in #21027
- feat(web): Add to Multiple Albums by @xCJPECKOVERx in #20072
- chore(web): make search result loading behaviour more consistent by @uhthomas in #20741
- feat(mobile): platform thumbnail api by @mertalev in #20910
- feat(mobile): platform image providers by @mertalev in #20927
- feat: show remainder assets info by @alextran1502 in #21114
- feat(mobile): optimized thumbnail widget by @mertalev in #21073
- feat: add a counter to the duplicate utility by @normana10 in #21109
🐛 Bug fixes
- fix(mobile): show most recent image in album as thumbnail by @aaronjamt in #21037
- fix: skip albums selected or excluded from backups from deletions by @shenlong-tanwen in #21116
- fix: thumbnail rendering on backup asset detail tile by @alextran1502 in #21120
📚 Documentation
- chore: update docs to use pnpm by @danieldietzler in #21113
🌐 Translations
New Contributors
- @aaronjamt made their first contribution in #21037
- @normana10 made their first contribution in #21046
Full Changelog: v1.138.1...v1.139.2
v1.138.1
v1.138.1
What's Changed
🐛 Bug fixes
- fix: oauth auto-login infinite loop by @danieldietzler in #20904
- fix(mobile): always show cast button by @bwees in #20935
- fix(mobile): don't show view in timeline button when opening cast dialog by @bwees in #20934
- fix: backup resume more reliable on app start up by @alextran1502 in #20907
- fix: pinch in finished as zoomed in by @alextran1502 in #20936
- fix: locked photos shown in beta timeline favorite page by @alextran1502 in #20937
- refactor: bottom sheet action button by @alextran1502 in #20964
Full Changelog: v1.138.0...v1.138.1
v1.138.0
v1.138.0
Important
For users that are using the beta timeline, please update your server to v1.138.0
so that the sync mechanism can work correctly. v1.138.0
of the mobile app doesn’t sync the data correctly if your server is v1.137.2
or below.
Highlights
Welcome to the release v1.138.0
of Immich, this release adds many bugfixes and brings the beta timeline closer to feature parity; thank you all for helping with testing and giving feedback. Please let us know if the release fixes the issues you are facing. Let’s dive into some of the highlights below
- Reset PIN code with password
- Reset the OAuth ID
- [beta] swipe to delete album
- [beta] improvement in the upload and sync process
- [beta] map view with SQLite
Reset PIN code with password
In order to reset a forgotten PIN code, the admin user used to have to click the “Reset PIN code” button for the user. Now, users can reset their own PIN code by supplying their current password.
Note: when password login is disabled, this option is unavailable.
Reset via password


Reset via admin account


Reset OAuth ID
Immich stores some configuration in the database to keep track of which OAuth accounts are linked to which Immich users. When migrating to a new authentication system or provider, this configuration becomes invalid and can prevent the user from logging in with the new system. A button and accompanying reminder now exists in the OAuth settings to clear or reset this configuration for all users.


What's Changed
🚨 Breaking Changes
- fix: album asset sync must sync new assets in a shared album by @zackpollard in #20655
🚀 Features
- feat(mobile): create shared link for albums by @bwees in #20652
- feat(mobile): remove from album in asset viewer bar by @bwees in #20672
- feat(mobile): album shared user editing by @bwees in #20671
- feat: use sqlite for logging by @bwees in #20414
- feat: batch change date and time relatively by @mkuehne707 in #17717
- feat(web): reset pin code by @jrasm91 in #20766
- feat: reset oauth ids by @jrasm91 in #20798
- feat: edit image in beta timeline by @bwees in #20709
- feat: swipe to delete album by @alextran1502 in #20765
🌟 Enhancements
- chore: tweak photo sphere fov and zoom speed constants by @kNoAPP in #20595
- feat: add server.versionCheck permission by @mib1185 in #20555
- refactor(mobile): sqlite-based map view by @mertalev and @wuzihao051119 in #20665
- chore(web): remove arbitrary search result limit by @uhthomas in #20719
- feat(web): don't scroll to visible assets by @uhthomas in #20729
- fix: change all download icons to
mdiDownload
for clarity and consistency by @NicholasFlamy in #20821 - feat: add i18n formatting to
make translation
in mobile makefile by @NicholasFlamy in #20807 - feat: format date and time in /admin/users/ -> Profile section by @miroslawlis in #20811
🐛 Bug fixes
- fix(mobile): use right translation function for pluralized ICU message format by @zigarn in #20404
- fix: add assets to album by @alextran1502 in #20626
- fix: hide navigation bar in search page during multi-selection by @shenlong-tanwen in #20616
- fix: adjust search bar padding and visibility based on input state by @wojtaszek171 in #20598
- fix(mobile): fetch serverConfig before building shared link by @bwees in #20638
- fix: exif rating rounding by @cford256 in #20457
- fix: improvements to sync and upload when resuming app by @zackpollard in #20524
- fix(mobile): cleanly handle logout when no host is set by @bwees in #20521
- fix: not clearing local data when logging out while sync is running by @bwees in #20646
- fix: adjust margin and gap for trailing elements in control app bar by @wojtaszek171 in #20645
- fix(mobile): use storageIndicator setting for beta timeline by @bwees in #20639
- fix(mobile): disable memory lane when memories are disabled by @bwees in #20642
- fix: expand sheet when album search is focused by @bwees in #20651
- fix: exclude assets that haven't been hashed yet from uploads by @shenlong-tanwen in #20684
- fix(mobile): use cached thumbnail in full size image provider by @mertalev in #20637
- feat(mobile): use custom headers when connecting in widget by @bwees in #20666
- fix: empty custom header prevent logging in by @alextran1502 in #20693
- fix: delete local asset show twice by @alextran1502 in #20700
- fix(mobile): filter people that have less than 3 faces by @bwees in #20705
- fix: shared link custom URL photo access authentication by @gaurav-yadav in #20534
- fix: custom-url ssr by @jrasm91 in #20704
- fix(mobile): show video controls when in locked view by @bwees in #20707
- fix: server version not fetched after auto login by @shenlong-tanwen in #20713
- fix: video thumbnail generation for short videos by @patrickgoering in #20629
- fix: disk info is cleared when profile picture is uploaded by @Lauritz-Tieste in #20411
- fix(web): use correct sliding window offset for search results by @uhthomas in #20726
- fix(web): prevent thumbhashes from covering search bar by @uhthomas in #20720
- fix(web): limit max height of search results by @uhthomas in #20727
- fix(mobile): person birthday viewing/editing by @bwees in #20731
- fix(web): shared-link autocomplete by @jrasm91 in #20761
- fix(web): fix layout loop with single row grids in explore page by @gabrielsoldani in #20833
- fix: age info cut off by @alextran1502 in #20872
- fix(mobile): newest/oldest album sort by @bwees in #20743
- fix: asset_viewer page viewing experience by @alextran1502 in #20889
📚 Documentation
- docs: update TrueNAS docs by @Xiticks in #19990
- docs: remove warning about the removed repair page by @aamirazad in #20746
- feat(docs): add
make dev-docs
by @NicholasFlamy in #20572 - docs: include openapi.json by @jrasm91 in #20760
- feat: more cursed knowledge by @jrasm91 in #20794
- docs: vectorchord migration instructions, deprecation log on startup by @mertalev in #20867
🌐 Translations
New Contributors
v1.137.3
v1.137.3
- Fixes a media location migration issue for people who have
IMMICH_MEDIA_LOCATION
set. (e.g., Unraid)
What's Changed
🐛 Bug fixes
- fix: guard IS_FAVORITE column with SDK check by @shenlong-tanwen in #20511
- fix: migration if media location is set by @danieldietzler in #20532
Full Changelog: v1.137.2...v1.137.3
v1.137.1
v1.137.1
- Fixes an issue with the
/usr/src/app/upload
=>/data
migration if you don't have any assets in the default library
What's Changed
🐛 Bug fixes
- fix: automatic media location migration without internal assets by @danieldietzler in #20489
Full Changelog: v1.137.0...v1.137.1
v1.137.0
v1.137.0
- knock, knock
- Who's there?
- Breaking
- Breaking who?
- Breaking changes woohoo, with a stable-release-is-around-the-corner and coming to a server near you (soon™)
Caution
Breaking Changes
If your current, running version of Immich is v1.132.0
or newer, there is NO ACTION required. If you are updating from version below v1.132.0
continue reading.
Remove TypeORM (#20366)
This update requires applications to have started up at least once on 1.132.0+
. See https://immich.app/errors/#typeorm-upgrade for more details.
Highlights
Welcome to the release v1.137.0
of Immich. This version adds many bug fixes for the beta timeline, more feature parity with the old timeline, alongside some nifty enhancements to the web and the server as well. As always, new translations have been merged in, and the documentation has been updated at https://immich.app. Now, let’s dive in!
- The default
docker-compose.yml
template has changed - Beta timeline
- Shared link custom URL
- Find large files utility
- API key permission improvements
docker-compose.yml
template change (optional)
The default compose file now uses /data
instead of /usr/src/app/upload
. This is a completely optional change and NOT a breaking change. Prior versions of Immich will continue to work without any user intervention. For more information, see #20367.
Prior to this change, uploaded media was located at /usr/src/app/upload/upload
in the container (notice the double “upload” folders), which often led to confusion. It will now be located at /data/upload
, and we hope that makes things easier.
Beta timeline
Thank you to everyone who tried out the beta timeline in the last release! We have gathered a lot of great feedback, and are actively working on incorporating it. We’ve fixed a bunch of bugs and added back a bunch of previous features. Here’s a quick list/overview of beta timeline changes this release:
-
Fix the invalid timeline grouping issue
-
Fix the trash action translation keys
-
Fix the beta timeline switch missing in landscape mode
-
Fix a timeline migration bug on Android
-
Fix the text overflow issue on the action buttons
-
Fix deep links when the beta timeline is enabled
-
Fix search places not working correctly
-
Fix missing hero animation between tabs
-
Fix the backup remainder backup count issue
-
Fix the share to app upload
-
Fix the error navigating back from the backup page
-
Fix the backup indicator
-
Fix the back gesture in multi-select mode
-
Fix user profile images
-
Fix the issue downloading live photo
-
Fix the issue with sync for users with external libraries
-
Fix the issue with storage filling up for users with iCloud photos
… and more
Shared link custom URL (#19999)
Immich shared links by default are long and hard to guess. This is by design and is a security mechanism to prevent unwanted access. However, the long links can be a bit awkward to use because they are difficult to read. For cases where security is less important, we have added the option to specify a custom URL.
Shared links with a custom URL are now also available at /s/<slug>
(in addition to /share/<long-random-string>
. Naturally, these links don’t share the same security benefits of the long-random-string ones, so please use them accordingly.
Find large files utility (web-only)
This release adds a new, convenient utility to find large files on your instance. You can access it by navigating to the “Utility” page on the web, and clicking “Review large files”. The page shows the largest 250 original files for your user.
Improved API key permissions and documentation
Following up from the last release, we have added fine-grained permissions to more API endpoints, which are now also included in the auto-generated documentation, which can be read here.
Caution
Related to these changes, a few API permissions have been renamed. See #20250 for more details.
On the web, the New API Key form now includes the newly added permissions, as well as a search bar for quicker access.
What's Changed
🚨 Breaking Changes
🚀 Features
- feat: automatically detect media location changes by @jrasm91 in #20256
- feat: find large files utility by @niwla23 in #18040
- feat: change default media location to /data by @jrasm91 in #20367
- feat: better endpoint descriptions by @jrasm91 in #20439
🌟 Enhancements
- feat: don't wait for network on app startup by @zackpollard in #20232
- feat: add to album on new beta timeline by @bwees in #20119
- feat(web): api key permission search by @jrasm91 in #20248
- chore: delete action button by @alextran1502 in #20261
- feat: scroll to top & view in timeline by @alextran1502 in #20274
- feat(web): auto fit bounds for map modal. by @dagstuan in #20345
- feat: shared links custom URL by @Jed-Giblin in #19999
- feat: support config via systemd credentials by @amarshall in #20406
- feat: 3-2-1 backup onboarding card by @bwees in #20374
- feat: people page/sheet/detail by @alextran1502 in #20309
- fix(web): Search chip key value heights don't match by @xCJPECKOVERx in #20312
- feat: network requirement option for upload by @alextran1502 in #20302
- feat: drift edit time and date action by @bwees in #20377
- feat: drift description editor by @bwees in #20383
🐛 Bug fixes
- fix: override SSL options inside isolates by @shenlong-tanwen in #20142
- fix: fallback auto grouping to day grouping by @shenlong-tanwen in #20156
- fix: update trash action i18n keys by @shenlong-tanwen in #20164
- chore: remove build flavor Android by @alextran1502 in #20161
- fix: send correct includeArchived parameter to API when showing markers in map by @pelluch in #20117
- fix(web): multi-select in ascending asset order by @wuzihao051119 in #19461
- fix(mobile): hide video thumbnail when video is ready by @johnstef99 in #19328
- fix: geodata_places pkey migration failing for certain upgrade paths by @zackpollard in #20177
- fix: add beta toggle in landscape mode by @shenlong-tanwen in #20187
- fix: add missing
await
s when changing client certificate by @jfly in #20189 - fix: android backup album migration without recents by @zackpollard in #20220
- fix: optional number inputs by @danieldietzler in #20218
- fix: character width calculation by @alextran1502 in #20201
- fix: word wrapping on action buttons by @bwees in #20231
- fix: lookup the primary key constraint name before dropping it by @zackpollard in #20221
- fix(mobile): deep links when using the beta timeline by @bwees in #20111
- fix(mobile): beta search page improvements by @bwees in #20247
- fix(mobile): places search not working in beta version by @YarosMallorca in #20284
- fix: no hero animation after tab change by @shenlong-tanwen in #20285
- fix: remainder backup count by @alextran1502 in #20270
- fix: share to app upload by @alextran1502 in #20271
- fix: error on navigating back from backup selection page by @shenlong-tanwen in #20299
- fix(web): Album picker recent albums don't match sidebar by @xCJPECKOVERx in #20313
- fix: change translation key for archive action button by @shenlong-tanwen in #20336
...