RSS 리더가 공통적으로 전제해온 '읽지 않은 항목 처리'라는 의무감을 근본부터 거부하고, 콘텐츠가 자연스럽게 도착하고 머물다 사라지는 '강(River)' 비유를 인터페이스 전체에 구현한 새로운 RSS 리더
각 피드 소스에 반감기(Half-Life) 를 설정해 속보는 3시간, 에세이는 7일 등 콘텐츠 유형별로 노출 수명이 달라지며, 다작 소스가 피드를 독점하는 문제를 구조적으로 해결
글을 '읽음 처리'하는 대신 '놓아주기(Release)' 라는 제스처로 카드를 날려보내는 물리 기반 인터랙션을 채택하고, 햅틱 피드백·애니메이션·실행취소까지 세밀하게 설계
개인 블로그를 피드 URL이 아닌 'Voices(목소리)' 로 분리해 사람과 매체를 다르게 다루며, 모든 AI 기반 주제 분석과 추천은 온디바이스에서만 실행
iPhone·iPad·Mac 각 플랫폼에 맞춘 전용 UI를 제공하며, Command-K 팔레트와 빠른 심사 모드 Sift 등 데스크톱 고유 경험까지 포함
River — 핵심 인터페이스
메인 화면은 모든 피드가 하나로 합쳐진 River 형태로, 읽지않은 글 카운트가 존재하지 않음
카운트를 없앤 이유는 미니멀 디자인이 아니라 "세는 행위 자체가 문제" 라는 철학적 판단
글은 도착 후 일정 시간이 지나면 점점 흐려지다 사라지며, 읽음 표시나 분류 없이 물이 다리 아래로 흘러가듯 지나감
각 글에는 velocity(속도) 값이 있어, 얼마나 빨리 노후화되는지 결정
속보: 3시간 만에 사라짐
일반 기사: 18시간
에세이: 3일
에버그린 튜토리얼: 최대 1주일
노후화된 항목은 점차 어두워지다 완전히 사라지며, 사용자가 별도 조작할 필요 없음
"정보에는 자연스러운 수명이 있으며, 인터페이스는 그것을 존중해야 한다"는 원칙
Half-Life — 소스별 반감기 설정
모든 소스에 반감기(half-life) 를 지정해 글이 River에 머무는 시간을 제어
BBC World 같은 속보 피드: 3시간
Ars Technica: 18시간
Aeon, The Marginalian 같은 느린 소스: 1주일
Google Reader 이후 모든 시간순 피드가 겪어온 문제, 즉 다작 소스가 나머지를 매몰시키는 현상을 해결
The Verge가 하루 20개를 올려도 수 시간 내 사라지고, Craig Mod가 한 달에 한 번 올린 에세이는 며칠간 유지
온보딩에서 Breaking, News, Article, Essay, Evergreen 다섯 단계 속도를 제시하며, 소스당 하나만 선택하면 River가 나머지를 처리
Release — '읽음 처리' 대신 '놓아주기'
대부분의 RSS 리더가 사용하는 "mark as read" 는 관리자가 서류를 처리하는 듯한 언어적 함의를 지님
Current는 이를 Release(놓아주기) 로 대체
River에서 카드를 길게 왼쪽 스와이프하면 카드가 날아가고, 나머지 카드가 물이 빈 공간을 채우듯 자리를 정렬
글 본문 끝에 도달하면 하단에서 Release 버튼이 떠올라, 탭 한 번으로 River로 복귀하며 해당 글은 이미 사라진 상태
물리 기반 인터랙션 세부 설계:
드래그 시 카드가 살짝 압축되며 긴장감 형성
임계점에 가까워질수록 햅틱 엔진이 점점 빠르게 진동
가장자리에 따뜻한 빛이 나타나고, 임계점을 넘으면 카드가 날아감
실행취소 윈도우 제공: 놓아준 글은 수 초간 메모리에 남아 있어 되돌리기 가능, 확인 다이얼로그 없음
소스별 세부 튜닝
velocity 외에 소스마다 추가 옵션 제공
전체 글 가져오기(full article fetch): 티저 문단만 제공하는 피드의 전문을 웹에서 직접 추출
웹코믹 모드: 이미지 우선 리더로 전환, 줌·팬·alt-text 표시 지원 (XKCD 등에 최적화)
뮤트: 특정 소스를 1주일간 숨김
핀 고정: 특정 소스를 River 상단에 고정
이 옵션들은 설정 메뉴 깊은 곳이 아니라 소스마다 한 번 스와이프로 접근 가능
The River Speaks — 동적 안내 카드
Current는 사용 습관을 관찰해 비침습적 안내 카드를 글 사이에 삽입
특정 소스가 하루 18개를 올리면 "The Verge posted 18 items today" 카드와 함께 속도 제한·24시간 음소거 옵션 제시
같은 소스에서 10개 연속 건너뛰면 "You've skipped 10 from TechCrunch. Quiet or remove?" 제안
특정 소스를 계속 읽으면 핀 고정 제안, 여러 소스에서 같은 주제를 계속 읽으면 새 Current 생성 제안
이 카드들은 알고리듬적 추천이 아니며, 참여를 극대화하거나 관심을 빼앗으려는 것이 아님
"습관을 알아채고 조용히 선반을 재배치하는 사서"에 비유
모든 지능형 처리는 온디바이스에서만 실행: 자연어 처리로 주제를 식별하고, Foundation Models(사용 가능 시)로 관련 기사 검증, 어떤 데이터도 서버로 전송되지 않음
Voices — 사람과 매체의 구분
대부분의 RSS 리더는 소스를 사이드바의 피드 URL 목록으로만 표시
Current는 개인 블로그처럼 한 사람이 쓰는 피드를 별도의 Voice(목소리) 로 분리
"사람을 구독하는 것이 아니라, 목소리를 따라가는 것"
Voice로 지정된 피드는 Voices 탭에 모여 시간순 타임라인을 형성
활발한 Voice는 풀 컬러로, 조용한 Voice는 그레이스케일로 표시되며 주의를 강요하지 않음
Voice를 탭하면 해당 인물의 글만 필터링
iPad: 사이드바에 이름과 파비콘 표시
iPhone/Mac: 타임라인 위 스크롤 가능한 얼굴 행
Current는 개인 블로그를 자동 감지(서브도메인 패턴, 게시 빈도, 바이라인 신호)하고 Voice 지정을 부드럽게 제안하지만 최종 선택은 사용자 몫
Currents — 커스텀 컬렉션
River는 모든 것이 합쳐진 기본 뷰이며, 범위를 좁히고 싶을 때 Currents 사용
화면 상단 수평 바에 위치하며, 스와이프 한 번으로 전환
기본 제공 세 가지:
River: 전체 피드
Voices: 팔로우 중인 사람들
Read Later: 저장한 글 (오프라인 캐시, 따뜻한 앰버 색상으로 "내 것"임을 표시)
"폴더"는 정리 의무를, "카테고리"는 스프레드시트를 연상시키므로, 큰 강 안의 작은 물줄기라는 뜻의 "Currents"로 명명
동적 안내 카드가 독서 패턴을 감지해 새 Current 생성을 제안하기도 함
Calm by Design — 디자인 시스템
"모든 인터페이스는 사용자가 어떻게 느껴야 하는지에 대한 주장"이라는 원칙이 디자인 시스템의 출발점
디자인 시스템 내부 태그라인: "Calm but not boring. Beautiful but not loud. Typography as hero. Color as punctuation."
본문은 iOS 시스템 세리프체 16~18pt, Dynamic Type에 맞춰 확장
산세리프 앱이 대부분인 환경에서 의도적 선택: 세리프체는 500년간 장문 독서의 표준
리더 뷰에서는 18pt 세리프로 확대, 빈 화면이나 사색적 순간에는 별도 "poetic" 타이포그래피 티어 적용
9가지 색상 팔레트, 각각 라이트·다크 변형 제공:
Bright: iOS 블루 기반
Paper: 따뜻한 아이보리·앰버, 촛불 독서 느낌
Ocean: 쿨 틸·시폼
Dusk: 소프트 바이올렛·라벤더
Ember: 따뜻한 러스트·로즈
Midnight: 진정한 OLED 블랙
Slate: 코드 에디터 팔레트
Terminal: CRT를 기억하는 사람들을 위한 포스포 그린 온 블랙
Solarized: Ethan Schoonover의 정밀 팔레트
색상은 장식이 아닌 시맨틱 용도: 따뜻한 앰버는 항상 "내 것"(저장된 글, 개인 컬렉션), 신선한 틸은 "새것", 세이지 그린은 성공, 레드는 오류
Motion & Touch — 애니메이션과 햅틱
애니메이션은 장식이 아닌 어휘(vocabulary)
다섯 단계 타이밍 티어:
Instant (0.15초): 마이크로 피드백
Quick (0.22초): 주요 인터랙션
Standard (0.28초): 카드 이동
Gentle (0.35초): 패널
Smooth (0.45초): 앰비언트 모션
일관된 타이밍이 무의식적 신뢰를 형성
배경에 CurrentLines: 고유 진폭과 위상을 가진 5개의 사인파가 천천히 흐르며, 보이기보다 느껴지는 수준으로 앱에 생동감 부여
햅틱 커뮤니케이션 상세:
Release 제스처: 50% 긴장 시 탭, 임계점 접근 시 심박처럼 가속하는 리듬 펄스, 트리거 시 강한 탭 + 부드러운 탭의 2단 확인
River 스크롤 안정 시 미세한 "날숨", Voice 글 열 때 부드러운 펄스
Reduce Motion 활성화 시 모든 모션 완전 정지: 앰비언트 라인 제거, 전환 즉시 처리, 예외 없음
접근성은 기능 토글이 아니라 전체 시스템을 더 좋게 만든 디자인 제약
Four Swipes — 제스처 커스터마이징
River의 모든 카드에 4방향 제스처 슬롯 제공: 짧은 왼쪽, 긴 왼쪽, 짧은 오른쪽, 긴 오른쪽
기본값: 짧은 왼쪽=읽음 표시, 긴 왼쪽=Release, 짧은 오른쪽=저장, 긴 오른쪽=공유
모든 슬롯을 원하는 동작으로 재매핑 가능: 읽음/미읽음 표시, Release, 저장, 소스 뮤트, 소스 편집, 공유, 또는 없음
설정 화면에 라이브 프리뷰 카드가 있어 적용 전 스와이프 테스트 가능
짧은 스와이프와 긴 스와이프는 서로 다른 임계점과 구별되는 햅틱 피드백 적용
The Small Things — 세부 기능
왼쪽 가장자리 스와이프: 검색, 오른쪽 가장자리 스와이프: 설정
처음 몇 번은 가장자리 접근 시 힌트가 나타나며, 3회 후 자동 은퇴
읽기 진행도를 퍼센트가 아닌 자연어로 표시: "Just started", "Halfway through" 등이 River 카드에 표시
전문 검색(Full-text search): 스크롤한 모든 글, 읽은 모든 글을 인덱싱하여 타이핑 즉시 결과 표시, 피드가 검색 가능한 기억이 됨
Read Later는 큐가 아닌 라이브러리: 저장된 글은 오프라인 캐시되며 만료되지 않고, 카운트도 없이 책장의 책처럼 대기
Beyond the Phone — iPad & Mac 경험
iPhone 앱이 큰 화면을 단순히 수용하는 것이 아니라, 각 플랫폼에 맞춘 전용 경험 설계
iPad:
접이식 사이드바: 소스, Currents, Voices가 필요할 때 슬라이드 인, 필요 없으면 사라짐
가로 모드: 사이드바와 리더가 나란히 배치, 글을 열어도 River에서 위치를 잃지 않음
세로 모드: 사이드바 숨김, River가 전체 화면 차지
Mac:
키보드 퍼스트 설계
Command-K: 커맨드 팔레트로 Current 전환, 소스 이동, 검색, 테마 변경 등 모든 동작 수행, 메뉴 탐색 불필요
Sift 모드: 데스크톱에서의 실제 트리아지 방식에 맞춘 모드로, 키 하나를 누르면 각 글이 전체 화면으로 표시되고 Release·저장·건너뛰기를 단일 키로 처리
What I Left Out — 의도적으로 배제한 것들
읽지 않은 글 카운트 완전 배제: "아직 안 넣은 것"이 아니라 "절대 넣지 않을 것", 철학적 결정. 읽지 않음 카운트는 RSS 관리자(manager)로서는 더 나은 앱을 만들지만 RSS 독자(reader)로서는 더 나쁜 앱을 만듦
3패인 레이아웃 없음: 피드 사이드바 + 항목 리스트 + 읽기 창 구조를 배제. 2002년 Brent Simmons가 발명한 이 레이아웃을 20년간 모두가 복제해온 것에 대한 의문을 진지하게 수용
알고리듬 큐레이션 없음: 소셜 미디어가 phantom obligation을 "지금 벌어지는 일을 놓칠지 모른다는 두려움(FOMO)" 으로 대체했다는 인식. River는 도착 순서대로만 흐르며, 사용자가 설정한 velocity만이 영향을 줌
스토리 스레딩: 여러 소스의 관련 기사를 내러티브 스레드로 묶는 시스템을 구축 완료했으나 비활성화 상태로 출시. 온디바이스 Foundation Models로 검증까지 작동하지만 프레젠테이션이 아직 적절하지 않아, 반쯤 완성된 상태로 출시하기보다 준비가 될 때까지 또는 영원히 보류