惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
博客园_首页
N
News | PayPal Newsroom
有赞技术团队
有赞技术团队
The Hacker News
The Hacker News
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
S
SegmentFault 最新的问题
Jina AI
Jina AI
人人都是产品经理
人人都是产品经理
P
Privacy & Cybersecurity Law Blog
AI
AI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Schneier on Security
Schneier on Security
博客园 - 三生石上(FineUI控件)
月光博客
月光博客
量子位
Forbes - Security
Forbes - Security
爱范儿
爱范儿
云风的 BLOG
云风的 BLOG
SecWiki News
SecWiki News
Last Week in AI
Last Week in AI
酷 壳 – CoolShell
酷 壳 – CoolShell
T
Tor Project blog
Recorded Future
Recorded Future
A
About on SuperTechFans
J
Java Code Geeks
The Register - Security
The Register - Security
PCI Perspectives
PCI Perspectives
H
Hacker News: Front Page
V2EX - 技术
V2EX - 技术
S
Secure Thoughts
V
Vulnerabilities – Threatpost
Hacker News: Ask HN
Hacker News: Ask HN
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Scott Helme
Scott Helme
T
The Exploit Database - CXSecurity.com
Y
Y Combinator Blog
AWS News Blog
AWS News Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
IT之家
IT之家
T
The Blog of Author Tim Ferriss
G
Google Developers Blog
C
CERT Recently Published Vulnerability Notes
L
LangChain Blog
F
Full Disclosure
Application and Cybersecurity Blog
Application and Cybersecurity Blog
The GitHub Blog
The GitHub Blog

Immich Blog

Release v3.0.0 | Immich Blog Migrating to v3 | Immich Blog June recap | Immich Blog FUTO — 2 years later | Immich Blog May recap | Immich Blog April recap | Immich Blog Awesome Immich | Immich Blog Release v2.7.0 | Immich Blog March recap | Immich Blog Release v2.6.0 | Immich Blog February recap | Immich Blog Building the Immich editor | Immich Blog January recap | Immich Blog Release v2.5.0 | Immich Blog 2025 - A year in review | Immich Blog Release v2.4.0 | Immich Blog November recap | Immich Blog Release v2.3.0 | Immich Blog October recap | Immich Blog Release v2.2.0 | Immich Blog Google flags Immich sites as dangerous | Immich Blog Release v2.1.0 | Immich Blog Release v2.0.0 - Stable 🎉 | Immich Blog Release v2.0.0 - Stable 🎉 | Immich Blog Sync v2 | Immich Blog Cursed knowledge | Immich Blog New API documentation | Immich Blog Immich launches merch | Immich Blog 2024 - A year in review | Immich Blog Immich introduces product keys | Immich Blog Immich joins FUTO | Immich Blog 2023 - A year in review | Immich Blog
New Svelte component library | Immich Blog
Jason Rasmus · 2025-09-25 · via Immich Blog
  • Blog
  • New Svelte component library

September 25, 2025

— Jason Rasmussen

Learn more about the Svelte component library that is powering this and other Immich websites.


Last November (2024), I took on the task of trying to build a standalone Svelte component library, based on the Immich web application. It was a long, time consuming task, especially since I had no prior experience writing a Svelte component library, or any component library for that matter. Now, almost a year later, the library is being used across a variety of projects, and more and more code in the main Immich web application is being migrated to use it.

The library is published to npm under the Immich organization at @immich/ui. You can view the current set of components and a handful of examples at https://ui.immich.app/. At time of writing there are over 30 components, with more being added all the time.


View the project


Technology

The library is built using Tailwind CSS and Svelte.


View on GitHub


Motivation

There were a few motivating factors behind the decision to create this library:

  • Consistency — the need for a consistent design across Immich websites was a major factor. Especially as we started to publish micro sites, such as:
  • Decoupling — a lof of code in the Immich web application was tightly coupled to specific usages. Pulling the components into a separate library forced me to assess and design their interfaces in a more general purpose & resuable manner.
  • Incremental adoption — with the components being in a separate library, I am able to incrementally migrate code from the main application to the library as components become available and stable. This has made it much more manageable to migrate the codebase over time.
  • Standardization — the components in the new library are able to more easily follow and adhere to common patterns and interfaces, like the current Size, Color, and Variant properties.

Future work

There is still a lot of work to do with regard to the library. There are a few key components missing still, like a Calendar/Date Picker component, and a few more form fields. Also, there is a pretty big gap when it comes to tests.

Even though I would say the library is incomplete, it has already been a huge win for the team. We recently launched https://datasets.immich.app/, which was built by an intern using the component library, and it looks great! We also just launched https://api.immich.app/, and it similarly looks great and is consistent with our other sites.

Cheers,
The Immich Team