Skip to content

immich-public-proxy

v2.0.0 Breaking

This release includes 1 breaking change for platform teams planning a safe upgrade.

Published 11d Media Servers
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Affected surfaces

breaking_upgrade

ReleasePort's take

Light signal
editorial:auto 10d

Gallery titles now appear by default; set "showTitle": false in config.json to hide them. LightGallery was replaced with PhotoSwipe v5, adding pinch‑zoom and native touch gestures.

Why it matters: Affects gallery UI configuration – hide the title via showTitle=false if undesired. Introduces new interaction capabilities (pinch‑zoom) for all lightbox users.

Summary

AI summary

Updates Highlights, https://github.com/dimsemenov/photoswipe, and https://github.com/sachinchoolur/lightGallery across a mixed release.

Changes in this release

Breaking Medium

Gallery title now shown by default; hide with showTitle=false in config.json

Gallery title now shown by default; hide with showTitle=false in config.json

Source: llm_adapter@2026-05-24

Confidence: high

Feature Medium

Replaced lightGallery with PhotoSwipe v5, adding pinch‑zoom and native touch gestures

Replaced lightGallery with PhotoSwipe v5, adding pinch‑zoom and native touch gestures

Source: llm_adapter@2026-05-24

Confidence: high

Feature Medium

Added multi‑select with selective download as zip for gallery images

Added multi‑select with selective download as zip for gallery images

Source: llm_adapter@2026-05-24

Confidence: low

Feature Medium

Introduced optional month‑grouped gallery view (date grouping)

Introduced optional month‑grouped gallery view (date grouping)

Source: llm_adapter@2026-05-24

Confidence: low

Dependency Medium

Serves Inter font locally instead of via CDN for privacy / no‑tracking

Serves Inter font locally instead of via CDN for privacy / no‑tracking

Source: llm_adapter@2026-05-24

Confidence: low

Performance Medium

Server‑rendered HTML size reduced ~10× via data‑only payload and client‑side virtualisation

Server‑rendered HTML size reduced ~10× via data‑only payload and client‑side virtualisation

Source: llm_adapter@2026-05-24

Confidence: high

Performance Medium

Virtualised rendering keeps DOM small for large galleries (e.g., 5,000+ photos)

Virtualised rendering keeps DOM small for large galleries (e.g., 5,000+ photos)

Source: granite4.1:30b@2026-05-24-audit

Confidence: low

Refactor Medium

Switched templating engine from EJS to Preact + JSX

Switched templating engine from EJS to Preact + JSX

Source: llm_adapter@2026-05-24

Confidence: low

Full changelog

v2.0 - Full gallery redesign

This is a complete rebuild of the gallery to match Immich's native look and feel, with major improvements for large galleries, and adding individual image selection for downloading.

Highlights

  • New gallery design - justified-rows layout on desktop, edge-to-edge square grid on mobile, light/dark mode following system preference, all styled to match Immich
  • New lightbox - PhotoSwipe v5 replaces lightGallery, with proper pinch-zoom, swipe-to-dismiss, and a much smaller bundle
  • Handles huge galleries - virtualised rendering keeps the DOM small even for shares of 5,000+ photos (#201). Only tiles within +/- 1 viewport-height of the current scroll position exist in the DOM at any moment. Layout for all items is pre-computed up front so the scrollbar stays accurate. (example large(ish) gallery)
  • Multi-select with selective download - long-press or click a tile's checkmark to enter select mode, pick photos, download just those as a zip
  • Date grouping - optional month-grouped gallery view, to match Immich's date grouping (off by default)
  • Blur placeholders - uses Immich's thumbhash data for a blurred preview behind every tile while the thumbnail loads

Changed

  • Replaced lightGallery with PhotoSwipe v5 - different lightbox engine, smaller bundle, gestures and zoom work natively on touch
  • Templating engine switched from EJS to Preact + JSX
  • Server-rendered HTML is much smaller (around 10x reduction) - only the data flows to the client; tiles are rendered by JS via virtualisation
  • Serve font locally rather than via CDN for privacy / no-tracking

Breaking changes

By default, the gallery title will now be shown, to match Immich's behaviour. In IPP 1.x the title was hidden by default. To hide the title, change showTitle to false in your config.json

Configuration migration

Legacy configs continue to work. A backward-compatibility shim at startup detects the old keys and maps them onto the new schema, then logs a single deprecation notice. You'll see something like:

[IPP] Top-level gallery keys (singleImageGallery, singleItemAutoOpen, showGalleryTitle, showGalleryDescription, groupGalleryByDate) are deprecated; please move them under ipp.gallery.*. See README.

To migrate, restructure your config.json from this:

{
	"ipp": {
		"singleImageGallery": false,
		"singleItemAutoOpen": true,
		"showGalleryTitle": false,
		"showGalleryDescription": false,
		"groupGalleryByDate": false
	},
	"lightGallery": {
		"controls": true,
		"download": true,
		"mobileSettings": { "controls": false, "download": true }
	}
}

…to this:

{
	"ipp": {
		"gallery": {
			"singleImage": false,
			"singleItemAutoOpen": true,
			"showTitle": false,
			"showDescription": false,
			"groupByDate": false
		},
		"lightbox": {
			"showArrows": true,
			"showDownload": true,
			"mobileArrows": false
		}
	}
}

The compatibility shim will keep your old config working in the meantime. The shim may be removed in a future major release.

Acknowledgments

This release brings together work from several open-source projects, used under their respective licenses:

  • PhotoSwipe (https://photoswipe.com/) v5 - MIT
  • Inter (https://rsms.me/inter/) by Rasmus Andersson - OFL-1.1
  • thumbhash (https://github.com/evanw/thumbhash) by Evan Wallace - MIT
  • Material Design Icons (https://pictogrammers.com/library/mdi/) - Apache-2.0
  • Preact (https://preactjs.com/) - MIT

Breaking Changes

  • Default gallery title is now shown; set `showTitle` to false in config.json to hide it.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track immich-public-proxy

Get notified when new releases ship.

Sign up free

About immich-public-proxy

Share your Immich photos and albums in a safe way without exposing your Immich instance to the public.

All releases →

Related context

Earlier breaking changes

  • v2.2.0 Deprecates `?password=...` query-param for shared links; requires Immich v2.6.0 or later.
  • v2.1.0 Removes dynamic public URL setting via HTTP header in IPP config.

Beta — feedback welcome: [email protected]