Releases: immich-app/immich
v2.6.3
v2.6.3
What's Changed
🐛 Bug fixes
- fix(mobile): remove upload timeout by @mertalev in #27237
- fix(web): prevent horizontal scroll bar in asset viewer side panel by @michelheusschen in #27270
- fix(web): shifting motion image button by @YarosMallorca in #27275
- chore(docs): withPeople parameter description by @YarosMallorca in #27262
- fix(server): filter out empty search suggestions by @michelheusschen in #27292
- fix: incorrect asset face sync by @bwees in #27243
Full Changelog: v2.6.2...v2.6.3
v2.6.2
v2.6.2
This release addresses the following issues
- Fixed a bug where the shared link would error out when public users upload to the shared link
- Fixed a bug where the URL switching feature doesn't work with external URLs
- Fixed a bug where the "add to album" selection box on the web doesn't include albums that are shared with the user
- Fixed several issues regarding the search filter on the mobile app and the web
What's Changed
🐛 Bug fixes
- fix(mobile): simplified chinese not available by @YarosMallorca in #27066
- fix(web): allow showing combobox items outside modals by @michelheusschen in #27075
- fix(web): preserve album scroll when adding to other albums by @michelheusschen in #27078
- fix(server): queue version check job when config changed by @uhthomas in #27094
- fix: shared link add to album by @jrasm91 in #27063
- fix: svelte reactivity issues by @danieldietzler in #27109
- fix(mobile): cronet image cache clearing on android by @LeLunZ in #27054
- fix(mobile): view similar photos from search by @YarosMallorca in #27149
- fix(mobile): no results before applying filter by @YarosMallorca in #27155
- fix(mobile): star rating always defaults to 0 by @YarosMallorca in #27157
- fix: download original stale cache when edited by @danieldietzler in #27195
- fix(web): restore duplicate viewer arrow key navigation by @michelheusschen in #27176
- fix(web): update upload summary when removing items (#27035) by @Nicolas-micuda-becker in #27139
- fix(mobile): option padding on search dropdowns by @YarosMallorca in #27154
- fix(mobile): add keys to people list by @YarosMallorca in #27112
- fix(mobile): add cookie for auxiliary url by @mertalev in #27209
- fix: album picker show all albums by @danieldietzler in #27211
- fix(server): album permissions for editors by @YarosMallorca in #27214
- fix(mobile/web): album cover buttons consistency by @YarosMallorca in #27213
📚 Documentation
New Contributors
- @Nicolas-micuda-becker made their first contribution in #27139
Full Changelog: v2.6.1...v2.6.2
v2.6.1
v2.6.1
Hot fixes
- Fixed a failed migration issue on the mobile app when the URL Switching feature is used
What's Changed
🐛 Bug fixes
- fix(server): fallback to email when name is empty by @jrasm91 in #27016
- fix: ignore errors deleting untitled album by @jrasm91 in #27020
- fix(web): wrap long album title by @jrasm91 in #27012
- fix(web): stop in-progress uploads on logout by @jrasm91 in #27021
- fix: writing empty exif tags by @danieldietzler in #27025
- fix(web): disable send button by @jrasm91 in #27051
- fix(mobile): server url migration by @mertalev in #27050
Full Changelog: v2.6.0...v2.6.1
v2.6.0
v2.6.0
Welcome to Immich v2.6.0, This release is a collection of more than 350 commits over 6 weeks. I know, it is an eternity between releases compared to our previous era. This version focuses on bug fixes and enhancements across the app to provide a more delightful and smoother experience to you. This release also prepares for the next major release in the coming month, which will remove the old timeline implementation. Let's dive into the highlights of the release:
Warning
For those who are still using the old timeline, please switch to the new timeline to avoid interruption, as the old timeline will be removed in the next release.
ps: The old timeline has an exclamation icon next to the logo.

Highlights
- Map side panel (web)
- Pick album cover (mobile)
- Shared link slugs (mobile)
- Shared link presets (web)
- Native HTTP clients (mobile)
- Video player and asset viewer improvements (mobile)
- Improved search results (mobile)
schema-check: a newimmich-admincommand- Read profile claims from ID token (OAuth)
- Notable fix: cast videos now automatically loop
- Notable fix: correctly extract make and model from Sony XAVC video files
- Notable fix: escape key handling on web
- Notable fix: healthcheck endpoint in maintenance mode
- Notable fix: timeline rendering for RTL languages like Arabic and Hebrew
- Notable fix: prevent server crash when extracting invalid metadata
Map side panel (web)
The map view on the web now opens a mini-timeline component as a side panel when you click on a cluster of assets. This makes it easier to view the cluster at a glance and enables bulk actions, such as adding to favorites and adding to an album.
Pick album cover (mobile)
Users can now pick a new album cover directly from the mobile app.
540300751-58fc1937-aed8-40b8-869c-9cb47c1d40c2.mov
Shared link slugs (mobile)
The mobile app now also supports setting a shared link slug, a feature that's been available on the web for a while.
shasre-slug.mp4
Shared link presets (web)
The expiration form input on the web was always a bit confusing, but it's been updated to make it easier to see and understand when a shared link will expire.
Native HTTP clients (mobile)
The mobile app now uses native HTTP clients across both Android and iOS, with support for mTLS, self-signed certificates, basic auth, and custom headers. These features should now be more reliable and extend to background tasks, video playback, and other parts of the app. This also improves the app's overall network request performance thanks to HTTP/2 and HTTP/3, multiplexing, and caching.
Video player and asset viewer improvements (mobile)
The asset viewer has undergone many improvements under the hood to make it simpler, faster and more reliable. We've also added playback support for GIFs, enabled video zooming, and made many more bug fixes and tweaks.
The asset viewer now uses a gradient for actions, and video controls have been restyled
Inline asset details
This used to be a bottom sheet and had a lot of glue for alignment. The new version is much more responsive and less buggy.
Before
ScreenRecording_03-19-2026_15-37-19_1.mov
After
ScreenRecording_03-19-2026.14-23-44_1.mp4
Improved search results (mobile)
The search results page now loads more results without rebuilding the entire grid, and should now load much faster. There are also new screens for when there are no search results and when all results have been loaded.
screen-20260224-231550-1771974915747.2.mp4
schema-check: a new immich-admin command
A new immich-admin command has been added in this release: schema-check. The command runs a report on the database to check if any indexes, constraints, tables, or columns are missing. This check also runs automatically on startup.
Read profile claims from idToken (OAuth)
Prior to v2.6.0, Immich resolved the email and other claims from the userinfo endpoint. Now, Immich also supports reading those claims directly from the idToken. This makes it possible to use providers such as Microsoft ADFS that do not support the userinfo endpoint.
As always, there are many more QoL improvements, bug fixes, and enhancements in this release. Please find the full release note below
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
🔒 Security
- fix(server): restrict individual shared link asset removal to owners by @michelheusschen in #26868
- fix: add to shared link by @jrasm91 in #26886
🚀 Features
- feat: shared link login by @jrasm91 in #25678
- feat: schema-check by @jrasm91 in #25904
- feat: add people deeplink by @arne182 in #25686
- feat(mobile): inline asset details by @uhthomas in #25952
- feat(mobile): filter by tags by @benjamonnguyen in #26196
- feat: add .mxf file support by @timonrieger in #24644
- feat: tap to see next/previous image by @thezeroalpha in #20286
- feat(mobile): Allow users to set album cover from mobile app by @timonrieger in #25515
- feat(mobile): Allow users to set profile picture from asset viewer by @timonrieger in #25517
- feat: ROCm 7.2 and MIGraphX support by @kprinssu in #26178
- feat(web): map timeline sidepanel by @michelheusschen in #26532
- feat: add responsive layout to broken asset by @midzelis in #26384
- feat(web): toggle zoom on double-click in photo viewer by @midzelis in #26732
- feat(mobile): show animated images in asset viewer by @LeLunZ in #26614
- feat(mobile): open in browser by @YarosMallorca in #26369
🌟 Enhancements
- feat: verify permissions by @jrasm91 in #25647
- feat(web): change link expiration logic & presets by @YarosMallorca in #26064
- feat(mobile): dynamic layout in new timeline by @shenlong-tanwen in #23837
- feat(cli): change progress bar to display file size by @Nykri in #23328
- feat(mobile): dynamic multi-line album name by @uhthomas in #26040
- feat(mobile): hide search by context/OCR if disabled on server (#25472) by @Nacolis in #26063
- fix(release): add docker-compose.rootless.yml to released assets by @dnozay in #26261
- feat(web): show ocr text boxes in panoramas by @meesfrensel in #25727
- feat(web): loop chromecast video by @etnoy in #24410
- chore(web): merge "Add to album" and "Add to shared album" actions into a single action by @timonrieger in #24669
- feat(mobile): timeline - add bottomWidgetBuilder by @PeterOmbodi in #25634
- feat(mobile): video zooming in asset viewer by @goalie2002 in #22036
- feat(mobile): Add slug support for shared links by @Lauritz-Tieste in #26441
- feat: warn when losing transparency during thumbnail generation by @midzelis in #26243
- perf(mobile): optimized album sorting by @YarosMallorca in #25179
- feat(mobile): prompt when deleting from trash by @YarosMallorca in #26392
- feat: getAssetEdits respond with edit IDs by @bwees in #26445
- fix(server): accept showAt and hideAt for creating memories by @meesfrensel in #26429
- feat(server): SyncAssetEditV1 by @bwees in #26446
- feat: splash screen error page by ...
v2.5.6
v2.5.6
This patch release addresses the following issues
- Fixed an issue where thumbnail generation runs every night when
full-size image generationoption is enabled. - Fixed an issue where iOS is slow to start in some cases.
- Fixed an issue where Android device cannot delete asset using Free Up Space feature if it has more than a few thousand assets
🐛 Bug fixes
- fix: enhance album sorting functionality with order handling by @LeLunZ in #24816
- fix: add missing translations for image editor by @michelheusschen in #25957
- fix: image and video download complete notification shows "file_name" by @romoisverycool in #25975
- fix: user profile refetched each time on opening app dialog by @shenlong-tanwen in #25992
- fix: improve albums page load time on firefox by @michelheusschen in #26025
- fix: reduce queue graph jitter and include paused count by @michelheusschen in #26023
- fix(web): toast fixed location by @YarosMallorca in #25966
- fix: scroll jump when opening show & hide people by @michelheusschen in #25932
- fix(web): display storage unit next to value instead of absolute positioning in admin user page by @K0lin in #25985
- fix: iOS slow start by @alextran1502 in #26043
- fix: profile dialog auto dismiss after opening on iPad by @alextran1502 in #26046
- fix(web): prevent context menu from overflowing viewport by @ttpss930141011 in #26041
- fix: slideshow setting dropdown overflow by @michelheusschen in #26066
- fix: free up space using small batch size to reliably work on Android by @alextran1502 in #26047
- fix(web): removing a person in an asset, doesn't remove the asset in … by @dolfje in #26068
- fix(mobile): handle image stream completion when no image is emitted by @LeLunZ in #25984
- fix: evict image from cache on error during image loading by @LeLunZ in #26078
- fix(server): thumbnail queueing by @mertalev in #26077
- fix: create face exif orientation handling by @bwees in #26108
- fix(web): refresh text by @jrasm91 in #26071
- fix: correctly cancel select all assets by @michelheusschen in #26067
- fix: person thumbnail generation on edited assets by @bwees in #26112
- fix: local date time group fall back by @alextran1502 in #26110
📚 Documentation
- feat(docs): version policy by @mmomjian in #25979
- feat(deployment): rootless compose file by @mmomjian in #25931
- docs: update ml-hardware-acceleration.md by @cmrtdev in #25755
🌐 Translations
New Contributors
- @ttpss930141011 made their first contribution in #26041
- @dolfje made their first contribution in #26068
- @cmrtdev made their first contribution in #25755
- @nicosemp made their first contribution in #25599
Full Changelog: v2.5.5...v2.5.6
v2.5.5
v2.5.5
v2.5.4 was in the way of getting out, and we got another annoyance bug fixed, so we rolled it into v2.5.5
Happy Friday! This release addresses more bugs from the v2.5.0 release. Enjoy!
- Fixed an issue where changing the timezone on the web changes the time instead of the timezone
- Fixed an issue where background task on iOS don't get triggered as often
- Fixes some issues regarding the usage of self-signed certificate and mLTS on the mobile app
🐛 Bug fixes
- fix(mobile): cancel share download when dialog is dismissed by @cmdPromptCritical in #25466
- fix: album dto docs by @jrasm91 in #25873
- fix: null validation by @jrasm91 in #25891
- fix(server): deleting stacked assets by @jrasm91 in #25874
- fix: close tag modal after tagging assets by @michelheusschen in #25884
- fix: correctly sync shared link download with metadata toggle by @michelheusschen in #25885
- fix: date time picker text color in dark mode by @alextran1502 in #25883
- fix: allow null tagIds in search dto by @michelheusschen in #25920
- fix: improve asset editor exit handling by @michelheusschen in #25917
- fix: make switch labels properly clickable by @michelheusschen in #25898
- fix: ensure theme stays in sync with @immich/ui by @michelheusschen in #25922
- fix: preserve hidden people state across pagination by @michelheusschen in #25886
- fix: file name search label by @alextran1502 in #25916
- fix(mobile): mtls on native clients by @mertalev in #25802
- fix: time zone upserts by @danieldietzler in #25889
- fix(web): Ensure profile picture is cropped to 1:1 ratio by @aditya-ai-architect in #25892
- fix(mobile): reset asset index on timeline refresh by @uhthomas in #25729
- fix: timezone in timeline bucketing by @shenlong-tanwen in #25894
- fix(mobile): Update preview and PageController position when the asset count decreases while the last item is selected by @PeterOmbodi in #25563
- fix(server): use provided database username for restore & ensure name is not mangled by @insertish in #25679
- fix: image download complete notification shows an extra {file_name} template tag by @romoisverycool in #25936
- fix: face and edit handling by @bwees in #25738
- fix: queue assets missing fullsize files for thumbnail regeneration by @midzelis in #25794
- fix: dedupe version announcement modal by @jrasm91 in #25946
- fix(cli): suppress startup messages for immich-admin by @VahantSharma in #25928
📚 Documentation
- docs: update manual backup/restore to match the automatic process by @insertish in #25924
- fix(docs): add missing --json-output arg to CLI example by @Xiol in #25870
- docs: remove writeTimeout on traefik example by @kaysond in #25837
🌐 Translations
New Contributors
- @aditya-ai-architect made their first contribution in #25892
- @VahantSharma made their first contribution in #25927
- @Xiol made their first contribution in #25870
- @cmdPromptCritical made their first contribution in #25466
- @romoisverycool made their first contribution in #25936
- @didekoning made their first contribution in #25937
Full Changelog: v2.5.3...v2.5.5
v2.5.3
What's Changed
🐛 Bug fixes
- chore: remove random code snippet by @jrasm91 in #25677
- fix: reset and unsaved change states in editor by @bwees in #25588
- fix: no notification if release check is disabled by @jrasm91 in #25688
- fix(mobile): hide latest version if disabled by @uhthomas in #25691
- fix(web): enable asset viewer navigation across memory boundaries by @midzelis in #25741
- fix: upload progress bar flickering by @alextran1502 in #25829
- fix: prevent stale values in edit user form after save by @michelheusschen in #25859
- fix: prevent album page get rebuilt when resuming app by @alextran1502 in #25862
- fix: prevent backspace from accidentally triggering delete modals by @michelheusschen in #25858
- fix: metadata extraction race condition by @danieldietzler in #25866
- fix: reset zoom when navigating between assets by @michelheusschen in #25863
📚 Documentation
- docs(openapi): Add descriptions to OpenAPI specification by @timonrieger in #25185
- fix(docs): clarify supported vector version by @mmomjian in #25753
Full Changelog: v2.5.2...v2.5.3
v2.5.2
v2.5.2
v2.5.1 has been sacrificed for the release God, so the Android app can now be released
Note
This version of the mobile app will pull down some data from the server to fix the incorrect data in the mobile app local database, so you will see the sync icon running for a little bit
Hotfixes
- Fixed a bug where the video aspect ratio is played incorrectly for the remote asset
- Fixed a bug where memory generation failed
- Fixed a bug where memories don't show on the web until the page is refreshed
- Fixed a bug where the
Load original imageoption doesn't render the image on iOS
What's Changed
🐛 Bug fixes
- fix: deleting asset from asset-viewer on search results by @midzelis in #25596
- fix: escape handling in search asset viewer by @danieldietzler in #25621
- fix: correctly show owner in album options modal by @danieldietzler in #25618
- fix(server): don't assume maintenance action is set by @insertish in #25622
- fix: album card ranges by @danieldietzler in #25639
- fix(mobile): show controls by default on motion photos by @goalie2002 in #25638
- fix: escape handling by @danieldietzler in #25627
- fix(mobile): set correct system-ui mode on asset viewer init by @goalie2002 in #25610
- fix(mobile): actually load original image by @mertalev in #25646
- fix: width and height migration issue by @alextran1502 in #25643
- fix: memory lane by @jrasm91 in #25652
- fix: memory generation by @jrasm91 in #25650
- fix(mobile): tall image scrolling by @ByteSizedMarius in #25649
Full Changelog: v2.5.0...v2.5.2
v2.5.0 - 90000 Stars Release
v2.5.0
Note
01/27
- 20:23 GMT: We are halting the release of the mobile app as there are some reported issues with migration
- 22:00 GMT: Found the issue with the migration for the experimental sync-delete feature on Android. Will fix and release a new update soon. ETA tomorrow CTS time
- 22:24 GMT: iOS is released as the migration doesn't affect iOS users
01/28
- Discovered some annoyance bugs regarding editing after ready to release
v2.5.1, so spent the whole day fixing them and will releasev2.5.2on Thursday (01/29)
Sorry for the inconvenience
Highlights
Happy New Year! Welcome to Immich v2.5.0. This release is our fireworks to celebrate both the new year and reaching 90,000 stars on GitHub. It is packed with major features that have been in the works for quite some time, and the team has kicked off the year with incredible momentum that we're excited to carry forward. We couldn't wait to share this with you. Let's dive right in:
- Free Up Space
- Non-destructive editing
- Database backup and restore (web)
- Upload improvements
- Visual refresh across all platforms
- Disable admin setup
- Star rating (mobile)
- Additional fine-grained permissions (api keys)
- Progressive JPEGs
- Slideshow loop option (web)
- Native HTTP clients for HTTP/2 and HTTP/3 image loading
Free Up Space
This feature was requested ages ago. So long in fact, that it has a 3-digit ID (#165)! Given the rapid iteration and development pace of the pre-stable era, it was risky to include it in the app due to its bulk-delete nature. But it is now 2026 😄, so here we are.
Free Up Space allows you to remove local media files from your device that have already been successfully backed up to your Immich server (and are not in Immich trash). This helps reclaim storage on your mobile device without losing your memories. The feature can be accessed from the user profile panel or from the Settings page in the mobile app.
There are configuration options and steps to make sure that everything is verified before deleting from the app.
- Configuration:
- Cutoff date: Free Up Space will only look for photos and videos on or before this date.
- Keep albums: Hold all photos and videos in the selected albums on your device, regardless of other settings. By default,
**WhatsApp**related albums are selected to be kept on the device. Assets that are not already on the device will not be redownloaded. - Keep favorites: This works the same way
**Keep albums**. By default, favorited assets are preserved on your device. - Keep on device: You can choose to restrict removal to
**Always keep**All photos or All videos, regardless of other settings. This setting can hamper freeing up space significantly — with 80 GB of videos and 40 GB of photos, selecting**Always keep photos**retains thousands of photos on your device.
Tip
These configurations are persistent to make it convenient for those who perform this task often.
- Scan & Review: Before any files are removed, you are presented with a review screen to confirm which items will be deleted and how much storage will be reclaimed.
- Deletion: Confirmed items are moved to your device's native Trash/Recycle Bin.
Note
Reclaim storage
To use the reclaimed space right away, you must manually empty the system/gallery trash outside Immich.
For more information about this feature, please read it here
Non-destructive editing
Immich now supports non-destructive photo editing. This means that any edits you make to an asset do not modify the original file; instead, the modifications are stored in the database, and new thumbnails are generated based on those changes. This means you can always revert to the original asset if needed.
When you download an edited asset, Immich provides the edited version by default. However, you can choose to download the original version if needed. Immich always generates an edited full-size version based on your full-size quality settings. This occurs regardless of whether the "Enable full-size image generation" setting is enabled or disabled.
Note
Limitations:
- Mobile clients must be updated to v2.5.0 in order view the edited version of an asset. Clients will continue to > see the original asset if on a mobile app version <2.5.0
- As of this version, the edited download won't include the EXIF metadata of the original asset. This feature will come in future releases.
- Mobile editing still uses the old edit system (saving a new version of the photo). The mobile editor will be upgraded to use the new non-destructive editing system in a future release.
You can click on the following icon to enter edit mode
Currently, Immich supports the following types of edits:
- Cropping
- Rotation
- Mirroring
Opening the editor on an edited asset will load the existing edits back in so you can make adjustments and changes.
Backup and restore from the web UI
Backup and restore are an important part of any self-hosted application; this feature helps you maintain reliable access to your instance during unexpected events, such as database corruption caused by system failure or power loss.
Historically, restoring an Immich instance to a specific point required the user to have access to the command line, which proved challenging for many users, especially those new to self-hosting and software maintenance.
Now, we have the entire backup and restore pipeline built into Immich, which allows you to quickly restore a database backup directly from the web UI. You can perform the steps either from the Administration > Maintenance page, or from a brand new instance on the welcome page.
Restore from Administration's Maintenance page
Restore from Onboarding page
For more detailed steps, please read them in our documentation
Upload improvement
This release also improves foreground upload in the mobile app. The previous implementation improves background uploads but leaves foreground uploads less reliable by leveraging the queue system to offload upload handling to the OS, which can be throttled under specific criteria.
We are taking back more control over handling uploads with the try-and-true method used in the old timeline, but this time it is supercharged with concurrent uploads and also correctly handles assets with missing file extensions from software such as DJI or Fusion Camera.
Upload now will also send unique metadata for each asset to the server, so it can be used to quickly retrieve the checksum when reinstalling the app, saving time and CPU resources. This is especially useful for iCloud users, as the hashing process can take a long time.
For iOS and iCloud users, it is recommended to go to App Settings > Sync Status and tap the "Sync Cloud IDs" button to backfill the metadata for the uploaded content. You only need to do this once.
Visual refresh across all platforms
This release also brings you a refreshed look and feel across the web, mobile app, and the documentation sites, with a new font face ("The-name-must-not-be-named" Sans) that improves reading legibility, especially for numbers and smaller text.
The UI library (https://ui.immich.app/) components have also been added to the web app in more places. You should see a more standardized, coherent, and better hierarchy for UI components across the app.
All icon buttons now come with a tooltip, so you don't have to guess what function the button serves
Star rating (mobile)
Mobile now has the star-rating feature, similar to the web application. If you don't see a star rating on either platform, make sure the feature is enabled here.
Disable admin setup
New installs show a welcome page and allow anyone to sign up / register as an admin. To have more control over whether this is allowed or not, we have added the following environment variable:
IMMICH_ALLOW_SETUP=true|falseThis is especially useful if you have already initialize...
v2.4.1
2.4.1
What's Changed
🐛 Bug fixes
- fix(web): shared link expiry does not save by @YarosMallorca in #24569
- fix(mobile): infinite loading screen when hiding UI in map viewer on iOS by @timonrieger in #24563
- fix(web): auto-start slideshow when confirming settings modal by @timonrieger in #24629
- fix(mobile): merged video in On This Device played with incorrect ratio by @alextran1502 in #24656
- fix: dateTimeOriginal timezone updates by @danieldietzler in #24712
- fix(web): timezone dropdown showing "No results" when seconds are set to 00 by @timonrieger in #24662
- fix(web): search-bar usability improvements by @LeLunZ in #24705
📚 Documentation
- fix(docs): add & fix missing alt text to store badge images by @divulgacheur in #24637
New Contributors
- @timonrieger made their first contribution in #24563
- @LeLunZ made their first contribution in #24705
- @divulgacheur made their first contribution in #24637
Full Changelog: v2.4.0...v2.4.1
