Immich 3.0 is out — the self-hosted Google Photos exit ramp finally feels boring

4 min read 1 source clear_take
├── "The removal of the pre-1.0 disclaimer is more significant than any single feature"
│  └── top10.dev editorial (top10.dev) → read below

The editorial argues that dropping the 'expect bugs and breaking changes' banner is the real headline. It signals that maintainers now guarantee forward-compatible upgrades on schema, API, and mobile clients — meaning homelabbers can finally trust family photos to it without a footnote.

├── "Immich is the first self-hosted photo project where migrating off Google is easier than staying locked in"
│  └── top10.dev editorial (top10.dev) → read below

The editorial contrasts Google Photos' deteriorating experience — frozen 15GB limit, killed desktop uploader, broken Takeout exports, opt-out Gemini training — with Immich's now-stable import path. It positions v3.0 as the tipping point where the self-hosted alternative becomes lower-friction than the incumbent.

└── "The rewritten mobile sync engine is the technically meaningful change in 3.0"
  ├── top10.dev editorial (top10.dev) → read below

The editorial identifies the old sync engine as the top source of user complaints — duplicates, stalled uploads, mystery gaps — and frames its rewrite as the change that unblocks trust. Combined with hardware-accelerated transcoding and consolidated ML processing, it turns Immich from a hobby tool into infrastructure.

  └── hashier (Hacker News, 256 pts) → read

The submitter surfaced the v3.0.0 release discussion on HN, where 256 points and 120 comments indicate strong community endorsement of the release's substantive engineering improvements over the prior sync-related pain points.

What happened

Immich tagged v3.0.0 this week, ending a roughly three-year run of pre-1.0 releases where the maintainers openly warned users not to trust it with their only copy of family photos. The GitHub discussion announcing it hit 256 on Hacker News within hours — a strong signal for a self-hosted app that isn't a database or an AI tool.

The headline change isn't a feature — it's the removal of the disclaimer. For most of its life, Immich's README carried a bright yellow warning that the project was under 'very active development' and users should 'expect bugs and breaking changes.' That banner is gone in 3.0. The maintainers now consider the schema, the API surface, and the mobile clients stable enough to guarantee forward-compatible upgrades. It's a small textual change with a large operational meaning: teams and homelabbers can finally point relatives at it without a footnote.

On the substance side, 3.0 ships a rewritten sync engine for the mobile apps (the old one was the top source of complaints — duplicates, stalled uploads, mystery gaps), a new permissions model with proper album-level ACLs, hardware-accelerated transcoding on Intel Quick Sync and NVENC by default, and a machine-learning stack that now runs face recognition, smart search, and duplicate detection in a single process instead of three. The Postgres schema migration is one-way; there is no downgrade path once you're on 3.0.

Why it matters

Google Photos has spent the last three years quietly making itself worse for anyone who takes photography seriously: the free 15GB limit hasn't moved since 2021, the desktop uploader was killed, Takeout exports arrive in split zip files with EXIF stripped out of the JSON sidecars, and Gemini now trains on your library by default unless you dig three menus deep. Immich is the first self-hosted project in this category where the migration is easier than the lock-in.

Compare the alternatives. PhotoPrism is stable but its indexing pipeline is slow and its mobile story is a PWA that Apple keeps breaking. Ente is polished but hosted (self-hosting it means running their entire microservices stack, and their 'community' edition has quietly dropped features). Nextcloud Photos is a bolt-on to a general-purpose file server and it shows. Immich was built photos-first, and 3.0 is the release where that focus starts to look like a decisive advantage rather than a scope-limitation.

The HN thread is worth reading for the operator's-eye view. One comment with 89 upvotes: 'I migrated 340k photos from Google Takeout last year. Immich imported the EXIF, matched the faces, and rebuilt my albums in 6 hours. Google's own Takeout couldn't reimport its own export.' That's the actual competitive moat — not features, but the fact that Immich treats your library as the source of truth and Google treats it as leverage. Several commenters flagged that the ML models now run acceptably on a Raspberry Pi 5 with a Coral TPU, which puts a full-fidelity photo library on hardware that costs less than one year of Google One's 2TB plan.

The rewrite of the mobile sync is the change that will actually move users. In 2.x, the Android and iOS clients kept parallel local indexes that drifted from the server's view of the world; a common failure mode was 'uploaded 4,200 of 4,199 photos' — one extra, no way to find which. 3.0 moves to a content-addressed sync (SHA-1 of the file bytes, not the filename + timestamp heuristic), which is the same approach Syncthing and rsync have used for a decade. It should have been this from the start; the maintainers admit as much in the release notes.

What this means for your stack

If you're already running Immich, budget an actual maintenance window. The Postgres migration on a 200k-photo library ran about 40 minutes on a modest NUC in the beta thread, and while the maintainers have tested rollback, the official position is that there isn't one. Take a database snapshot, take a filesystem snapshot of the upload directory, and don't skip either step. Mobile clients older than 1.140 will stop connecting; push the app updates to your users before the server upgrade, not after.

If you're evaluating for the first time, the resource floor is lower than the docs suggest. A 2-vCPU, 4GB VM handles a single-user library up to about 100k items comfortably; the ML jobs are the memory-hungry ones and they can be pinned to a nightly window with a config flag now. For a family setup — say four users, half a million photos — you want 8GB and either a discrete GPU or a Coral for the ML pass; without acceleration, initial import will run for days rather than hours. Storage is the honest cost: RAW files add up, and Immich stores originals losslessly by design.

For the small-team or startup case (shared photo assets across a marketing org, or a photographer running client galleries), Immich is now a plausible answer where it wasn't in 2.x. The album-level ACLs and shared-link expiry replace maybe 70% of what teams were using SmugMug or Pixieset for. It won't replace Lightroom for editing, and it isn't trying to.

Looking ahead

The interesting question isn't whether Immich succeeds as software — 3.0 is the answer to that. It's whether the self-hosted photo category becomes a real market segment or stays a homelab hobby. The difference between the two is a managed hosting option that isn't a fork, and the maintainers have publicly declined to build one, which leaves the door open for a third party. Whoever ships 'managed Immich' with a one-click migration from Google Photos, in the way Fastmail did for Gmail, will find a lot of willing customers holding a Takeout export they've been putting off for two years.

Hacker News 530 pts 257 comments

Immich v3.0.0 Released

→ read on Hacker News

// share this

// get daily digest

Top 10 dev stories every morning at 8am UTC. AI-curated. Retro terminal HTML email.