Loop Earplugs, Shopify 테마 위에 앱이 얹힌 구조
Loop는 온라인으로 귀마개를 판매합니다. 모바일에서는 체크아웃으로 가는 과정에서 장바구니에 담고 카트 드로어가 열릴 때 화면 반응이 나타나기까지 너무 오래 걸렸습니다.

모바일 장바구니 담기: 테마 코드, 앱, 태그, 카트 드로어
함께 INP 트레이스를 분석했습니다. 클릭 지연은 테마, 앱, 태그 전반에 분산되어 있었으며, 어느 한 가지만의 문제가 아니었습니다. 수정 작업은 개발팀이 직접 진행했고, 필요한 부분은 트레이스 분석 방법을 교육했습니다.
2023년 2월에 Nathan과 처음 이야기를 나눴습니다. 당시 모바일 INP는 약 1초였고, 3월에는 1,350 ms에 달했습니다. 함께 트레이스를 확인해 보니 앱들이 클릭에 끼어들고 있었습니다. 3월에 ShopMessage를 제거했습니다. 모든 클릭과 스크롤을 감지하는 세션 레코더인 Lucky Orange는 5월 12일에 Builder.io 트래킹과 함께 제거했습니다.
pc-quiz.s3.us-east-2.amazonaws.com/…/quiz-loader.min.jsd38xvr37kwwhcm.cloudfront.net/…/grin-sdk.jscdn.shopmsg.me/…/shopmessage_platform.jsd275fvz7g8rvo.cloudfront.net/…/online_store_script.jslive-video-shopping-e4078.web.app/…/shows.jslive-video-shopping-e4078.web.app/…/integration.jsvision.duel.me/duel-analytics.jscdn.nfcube.com/97f451076844edac4b1d04779bdb9668.jsintg.snapchat.com/…/shopify-scevent-init.jsapp.backinstock.org/…/31939_1675166049.jscdn.builder.io/…/track.jstools.luckyorange.com/…/lo.jspc-quiz.s3.us-east-2.amazonaws.com/…/quiz-loader.min.jsd38xvr37kwwhcm.cloudfront.net/…/grin-sdk.jsd275fvz7g8rvo.cloudfront.net/…/online_store_script.jslive-video-shopping-e4078.web.app/…/shows.jslive-video-shopping-e4078.web.app/…/integration.jsvision.duel.me/duel-analytics.jscdn.nfcube.com/97f451076844edac4b1d04779bdb9668.jsintg.snapchat.com/…/shopify-scevent-init.jsapp.backinstock.org/…/31939_1675166049.js그다음은 테마였습니다. 장바구니 담기를 클릭할 때마다 카트 드로어가 동작하는 동일한 클릭에서 Shopify에 섹션 3개를 다시 렌더링하도록 요청하고 있었습니다. 개발팀은 2023년 11월 20일에 해당 코드 라인을 삭제했습니다. 2024년 2월에는 모든 fetch 요청을 감싸고 있던 Klaviyo 스니펫도 제거했습니다.
const formData = new FormData(this.form);if (this.dataset.cartType != 'page') { formData.append('sections', this.cart.getSectionsToRender().map((section) => section.id)); formData.append('sections_url', window.location.pathname); this.cart.setActiveElement(document.activeElement);}renderContents(parsedState) { this.cartItemKey = parsedState.key; this.getSectionsToRender().forEach((section => { document.getElementById(section.id).innerHTML = this.getSectionInnerHTML(parsedState.sections[section.id], section.selector); })); if (this.header) this.header.reveal(); this.open();봄에 CrUX 수치가 크게 떨어졌습니다. 모바일 INP는 2023년 3월 1,350 ms에서 6월 475 ms로 떨어지며 Nathan이 언급한 약 800 ms 단축에 근접했습니다. 그해 가을에는 550 ms로 다소 올랐습니다. 테마를 수정한 후 2024년 2월에는 375 ms까지 떨어졌으며, 이후 안정적으로 유지되었습니다. LCP 역시 2022년 9월 4.3초에서 2023년 10월 1.9초로 줄었습니다.
"모바일 반응 속도가 약 800ms 빨라졌고 체크아웃 전환율이 7% 올랐습니다. 투자 비용은 거의 바로 회수되었습니다."
Nathan Ziarczyk, Loop 엔지니어링 리드
Shopify 앱은 클릭할 때마다 부하를 더합니다
특정 기능 하나를 쓰려고 앱을 설치해도, 해당 스크립트는 그 기능과 무관한 페이지와 클릭에서도 로드됩니다. 앱 하나만 보면 부하가 작을 수 있습니다. 하지만 상품 페이지에서 테마, 태그와 겹겹이 쌓이면 느린 클릭을 만듭니다.
INP는 템플릿에서 해결합니다
앱 설정만으로는 클릭 시 실행되는 작업을 바꾸기 어렵습니다. 실제 실행 내용은 테마 코드가 결정합니다. 장바구니 담기 동작, 카트 드로어 렌더링 시점, 어떤 앱 스크립트를 로드할지 모두 테마 코드에 달려 있습니다.
체크아웃 동선의 빠른 클릭은 성과로 이어집니다
7% 상승을 무조건 보장할 수는 없습니다. 이는 Loop가 자체 스토어에서 직접 측정한 수치입니다.
모바일 Shopify 스토어의 클릭 반응이 느립니까?
개발팀과 함께 주 1~3일, 스프린트 단위로 협업합니다.
더 많은 성과는 고객사 페이지에서 확인할 수 있습니다.