본문으로 건너뛰기
피드

나는 앱 안 깔아, 웹이면 충분한데 왜 자꾸 강요하는 건데

frontend 약 5분
vote
0
댓글
북마크

웹에서 잘 되는 서비스를 굳이 앱으로 써야 하는 현실에 대한 개발자의 비판. 대부분의 앱은 JSON 렌더링하는 씬 클라이언트일 뿐인데 100MB+ 설치와 권한을 요구하고, 크로스플랫폼 프레임워크로 만든 앱 퀄리티도 네이티브에 못 미침. 웹 사용자를 앱으로 몰아넣는 엔시티피케이션 루프의 구조적 문제를 지적함.

  • 1

    브라우저에서는 유저스크립트·광고차단 등으로 사용자가 UI를 통제 가능하지만, 앱은 다크패턴의 온상

  • 2

    대부분 앱은 API에서 JSON 받아 렌더링하는 씬 클라이언트에 불과한데 과도한 권한과 용량을 요구

  • 3

    Flutter 등 크로스플랫폼 앱의 미묘한 네이티브 불일치가 사용자 경험을 해침

  • 4

    웹에서 사용자 모은 뒤 의도적으로 웹 버전을 망가뜨려 앱으로 유도하는 엔시티피케이션 루프

  • "앱 깔아주세요"에 질린 한 개발자의 반격 — 브라우저에서 잘만 되는 서비스를 왜 굳이 앱으로 써야 하는지에 대한 날카로운 비판

    • 소셜 미디어는 물론이고 주차, 음식 주문 같은 기본적인 서비스까지 앱 설치를 강요하는 추세
    • 화면 절반을 덮는 "앱 다운로드" 모달, 스크롤하면 뜨는 팝업, "앱이 10배 낫다"는 헤더 — 수법도 점점 노골적
  • 브라우저에서는 사용자가 왕인데, 앱에서는 포로가 됨

    • 다크모드 없는 서비스? 유저스크립트 하나면 해결. 레딧 사이드바에 게임 섹션 생겼다고? 확장 프로그램으로 2초 만에 제거
    • 유저스크립트, 광고 차단기, 커스텀 확장 — 브라우저에서는 사용자가 UI를 통제할 수 있음
    • 반면 앱은 다크패턴의 블랙홀. 푸시 알림 남발, 침습적 텔레메트리 수집, 월드가든에 가두기 — 이 모든 게 "더 나은 UX"라는 포장 아래 진행됨
  • 대부분의 앱은 그냥 텍스트와 미디어를 보여주는 씬 클라이언트에 불과함

    • 3D 게임이나 LiDAR 같은 하드웨어 깊은 통합이 필요한 경우를 빼면, 결국 API에서 JSON 받아서 네이티브 뷰에 렌더링하는 게 전부
    • 레스토랑 메뉴 보려고 100MB+ 앱 깔고, 위치 권한 주고, 백그라운드 프로세스 돌리는 게 말이 되나?
  • 그렇게 강요하는 앱이 좋기라도 하면 모를까, 퀄리티도 별로임

    • 초기 Flutter 앱의 iOS 셰이더 컴파일 버벅임을 겪어본 사람은 알 거임 — Skia 엔진에서 Impeller로 교체되기 전까지 첫 애니메이션에서 UI가 끊기는 문제가 있었음 (2023년쯤 수정)
    • 프리컴파일된 셰이더를 앱에 번들로 넣어서 배포해야 했을 정도
    • 스크롤 속도가 OS와 미묘하게 다르고, 스와이프 백 제스처가 몇 밀리초 망설이는 그 "언캐니 밸리" 느낌
    • 인간의 뇌는 타이밍이 어긋나는 걸 기가 막히게 감지함 — XZ 백도어도 SSH 로그인이 아주 살짝 느려진 걸 엔지니어가 알아채서 발견된 거고, FPS 게이머들은 한 발 쏴보면 서버 리전을 구별한다고

중요

> 대부분의 앱은 API에서 JSON 받아서 렌더링하는 씬 클라이언트일 뿐인데, 100MB+ 설치와 각종 권한을 요구함. 웹으로 충분한 서비스까지 앱을 강요하는 건 사용자 경험이 아니라 사용자 가두기가 목적.

