kr.linkedin.com
내용
Shopify의 앱 생태계는 플랫폼의 가장 큰 강점 중 하나로, 스토어 기능을 향상시키는 서드파티 도구를 제공합니다. 개발자에게 Shopify 앱을 만드는 일은 수익성과 보람을 동시에 가져다줄 수 있습니다. 이 가이드는 Shopify 앱을 효과적으로 생성, 배포, 관리하는 과정을 안내해 드립니다.
Shopify 앱 이해하기
개발에 뛰어들기 전에, Shopify 앱이 무엇을 하는지 아는 것이 필수적입니다. 이들은 매장의 역량을 확장하여 가맹점이 업무를 자동화하고, 고객 경험을 향상시키며, 제3자 서비스를 통합할 수 있도록 돕습니다.
Shopify 앱 종류
개발 환경 설정
Shopify 앱 개발을 시작하려면 적절한 설정이 필요합니다.
요구 사항
도구 및 프레임워크
Shopify는 Shopify CLI이 도구는 앱을 기반으로 하며 일반적인 작업을 처리합니다. 또한 다음과 같은 프레임워크를 사용할 수도 있습니다 리믹스 또는 Next.js 프론트엔드 구축을 위한 것입니다.
LinkedIn 추천
첫 Shopify 앱 만들기
환경이 준비되면 Shopify CLI를 사용해 새 앱을 생성하세요.
단계별 개요
Shopify API 사용
Shopify 앱은 REST 또는 GraphQL API를 통해 스토어 데이터와 상호작용합니다. GraphQL은 일반적으로 더 효율적이며, 유연한 쿼리와 더 작은 페이로드를 제공합니다.
인증 및 권한
모든 앱은 OAuth로 인증하고 저장 데이터에 안전하게 접근하기 위해 적절한 범위를 요청해야 합니다.
안전한 OAuth 흐름을 위한 팁
Shopify 앱 구축 및 관리: 개발자 가이드 이 기사는 블로그에 처음 게재되었습니다: https://www.crestinfotech.com/building-and-managing-shopify-apps-a-developers-guide/
Shopify 앱은 플랫폼의 기능을 확장하고 상인에게 맞춤형 솔루션을 제공합니다. 이 글은 맞춤형 Shopify 앱을 만들고 관리하려는 개발자들을 위한 종합적인 가이드 역할을 합니다. 개발 환경 설정, Shopify API 사용, Shopify CLI와 Polaris UI 컴포넌트 활용 등 앱 개발 과정을 안내합니다. 이 기사는 앱 인증, 청구 통합, 배포 모범 사례도 다룹니다. 개별 스토어용 비공개 앱을 만들든, Shopify 앱 스토어용 공개 앱을 만들든, 이 가이드는 강력하고 안전하며 확장 가능한 Shopify 애플리케이션을 구축하는 데 필요한 기반을 제공합니다.
원문 자막 펼치기
<!DOCTYPE html>
<html class="cls-fix-enabled" lang="ko">
<head>
<meta name="pageKey" content="d_flagship2_pulse_read">
<meta name="robots" content="max-image-preview:large, noarchive">
<meta name="bingbot" content="max-image-preview:large, archive">
<!----><!----> <meta name="locale" content="ko_KR">
<!----> <meta id="config" data-app-version="0.0.5022" data-call-tree-id="AAZYyhvuWSdfzSAvQs/VpA==" data-multiproduct-name="article-ssr-frontend" data-service-name="article-ssr-frontend" data-browser-id="86f66b28-c01e-4c6c-8bdb-ae3d0ef1c5a3" data-is-bot="false" data-enable-page-view-heartbeat-tracking data-page-instance="urn:li:page:d_flagship2_pulse_read;JVqHHbIbSSy4a7g5e/o+vw==" data-theme="light" data-disable-jsbeacon-pagekey-suffix="false" data-member-id="0" data-logout-url="https://www.linkedin.com/uas/logout?session_full_logout=true&csrfToken=ajax%3A8961569796449673701" data-should-use-full-url-in-pve-path="true" data-dna-member-lix-treatment="enabled" data-human-member-lix-treatment="enabled" data-dfp-member-lix-treatment="control" data-sync-apfc-headers-lix-treatment="control" data-sync-apfc-cb-lix-treatment="control" data-recaptcha-v3-integration-lix-value="control" data-network-interceptor-lix-value="control" data-is-epd-audit-event-enabled="false" data-is-feed-sponsored-tracking-kill-switch-enabled="false" data-sequence-auto-redirect-before-request-enabled="false">
<link rel="canonical" href="https://kr.linkedin.com/pulse/building-managing-shopify-apps-developers-guide-crest-infotech-eo7pf?tl=ko">
<link rel="alternate" hreflang="de" href="https://de.linkedin.com/pulse/building-managing-shopify-apps-developers-guide-crest-infotech-eo7pf?tl=de">
<link rel="alternate" hreflang="no" href="https://no.linkedin.com/pulse/building-managing-shopify-apps-developers-guide-crest-infotech-eo7pf?tl=no">
<link rel="alternate" hreflang="ru" href="https://ru.linkedin.com/pulse/building-managing-shopify-apps-developers-guide-crest-infotech-eo7pf?tl=ru">
<link rel="alternate" hreflang="sv" href="https://se.linkedin.com/pulse/building-managing-shopify-apps-developers-guide-crest-infotech-eo7pf?tl=sv">
<link rel="alternate" hreflang="pt" href="https://pt.linkedin.com/pulse/building-managing-shopify-apps-developers-guide-crest-infotech-eo7pf?tl=pt">
<link rel="alternate" hreflang="ko" href="https://kr.linkedin.com/pulse/building-managing-shopify-apps-developers-guide-crest-infotech-eo7pf?tl=ko">
<link rel="alternate" hreflang="ms" href="https://my.linkedin.com/pulse/building-managing-shopify-apps-developers-guide-crest-infotech-eo7pf?tl=ms">
<link rel="alternate" hreflang="en" href="https://www.linkedin.com/pulse/building-managing-shopify-apps-developers-guide-crest-infotech-eo7pf">
<link rel="alternate" hreflang="fr" href="https://fr.linkedin.com/pulse/building-managing-shopify-apps-developers-guide-crest-infotech-eo7pf?tl=fr">
<link rel="alternate" hreflang="ar" href="https://ae.linkedin.com/pulse/building-managing-shopify-apps-developers-guide-crest-infotech-eo7pf?tl=ar">
<link rel="alternate" hreflang="vi" href="https://vn.linkedin.com/pulse/building-managing-shopify-apps-developers-guide-crest-infotech-eo7pf?tl=vi">
<link rel="alternate" hreflang="uk" href="https://ua.linkedin.com/pulse/building-managing-shopify-apps-developers-guide-crest-infotech-eo7pf?tl=uk">
<link rel="alternate" hreflang="ja" href="https://jp.linkedin.com/pulse/building-managing-shopify-apps-developers-guide-crest-infotech-eo7pf?tl=ja">
<link rel="alternate" hreflang="id" href="https://id.linkedin.com/pulse/building-managing-shopify-apps-developers-guide-crest-infotech-eo7pf?tl=id">
<link rel="alternate" hreflang="ro" href="https://ro.linkedin.com/pulse/building-managing-shopify-apps-developers-guide-crest-infotech-eo7pf?tl=ro">
<link rel="alternate" hreflang="da" href="https://dk.linkedin.com/pulse/building-managing-shopify-apps-developers-guide-crest-infotech-eo7pf?tl=da">
<link rel="alternate" hreflang="nl" href="https://nl.linkedin.com/pulse/building-managing-shopify-apps-developers-guide-crest-infotech-eo7pf?tl=nl">
<link rel="alternate" hreflang="x-default" href="https://www.linkedin.com/pulse/building-managing-shopify-apps-developers-guide-crest-infotech-eo7pf">
<!---->
<!---->
<meta property="al:android:url" content="https://kr.linkedin.com/pulse/building-managing-shopify-apps-developers-guide-crest-infotech-eo7pf?tl=ko">
<meta property="al:android:package" content="com.linkedin.android">
<meta property="al:android:app_name" content="LinkedIn">
<meta property="al:ios:url" content="https://kr.linkedin.com/pulse/building-managing-shopify-apps-developers-guide-crest-infotech-eo7pf?tl=ko">
<meta property="al:ios:app_store_id" content="288429040">
<meta property="al:ios:app_name" content="LinkedIn">
<!---->
<link rel="icon" href="https://static.licdn.com/aero-v1/sc/h/al2o9zrvru7aqj8e1x2rzsrca">
<script>
function getDfd() {let yFn,nFn;const p=new Promise(function(y, n){yFn=y;nFn=n;});p.resolve=yFn;p.reject=nFn;return p;}
window.lazyloader = getDfd();
window.tracking = getDfd();
window.impressionTracking = getDfd();
window.ingraphTracking = getDfd();
window.appDetection = getDfd();
window.pemTracking = getDfd();
window.appRedirectCompleted = getDfd();
</script>
<!---->
<title>Shopify 앱 구축 및 관리: 개발자 가이드</title>
<link rel="stylesheet" href="https://static.licdn.com/aero-v1/sc/h/1mxrdbdofcn2u4w4tj336kkqc">
<meta name="description" content="Shopify의 앱 생태계는 플랫폼의 가장 큰 강점 중 하나로, 스토어 기능을 향상시키는 서드파티 도구를 제공합니다. 개발자에게 Shopify 앱을 만드는 일은 수익성과 보람을 동시에 가져다줄 수 있습니다.">
<meta property="og:title" content="Shopify 앱 구축 및 관리: 개발자 가이드">
<meta property="og:description" content="Shopify의 앱 생태계는 플랫폼의 가장 큰 강점 중 하나로, 스토어 기능을 향상시키는 서드파티 도구를 제공합니다. 개발자에게 Shopify 앱을 만드는 일은 수익성과 보람을 동시에 가져다줄 수 있습니다.">
<meta property="og:image" content="https://media.licdn.com/dms/image/v2/D4D12AQFn2bEGzN7J4A/article-cover_image-shrink_720_1280/B4DZehG36QHkAI-/0/1750754630840?e=2147483647&v=beta&t=K4KS8Fs9yqTYMSqlOryVbLtaqYK3cm5RwhpjzykPmeY">
<meta property="og:type" content="article">
<meta property="og:url" content="https://kr.linkedin.com/pulse/building-managing-shopify-apps-developers-guide-crest-infotech-eo7pf?tl=ko">
<!---->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@LinkedInEditors">
<meta name="twitter:title" content="Shopify 앱 구축 및 관리: 개발자 가이드">
<meta name="twitter:description" content="Shopify의 앱 생태계는 플랫폼의 가장 큰 강점 중 하나로, 스토어 기능을 향상시키는 서드파티 도구를 제공합니다. 개발자에게 Shopify 앱을 만드는 일은 수익성과 보람을 동시에 가져다줄 수 있습니다.">
<meta name="twitter:image" content="https://media.licdn.com/dms/image/v2/D4D12AQFn2bEGzN7J4A/article-cover_image-shrink_720_1280/B4DZehG36QHkAI-/0/1750754630840?e=2147483647&v=beta&t=K4KS8Fs9yqTYMSqlOryVbLtaqYK3cm5RwhpjzykPmeY">
<meta name="appId">
<meta name="twitter:label1" content="글쓴이:">
<meta name="twitter:data1" content="Crest Infotech ™">
<meta name="twitter:label2" content="읽는시간">
<meta name="twitter:data2" content="읽는 데 2분">
<meta name="clientSideIngraphs" content="1" data-gauge-metric-endpoint="/pulse/api/ingraphs/gauge" data-counter-metric-endpoint="/pulse/api/ingraphs/counter">
<!---->
<script type="application/ld+json">
{"@context":"http://schema.org","@type":"Article","headline":"Shopify의 앱 생태계는 플랫폼의 가장 큰 강점 중 하나로, 스토어 기능을 향상시키는 서드파티 도구를 제공합니다. 개발자에게 Shopify 앱을 만드는 일은 수익성과 보람을 동시에 가져다줄 수 있습니다.","url":"https://kr.linkedin.com/pulse/building-managing-shopify-apps-developers-guide-crest-infotech-eo7pf?tl=ko","publisher":null,"name":"Shopify 앱 구축 및 관리: 개발자 가이드","commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"http://schema.org/LikeAction","userInteractionCount":4},{"@type":"InteractionCounter","interactionType":"http://schema.org/CommentAction","userInteractionCount":0}],"datePublished":"2025-06-26T19:30:02.000+00:00","mainEntityOfPage":"https://kr.linkedin.com/pulse/building-managing-shopify-apps-developers-guide-crest-infotech-eo7pf?tl=ko","isAccessibleForFree":true,"image":{"@type":"ImageObject","url":"https://media.licdn.com/dms/image/v2/D4D12AQFn2bEGzN7J4A/article-cover_image-shrink_720_1280/B4DZehG36QHkAI-/0/1750754630840?e=2147483647&v=beta&t=K4KS8Fs9yqTYMSqlOryVbLtaqYK3cm5RwhpjzykPmeY"},"dateModified":"2026-05-16T04:13:19.000+00:00","author":{"@type":"Organization","logo":{"@type":"ImageObject","url":"https://media.licdn.com/dms/image/v2/D4D0BAQEfcOTg2DuS6g/company-logo_100_100/company-logo_100_100/0/1681878306799/crest_infotech_logo?e=2147483647&v=beta&t=EDRI_n-ef4OIbWn5BefCR51VBKu4UQPWj_3m1o-DXmo"},"name":"Crest Infotech ™","url":"https://in.linkedin.com/company/crest-infotech"}}
</script>
<!----> </head>
<body dir="ltr">
<!----><!----><!---->
<div class="guest-upsells">
<form class="google-auth base-google-auth" action="https://www.linkedin.com/uas/login-submit" method="post">
<input name="loginCsrfParam" value="86f66b28-c01e-4c6c-8bdb-ae3d0ef1c5a3" type="hidden">
<input name="session_redirect" value="https://kr.linkedin.com/pulse/building-managing-shopify-apps-developers-guide-crest-infotech-eo7pf?tl=ko" type="hidden">
<input name="trk" value="pulse-article_google-one-tap-submit" type="hidden">
<div class="google-one-tap__module hidden fixed flex flex-col items-center top-[70px] right-[20px] z-[9999]">
<div class="google-auth__tnc-container hidden relative top-2 bg-color-background-container-tint pl-2 pr-1 pt-2 pb-3 w-[375px] rounded-md shadow-2xl">
<p class="text-md font-bold text-color-text">
LinkedIn 동의 후 가입
</p>
<p class="linkedin-tc__text text-color-text-low-emphasis text-xs pb-2 !text-sm !text-color-text" data-impression-id="pulse-article_one-tap-skip-tc-text">
가입이나 로그인을 하기 위해 계속 버튼을 클릭하면 LinkedIn <a href="/legal/user-agreement?trk=linkedin-tc_auth-button_user-agreement" target="_blank" data-tracking-control-name="linkedin-tc_auth-button_user-agreement" data-tracking-will-navigate="true">사용자약관</a>, <a href="/legal/privacy-policy?trk=linkedin-tc_auth-button_privacy-policy" target="_blank" data-tracking-control-name="linkedin-tc_auth-button_privacy-policy" data-tracking-will-navigate="true">개인정보 처리방침</a>, <a href="/legal/cookie-policy?trk=linkedin-tc_auth-button_cookie-policy" target="_blank" data-tracking-control-name="linkedin-tc_auth-button_cookie-policy" data-tracking-will-navigate="true">쿠키정책</a>에 동의하게 됩니다.
</p>
</div>
<div data-tracking-control-name="pulse-article_google-one-tap" id="google-one-tap__container"></div>
</div>
<div class="loader loader--full-screen">
<div class="loader__container mb-2 overflow-hidden">
<icon class="loader__icon inline-block loader__icon--default text-color-progress-loading" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/ddi43qwelxeqjxdd45pe3fvs1" data-svg-class-name="loader__icon-svg--large fill-currentColor h-[60px] min-h-[60px] w-[60px] min-w-[60px]"></icon>
</div>
</div>
</form>
<script data-delayed-url="https://static.licdn.com/aero-v1/sc/h/29rdkxlvag0d3cpj96fiilbju" data-module-id="google-gsi-lib" data-track-latency></script>
<code id="isLinkedInAppWebView" style="display: none"><!--false--></code>
<code id="shouldRemoveUndefinedValues" style="display: none"><!--false--></code>
<code id="useDirectGoogleGsiLoad" style="display: none"><!--false--></code>
<code id="isItpSupportEnabled" style="display: none"><!--false--></code>
<code id="tncFlow" style="display: none"><!--"control"--></code>
<code id="isGoogleAuthButtonLocaleSupportEnabled" style="display: none"><!--true--></code>
<code id="gsiLocale" style="display: none"><!--"ko_KR"--></code>
<div class="contextual-sign-in-modal base-contextual-sign-in-modal" data-impression-id="pulse-article_contextual-sign-in-modal" data-cool-off-enabled data-show-on-page-load>
<!---->
<div class>
<!---->
<div id="base-contextual-sign-in-modal" class="modal modal--contextual-sign-in modal--contextual-sign-in-v2 modal--contextual-sign-in-v2--stacked" data-outlet="base-contextual-sign-in-modal">
<!----> <div class="modal__overlay flex items-center bg-color-background-scrim justify-center fixed bottom-0 left-0 right-0 top-0 opacity-0 invisible pointer-events-none z-[1000] transition-[opacity] ease-[cubic-bezier(0.25,0.1,0.25,1.0)] duration-[0.17s]
py-4
" aria-hidden="true">
<section aria-modal="true" role="dialog" aria-labelledby="base-contextual-sign-in-modal-modal-header" tabindex="-1" class="max-h-full modal__wrapper overflow-auto p-0 bg-color-surface max-w-[1128px] min-h-[160px] relative scale-[0.25] shadow-sm shadow-color-border-faint transition-[transform] ease-[cubic-bezier(0.25,0.1,0.25,1.0)] duration-[0.33s] focus:outline-0
w-[1128px] mamabear:w-[744px] babybear:w-[360px]
rounded-md">
<button class="modal__dismiss btn-tertiary h-[40px] w-[40px] p-0 rounded-full indent-0
contextual-sign-in-modal__modal-dismiss absolute right-0 m-[20px] cursor-pointer" aria-label="닫기" data-tracking-control-name="pulse-article_contextual-sign-in-modal_modal_dismiss">
<icon class="contextual-sign-in-modal__modal-dismiss-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/gs508lg3t2o81tq7pmcgn6m2"></icon>
</button>
<div class="modal__main w-full">
<div class="flex overflow-hidden contextual-sign-in-modal__layout--stacked">
<div class="contextual-sign-in-modal__left-content">
<img class="inline-block relative hue-web-entity__image
w-8 h-8
contextual-sign-in-modal__img mx-auto" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5k9cgtx8rhoyqkcxfoncu1svl" data-ghost-classes="bg-color-entity-ghost-background" data-ghost-url="https://static.licdn.com/aero-v1/sc/h/9l8dv1r8a09nem281grvopn9l" alt>
<h2 class="contextual-sign-in-modal__context-screen-title font-sans text-lg text-color-text mt-2 mb-1 text-center" id="base-contextual-sign-in-modal-modal-header">
로그인해서 콘텐츠 더보기
</h2>
<div class="contextual-sign-in-modal__divider left-right-divider"></div>
<p class="contextual-sign-in-modal__subtitle mt-1 mb-2 babybear:mx-0 text-center font-sans text-xs text-color-text-low-emphasis">
<!----> <span>무료 계정을 만들거나 로그인하여 검색을 계속하세요.</span>
</p>
</div>
<div class="contextual-sign-in-modal__right-content">
<div class="contextual-sign-in-modal__google-sign-in-primary w-full">
<div class="google-auth-button">
<!----> <div class="google-auth-button__placeholder mx-auto
" data-theme="filled_blue" data-logo-alignment="center" data-locale="ko_KR" role="button" aria-label="구글 계정으로 계속"></div>
<!----> </div>
</div>
<code id="i18n_sign_in_form_show_text" style="display: none"><!--"표시"--></code>
<code id="i18n_sign_in_form_show_label" style="display: none"><!--"LinkedIn 비밀번호 표시하기"--></code>
<code id="i18n_sign_in_form_hide_text" style="display: none"><!--"숨기기"--></code>
<code id="i18n_sign_in_form_hide_label" style="display: none"><!--"LinkedIn 비밀번호 숨기기"--></code>
<code id="i18n_username_error_empty" style="display: none"><!--"이메일 주소나 전화번호를 입력하세요."--></code>
<code id="i18n_username_error_too_long" style="display: none"><!--"이메일 주소나 전화번호는 3-128자여야 합니다."--></code>
<code id="i18n_username_error_too_short" style="display: none"><!--"이메일 주소나 전화번호는 3-128자여야 합니다."--></code>
<code id="i18n_password_error_empty" style="display: none"><!--"비밀번호 입력"--></code>
<code id="i18n_password_error_too_short" style="display: none"><!--"비밀번호는 6자 이상이어야 합니다."--></code>
<code id="i18n_password_error_too_long" style="display: none"><!--"비밀번호는 최대 400자여야 합니다."--></code>
<!----> <form data-id="sign-in-form" action="https://www.linkedin.com/uas/login-submit" method="post" novalidate class="contextual-sign-in-modal__sign-in-form mb-1 hidden">
<input name="loginCsrfParam" value="86f66b28-c01e-4c6c-8bdb-ae3d0ef1c5a3" type="hidden">
<div class="flex flex-col">
<div class="mt-1.5" data-js-module-id="guest-input">
<div class="flex flex-col">
<label class="input-label mb-1" for="csm-v2_session_key">
이메일 또는 전화
</label>
<div class="text-input flex">
<input class="text-color-text font-sans text-md outline-0 bg-color-transparent w-full" autocomplete="username" id="csm-v2_session_key" name="session_key" required data-tracking-control-name="csm-v2_sign-in-session-key" data-tracking-client-ingraph type="text">
</div>
</div>
<p class="input-helper mt-1.5" for="csm-v2_session_key" role="alert" data-js-module-id="guest-input__message"></p>
</div>
<div class="mt-1.5" data-js-module-id="guest-input">
<div class="flex flex-col">
<label class="input-label mb-1" for="csm-v2_session_password">
비밀번호
</label>
<div class="text-input flex">
<input class="text-color-text font-sans text-md outline-0 bg-color-transparent w-full" autocomplete="current-password" id="csm-v2_session_password" name="session_password" required data-tracking-control-name="csm-v2_sign-in-password" data-tracking-client-ingraph type="password">
<button aria-live="assertive" aria-relevant="text" data-id="sign-in-form__password-visibility-toggle" class="font-sans text-md font-bold text-color-action z-10 ml-[12px] hover:cursor-pointer" aria-label="LinkedIn 비밀번호 표시하기" data-tracking-control-name="csm-v2_sign-in-password-visibility-toggle-btn" type="button">표시</button>
</div>
</div>
<p class="input-helper mt-1.5" for="csm-v2_session_password" role="alert" data-js-module-id="guest-input__message"></p>
</div>
<input name="session_redirect" value="https://kr.linkedin.com/pulse/building-managing-shopify-apps-developers-guide-crest-infotech-eo7pf?tl=ko" type="hidden">
<!----> </div>
<div data-id="sign-in-form__footer" class="flex justify-between
sign-in-form__footer--full-width">
<a data-id="sign-in-form__forgot-password" class="font-sans text-md font-bold link leading-regular
sign-in-form__forgot-password--full-width" href="https://www.linkedin.com/uas/request-password-reset?trk=csm-v2_forgot_password" data-tracking-control-name="csm-v2_forgot_password" data-tracking-will-navigate>비밀번호를 잊으셨나요?</a>
<!---->
<input name="trk" value="csm-v2_sign-in-submit" type="hidden">
<button class="btn-md btn-primary flex-shrink-0 cursor-pointer
sign-in-form__submit-btn--full-width" data-id="sign-in-form__submit-btn" data-tracking-control-name="csm-v2_sign-in-submit-btn" data-tracking-client-ingraph data-tracking-litms type="submit">
로그인
</button>
</div>
<!----> </form>
<!----><!---->
<button class="contextual-sign-in-modal__sign-in-with-email-cta my-2 btn-sm btn-secondary min-h-[40px] w-full flex align-center justify-center" data-tracking-control-name="sign-in-with-email-cta">
<icon class="inline-block align-middle h-[24px] w-[24px] mr-0.5" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/9w7euj0n5gnk6np2akf853sm3"></icon>
<span class="self-center">이메일로 로그인</span>
</button>
<div class="contextual-sign-in-modal__divider left-right-divider">
<p class="contextual-sign-in-modal__divider-text font-sans text-sm text-color-text px-2">
또는
</p>
</div>
<div class="contextual-sign-in-modal__google-sign-in-secondary contextual-sign-in-modal__google-sign-in-secondary--hidden">
<div class="google-auth-button">
<!----> <div class="google-auth-button__placeholder mx-auto
google-auth-button__placeholder--black-border" data-theme="outline" data-logo-alignment="center" data-locale="ko_KR" role="button" aria-label="구글 계정으로 계속"></div>
<!----> </div>
</div>
<p class="contextual-sign-in-modal__join-now m-auto font-sans text-md text-center text-color-text my-2">
LinkedIn이 처음이세요? <a href="https://www.linkedin.com/signup/cold-join?session_redirect=%2Fpulse%2Fbuilding-managing-shopify-apps-developers-guide-crest-infotech-eo7pf%3Ftl%3Dko&trk=pulse-article_contextual-sign-in-modal_join-link" data-tracking-control-name="pulse-article_contextual-sign-in-modal_join-link" data-tracking-will-navigate="true" class="contextual-sign-in-modal__join-link">회원 가입</a>
</p>
<p class="linkedin-tc__text text-color-text-low-emphasis text-xs pb-2 contextual-sign-in-modal__terms-and-conditions m-auto w-full" data-impression-id="linkedin-tc__button-skip-tc-text">
가입이나 로그인을 하기 위해 계속 버튼을 클릭하면 LinkedIn <a href="/legal/user-agreement?trk=linkedin-tc_auth-button_user-agreement" target="_blank" data-tracking-control-name="linkedin-tc_auth-button_user-agreement" data-tracking-will-navigate="true">사용자약관</a>, <a href="/legal/privacy-policy?trk=linkedin-tc_auth-button_privacy-policy" target="_blank" data-tracking-control-name="linkedin-tc_auth-button_privacy-policy" data-tracking-will-navigate="true">개인정보 처리방침</a>, <a href="/legal/cookie-policy?trk=linkedin-tc_auth-button_cookie-policy" target="_blank" data-tracking-control-name="linkedin-tc_auth-button_cookie-policy" data-tracking-will-navigate="true">쿠키정책</a>에 동의하게 됩니다.
</p>
</div>
</div>
</div>
<!----> </section>
</div>
</div>
</div>
<!----><!----> </div>
<!---->
</div>
<code id="disableOneTapOnInitIfCsm" style="display: none"><!--false--></code>
<code id="isGuest" style="display: none"><!--true--></code>
<code id="isLite" style="display: none"><!--false--></code>
<code id="isMobile" style="display: none"><!--false--></code>
<code id="articleViewEventData" style="display: none"><!--"{\"articleId\":7343196850260173000,\"articleUrn\":\"urn:li:article:8568562474471513724\",\"authorId\":2738501,\"linkedInArticleUrn\":\"urn:li:linkedInArticle:7343196850260172800\"}"--></code>
<code id="articleUrn" style="display: none"><!--"urn:li:linkedInArticle:7343196850260172800"--></code>
<code id="legacyArticleUrn" style="display: none"><!--"urn:li:article:8568562474471513724"--></code>
<!---->
<a href="#main-content" class="skip-link btn-md btn-primary absolute z-11 -top-[100vh] focus:top-0">
본문 내용으로 가기
</a>
<header class="header base-detail-page__header px-mobile-container-padding bg-color-background-container global-alert-offset sticky-header">
<nav class="nav pt-1.5 pb-2 flex items-center justify-between relative flex-nowrap babymamabear:py-1.5
nav--minified-mobile
babybear:flex-wrap " aria-label="기본">
<a href="/?trk=article-ssr-frontend-pulse_nav-header-logo" class="nav__logo-link link-no-visited-state z-1 mr-auto min-h-[52px] flex items-center babybear:z-0 hover:no-underline focus:no-underline active:no-underline
babymamabear:mr-3" data-tracking-control-name="article-ssr-frontend-pulse_nav-header-logo" data-tracking-will-navigate>
<span class="sr-only">LinkedIn</span>
<icon class="nav-logo--inbug flex text-color-brand
papabear:hidden mamabear:hidden" data-svg-class-name="h-[34px] w-[34px] babybear:h-[26px] babybear:w-[26px]" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/4zqr0f9jf98vi2nkijyc3bex2"></icon>
<icon class="block text-color-brand w-[102px] h-[26px] babybear:hidden" data-test-id="nav-logo" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/8fkga714vy9b2wk5auqo5reeb"></icon>
</a>
<!---->
<ul class="top-nav-menu flex items-center babybear:w-full babybear:justify-between babybear:pt-1 justify-start w-max pt-0 overflow-x-auto
after:papamamabear:up-down-divider after:papamamabear:!h-[37px]
nav__menu babybear:order-last order-3 ml-auto">
<li class>
<a href="https://www.linkedin.com/top-content?trk=article-ssr-frontend-pulse_guest_nav_menu_topContent" data-tracking-control-name="article-ssr-frontend-pulse_guest_nav_menu_topContent" data-tracking-will-navigate class="top-nav-link flex justify-center items-center min-h-[52px] hover:text-color-text visited:hover:text-color-text hover:no-underline
min-w-8
flex-col mx-1 babybear:mx-0
text-color-text-secondary visited:text-color-text-secondary">
<icon class="top-nav-link__icon flex h-3 w-3 flex-shrink-0 justify-center " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5ofmdgombsj3cqmfn03qb7h60">
</icon>
<span class="top-nav-link__label-text font-sans text-xs leading-regular text-center
font-regular whitespace-nowrap">
대표 콘텐츠
</span>
</a>
</li>
<li class>
<a href="https://www.linkedin.com/pub/dir/+/+?trk=article-ssr-frontend-pulse_guest_nav_menu_people" data-tracking-control-name="article-ssr-frontend-pulse_guest_nav_menu_people" data-tracking-will-navigate class="top-nav-link flex justify-center items-center min-h-[52px] hover:text-color-text visited:hover:text-color-text hover:no-underline
min-w-8
flex-col mx-1 babybear:mx-0
text-color-text-secondary visited:text-color-text-secondary">
<icon class="top-nav-link__icon flex h-3 w-3 flex-shrink-0 justify-center " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/7kb6sn3tm4cx918cx9a5jlb0">
</icon>
<span class="top-nav-link__label-text font-sans text-xs leading-regular text-center
font-regular whitespace-nowrap">
사람
</span>
</a>
</li>
<li class>
<a href="https://www.linkedin.com/learning/search?trk=article-ssr-frontend-pulse_guest_nav_menu_learning" data-tracking-control-name="article-ssr-frontend-pulse_guest_nav_menu_learning" data-tracking-will-navigate class="top-nav-link flex justify-center items-center min-h-[52px] hover:text-color-text visited:hover:text-color-text hover:no-underline
min-w-8
flex-col mx-1 babybear:mx-0
text-color-text-secondary visited:text-color-text-secondary">
<icon class="top-nav-link__icon flex h-3 w-3 flex-shrink-0 justify-center " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/8wykgzgbqy0t3fnkgborvz54u">
</icon>
<span class="top-nav-link__label-text font-sans text-xs leading-regular text-center
font-regular whitespace-nowrap">
온라인클래스
</span>
</a>
</li>
<li class>
<a href="https://www.linkedin.com/jobs/search?trk=article-ssr-frontend-pulse_guest_nav_menu_jobs" data-tracking-control-name="article-ssr-frontend-pulse_guest_nav_menu_jobs" data-tracking-will-navigate class="top-nav-link flex justify-center items-center min-h-[52px] hover:text-color-text visited:hover:text-color-text hover:no-underline
min-w-8
flex-col mx-1 babybear:mx-0
text-color-text-secondary visited:text-color-text-secondary">
<icon class="top-nav-link__icon flex h-3 w-3 flex-shrink-0 justify-center " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/92eb1xekc34eklevj0io6x4ki">
</icon>
<span class="top-nav-link__label-text font-sans text-xs leading-regular text-center
font-regular whitespace-nowrap">
채용공고
</span>
</a>
</li>
<li class>
<a href="https://www.linkedin.com/games?trk=article-ssr-frontend-pulse_guest_nav_menu_games" data-tracking-control-name="article-ssr-frontend-pulse_guest_nav_menu_games" data-tracking-will-navigate class="top-nav-link flex justify-center items-center min-h-[52px] hover:text-color-text visited:hover:text-color-text hover:no-underline
min-w-8
flex-col mx-1 babybear:mx-0
text-color-text-secondary visited:text-color-text-secondary">
<icon class="top-nav-link__icon flex h-3 w-3 flex-shrink-0 justify-center " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/29h8hsjuomfp50lam5ipnc3uh">
</icon>
<span class="top-nav-link__label-text font-sans text-xs leading-regular text-center
font-regular whitespace-nowrap">
게임
</span>
</a>
</li>
</ul>
<div class="nav__cta-container order-3 flex gap-x-1 justify-end min-w-[100px] flex-nowrap flex-shrink-0 babybear:flex-wrap flex-2
babymamabear:min-w-[50px] ">
<!---->
<a class="nav__button-tertiary btn-tertiary ml-1 btn-md" href="https://www.linkedin.com/signup/cold-join?session_redirect=%2Fpulse%2Fbuilding-managing-shopify-apps-developers-guide-crest-infotech-eo7pf%3Ftl%3Dko&trk=article-ssr-frontend-pulse_nav-header-join" data-tracking-control-name="article-ssr-frontend-pulse_nav-header-join" data-test-live-nav-primary-cta data-tracking-will-navigate data-tracking-client-ingraph>
회원 가입
<!----> </a>
<!---->
<a class="nav__button-secondary btn-secondary-emphasis btn-md" href="https://www.linkedin.com/uas/login?session_redirect=%2Fpulse%2Fbuilding-managing-shopify-apps-developers-guide-crest-infotech-eo7pf%3Ftl%3Dko&fromSignIn=true&trk=article-ssr-frontend-pulse_nav-header-signin" data-tracking-control-name="article-ssr-frontend-pulse_nav-header-signin" data-tracking-will-navigate data-tracking-client-ingraph>
로그인
</a>
<a aria-label="로그인" class="nav__link-person papabear:hidden mamabear:hidden" data-tracking-control-name="article-ssr-frontend-pulse_nav-header-signin" data-tracking-will-navigate href="https://www.linkedin.com/uas/login?session_redirect=%2Fpulse%2Fbuilding-managing-shopify-apps-developers-guide-crest-infotech-eo7pf%3Ftl%3Dko&fromSignIn=true&trk=article-ssr-frontend-pulse_nav-header-signin">
<img class="inline-block relative hue-web-entity__image
rounded-[50%]
w-4 h-4
bg-color-entity-ghost-background" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/9c8pery4andzj6ohjkjp54ma2" data-ghost-classes="bg-color-entity-ghost-background" data-ghost-url="https://static.licdn.com/aero-v1/sc/h/9c8pery4andzj6ohjkjp54ma2" alt>
</a>
</div>
<!---->
<!----> </nav>
</header>
<!---->
<!---->
<main class="main papabear:flex papabear:mx-auto papabear:pt-desktop-content-top-margin mamabear:pt-desktop-content-top-margin
" id="main-content" role="main">
<section class="core-rail mx-auto papabear:w-core-rail-width mamabear:max-w-[790px] babybear:max-w-[790px]">
<div class="details mx-details-container-padding">
<!----> <code id="isGuest" style="display: none"><!--true--></code>
<code id="memberUrn" style="display: none"><!--"urn:li:member:0"--></code>
<code id="isNbaRecommendedArticlesDeeplinkEnabled" style="display: none"><!--"true"--></code>
<code id="isDynamicTextareaEnabled" style="display: none"><!--"true"--></code>
<article class="article-main relative flex-grow pulse">
<!----><!---->
<figure class="cover-img">
<!----> <div class="cover-img__image-frame relative w-full overflow-hidden pb-[calc((134/782)*100%)]">
<div class="cover-img__image-position absolute top-0 right-0 bottom-0 left-0
">
<img class="cover-img__image relative w-full h-full object-cover" src="https://media.licdn.com/dms/image/v2/D4D12AQFn2bEGzN7J4A/article-cover_image-shrink_720_1280/B4DZehG36QHkAI-/0/1750754630840?e=2147483647&v=beta&t=K4KS8Fs9yqTYMSqlOryVbLtaqYK3cm5RwhpjzykPmeY" fetchpriority="high" data-embed-id="cover-image" alt="Shopify 앱 구축 및 관리: 개발자 가이드">
</div>
</div>
<!----> </figure>
<header>
<section class="core-section-container relative my-3">
<h1 class="pulse-title text-display-md text-color-text lg:text-display-lg font-bold w-11/12">Shopify 앱 구축 및 관리: 개발자 가이드</h1>
<div class="ellipsis-menu absolute right-0 top-0">
<div class="collapsible-dropdown flex items-center relative hyphens-auto">
<button class="ellipsis-menu__trigger
collapsible-dropdown__button btn-md btn-tertiary cursor-pointer
!py-[6px] !px-1 flex items-center rounded-[50%]
" aria-expanded="false" aria-label="메뉴 열기" data-tracking-control-name="article-ssr-frontend-pulse_ellipsis-menu-trigger" tabindex="0">
<icon class="ellipsis-menu__trigger-icon m-0 p-0 centered-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/671xosfpvk4c0kqtyl87hashi"></icon>
</button>
<ul class="collapsible-dropdown__list hidden container-raised absolute w-auto overflow-y-auto flex-col items-stretch z-[9999] bottom-auto top-[100%]" role="menu" tabindex="-1">
<li class="ellipsis-menu__item border-t-1 border-solid border-color-border-low-emphasis first-of-type:border-none flex" role="presentation">
<a href="https://www.linkedin.com/uas/login?session_redirect=https%3A%2F%2Fkr.linkedin.com%2Fpulse%2Fbuilding-managing-shopify-apps-developers-guide-crest-infotech-eo7pf%3Ftl%3Dko&trk=article-ssr-frontend-pulse_ellipsis-menu-semaphore-sign-in-redirect&guestReportContentType=PONCHO_ARTICLE&_f=guest-reporting" data-tracking-control-name="article-ssr-frontend-pulse_ellipsis-menu-semaphore-sign-in-redirect" data-tracking-will-navigate data-item-type="semaphore" data-semaphore-content-type="PONCHO_ARTICLE" data-semaphore-content-urn="urn:li:linkedInArticle:7343196850260172800" data-semaphore-tracking-prefix="article-ssr-frontend-pulse_ellipsis-menu-semaphore" data-is-logged-in="false" data-modal="semaphore__toggle" class="semaphore__toggle visited:text-color-text-secondary ellipsis-menu__semaphore ellipsis-menu__item-button flex items-center w-full p-1 cursor-pointer font-sans text-sm font-bold link-styled focus:link-styled link:no-underline active:bg-color-background-container-tint focus:bg-color-background-container-tint hover:bg-color-background-container-tint outline-offset-[-2px]" role="menuitem">
<!---->
<icon class="ellipsis-menu__item-icon text-color-text h-[24px] w-[24px] mr-1" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/iq0x9q37wj214o129ai1yjut">
</icon>
신고
</a>
<!---->
</li>
<!---->
</ul>
<!----> </div>
</div>
<div class="core-section-container__content break-words">
<div class="base-card relative w-full hover:no-underline focus:no-underline
base-card--link
base-main-card flex flex-wrap py-1.5 pr-2 babybear:pr-0
base-main-card--link
publisher-author-card">
<a class="base-card__full-link absolute top-0 right-0 bottom-0 left-0 p-0 z-[2] outline-offset-[4px]" href="https://in.linkedin.com/company/crest-infotech" data-tracking-control-name="article-ssr-frontend-pulse_publisher-author-card" data-tracking-will-navigate>
<span class="sr-only">
Crest Infotech ™
</span>
</a>
<img class="inline-block relative hue-web-entity__image
w-6 h-6
" data-delayed-url="https://media.licdn.com/dms/image/v2/D4D0BAQEfcOTg2DuS6g/company-logo_100_100/company-logo_100_100/0/1681878306799/crest_infotech_logo?e=2147483647&v=beta&t=EDRI_n-ef4OIbWn5BefCR51VBKu4UQPWj_3m1o-DXmo" data-ghost-classes="bg-color-entity-ghost-background" data-ghost-url="https://static.licdn.com/aero-v1/sc/h/cs8pjfgyw96g44ln9r7tct85f" alt="Crest Infotech ™">
<div class="base-main-card__info self-center ml-1 flex-1 relative break-words papabear:min-w-0 mamabear:min-w-0 babybear:w-full
">
<!----> <h3 class="base-main-card__title line-clamp-1 font-sans text-md font-bold text-color-text overflow-hidden
base-main-card__title--link">
Crest Infotech ™
</h3>
<h4 class="base-main-card__subtitle body-text text-color-text overflow-hidden
">
Beyond the curve: Driving progress with an AI-First mindset.
</h4>
<!---->
<div class="body-text text-color-text-low-emphasis base-main-card__metadata">
발행일: 2025년 6월 26일
</div>
<!----> </div>
<div class="base-main-card__ctas z-[3] self-center ml-3 babybear:ml-1 babybear:self-start">
<a class="base-main-card__cta btn-sm btn-secondary" href="https://www.linkedin.com/signup/cold-join?session_redirect=%2Fpulse%2Fbuilding-managing-shopify-apps-developers-guide-crest-infotech-eo7pf%3Ftl%3Dko&trk=article-ssr-frontend-pulse_publisher-author-card" data-tracking-control-name="article-ssr-frontend-pulse_publisher-author-card" data-tracking-will-navigate>
+ 팔로우
</a>
</div>
</div>
</div>
</section>
</header>
<div class="machine-translation-wrapper">
<div class="machine-translation-banner mb-2 p-2 rounded-md bg-color-background-container-tint border border-color-border-faint flex gap-1 items-center" data-testid="machine-translation-banner">
<icon class="flex flex-shrink-0 w-2 h-2 " data-svg-class-name="w-2 h-2 text-color-text-secondary" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/1qowy8kvnj5rb38q87xcf1oll"></icon>
<div class="flex-1">
<span class="text-xs text-color-text-secondary">
이 글은 영어에서 자동으로 기계 번역되었으며 부정확한 내용이 포함될 수 있습니다.
<a href="https://www.linkedin.com/help/linkedin/answer/a8655096?lang=ko" class="text-xs text-color-link-accent" data-tracking-control-name="article-ssr-frontend-pulse_machine_translation_learn_more">
자세히 보기
</a>
</span>
</div>
</div>
<a href="https://www.linkedin.com/pulse/building-managing-shopify-apps-developers-guide-crest-infotech-eo7pf" class="text-sm text-color-text-secondary mb-4 block" data-tracking-control-name="article-ssr-frontend-pulse_machine_translation_see_original">
원본 보기
</a>
</div>
<div data-test-id="article-content-blocks">
<!---->
<div class="article-main__content" data-test-id="publishing-text-block">
<p>
<span class>Shopify의 앱 생태계는 플랫폼의 가장 큰 강점 중 하나로, 스토어 기능을 향상시키는 서드파티 도구를 제공합니다. 개발자에게 Shopify 앱을 만드는 일은 수익성과 보람을 동시에 가져다줄 수 있습니다. 이 가이드는 Shopify 앱을 효과적으로 생성, 배포, 관리하는 과정을 안내해 드립니다.</span><!---->
</p>
</div>
<!----><!---->
<hr data-test-id="publishing-divider-block" class="my-[3.2rem] mx-auto h-[1px] border-0 bg-black-a16">
<!----><!---->
<div class="article-main__content" data-test-id="publishing-text-block">
<h3><span class>Shopify 앱 이해하기</span><!----></h3>
</div>
<!----><!---->
<div class="article-main__content" data-test-id="publishing-text-block">
<p>
<span class>개발에 뛰어들기 전에, Shopify 앱이 무엇을 하는지 아는 것이 필수적입니다. 이들은 매장의 역량을 확장하여 가맹점이 업무를 자동화하고, 고객 경험을 향상시키며, 제3자 서비스를 통합할 수 있도록 돕습니다.</span><!---->
</p>
</div>
<!----><!---->
<div class="article-main__content" data-test-id="publishing-text-block">
<p>
<span class="font-[700]">Shopify 앱 종류</span><!---->
</p>
</div>
<!----><!---->
<div class="article-main__content" data-test-id="publishing-text-block">
<p>
<span class>
<ul>
<li><span class="font-[700]">공개 지원서:</span><span class> Shopify 앱 스토어에서 이용 가능하며, 많은 매장에서 사용 중입니다.</span><!----></li>
<li><span class="font-[700]">커스텀 앱:</span><span class> 단일 Shopify 스토어를 위해 제작되었으며, 독특한 요구에 이상적입니다.</span><!----></li>
<li><span class="font-[700]">비공개 앱:</span><span class> 단일 스토어 용도의 레거시 앱들, 이제는 대부분 커스텀 앱으로 대체되었습니다.</span><!----></li>
</ul>
</span><!---->
</p>
</div>
<!----><!---->
<hr data-test-id="publishing-divider-block" class="my-[3.2rem] mx-auto h-[1px] border-0 bg-black-a16">
<!----><!---->
<div class="article-main__content" data-test-id="publishing-text-block">
<h3><span class>개발 환경 설정</span><!----></h3>
</div>
<!----><!---->
<div class="article-main__content" data-test-id="publishing-text-block">
<p>
<span class>Shopify 앱 개발을 시작하려면 적절한 설정이 필요합니다.</span><!---->
</p>
</div>
<!----><!---->
<div class="article-main__content" data-test-id="publishing-text-block">
<p>
<span class="font-[700]">요구 사항</span><!---->
</p>
</div>
<!----><!---->
<div class="article-main__content" data-test-id="publishing-text-block">
<p>
<span class>
<ul>
<li><span class>Shopify 파트너 계정</span><!----></li>
<li><span class>개발 스토어</span><!----></li>
<li><span class>Node.js 설치와 NPM</span><!----></li>
<li><span class>응그록 (로컬 HTTPS 터널링을 위한)</span><!----></li>
</ul>
</span><!---->
</p>
</div>
<!----><!---->
<div class="article-main__content" data-test-id="publishing-text-block">
<p>
<span class="font-[700]">도구 및 프레임워크</span><!---->
</p>
</div>
<!----><!---->
<div class="article-main__content" data-test-id="publishing-text-block">
<p>
<span class>Shopify는 </span><span class="font-[700]">Shopify CLI</span><span class>이 도구는 앱을 기반으로 하며 일반적인 작업을 처리합니다. 또한 다음과 같은 프레임워크를 사용할 수도 있습니다 </span><span class="font-[700]">리믹스</span><span class> 또는 </span><span class="font-[700]">Next.js</span><span class> 프론트엔드 구축을 위한 것입니다.</span><!---->
</p>
</div>
<!----><!---->
<hr data-test-id="publishing-divider-block" class="my-[3.2rem] mx-auto h-[1px] border-0 bg-black-a16">
<!---->
<div class="inline-articles bg-color-surface-new border-hidden rounded-sm p-1 mx-auto my-1.5 mamabear:w-2/3 inline-articles__before" data-nosnippet="true">
<h2 class="text-xl font-medium ml-1.5 my-1 text-color-text mamabear:text-center">LinkedIn 추천</h2>
<div class="flex flex-wrap mx-0.5 babybear:mx-1.5">
<div class="content-author-card flex flex-col max-w-[270px] h-auto rounded-md border-1 border-system-gray-30 border-solid pb-1.5 inline-article mx-auto my-1 border-hidden papabear:w-[219px] babybear:min-w-full mamabear:min-w-full h-auto bg-color-canvas-tint">
<a class="no-underline" data-tracking-control-name="inline-recommended-articles" data-tracking-will-navigate href="https://kr.linkedin.com/pulse/top-10-benefits-choosing-white-label-app-over-custom-ritesh-kumar-naawc?tl=ko">
<img class="content-image w-full h-[150px] bg-cover rounded-t-md object-cover" data-delayed-url="https://media.licdn.com/dms/image/v2/D5612AQGfVFfjVrN7XQ/article-cover_image-shrink_720_1280/B56ZlxtCppJsAM-/0/1758549268045?e=2147483647&v=beta&t=ZvMYckwj7A_0v6BabAwWpQosuY9iuoArrmz7J9SoaFQ" alt="맞춤형 개발보다 화이트라벨 앱을 선택할 때의 10가지 주요 장점">
<div class="inline-article-title text-md text-color-text font-bold pl-2 pt-1 pr-1.5">맞춤형 개발보다 화이트라벨 앱을 선택할 때의 10가지 주요 장점</div>
<div class="inline-article-meta px-2 mt-1 font-sans text-xs font-normal text-color-text-low-emphasis h-full">
<span class="inline-article-author pt-0.5">
Ritesh Kumar
</span>
<span class="before:middot pt-0.5 inline-article-published-date">
10개월 전
</span>
</div>
</a>
<!----><!---->
</div>
<div class="content-author-card flex flex-col max-w-[270px] h-auto rounded-md border-1 border-system-gray-30 border-solid pb-1.5 inline-article mx-auto my-1 border-hidden papabear:w-[219px] babybear:min-w-full mamabear:min-w-full h-auto bg-color-canvas-tint">
<a class="no-underline" data-tracking-control-name="inline-recommended-articles" data-tracking-will-navigate href="https://kr.linkedin.com/pulse/top-10-magento-mobile-app-builders-ios-android-addwebsolution-wkcaf?tl=ko">
<img class="content-image w-full h-[150px] bg-cover rounded-t-md object-cover" data-delayed-url="https://media.licdn.com/dms/image/v2/D4D12AQGwFF067-L4Og/article-cover_image-shrink_720_1280/article-cover_image-shrink_720_1280/0/1721170401949?e=2147483647&v=beta&t=dToYSCiK5P9vggno54e0dFvAwi4Bbd24d-ZAnxqJocw" alt="iOS 및 안드로이드용 Magento 모바일 앱 빌더 상위 10대">
<div class="inline-article-title text-md text-color-text font-bold pl-2 pt-1 pr-1.5">iOS 및 안드로이드용 Magento 모바일 앱 빌더 상위 10대</div>
<div class="inline-article-meta px-2 mt-1 font-sans text-xs font-normal text-color-text-low-emphasis h-full">
<span class="inline-article-author pt-0.5">
AddWeb Solution Private Limited
</span>
<span class="before:middot pt-0.5 inline-article-published-date">
2년 전
</span>
</div>
</a>
<!----><!---->
</div>
<div class="content-author-card flex flex-col max-w-[270px] h-auto rounded-md border-1 border-system-gray-30 border-solid pb-1.5 inline-article mx-auto my-1 border-hidden papabear:w-[219px] babybear:min-w-full mamabear:min-w-full h-auto bg-color-canvas-tint">
<a class="no-underline" data-tracking-control-name="inline-recommended-articles" data-tracking-will-navigate href="https://kr.linkedin.com/pulse/shopify-webhooks-strategies-optimal-performance-app-bxyuf?tl=ko">
<img class="content-image w-full h-[150px] bg-cover rounded-t-md object-cover" data-delayed-url="https://media.licdn.com/dms/image/v2/D4D12AQEjRC09kOxFeg/article-cover_image-shrink_720_1280/article-cover_image-shrink_720_1280/0/1703733525334?e=2147483647&v=beta&t=hqIpb2uGHiNvsqX-DJBFY7NAG7k5kqIhD5v5tgfMalg" alt="Shopify Webhooks: 앱 개발에서 최적의 성능을 위한 전략 ">
<div class="inline-article-title text-md text-color-text font-bold pl-2 pt-1 pr-1.5">Shopify Webhooks: 앱 개발에서 최적의 성능을 위한 전략</div>
<div class="inline-article-meta px-2 mt-1 font-sans text-xs font-normal text-color-text-low-emphasis h-full">
<span class="inline-article-author pt-0.5">
FireGroup Technology
</span>
<span class="before:middot pt-0.5 inline-article-published-date">
2년 전
</span>
</div>
</a>
<!----><!---->
</div>
</div>
</div>
<div class="article-main__content" data-test-id="publishing-text-block">
<h3><span class>첫 Shopify 앱 만들기</span><!----></h3>
</div>
<!----><!---->
<div class="article-main__content" data-test-id="publishing-text-block">
<p>
<span class>환경이 준비되면 Shopify CLI를 사용해 새 앱을 생성하세요.</span><!---->
</p>
</div>
<!----><!---->
<div class="article-main__content" data-test-id="publishing-text-block">
<p>
<span class="font-[700]">단계별 개요</span><!---->
</p>
</div>
<!----><!---->
<div class="article-main__content" data-test-id="publishing-text-block">
<p>
<span class>
<ol>
<li><span class>터미널에서 Shopify 앱 만들기를 실행하세요.</span><!----></li>
<li><span class>앱 유형을 선택하세요 (Node.js, PHP 등등.).</span><!----></li>
<li><span class>Shopify 파트너 계정으로 인증하세요.</span><!----></li>
<li><span class>앱을 개발 스토어에 연결하세요.</span><!----></li>
<li><span class>서버를 시작하고 ngrok을 통해 미리 리뷰하세요.</span><!----></li>
</ol>
</span><!---->
</p>
</div>
<!----><!---->
<div class="article-main__content" data-test-id="publishing-text-block">
<p>
<span class="font-[700]">Shopify API 사용</span><!---->
</p>
</div>
<!----><!---->
<div class="article-main__content" data-test-id="publishing-text-block">
<p>
<span class>Shopify 앱은 REST 또는 GraphQL API를 통해 스토어 데이터와 상호작용합니다. GraphQL은 일반적으로 더 효율적이며, 유연한 쿼리와 더 작은 페이로드를 제공합니다.</span><!---->
</p>
</div>
<!----><!---->
<hr data-test-id="publishing-divider-block" class="my-[3.2rem] mx-auto h-[1px] border-0 bg-black-a16">
<!----><!---->
<div class="article-main__content" data-test-id="publishing-text-block">
<h3><span class>인증 및 권한</span><!----></h3>
</div>
<!----><!---->
<div class="article-main__content" data-test-id="publishing-text-block">
<p>
<span class>모든 앱은 OAuth로 인증하고 저장 데이터에 안전하게 접근하기 위해 적절한 범위를 요청해야 합니다.</span><!---->
</p>
</div>
<!----><!---->
<div class="article-main__content" data-test-id="publishing-text-block">
<p>
<span class="font-[700]">안전한 OAuth 흐름을 위한 팁</span><!---->
</p>
</div>
<!----><!---->
<div class="article-main__content" data-test-id="publishing-text-block">
<p>
<span class>
<ul>
<li><span class>항상 HMAC 서명을 검증하세요.</span><!----></li>
<li><span class>토큰을 안전하게 저장하고 갱신하세요.</span><!----></li>
<li><span class>상태 매개변수를 사용해 CSRF를 방지하세요.</span><!----></li>
</ul>
</span><!---->
</p>
</div>
<!----><!---->
<hr data-test-id="publishing-divider-block" class="my-[3.2rem] mx-auto h-[1px] border-0 bg-black-a16">
<!----><!---->
<div class="article-main__content" data-test-id="publishing-text-block">
<p>
<span class="font-[700]">Shopify 앱 구축 및 관리: 개발자 가이드</span><span class> </span><span class="italic">이 기사는 블로그에 처음 게재되었습니다: </span><span class="italic"><a href="https://www.linkedin.com/redir/redirect?url=https%3A%2F%2Fwww%2Ecrestinfotech%2Ecom%2Fbuilding-and-managing-shopify-apps-a-developers-guide%2F&urlhash=aZXE&trk=article-ssr-frontend-pulse_little-text-block" target="_blank" data-tracking-control-name="article-ssr-frontend-pulse_little-text-block" data-tracking-will-navigate data-test-link>https://www.crestinfotech.com/building-and-managing-shopify-apps-a-developers-guide/<!----></a></span><!---->
</p>
</div>
<!----><!---->
<div class="article-main__content" data-test-id="publishing-text-block">
<p>
<span class>Shopify 앱은 플랫폼의 기능을 확장하고 상인에게 맞춤형 솔루션을 제공합니다. 이 글은 맞춤형 Shopify 앱을 만들고 관리하려는 개발자들을 위한 종합적인 가이드 역할을 합니다. 개발 환경 설정, Shopify API 사용, Shopify CLI와 Polaris UI 컴포넌트 활용 등 앱 개발 과정을 안내합니다. 이 기사는 앱 인증, 청구 통합, 배포 모범 사례도 다룹니다. 개별 스토어용 비공개 앱을 만들든, Shopify 앱 스토어용 공개 앱을 만들든, 이 가이드는 강력하고 안전하며 확장 가능한 Shopify 애플리케이션을 구축하는 데 필요한 기반을 제공합니다.</span><!---->
</p>
</div>
<!----><!---->
<div class="article-main__content" data-test-id="publishing-text-block">
<p>
<!----><br>
</p>
</div>
<!----> </div>
<!----><!----><!----><!----><!---->
<!----> </article>
<!---->
<code id="ugcPostUrl" style="display: none"><!--"https://www.linkedin.com/feed/update/urn:li:ugcPost:7343198949064749056"--></code>
<code id="ugcPost" style="display: none"><!--"urn:li:ugcPost:7343198949064749056"--></code>
<code id="disableLinkedinShareRedirectLink" style="display: none"><!--true--></code>
<code id="ugcPostUrn" style="display: none"><!--"urn:li:ugcPost:7343198949064749056"--></code>
<code id="signInUrl" style="display: none"><!--"https://www.linkedin.com/signup/cold-join?session_redirect=%2Fpulse%2Fbuilding-managing-shopify-apps-developers-guide-crest-infotech-eo7pf%3Ftl%3Dko"--></code>
<!---->
<div class="article-social-activity z-[201]
x-social-activity-wrapper xs:sticky bottom-0 flex justify-center border-t-1 border-solid border-color-border-faint bg-color-background-container
" data-impression-id="article-ssr-frontend-pulse_x-social-details">
<!----> <div class="x-social-activity social-details x-social-activity-left flex flex-wrap w-full max-w-x-article-width-small justify-between lg:max-w-x-article-width">
<div class="flex x-social-activity-left flex-wrap">
<code id="i18n_reaction_selection_state" style="display: none"><!--"%reactionType% %selectionState%"--></code>
<div class="reactions-menu flex flex-row relative items-center justify-center select-none [-webkit-user-select:none] pointer-events-auto w-fit" data-feed-control="article-ssr-frontend-x-article_x-social-details_like-toggle_reactions-cta">
<a class="reactions-menu__link text-color-text social-action-bar__button relative h-6 cursor-pointer w-full" href="https://www.linkedin.com/signup/cold-join?session_redirect=%2Fpulse%2Fbuilding-managing-shopify-apps-developers-guide-crest-infotech-eo7pf%3Ftl%3Dko&trk=article-ssr-frontend-pulse_x-social-details_like-toggle_like-cta" target="_blank" data-tracking-control-name="article-ssr-frontend-pulse_x-social-details_like-toggle_reactions-cta" data-parent-urn="urn:li:ugcPost:7343198949064749056" data-tracking-will-navigate>
<!----> <div class="like-button-default flex flex-row items-center ">
<icon class="social-action-bar__icon" data-svg-class-name="social-action-bar__icon--svg" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/3djuegvxjnk75fm1bl5ugf342">
</icon>
<span class="social-action-bar__button-text">추천</span>
</div>
</a>
</div>
<template id="selected-reaction">
<div>
<div class="selected-reaction--LIKE flex flex-row items-center">
<img class="inline-block align-middle relative w-3 h-3 mr-1 babybear:mr-0 mb-0.5" alt="추천" aria-hidden="true" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/3tsxb73co15a9ze36f0y0vmng">
<span class="social-action-bar__button-text">추천</span>
</div>
<div class="selected-reaction--PRAISE flex flex-row items-center">
<img class="inline-block align-middle relative w-3 h-3 mr-1 babybear:mr-0 mb-0.5" alt="축하" aria-hidden="true" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5tec0l9hykk5gezv56e7coyow">
<span class="social-action-bar__button-text">축하</span>
</div>
<div class="selected-reaction--APPRECIATION flex flex-row items-center">
<img class="inline-block align-middle relative w-3 h-3 mr-1 babybear:mr-0 mb-0.5" alt="응원" aria-hidden="true" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/7savup3gmhirulv2h5v8snx2x">
<span class="social-action-bar__button-text">응원</span>
</div>
<div class="selected-reaction--EMPATHY flex flex-row items-center">
<img class="inline-block align-middle relative w-3 h-3 mr-1 babybear:mr-0 mb-0.5" alt="마음에 쏙듬" aria-hidden="true" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/f4lj1wks3jt476fe5defirzg9">
<span class="social-action-bar__button-text">마음에 쏙듬</span>
</div>
<div class="selected-reaction--INTEREST flex flex-row items-center">
<img class="inline-block align-middle relative w-3 h-3 mr-1 babybear:mr-0 mb-0.5" alt="통찰력" aria-hidden="true" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/br7ludovnq3n7137fvqsqwljx">
<span class="social-action-bar__button-text">통찰력</span>
</div>
<div class="selected-reaction--ENTERTAINMENT flex flex-row items-center">
<img class="inline-block align-middle relative w-3 h-3 mr-1 babybear:mr-0 mb-0.5" alt="웃음" aria-hidden="true" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/6ga7ypv66xprsgreohwklur3y">
<span class="social-action-bar__button-text">웃음</span>
</div>
</div>
</template>
<div class="relative flex select-none flex-row items-center justify-center">
<a class="social-action-bar__button !rounded-none " href="https://www.linkedin.com/signup/cold-join?session_redirect=%2Fpulse%2Fbuilding-managing-shopify-apps-developers-guide-crest-infotech-eo7pf%3Ftl%3Dko&trk=article-ssr-frontend-pulse_comment-cta" data-tracking-control-name="article-ssr-frontend-pulse_x-social-details_comment-cta" data-tracking-will-navigate>
<icon class="social-action-bar__icon" data-svg-class-name="social-action-bar__icon--svg" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/1p9aa0o2ms48w7ipecq9amsti">
</icon>
<span class="social-action-bar__button-text">
댓글
</span>
</a>
</div>
<code id="i18n_copy_cta_message_success" style="display: none"><!--"링크를 클립보드에 복사했습니다."--></code>
<code id="i18n_copy_cta_message_error" style="display: none"><!--"클립보드에 복사하는 중 오류가 발생했습니다."--></code>
<div class="collapsible-dropdown flex items-center relative hyphens-auto social-share inline-block relative select-none x-social-share " data-share-message="공유" data-share-url="https://kr.linkedin.com/pulse/building-managing-shopify-apps-developers-guide-crest-infotech-eo7pf?tl=ko&utm_source=share&utm_medium=guest_desktop" data-feed-control="article-ssr-frontend-x-article_x-social-details_social-share-intent_social-share_main_button" data-feed-action-category="EXPAND" data-feed-action-type="openShareMenu">
<!---->
<ul class="collapsible-dropdown__list hidden container-raised absolute w-auto overflow-y-auto flex-col items-stretch z-[9999] bottom-[100%] top-auto" role="menu" tabindex="-1">
<li role="presentation">
<button data-tracking-control-name="article-ssr-frontend-pulse_x-social-details_social-share-intent_social-share_copy" class="social-share__item social-share-item" data-share-service="copy" role="menuitem">
<icon class="social-share__item-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/aup4g97pdky3ff73gv9lyhjvx"></icon>
<span class="social-share__item-text pl-1">복사</span>
</button>
</li>
<li role="presentation">
<button data-tracking-control-name="article-ssr-frontend-pulse_x-social-details_social-share-intent_social-share_linkedin" class="social-share__item social-share-item" data-share-service="linkedin" role="menuitem">
<icon class="social-share__item-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/2uoxvguhsfspfnmr6tvfuyw4y" data-svg-class-name="text-color-text"></icon>
<span class="social-share__item-text pl-1">LinkedIn</span>
</button>
</li>
<li role="presentation">
<button data-tracking-control-name="article-ssr-frontend-pulse_x-social-details_social-share-intent_social-share_facebook" class="social-share__item social-share-item" data-share-service="facebook" role="menuitem">
<icon class="social-share__item-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5xkjpykqkamtr6skk0vodqwd2"></icon>
<span class="social-share__item-text pl-1">Facebook</span>
</button>
</li>
<li role="presentation">
<button data-tracking-control-name="article-ssr-frontend-pulse_x-social-details_social-share-intent_social-share_twitter" class="social-share__item social-share-item" data-share-service="twitter" role="menuitem">
<icon class="social-share__item-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/2pdd1nk5ocycpv963y85l3bt4"></icon>
<span class="social-share__item-text pl-1">X</span>
</button>
</li>
<!---->
</ul>
<button aria-expanded="false" class="social-share__button social-share__button-square
social-share-button social-action-bar__button
social-share-button--square
" aria-label data-tracking-control-name="article-ssr-frontend-pulse_x-social-details_social-share-intent_social-share_main_button">
<icon class="social-share__button-icon " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/l7s88viq07vqke49pnrbl5e4" data-svg-class-name="social-share-button-icon social-action-bar__icon--svg "></icon>
<span class="social-share__button-text-square
social-action-bar__button-text
">
공유
</span>
</button>
</div>
</div>
<code id="i18n_reaction_singular" style="display: none"><!--"반응 %numReactions%"--></code>
<code id="i18n_reactions_plural" style="display: none"><!--"반응 %numReactions%"--></code>
<div class="flex items-center font-sans text-sm babybear:text-xs" data-sap-comment-urn="urn:li:ugcPost:7343198949064749056">
<a href="https://www.linkedin.com/signup/cold-join?session_redirect=%2Fpulse%2Fbuilding-managing-shopify-apps-developers-guide-crest-infotech-eo7pf%3Ftl%3Dko&trk=article-ssr-frontend-pulse_x-social-details_likes-count_social-actions-reactions" target="_blank" data-tracking-control-name="article-ssr-frontend-pulse_x-social-details_likes-count_social-actions-reactions" data-tracking-will-navigate class="flex items-center font-normal text-color-text-low-emphasis !no-underline visited:text-color-text-low-emphasis my-1" aria-label="반응 4" data-test-id="social-actions__reactions" data-id="social-actions__reactions" data-num-reactions="4" data-singular="%numReactions%" data-plural="%numReactions%" data-entity-urn="urn:li:ugcPost:7343198949064749056" tabindex="0">
<img alt data-reaction-type="LIKE" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/bn39hirwzjqj18ej1fkz55671" height="16px" width="16px">
<span aria-hidden="true" class="font-normal ml-0.5" data-test-id="social-actions__reaction-count">
4
</span>
</a>
<code id="social-actions__reaction-image-APPRECIATION" style="display: none"><!--"https://static.licdn.com/aero-v1/sc/h/cyfai5zw4nrqhyyhl0p7so58v"--></code>
<!----><!----> <code id="social-actions__reaction-image-EMPATHY" style="display: none"><!--"https://static.licdn.com/aero-v1/sc/h/asiqslyf4ooq7ggllg4fyo4o2"--></code>
<code id="social-actions__reaction-image-ENTERTAINMENT" style="display: none"><!--"https://static.licdn.com/aero-v1/sc/h/22ifp2etz8kb9tgjqn65s9ics"--></code>
<!----> <code id="social-actions__reaction-image-INTEREST" style="display: none"><!--"https://static.licdn.com/aero-v1/sc/h/a0e8rff6djeoq8iympcysuqfu"--></code>
<code id="social-actions__reaction-image-LIKE" style="display: none"><!--"https://static.licdn.com/aero-v1/sc/h/bn39hirwzjqj18ej1fkz55671"--></code>
<code id="social-actions__reaction-image-MAYBE" style="display: none"><!--"https://static.licdn.com/aero-v1/sc/h/cryzkreqrh52ja5bc6njlrupa"--></code>
<code id="social-actions__reaction-image-PRAISE" style="display: none"><!--"https://static.licdn.com/aero-v1/sc/h/2tzoeodxy0zug4455msr0oq0v"--></code>
<!----><!----><!----><!----> </div>
</div>
</div>
<div class="comments__container" data-nosnippet="true">
<div class="comments">
<!---->
<!---->
<!----> </div>
</div>
<p class="feed-cta-banner__text border-t-1 border-color-surface-border border-solid p-3 text-center text-md text-color-text-low-emphasis">
댓글을 보거나 남기려면 <a href="https://www.linkedin.com/signup/cold-join?session_redirect=%2Fpulse%2Fbuilding-managing-shopify-apps-developers-guide-crest-infotech-eo7pf%3Ftl%3Dko&trk=article-ssr-frontend-pulse_x-social-details_feed-cta-banner-cta" target="" aria-label="댓글을 보거나 남기려면 로그인" data-tracking-control-name="article-ssr-frontend-pulse_x-social-details_feed-cta-banner-cta" data-tracking-will-navigate="true" class="feed-cta-banner__link link">로그인</a>
</p>
<!---->
</div>
</section>
<section class="right-rail papabear:w-right-rail-width papabear:ml-column-gutter mamabear:max-w-[790px] mamabear:px-mobile-container-padding babybear:max-w-[790px] babybear:px-mobile-container-padding">
<!---->
<section class="aside-section-container mb-4 articles-content-card" data-nosnippet="true">
<h2 class="aside-section-container__title section-title">
함께 조회된 페이지
</h2>
<!---->
<div class="aside-section-container__content break-words">
<ul class="show-more-less__list show-more-less__list--no-hidden-elems" data-impression-id="article-ssr-frontend-pulse_show-more-less">
<li class="articles-content-card__list-item mt-3">
<!---->
<a href="https://kr.linkedin.com/pulse/leveraging-progressive-web-apps-pwa-responsive-mobile-commerce-qd5tc?tl=ko" target="_self" data-tracking-control-name="full-link" data-tracking-will-navigate class="base-card relative w-full hover:no-underline focus:no-underline
base-card--link
outline-offset-[4px] base-aside-card flex my-1.5
base-aside-card--link
aside-article-card">
<!---->
<div class="base-aside-card__media flex-shrink-0 mr-0.5 overflow-hidden relative rounded-md
h-[54px] w-[95px]">
<img class="lazy-load base-aside-card__media-element w-[100px] h-full object-cover" data-delayed-url="https://media.licdn.com/dms/image/v2/D5612AQHeHf0imgW3pA/article-cover_image-shrink_720_1280/B56ZoGuklmIsAI-/0/1761049466006?e=2147483647&v=beta&t=oR1v8046rmqWMOosVFseZTh9Gy-R9myJHFeJbwBi7rg" data-ghost-url="https://static.licdn.com/aero-v1/sc/h/9l8dv1r8a09nem281grvopn9l" alt>
<!----> </div>
<div class="base-aside-card__info self-center pl-1 flex flex-col flex-1">
<h3 class="base-aside-card__title font-sans text-md font-bold text-color-text relative">
프로그레시브 웹 앱 활용
<!----> </h3>
<!---->
<!---->
<!---->
<!---->
<div class="base-aside-card__metadata font-sans text-sm leading-open font-regular text-color-text-low-emphasis">
<span class="base-aside-card__metadata-item">
Ginesys
</span>
<span class="base-aside-card__metadata-item">
9개월
</span>
</div>
<!----> </div>
<!----><!---->
</a>
</li>
<li class="articles-content-card__list-item mt-3">
<!---->
<a href="https://kr.linkedin.com/pulse/10-tips-optimizing-app-store-listing-better-downloads-balakrishnan?tl=ko" target="_self" data-tracking-control-name="full-link" data-tracking-will-navigate class="base-card relative w-full hover:no-underline focus:no-underline
base-card--link
outline-offset-[4px] base-aside-card flex my-1.5
base-aside-card--link
aside-article-card">
<!---->
<div class="base-aside-card__media flex-shrink-0 mr-0.5 overflow-hidden relative rounded-md
h-[54px] w-[95px]">
<img class="lazy-load base-aside-card__media-element w-[100px] h-full object-cover" data-delayed-url="https://media.licdn.com/dms/image/v2/D5612AQFj4dx8ei27LQ/article-cover_image-shrink_720_1280/article-cover_image-shrink_720_1280/0/1682054668775?e=2147483647&v=beta&t=2NrG9yXYpj6bhu8y_1g6xw4FvQ_VM-6HH6dnv_E0OFQ" data-ghost-url="https://static.licdn.com/aero-v1/sc/h/9l8dv1r8a09nem281grvopn9l" alt>
<!----> </div>
<div class="base-aside-card__info self-center pl-1 flex flex-col flex-1">
<h3 class="base-aside-card__title font-sans text-md font-bold text-color-text relative">
앱 스토어 목록 최적화를 위한 10가지 팁 가시성과 다운로드 수 향상
<!----> </h3>
<!---->
<!---->
<!---->
<!---->
<div class="base-aside-card__metadata font-sans text-sm leading-open font-regular text-color-text-low-emphasis">
<span class="base-aside-card__metadata-item">
Deepak Balakrishnan
</span>
<span class="base-aside-card__metadata-item">
3년
</span>
</div>
<!----> </div>
<!----><!---->
</a>
</li>
<li class="articles-content-card__list-item mt-3">
<!---->
<a href="https://kr.linkedin.com/pulse/5-years-billions-revenue-shopifys-epic-react-native-journey-bhavsar-z9qnf?tl=ko" target="_self" data-tracking-control-name="full-link" data-tracking-will-navigate class="base-card relative w-full hover:no-underline focus:no-underline
base-card--link
outline-offset-[4px] base-aside-card flex my-1.5
base-aside-card--link
aside-article-card">
<!---->
<div class="base-aside-card__media flex-shrink-0 mr-0.5 overflow-hidden relative rounded-md
h-[54px] w-[95px]">
<img class="lazy-load base-aside-card__media-element w-[100px] h-full object-cover" data-delayed-url="https://media.licdn.com/dms/image/v2/D4D12AQGyaMVPeNKAjA/article-cover_image-shrink_720_1280/B4DZq68GEPHwAM-/0/1764072938562?e=2147483647&v=beta&t=ldsMXE1KES8ba2eP-hCOdYtagvxpOwRs7wtIGMuVu44" data-ghost-url="https://static.licdn.com/aero-v1/sc/h/9l8dv1r8a09nem281grvopn9l" alt>
<!----> </div>
<div class="base-aside-card__info self-center pl-1 flex flex-col flex-1">
<h3 class="base-aside-card__title font-sans text-md font-bold text-color-text relative">
5년, 수십억 달러의 매출: Shopify의 대서사시 React Native 여정
<!----> </h3>
<!---->
<!---->
<!---->
<!---->
<div class="base-aside-card__metadata font-sans text-sm leading-open font-regular text-color-text-low-emphasis">
<span class="base-aside-card__metadata-item">
Harshal Bhavsar
</span>
<span class="base-aside-card__metadata-item">
8개월
</span>
</div>
<!----> </div>
<!----><!---->
</a>
</li>
</ul>
</div>
</section>
<!---->
<!---->
<!---->
</section>
</main>
<div class="pre-footer ">
<!---->
</div>
<footer class="li-footer bg-transparent w-full ">
<ul class="li-footer__list flex flex-wrap flex-row items-start justify-start w-full h-auto min-h-[50px] my-[0px] mx-auto py-3 px-2 papabear:p-0">
<li role="presentation" class="li-footer__item font-sans text-xs text-color-text-solid-secondary flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto">
<span class="sr-only">LinkedIn</span>
<icon class="li-footer__copy-logo text-color-logo-brand-alt inline-block self-center h-[14px] w-[56px] mr-1" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5mebydpuuijm3uhv1q375inqh"></icon>
<span class="li-footer__copy-text flex items-center">© 2026</span>
</li>
<li class="li-footer__item font-sans text-xs text-color-text-solid-secondary flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto">
<a class="li-footer__item-link flex items-center font-sans text-xs font-bold text-color-text-solid-secondary hover:text-color-link-hover focus:text-color-link-focus" href="https://about.linkedin.com?trk=d_flagship2_pulse_read_footer-about" data-tracking-control-name="d_flagship2_pulse_read_footer-about" data-tracking-will-navigate>
정보
</a>
</li>
<li class="li-footer__item font-sans text-xs text-color-text-solid-secondary flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto">
<a class="li-footer__item-link flex items-center font-sans text-xs font-bold text-color-text-solid-secondary hover:text-color-link-hover focus:text-color-link-focus" href="https://www.linkedin.com/accessibility?trk=d_flagship2_pulse_read_footer-accessibility" data-tracking-control-name="d_flagship2_pulse_read_footer-accessibility" data-tracking-will-navigate>
웹접근성
</a>
</li>
<li class="li-footer__item font-sans text-xs text-color-text-solid-secondary flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto">
<a class="li-footer__item-link flex items-center font-sans text-xs font-bold text-color-text-solid-secondary hover:text-color-link-hover focus:text-color-link-focus" href="https://www.linkedin.com/legal/user-agreement?trk=d_flagship2_pulse_read_footer-user-agreement" data-tracking-control-name="d_flagship2_pulse_read_footer-user-agreement" data-tracking-will-navigate>
사용자약관
</a>
</li>
<li class="li-footer__item font-sans text-xs text-color-text-solid-secondary flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto">
<a class="li-footer__item-link flex items-center font-sans text-xs font-bold text-color-text-solid-secondary hover:text-color-link-hover focus:text-color-link-focus" href="https://www.linkedin.com/legal/privacy-policy?trk=d_flagship2_pulse_read_footer-privacy-policy" data-tracking-control-name="d_flagship2_pulse_read_footer-privacy-policy" data-tracking-will-navigate>
개인정보 처리방침
</a>
</li>
<!---->
<li class="li-footer__item font-sans text-xs text-color-text-solid-secondary flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto">
<a class="li-footer__item-link flex items-center font-sans text-xs font-bold text-color-text-solid-secondary hover:text-color-link-hover focus:text-color-link-focus" href="https://www.linkedin.com/legal/cookie-policy?trk=d_flagship2_pulse_read_footer-cookie-policy" data-tracking-control-name="d_flagship2_pulse_read_footer-cookie-policy" data-tracking-will-navigate>
쿠키정책
</a>
</li>
<li class="li-footer__item font-sans text-xs text-color-text-solid-secondary flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto">
<a class="li-footer__item-link flex items-center font-sans text-xs font-bold text-color-text-solid-secondary hover:text-color-link-hover focus:text-color-link-focus" href="https://www.linkedin.com/legal/copyright-policy?trk=d_flagship2_pulse_read_footer-copyright-policy" data-tracking-control-name="d_flagship2_pulse_read_footer-copyright-policy" data-tracking-will-navigate>
저작권정책
</a>
</li>
<li class="li-footer__item font-sans text-xs text-color-text-solid-secondary flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto">
<a class="li-footer__item-link flex items-center font-sans text-xs font-bold text-color-text-solid-secondary hover:text-color-link-hover focus:text-color-link-focus" href="https://brand.linkedin.com/policies?trk=d_flagship2_pulse_read_footer-brand-policy" data-tracking-control-name="d_flagship2_pulse_read_footer-brand-policy" data-tracking-will-navigate>
브랜드정책
</a>
</li>
<li class="li-footer__item font-sans text-xs text-color-text-solid-secondary flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto">
<a class="li-footer__item-link flex items-center font-sans text-xs font-bold text-color-text-solid-secondary hover:text-color-link-hover focus:text-color-link-focus" href="https://www.linkedin.com/psettings/guest-controls?trk=d_flagship2_pulse_read_footer-guest-controls" data-tracking-control-name="d_flagship2_pulse_read_footer-guest-controls" data-tracking-will-navigate>
비회원 설정
</a>
</li>
<li class="li-footer__item font-sans text-xs text-color-text-solid-secondary flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto">
<a class="li-footer__item-link flex items-center font-sans text-xs font-bold text-color-text-solid-secondary hover:text-color-link-hover focus:text-color-link-focus" href="https://www.linkedin.com/legal/professional-community-policies?trk=d_flagship2_pulse_read_footer-community-guide" data-tracking-control-name="d_flagship2_pulse_read_footer-community-guide" data-tracking-will-navigate>
커뮤니티정책
</a>
</li>
<!---->
<li class="li-footer__item font-sans text-xs text-color-text-solid-secondary flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto">
<div class="collapsible-dropdown collapsible-dropdown--footer collapsible-dropdown--up flex items-center relative hyphens-auto language-selector z-2">
<!---->
<ul class="collapsible-dropdown__list hidden container-raised absolute w-auto overflow-y-auto flex-col items-stretch z-[9999] bottom-[100%] top-auto" role="menu" tabindex="-1">
<li class="language-selector__item" role="presentation">
<!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile-->
<button aria-label="아랍어(العربية)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark
language-selector__link !font-regular" data-tracking-control-name="language-selector-ar_AE" data-locale="ar_AE" role="menuitem" lang="ar_AE">
아랍어(العربية)
</button>
</li>
<li class="language-selector__item" role="presentation">
<!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile-->
<button aria-label="벵골어(বাংলা)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark
language-selector__link !font-regular" data-tracking-control-name="language-selector-bn_IN" data-locale="bn_IN" role="menuitem" lang="bn_IN">
벵골어(বাংলা)
</button>
</li>
<li class="language-selector__item" role="presentation">
<!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile-->
<button aria-label="체코어(Čeština)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark
language-selector__link !font-regular" data-tracking-control-name="language-selector-cs_CZ" data-locale="cs_CZ" role="menuitem" lang="cs_CZ">
체코어(Čeština)
</button>
</li>
<li class="language-selector__item" role="presentation">
<!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile-->
<button aria-label="덴마크어(Dansk)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark
language-selector__link !font-regular" data-tracking-control-name="language-selector-da_DK" data-locale="da_DK" role="menuitem" lang="da_DK">
덴마크어(Dansk)
</button>
</li>
<li class="language-selector__item" role="presentation">
<!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile-->
<button aria-label="독일어(Deutsch)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark
language-selector__link !font-regular" data-tracking-control-name="language-selector-de_DE" data-locale="de_DE" role="menuitem" lang="de_DE">
독일어(Deutsch)
</button>
</li>
<li class="language-selector__item" role="presentation">
<!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile-->
<button aria-label="그리스어(Ελληνικά)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark
language-selector__link !font-regular" data-tracking-control-name="language-selector-el_GR" data-locale="el_GR" role="menuitem" lang="el_GR">
그리스어(Ελληνικά)
</button>
</li>
<li class="language-selector__item" role="presentation">
<!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile-->
<button aria-label="영어(English)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark
language-selector__link !font-regular" data-tracking-control-name="language-selector-en_US" data-locale="en_US" role="menuitem" lang="en_US">
영어(English)
</button>
</li>
<li class="language-selector__item" role="presentation">
<!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile-->
<button aria-label="스페인어(Español)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark
language-selector__link !font-regular" data-tracking-control-name="language-selector-es_ES" data-locale="es_ES" role="menuitem" lang="es_ES">
스페인어(Español)
</button>
</li>
<li class="language-selector__item" role="presentation">
<!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile-->
<button aria-label="페르시아어(فارسی)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark
language-selector__link !font-regular" data-tracking-control-name="language-selector-fa_IR" data-locale="fa_IR" role="menuitem" lang="fa_IR">
페르시아어(فارسی)
</button>
</li>
<li class="language-selector__item" role="presentation">
<!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile-->
<button aria-label="핀란드어(Suomi)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark
language-selector__link !font-regular" data-tracking-control-name="language-selector-fi_FI" data-locale="fi_FI" role="menuitem" lang="fi_FI">
핀란드어(Suomi)
</button>
</li>
<li class="language-selector__item" role="presentation">
<!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile-->
<button aria-label="프랑스어(Français)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark
language-selector__link !font-regular" data-tracking-control-name="language-selector-fr_FR" data-locale="fr_FR" role="menuitem" lang="fr_FR">
프랑스어(Français)
</button>
</li>
<li class="language-selector__item" role="presentation">
<!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile-->
<button aria-label="힌디어(हिंदी)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark
language-selector__link !font-regular" data-tracking-control-name="language-selector-hi_IN" data-locale="hi_IN" role="menuitem" lang="hi_IN">
힌디어(हिंदी)
</button>
</li>
<li class="language-selector__item" role="presentation">
<!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile-->
<button aria-label="헝가리어(Magyar)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark
language-selector__link !font-regular" data-tracking-control-name="language-selector-hu_HU" data-locale="hu_HU" role="menuitem" lang="hu_HU">
헝가리어(Magyar)
</button>
</li>
<li class="language-selector__item" role="presentation">
<!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile-->
<button aria-label="인도네시아어(Bahasa Indonesia)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark
language-selector__link !font-regular" data-tracking-control-name="language-selector-in_ID" data-locale="in_ID" role="menuitem" lang="in_ID">
인도네시아어(Bahasa Indonesia)
</button>
</li>
<li class="language-selector__item" role="presentation">
<!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile-->
<button aria-label="이탈리아어(Italiano)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark
language-selector__link !font-regular" data-tracking-control-name="language-selector-it_IT" data-locale="it_IT" role="menuitem" lang="it_IT">
이탈리아어(Italiano)
</button>
</li>
<li class="language-selector__item" role="presentation">
<!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile-->
<button aria-label="히브리어(עברית)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark
language-selector__link !font-regular" data-tracking-control-name="language-selector-iw_IL" data-locale="iw_IL" role="menuitem" lang="iw_IL">
히브리어(עברית)
</button>
</li>
<li class="language-selector__item" role="presentation">
<!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile-->
<button aria-label="일본어(日本語)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark
language-selector__link !font-regular" data-tracking-control-name="language-selector-ja_JP" data-locale="ja_JP" role="menuitem" lang="ja_JP">
일본어(日本語)
</button>
</li>
<li class="language-selector__item" role="presentation">
<!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile-->
<button aria-label="한국어(Korean) 선택됨" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark
language-selector__link--selected" data-tracking-control-name="language-selector-ko_KR" data-locale="ko_KR" role="menuitem" lang="ko_KR">
<strong>한국어(Korean)</strong>
</button>
</li>
<li class="language-selector__item" role="presentation">
<!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile-->
<button aria-label="마라티어(मराठी)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark
language-selector__link !font-regular" data-tracking-control-name="language-selector-mr_IN" data-locale="mr_IN" role="menuitem" lang="mr_IN">
마라티어(मराठी)
</button>
</li>
<li class="language-selector__item" role="presentation">
<!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile-->
<button aria-label="말레이시아어(Bahasa Malaysia)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark
language-selector__link !font-regular" data-tracking-control-name="language-selector-ms_MY" data-locale="ms_MY" role="menuitem" lang="ms_MY">
말레이시아어(Bahasa Malaysia)
</button>
</li>
<li class="language-selector__item" role="presentation">
<!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile-->
<button aria-label="네덜란드어(Nederlands)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark
language-selector__link !font-regular" data-tracking-control-name="language-selector-nl_NL" data-locale="nl_NL" role="menuitem" lang="nl_NL">
네덜란드어(Nederlands)
</button>
</li>
<li class="language-selector__item" role="presentation">
<!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile-->
<button aria-label="노르웨이어(Norsk)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark
language-selector__link !font-regular" data-tracking-control-name="language-selector-no_NO" data-locale="no_NO" role="menuitem" lang="no_NO">
노르웨이어(Norsk)
</button>
</li>
<li class="language-selector__item" role="presentation">
<!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile-->
<button aria-label="펀자브어(ਪੰਜਾਬੀ)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark
language-selector__link !font-regular" data-tracking-control-name="language-selector-pa_IN" data-locale="pa_IN" role="menuitem" lang="pa_IN">
펀자브어(ਪੰਜਾਬੀ)
</button>
</li>
<li class="language-selector__item" role="presentation">
<!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile-->
<button aria-label="폴란드어(Polski)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark
language-selector__link !font-regular" data-tracking-control-name="language-selector-pl_PL" data-locale="pl_PL" role="menuitem" lang="pl_PL">
폴란드어(Polski)
</button>
</li>
<li class="language-selector__item" role="presentation">
<!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile-->
<button aria-label="포르투갈어(Português)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark
language-selector__link !font-regular" data-tracking-control-name="language-selector-pt_BR" data-locale="pt_BR" role="menuitem" lang="pt_BR">
포르투갈어(Português)
</button>
</li>
<li class="language-selector__item" role="presentation">
<!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile-->
<button aria-label="루마니아어(Română)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark
language-selector__link !font-regular" data-tracking-control-name="language-selector-ro_RO" data-locale="ro_RO" role="menuitem" lang="ro_RO">
루마니아어(Română)
</button>
</li>
<li class="language-selector__item" role="presentation">
<!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile-->
<button aria-label="러시아어(Русский)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark
language-selector__link !font-regular" data-tracking-control-name="language-selector-ru_RU" data-locale="ru_RU" role="menuitem" lang="ru_RU">
러시아어(Русский)
</button>
</li>
<li class="language-selector__item" role="presentation">
<!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile-->
<button aria-label="스웨덴어(Svenska)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-