iOS Memories Widget "Unable to connect to your Immich instance" #30036
Replies: 7 comments 4 replies
|
How are you connecting to the immich server? Are you using custom headers, mTLS, self signed cert, etc? |
Over my local network using nginx proxy manager. (ie. https://immich.domain.com) with a Let's Encrypt signed cert. |
|
Please test using local IP: port 2283 to see if that fixes the problem. If not, we can reopen |
Similar issue, in the preview it shows the same error but once added it doesn't show blank, instead it says "Login to Immich" but I am logged in and can sync fine (using local IP and port). |
|
I am unable to replicated on iOS 26 and iPhone. I recommend checking the app and server logs. We haven't seen anyone else with this issue either. Maybe reinstalling the app might help. you are not using the URL switching feature correct? |
|
I believe I've found the root cause (Claude actually) - this is a client/server date-format mismatch introduced in server v3.0.3, and it affects every iOS user on server ≥ v3.0.3 regardless of network setup. Could this be reopened? Root cause The iOS Memories widget sends a full ISO 8601 datetime for the https://github.com/immich-app/immich/blob/main/mobile/ios/WidgetExtension/ImmichAPI.swift let memoryParams = [URLQueryItem(name: "for", value: date.ISO8601Format())]
// → GET /memories?for=2026-07-19T08:15:00ZBut since #29907 (merged into server v3.0.3), That PR updated web ( Note: #29368 (open) changes this same line to send noon-UTC — that's still a full datetime, so it would also 400 against the new validation and needs updating. Suggested client fix (also fixes the timezone issue from #19985, matching what web sends): // /memories expects a date-only value (YYYY-MM-DD) since server v3.0.3 (#29907).
// Use the local calendar day so evening users don't get tomorrow's memories.
let localDay = date.formatted(
Date.ISO8601FormatStyle(timeZone: .current).year().month().day().dateSeparator(.dash)
)
let memoryParams = [URLQueryItem(name: "for", value: localDay)]Suggested server hardening: since all released iOS apps (≤ v3.0.3) send a datetime, the server could accept both formats for Secondary bug while in there: in Reproduce against any v3.0.3 server: curl -s -o /dev/null -w "%{http_code}\n" -H "x-api-key: $KEY" \
"http://<server>:2283/api/memories?for=2026-07-19" # 200
curl -s -o /dev/null -w "%{http_code}\n" -H "x-api-key: $KEY" \
"http://<server>:2283/api/memories?for=2026-07-19T12:00:00.000Z" # 400 |
|
I'm running the same version of server and app as you. I am not experiencing this issue when adding this widget. It adds and shows my memories perfectly. |




I believe I've found the root cause (Claude actually) - this is a client/server date-format mismatch introduced in server v3.0.3, and it affects every iOS user on server ≥ v3.0.3 regardless of network setup. Could this be reopened?
Root cause
The iOS Memories widget sends a full ISO 8601 datetime for the
forquery param:https://github.com/immich-app/immich/blob/main/mobile/ios/WidgetExtension/ImmichAPI.swift
But since #29907 (merged into server v3.0.3),
MemorySearchDto.foris validated withisoDateToDate(z.iso.date()), which only acceptsYYYY-MM-DD. The widget's reques…