Releases: immich-app/immich
Release list
v3.0.2
v3.0.2
This patch release addresses various bugs from v3 release and adds an additional filter to workflows
What's Changed
🌟 Enhancements
- fix(web): add ARIA label to ServerStatisticsCard by @tjhorner in #29497
- feat(server): hls variant configuration by @mertalev in #29613
- feat: user agnostic database restore by @danieldietzler in #29512
- feat(server): date workflow filter by @benbeckford in #29040
🐛 Bug fixes
- fix: re-add gCastEnabled negation by @bo0tzz in #29499
- fix: downmix audio to stereo to fix broken channel layout by @lukasdotcom in #29485
- fix: live transcoding when viewing from a link share by @lukasdotcom in #29471
- fix: web search timeline visibility by @danieldietzler in #29518
- fix(web): missing i18n strings by @wonsukchoi in #29612
- fix: chinese browser locales recognition by @danieldietzler in #29622
- chore: improve added to album messages by @danieldietzler in #29641
- fix(mobile): fix 10-bit heic and avif colors on android by @santoshakil in #29631
- fix(mobile): match iOS scroll to top and tabbar scroll (#28469) by @agg23 in #29705
- fix: wrap migrations in transaction by @shenlong-tanwen in #29664
- fix: oauth account linking by @danieldietzler in #29624
- fix: incorrect grouping of recently added assets by @benbeckford in #29666
- fix: integrity checks checksum pagination by @danieldietzler in #29516
- fix(mobile): missing crop options and rotation scaling by @bwees in #29645
- fix(mobile): properly handle live photos locally by @agg23 in #29462
- fix: integrity checks dto validation by @danieldietzler in #29621
- fix(mobile): http request handling after isolate death by @mertalev in #29714
- fix: do not log out on automatic url switch by @shenlong-tanwen in #29715
- fix(server): stream ffprobe packets by @mertalev in #29723
- fix: search metadata for album shared links by @danieldietzler in #29742
- fix(web): clear asset selection when search context changes by @khanguyen74 in #29738
- fix(mobile): update timeline args on layout constraint changes by @santoshakil in #29653
- fix: iso date parsing for three digit years by @danieldietzler in #29739
- fix: missing files integrity checks by @danieldietzler in #29737
- fix(mobile): play videos from search results and folder view by @santoshakil in #29693
- fix(web): recursively unnest class arrays by @meesfrensel in #29755
- fix: emit album update event when uploading assets through shared link by @danieldietzler in #29757
- fix(web): always initialize language manager to set lang and dir by @meesfrensel in #29696
📚 Documentation
- chore: update docs with v3 tags by @alextran1502 in #29312
- fix(docs): use correct heading name for DB dump by @track0x1 in #29483
- feat(docs): add Malayalam language support in README files by @jinskjoy in #29593
- fix(docs): clarify version policy by @mmomjian in #29654
🌐 Translations
New Contributors
- @tjhorner made their first contribution in #29497
- @wonsukchoi made their first contribution in #29612
- @track0x1 made their first contribution in #29483
- @jinskjoy made their first contribution in #29593
- @khanguyen74 made their first contribution in #29738
Full Changelog: v3.0.1...v3.0.2
v3.0.1
v3.0.1
- Fixes a bug that causes albums don't show up in the mobile app
What's Changed
🚀 Features
- feat(web): recently added link in sidebar by @benbeckford in #29039
🐛 Bug fixes
- fix: albums broken on v2 mobile clients by @shenlong-tanwen in #29446
- fix: setting input field description spacing for description snippet by @danieldietzler in #29433
🌐 Translations
Full Changelog: v3.0.0...v3.0.1
v3.0.0
v3.0.0
Welcome to Immich v3.0.0!
After months of hard work from the team and our amazing contributors, we're thrilled to announce the next major version of Immich: v3.0.0! 🎉
Breaking changes
This release includes several breaking changes; read the full migration guide here. It's worth mentioning that many of the breaking changes are updates to API endpoints and affect only third-party tools that integrate with Immich's API. For the vast majority of users, updating works exactly as it always has.
How to update
Warning
v3.0.0 drops support for pgvecto.rs. If you run Immich before v1.133.0 and haven't done the migration step yet, see the migration guide here. https://docs.immich.app/install/upgrading/#migrating-to-vectorchord
First, update the IMMICH_VERSION in your .env file to v3:
- IMMICH_VERSION=v2
+ IMMICH_VERSION=v3Then run the usual update commands:
docker compose pull && docker compose up -dRelease candidates
If you missed it, v3.0.0 was the first time we used release candidates, also known as prereleases. Release candidates are tested but not yet official releases of Immich, and they allow us to find and fix any outstanding bugs before a final release. If you would like to be notified about release candidates directly through Immich, you can change the release channel from "Stable" to "Release candidate" in the Admin settings > Version check options (here).
New Merch
As part of this release, we're happy to announce we also have some new swag for you!
- Kids clothing: For those who are likely the reason for your Immich library's size
- Colored embroidery: We now have clothes with a full color embroidered Immich logo
Check it out now at https://immich.store!
Highlights
Now, let's get right into all the new features in this release:
- Mobile non-destructive editing
- Workflows (preview)
- Background backup improvement
- Recently added page
- Integrity checks
- Slideshow on mobile app
- HLS and real-time video transcoding (preview)
- New video player for web
- Open photo in Immich as gallery on Android
- OCR on mobile app
- Upload asset directly to album on the mobile app
- Option to select image size when sharing on the mobile app
- Timeline performance improvement for browsing a large amount of assets in a single month
Mobile non-destructive editing
This is a follow-up to Image Editing on the web, which was released in v2.5.0. This feature allows you to make non-destructive edits to your photos inside of Immich. Until now, the mobile editor used a completely different system that created new assets instead of editing the photo in place.
With this update, we bring a new, easier-to-use editor to mobile devices that has the same features as the web version. You can now edit photos directly in the mobile app, including cropping, rotating, and adjusting your images without ever touching the original file. Similar to the web, edits are non-destructive, so you can revisit or revert them at any time. You can even make edits on mobile and then adjust them on the web later!
Some features from the previous mobile editing implementation have been removed including:
- Recoloring photos
- Editing live photos
- Editing local assets
We have plans to bring some of these capabilities back in future releases.
Workflows (preview)
The first preview of Workflows is here! Workflows let you automate actions in your library by chaining triggers, filters, and actions together with a drag-and-drop builder. This is the foundation for many exciting automations to come, and we'd love your feedback as we continue building on it.
You can access the feature from Utilities > Workflows on the web.
From there, you can either create a new blank workflow or browse the premade templates to get a basic understanding of how workflows can be used.
Workflows editor
In the workflows editor, you can switch between the Visual or JSON editor. The visual editor is nice for building out the workflow; the JSON editor is nice for sharing and receiving workflow content from others.
In each workflow, there is a trigger and a sequence of steps.
- Trigger: this is the entry point of each workflow; when the trigger occurs, the steps are evaluated.
- Steps: they include Filters (conditions) and Actions (effects); they can be combined to produce the desired effect of the use case you aim for.
Sharing a workflow
You can share the workflow you made with others in two ways: text and JSON. Text is nice for sharing on a forum or for show-and-tell content. JSON is nice for others to make an exact copy of your workflow's configuration.
You can copy the text in the workflows summary panel on the lower right of the screen
You can share the JSON content from the copy workflows button in the app bar, switch to the JSON editor, or use the Show schema button in the context menu in the workflows list
Note
Please use this discussion thread to propose new ideas of triggers and actions. We are looking for extensive feedback and suggestions from you all.
Background backup improvements
Background backup on Android is now significantly more reliable. Previously, the background backup on Android was limited to newly taken photos. Now, the app uses a new periodic task scheduler, which allows you to upload your entire library in the background, and it plays nicer with Android's background execution limits, properly cleans up tasks, and warns you when battery optimization and notification settings might interfere with backups.
On iOS, the background refresh task now runs its sync and upload work in parallel, so uploads actually start within the short time window iOS allows.
Recently added page
A new "Recently Added" page on the web and mobile lets you browse your library sorted by when assets were added to Immich, rather than when they were taken. This makes it easier to find what's new when browsing a new batch of imports. You can find the new page in the "Explore" tab on the web and in the "Search" tab on mobile.
Integrity checks
The maintenance page has gotten a new addition: integrity reports! Immich will scan its directories on your file system, and compare it to what it has stored in its database. If there are deviations, they will be surfaced as
- untracked, if there is a file in Immich's directories that Immich does not know of
- missing, if Immich references a file in its database that does not exist in that place (anymore)
- a checksum mismatch, if the checksum of the file on disk does not match the checksum Immich has stored for that file. Typically, this would happen through file corruption but could also be the result of a bad rename.
You can configure when and how long the job runs each night.
Slideshow (mobile)
The slideshow experience comes to mobile! You can now sit back and let your photos and videos play across the screen, just like on the web.
HLS and Real-Time Video transcoding (preview)
Immich can now transcode videos on-the-fly without needing to generate offline transcodes. This has been a long-requested feature with many benefits:
- Quality switching (both manual and automati...
v3.0.0-rc.3
Warning
Disclaimer
This is a release candidate, not a stable release. It is subject to change and may contain bugs or breaking changes. As always, make sure you have a backup of your database and library before upgrading to this version.
This third release candidate v3.0.0-rc.3 fixes bugs and issues that were found in the last release candidate.
Release notes
Work-in-progress release notes can be found here:
https://pr-558.dev.immich.app/blog/v3.0.0-release
Server
To use this RC version on the server, update the IMMICH_VERSION in your .env file:
IMMICH_VERSION=v3.0.0-rc.3
or
IMMICH_VERSION=v3-rc
Then pull and restart:
docker compose pull && docker compose up -dMobile
To use this RC version on the mobile app, follow the appropriate link for your platform:
Android
You can download the APK in the release note below, or tap on "Join the beta" from the Google Play Immich page
iOS
The iOS app is available via Testflight: https://testflight.apple.com/join/JTSTucBd
If you run into any issues, please report them on GitHub so we can address them before the final release. Thank you for helping us test!
And as always, bugs are fixed, and many other improvements also come with this release.
What's Changed
🌟 Enhancements
- feat: keyboard seeking for new video player by @danieldietzler in #29208
- feat(web): Add text-white-shadow to elements and increase the shadows effect by @Vogeluff in #29165
- feat: webhook workflow action by @benbeckford in #29258
🐛 Bug fixes
- fix: detail panel people reactivity and iterator consumption by @danieldietzler in #29250
- fix(server): use VBR for QSV so the max bitrate is respected by @aclerici38 in #29240
- fix: ignore external libraries for integrity report checksum check by @danieldietzler in #29248
- fix(web): remove map's fullscreen button by @meesfrensel in #29192
- refactor: use SemVer classes for version compatability message by @bwees in #29056
- fix: sync backfill by @jrasm91 in #29267
- fix(mobile): force AssetViewerPage recreation on repeated view intents by @okxint in #29235
- fix(mobile): blank notifications page after enabling notifications by @santoshakil in #29232
- fix(mobile): app doesn't exit full-screen mode by @YarosMallorca in #29301
- fix(mobile): only toggle backup from the switch, not the whole row by @santoshakil in #29236
📚 Documentation
- docs: clarify duplicate exif merging intent by @timonrieger in #29203
- fix(docsc): v3 bump by @mmomjian in #29246
- docs: MS smtp guide by @jameskimmel in #29289
🌐 Translations
- fix: turkish readme translation by @MuySup in #29234
- chore(web): update translations by @weblate in #29204
- chore(web): update translations by @weblate in #29290
New Contributors
- @MuySup made their first contribution in #29234
- @aclerici38 made their first contribution in #29240
- @jullanggit made their first contribution in #29308
- @jameskimmel made their first contribution in #29289
Full Changelog: v3.0.0-rc.2...v3.0.0-rc.3
v3.0.0-rc.2
Warning
Disclaimer
This is a release candidate, not a stable release. It is subject to change and may contain bugs or breaking changes. As always, make sure you have a backup of your database and library before upgrading to this version.
This second release candidate v3.0.0-rc.2 fixes bugs and issues that were found in the last release candidate.
Release notes
Work-in-progress release notes can be found here:
https://pr-558.dev.immich.app/blog/v3.0.0-release
Server
To use this RC version on the server, update the IMMICH_VERSION in your .env file:
IMMICH_VERSION=v3.0.0-rc.2
or
IMMICH_VERSION=v3-rc
Then pull and restart:
docker compose pull && docker compose up -dMobile
To use this RC version on the mobile app, follow the appropriate link for your platform:
Android
You can download the APK in the release note below, or tap on "Join the beta" from the Google Play Immich page
iOS
We are currently having issues with the iOS release. Expect a new version on TestFlight to land early next week at the latest: https://testflight.apple.com/join/JTSTucBd
If you run into any issues, please report them on GitHub so we can address them before the final release. Thank you for helping us test!
What's Changed
🐛 Bug fixes
- fix(server): skip existing users when sharing albums by @jeevan6996 in #28884
- fix: web i18n by @danieldietzler in #29175
- fix(web): shift+click on GPS asset extends range selection in geolocation utility by @timonrieger in #29022
- fix(server): allow non-utc datetime offsets by @timonrieger in #29186
- fix: remove local-only step ids from workflow json by @danieldietzler in #29188
- fix: asset type filter by @danieldietzler in #29190
- fix(mobile): prevent duplicate login pages for unauthenticated share intent warm start by @olildu in #29054
- fix(mobile): refresh memories on resume and day change by @santoshakil in #28983
- fix(mobile): re-lock locked folder when the app is backgrounded by @santoshakil in #29089
- fix(mobile): endless spinner on album selection when device has no albums by @santoshakil in #28994
- fix: rc version check by @danieldietzler in #29194
📚 Documentation
- docs(mobile-app): add Play App Signing certificate hash by @tlvince in #29168
- docs(mobile): point users towards shared setup docs by @agg23 in #29078
🌐 Translations
New Contributors
- @jeevan6996 made their first contribution in #28884
- @rizwanpatel-gif made their first contribution in #29172
- @olildu made their first contribution in #29054
Full Changelog: v3.0.0-rc.1...v3.0.0-rc.2
v3.0.0-rc.1
v3.0.0-rc.1 — Release Candidate
Warning
Disclaimer
This is a release candidate, not a stable release. It is subject to change and may contain bugs or breaking changes. As always, make sure you have a backup of your database and library before upgrading to this version.
This second release candidate v3.0.0-rc.1 fixes bugs and issues that were found in the last release candidate. You can now use the release candidate tag v3-rc for all the prereleases under v3.
Release notes
Work-in-progress release notes can be found here:
https://pr-558.dev.immich.app/blog/v3.0.0-release
Server
To use this RC version on the server, update the IMMICH_VERSION in your .env file:
IMMICH_VERSION=v3.0.0-rc.1
or
IMMICH_VERSION=v3-rc
Then pull and restart:
docker compose pull && docker compose up -dMobile
To use this RC version on the mobile app, follow the appropriate link for your platform:
Android
You can download the APK in the release note below, or tap on "Join the beta" from the Google Play Immich page
iOS
Use the TestFlight link or scan the QR Code https://testflight.apple.com/join/JTSTucBd
If you run into any issues, please report them on GitHub so we can address them before the final release. Thank you for helping us test!
What's Changed
🌟 Enhancements
- fix(web): show album names in duplicate review by @meesfrensel in #29080
🐛 Bug fixes
- fix(mobile): show like and comment options on album photo deep links by @santoshakil in #29020
- fix(web): correctly handle person search with more than 100 results by @maxinegardenas in #29002
- fix(web): prevent upload status panel from overlapping album action bar by @okxint in #29044
- fix(web): error loading image state by @bwees in #29058
- fix(web): show asset arrows by @timonrieger in #29010
- fix(server): hide partner archived asset locations from map by @timonrieger in #29028
- fix: lock transcoding options by @timonrieger in #29076
- fix(server): do not merge metadata when multiple duplicates are kept by @timonrieger in #29035
- fix: integrity report checksum query by @danieldietzler in #29136
- fix: map settings by @danieldietzler in #29134
- fix: too strict cron expression validation by @danieldietzler in #29138
- fix(web): respect local timezone when building date range for search by @okxint in #29128
- fix(web): language selector by @meesfrensel in #29065
- fix: update datetimeRelative description to minutes instead of seconds by @meesfrensel in #29137
- fix: video thumbnail quality sharing by @bwees in #29104
- fix(mobile): stop sync albums crashing on the main isolate by @santoshakil in #29133
- fix(mobile): show memories with no showAt/hideAt in the timeline lane by @santoshakil in #29158
- fix(mobile): keep toasts off the dynamic island when keyboard is open by @santoshakil in #29159
📚 Documentation
- docs(server): clarify AssetBulkUploadCheckItem.id is a correlation token by @timonrieger in #29141
🌐 Translations
- feat: languages by @danieldietzler in #29088
- chore(web): update translations by @weblate in #29036
New Contributors
- @maxinegardenas made their first contribution in #29002
Full Changelog: v3.0.0-rc.0...v3.0.0-rc.1
v3.0.0-rc.0
Immich v3.0.0-rc.0 — Release Candidate
Warning
Disclaimer
This is a release candidate, not a stable release. It is subject to change and may contain bugs or breaking changes. As always, make sure you have a backup of your database and library before upgrading to this version.
We're excited to share our first release candidate (RC) for Immich v3: v3.0.0-rc.0. For information about how to use and test the RC, see below.
Release notes
Work in progress release notes can be found here:
https://pr-558.dev.immich.app/blog/v3.0.0-release
Server
To use this RC version on the server update the IMMICH_VERSION in your .env file:
- IMMICH_VERSION=v2
+ IMMICH_VERSION=v3.0.0-rc.0Then pull and restart:
docker compose pull && docker compose up -dMobile
To use this RC version on the mobile app, follow the appropriate link for your platform:
Android
You can download the APK the in release note below, or tap on "Join the beta" from the Google Play Immich page
iOS
Use the TestFlight link or scan the QR Code https://testflight.apple.com/join/JTSTucBd
If you run into any issues, please report them on GitHub so we can address them before the final release. Thank you for helping us test!
What's Changed
🚨 Breaking Changes
- refactor!: migrate class-validator to zod by @timonrieger in #26597
- refactor!: remove replace asset by @jrasm91 in #27022
- refactor!: remove my shared link dto by @jrasm91 in #27023
- chore!: remove deprecated env variables by @jrasm91 in #27802
- chore!: remove getRandom api endpoint by @bwees in #27780
- chore!: remove unused token response param by @jrasm91 in #27805
- refactor: yeet old timeline by @shenlong-tanwen in #27666
- chore!: remove old timeline sync endpoints by @jrasm91 in #27804
- chore!: remove deviceId and deviceAssetId by @danieldietzler in #27818
- chore!: rename API key schemas by @jrasm91 in #27828
- chore!: remove without assets by @jrasm91 in #27835
- fix: oauth issuerUrl validation by @bo0tzz in #27848
- fix!: do not allow insecure oauth requests by default by @bo0tzz in #27844
- fix!: set duration to null when not present by @meesfrensel in #26982
- chore!: remove /api/server/theme endpoint by @jrasm91 in #27880
- chore!: migrate album owner to album_user by @danieldietzler in #27467
- refactor!: change number to integer types by @timonrieger in #27912
- refactor(server)!: move correlationId to X-Correlation-ID response header by @timonrieger in #28139
- refactor(server)!: remove redundant error and statusCode fields from error responses by @timonrieger in #28140
- chore(server)!: drop pgvecto.rs support by @mertalev in #28159
- chore!: duration in milliseconds by @mertalev in #28003
- refactor(server)!: sanitize error messages to avoid leaking resource details by @timonrieger in #28154
- refactor(server)!: structured validation error responses by @timonrieger in #28204
- feat(server)!: add isOwned filter to albums API by @timonrieger in #28213
- chore(ml)!: require numpy 2.4 by @mertalev in #28158
- fix(deps): update dependency nestjs-otel to v8 by @renovate[bot] in #27863
- chore(ml)!: remove deprecated envs by @mertalev in #28326
- chore(server)!: remove libopus enum by @mertalev in #28325
- refactor!: remove asset faces from AssetResponseDto by @bwees in #27779
- refactor(server)!: drop empty string to null conversion by @timonrieger in #28808
- refactor(server)!: remove changeExpiryTime by @timonrieger in #28816
- refactor!: disallow star rating < 1 by @meesfrensel in #27896
🫥 Deprecated Changes
- refactor(server): deprecate PUT routes in favor of PATCH by @timonrieger in #28859
🔒 Security
🚀 Features
- feat: mobile editing by @bwees in #25397
- feat: album map markers endpoint by @jrasm91 in #27830
- feat(server): added backchannel logout api endpoint by @santanoce in #26235
- feat(server): add OIDC logout URL override option by @LJspice in #27389
- feat: android periodic work manager task by @shenlong-tanwen in #23563
- feat(web): custom video player controls by @meesfrensel in #26183
- feat(web): add full-path search mode to UI by @mws-weekend-projects in #26758
- feat: recently added assets page by @benbeckford in #28272
- feat(mobile): slideshow view by @benbeckford in #28421
- feat(mobile): "Add Tags" asset multiselect option by @benjamonnguyen in #26269
- feat: workflows & plugins by @jrasm91 in #26727
- feat(server): hls with real-time transcoding by @mertalev in #28230
- feat(web): hls player by @mertalev in #28312
- feat(mobile): Android. Immich as a gallery / image viewer app by @PeterOmbodi in #26109
- feat: user upload heatmap by @bondeabhijeet in #28593
- feat(mobile): ocr support by @YarosMallorca in #26523
- feat: geolocation workflow filter by @benbeckford in #28961
- feat: image quality option in sharing by @alextran1502 in #28918
- feat: integrity check jobs (missing files, untracked files, checksums) by @insertish in #24205
🌟 Enhancements
- feat(web): persist state of file path information in details panel by @cratoo in #27770
- feat: commands by @jrasm91 in #27546
- feat: upgrade immich/ui by @jrasm91 in #27792
- feat: filter users on share by @OdinOxin in #27732
- fix(server): render storage template date/time tokens in UTC (#24350) by @migpovrap in #26917
- feat(web): lazy load library and server statistics by @etnoy in #26406
- feat: sort users alphabetically when adding to album by @OdinOxin in #27731
- feat: auth logout page by @jrasm91 in #27831
- chore: improve randomness of /search/random endpoint by @StevenMassaro in #27531
- feat: dynamic languages by @jrasm91 in #27869
- feat: cache shared link by @danieldietzler in #27889
- feat(server): add configurable OAuth prompt parameter by @sparsh985 in #26755
- feat(server): add MPO file type support by @git-akihakune in #27963
- feat(mobile): action bottom sheet on map timeline by @YarosMallorca in #27515
- feat(server): track video metadata by @mertalev in #28023
- feat(enhancement): Navigate stack with up and down arrow keys by @cratoo in #27854
- fix(web): migrate people management component to page, enabling tooltips by @SkyDev125 in #26971
- chore(mobile): add box shadow to asset details by @uhthomas in #27510
- feat: hide hidden person from memories by @sakshamchawla in #20877
- feat(mobile): increased tap area on video player overlay by @YarosMallorca in https://github.com/immich-app/immic...
v2.7.5
v2.7.5
What's Changed
🐛 Bug fixes
- fix(server): add rate limit and deduplication to version check by @zackpollard in #27747
🌐 Translations
Full Changelog: v2.7.4...v2.7.5
v2.7.4
v2.7.4
This release addresses some issues with image rendering on the mobile app
What's Changed
🐛 Bug fixes
- refactor(mobile): cleanup iOS image loading pipeline by @LeLunZ in #27672
- fix(server): hide original filename when not showing metadata by @meesfrensel in #27581
- fix(mobile): fix Flutter cache eviction on thumbnails by @LeLunZ in #27663
- chore: pump cronet version by @shenlong-tanwen in #27685
Full Changelog: v2.7.3...v2.7.4
v2.7.3
v2.7.3
What's Changed
🐛 Bug fixes
- fix(server): avoid false restore failures on large database imports by @ErasmusAndre in #27420
- fix(mobile): improve image load cancellation handling by @LeLunZ in #27624
- fix(server): people search not showing for 3 or less characters by @zackpollard in #27629
- fix(web): don't cache empty search results for people search by @zackpollard in #27632
- fix(mobile): get provider refs before async gaps in backup page by @LeLunZ in #27597
- fix: ssr open graph tags by @jrasm91 in #27639
📚 Documentation
New Contributors
- @fluffy made their first contribution in #27606
- @ErasmusAndre made their first contribution in #27420
Full Changelog: v2.7.2...v2.7.3