엔시티피케이션(Enshittification) 루프

  • 웹에서 사용자 모으고 → 앱으로 몰고 → 광고로 수익화하는 3단계 패턴

    • 처음에는 오픈 웹에서 마찰 없이 사용자를 끌어모음 (검색 노출도 되고 링크 공유도 쉬우니까)
    • 사용자가 충분히 모이면 웹 버전을 의도적으로 망가뜨려서 앱 설치를 유도
    • 앱에 갇힌 순간 광고 차단기가 안 먹히는 피드 광고의 포로가 됨
  • PM 입장에서 웹 고수하는 유저는 "허용 가능한 손실"

    • 웹 버전 열화시켜서 80%를 앱스토어로 보내면 그 PM은 승진하고 연봉 올라감
    • 인센티브 구조가 이렇게 돌아가니 웹 경험에 투자할 이유가 없음
    • 브라우저는 한때 위대한 범용 플랫폼이었는데, 이제는 앱스토어를 위한 마케팅 퍼널 입구로 전락하는 중

ℹ️참고

> 엔시티피케이션(Enshittification)은 코리 닥터로우가 만든 용어로, 플랫폼이 처음엔 사용자에게 좋다가 점점 광고주와 주주 이익을 위해 사용자 경험을 희생하는 패턴을 뜻함.

프론트엔드 개발자라면 '우리 서비스도 이러고 있진 않나' 돌아볼 만한 글. 웹 퍼스트 전략이 사용자 신뢰를 지키는 길이라는 메시지가 강력함.

댓글

댓글

댓글을 불러오는 중...

frontend

타입스크립트 7.0, Go 네이티브 포팅으로 빌드가 8~12배 빨라졌다

마이크로소프트가 타입스크립트 7.0을 출시하면서 기존 자바스크립트 기반 구현을 Go로 네이티브 포팅했다. 전체 빌드는 평균 8~12배 빨라졌고, VS코드 빌드는 125.7초에서 10.6초로 줄었으며, 슬랙은 CI 타입 검사 시간을 7.5분에서 1.25분으로 낮췄다.

frontend

타입스크립트 7 공개, 고 포팅으로 빌드가 최대 10배 이상 빨라짐

마이크로소프트가 고(Go)로 네이티브 포팅한 타입스크립트 7을 공개했다. 전체 빌드는 보통 8~12배 빨라지고, VS 코드 코드베이스에서는 125.7초가 10.6초로 줄었으며, 편집기 첫 오류 표시도 17.5초에서 1.3초 미만으로 내려갔다.

frontend

“98% 지원”이 생각보다 별로 안 넉넉한 이유

브라우저 기능 지원률 98%는 얼핏 높아 보이지만, 실제 서비스에서는 2%의 사용자를 깨진 화면 앞에 세우는 숫자일 수 있다는 글이다. 특히 일반 통계와 내 서비스 방문자 분포는 다를 수 있고, 실제 사례로 어떤 사이트는 최신 중첩 CSS 기능 지원 브라우저가 방문자의 약 70%뿐이었다.

frontend

메타, AI가 읽고 쓰는 디자인 시스템 ‘Astryx’ 오픈소스로 공개

메타가 내부 디자인 시스템 Astryx를 오픈소스로 공개했다. React와 StyleX 기반의 150개 이상 접근성 지원 컴포넌트, 디자인 토큰, 테마, 템플릿, CLI를 제공하며, 특히 AI 에이전트가 컴포넌트 구조를 이해하고 UI를 생성·수정할 수 있도록 MCP 서버까지 포함한 점이 핵심이다.

frontend

shadcn/ui, 기본 컴포넌트 라이브러리를 Radix에서 Base UI로 변경

shadcn/ui가 새 프로젝트의 기본 컴포넌트 라이브러리를 Radix가 아니라 Base UI로 바꿨어. Radix 지원은 계속되지만, Base UI가 안정화됐고 주간 다운로드 600만 이상, shadcn/create 신규 프로젝트 선택 비율 2대1이라는 이유로 기본값을 바꾼 거야. 동시에 채팅 UI용 MessageScroller와 관련 컴포넌트, headless 패키지인 @shadcn/react도 공개됐어.