<!doctype html><html lang=en dir=ltr class="plugin-pages plugin-id-default" data-has-hydrated=false><meta charset=UTF-8><meta name=generator content="Docusaurus v3.7.0"><title data-rh=true>Welcome | Feature-Sliced Design</title><meta data-rh=true name=viewport content="width=device-width, initial-scale=1.0"><meta data-rh=true property=og:image content=https://feature-sliced.design/img/preview.png><meta data-rh=true name=twitter:image content=https://feature-sliced.design/img/preview.png><meta data-rh=true property=og:url content=https://feature-sliced.design/><meta data-rh=true property=og:locale content=en><meta data-rh=true property=og:locale:alternate content=ru><meta data-rh=true property=og:locale:alternate content=uz><meta data-rh=true property=og:locale:alternate content=kr><meta data-rh=true property=og:locale:alternate content=ja><meta data-rh=true name=docusaurus_locale content=en><meta data-rh=true name=docusaurus_tag content=default><meta data-rh=true name=docsearch:language content=en><meta data-rh=true name=docsearch:docusaurus_tag content=default><meta data-rh=true name=keywords content="architecture, frontend, project structure"><meta data-rh=true name=twitter:site content=@feature_sliced><meta data-rh=true name=twitter:card content=summary_large_image><meta data-rh=true property=og:title content="Welcome | Feature-Sliced Design"><meta data-rh=true name=description content="Architectural methodology for frontend projects"><meta data-rh=true property=og:description content="Architectural methodology for frontend projects"><link data-rh=true rel=icon href=/img/favicon/classic.png><link data-rh=true rel=canonical href=https://feature-sliced.design/><link data-rh=true rel=alternate href=https://feature-sliced.design/ru/ hreflang=ru><link data-rh=true rel=alternate href=https://feature-sliced.design/ hreflang=en><link data-rh=true rel=alternate href=https://feature-sliced.design/uz/ hreflang=uz><link data-rh=true rel=alternate href=https://feature-sliced.design/kr/ hreflang=kr><link data-rh=true rel=alternate href=https://feature-sliced.design/ja/ hreflang=ja><link data-rh=true rel=alternate href=https://feature-sliced.design/ hreflang=x-default><script data-rh=true>document.addEventListener("DOMContentLoaded",function(){void 0===window.docusaurus&&insertBanner()});function insertBanner(){var n=document.createElement("div");n.id="__docusaurus-base-url-issue-banner-container",n.innerHTML='\n<div id="__docusaurus-base-url-issue-banner" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n   <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n   <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n   <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">/</span>  (default value)</p>\n   <p>We suggest trying baseUrl = <span id="__docusaurus-base-url-issue-banner-suggestion-container" style="font-weight: bold; color: green;"></span></p>\n</div>\n',document.body.prepend(n);var e=document.getElementById("__docusaurus-base-url-issue-banner-suggestion-container"),s=window.location.pathname;e.innerHTML="/"===s.substr(-1)?s:s+"/"}</script><link rel=alternate type=application/rss+xml href=/blog/rss.xml title="Feature-Sliced Design RSS Feed"><link rel=alternate type=application/atom+xml href=/blog/atom.xml title="Feature-Sliced Design Atom Feed"><link rel=stylesheet href=/assets/css/styles.8bd57a1a.css><script src=/assets/js/runtime~main.f66a2dc6.js defer></script><script src=/assets/js/main.77391bc6.js defer></script><body class=navigation-with-keyboard><script>!function(){var t,e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t=null!==e?e:window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":(window.matchMedia("(prefers-color-scheme: light)").matches,"light"),document.documentElement.setAttribute("data-theme",t)}(),function(){try{for(var[t,e]of new URLSearchParams(window.location.search).entries())if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id=__docusaurus><div role=region aria-label="Skip to main content"><a class=skipToContent_QrOk href=#__docusaurus_skipToContent_fallback>Skip to main content</a></div><nav aria-label=Main class="navbar navbar--fixed-top"><div class=navbar__inner><div class=navbar__items><button aria-label="Toggle navigation bar" aria-expanded=false class="navbar__toggle clean-btn" type=button><svg width=30 height=30 viewBox="0 0 30 30" aria-hidden=true><path stroke=currentColor stroke-linecap=round stroke-miterlimit=10 stroke-width=2 d="M4 7h22M4 15h22M4 23h22"/></svg></button><a class=navbar__brand href=/><div class=navbar__logo><img src=/img/brand/logo-primary.png alt=logo class="themedComponent_jFJo themedComponent--light_Dngm"><img src=/img/brand/logo-primary.png alt=logo class="themedComponent_jFJo themedComponent--dark_kbs8"></div><b class="navbar__title text--truncate"></b></a><a class="navbar__item navbar__link" href=/docs>📖 Docs</a><a class="navbar__item navbar__link" href=/community>💫 Community</a><a class="navbar__item navbar__link" href=/blog>📝 Blog</a><a class="navbar__item navbar__link" href=/examples>🛠 Examples</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class=navbar__link aria-haspopup=true aria-expanded=false role=button href=/docs>v2.1</a><ul class=dropdown__menu><li><a class=dropdown__link href=/docs>v2.1</a><li><a href=https://feature-sliced.design/featureslices.dev/v1.0.html target=_blank rel="noopener noreferrer" class=dropdown__link>v1.0</a><li><a href=https://feature-sliced.design/featureslices.dev/v0.1.html target=_blank rel="noopener noreferrer" class=dropdown__link>v0.1</a><li><a href=https://github.com/feature-sliced/documentation/tree/rc/feature-driven target=_blank rel="noopener noreferrer" class=dropdown__link>feature-driven</a><li><a class=dropdown__link href=/versions>All versions</a></ul></div><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href=# aria-haspopup=true aria-expanded=false role=button class=navbar__link><svg viewBox="0 0 24 24" width=20 height=20 aria-hidden=true class=iconLanguage_a_ef><path fill=currentColor d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"/></svg>English</a><ul class=dropdown__menu><li><a href=/ru/ target=_self rel="noopener noreferrer" class=dropdown__link lang=ru>Русский</a><li><a href=/ target=_self rel="noopener noreferrer" class="dropdown__link dropdown__link--active" lang=en>English</a><li><a href=/uz/ target=_self rel="noopener noreferrer" class=dropdown__link lang=uz>O'zbekcha</a><li><a href=/kr/ target=_self rel="noopener noreferrer" class=dropdown__link lang=kr>한국어</a><li><a href=/ja/ target=_self rel="noopener noreferrer" class=dropdown__link lang=ja>日本語</a><li><a href=https://github.com/feature-sliced/documentation/issues/244 target=_blank rel="noopener noreferrer" class=dropdown__link>Help Us Translate<svg width=12 height=12 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_LLSN><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a></ul></div><a href=https://discord.gg/S8MzWTUsmp target=_blank rel="noopener noreferrer" class="navbar__item navbar__link ext-link discord" aria-label="Discord community server"></a><a href=https://github.com/feature-sliced/documentation target=_blank rel="noopener noreferrer" class="navbar__item navbar__link ext-link github" aria-label="GitHub repository"></a><div class="toggle_XiK2 colorModeToggle_JbHY"><button class="clean-btn toggleButton_j9pd toggleButtonDisabled_EcR2" type=button disabled title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)" aria-live=polite aria-pressed=false><svg viewBox="0 0 24 24" width=24 height=24 class=lightToggleIcon_EHxg><path fill=currentColor d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"/></svg><svg viewBox="0 0 24 24" width=24 height=24 class=darkToggleIcon_ZN9B><path fill=currentColor d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"/></svg></button></div><div class=navbarSearchContainer_cKXq></div></div></div><div role=presentation class=navbar-sidebar__backdrop></div></nav><div id=__docusaurus_skipToContent_fallback class="main-wrapper mainWrapper_oug8"><header class="hero hero--primary heroBanner_PbTQ"><div class=container><h1 class=hero__title>Feature-Sliced Design</h1><p class=hero__subtitle>Architectural methodology for frontend projects<div class=button-group><a class="button button--primary button--lg" href=/docs>Get Started</a><a class="button button--secondary button--lg" href=/examples>Examples</a></div><div class=margin-top--md><a href=https://feature-sliced.design/featureslices.dev/v1.0.html target=_blank rel="noopener noreferrer" class=link_Ogy3>Previous version<!-- --> <!-- -->(feature-slices@v1)</a></div></div></header><main><section id=features class=section_o6sW><div class=container><h2 class=title_v0wz>Features</h2><div class=row><div class="col col--3"><div class=text--center><span role=img aria-label=eye alt="Explicit business logic" class="anticon anticon-eye icon_zeNy"><svg viewBox="64 64 896 896" focusable=false data-icon=eye width=1em height=1em fill=currentColor aria-hidden=true><path d="M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z"/></svg></span></div><div class="text--center padding-horiz--md"><h3>Explicit business logic</h3><p>Easily discoverable architecture thanks to domain scopes</div></div><div class="col col--3"><div class=text--center><span role=img aria-label=login alt=Adaptability class="anticon anticon-login icon_zeNy"><svg viewBox="64 64 896 896" focusable=false data-icon=login width=1em height=1em fill=currentColor aria-hidden=true><defs><style/></defs><path d="M521.7 82c-152.5-.4-286.7 78.5-363.4 197.7-3.4 5.3.4 12.3 6.7 12.3h70.3c4.8 0 9.3-2.1 12.3-5.8 7-8.5 14.5-16.7 22.4-24.5 32.6-32.5 70.5-58.1 112.7-75.9 43.6-18.4 90-27.8 137.9-27.8 47.9 0 94.3 9.3 137.9 27.8 42.2 17.8 80.1 43.4 112.7 75.9 32.6 32.5 58.1 70.4 76 112.5C865.7 417.8 875 464.1 875 512c0 47.9-9.4 94.2-27.8 137.8-17.8 42.1-43.4 80-76 112.5s-70.5 58.1-112.7 75.9A352.8 352.8 0 01520.6 866c-47.9 0-94.3-9.4-137.9-27.8A353.84 353.84 0 01270 762.3c-7.9-7.9-15.3-16.1-22.4-24.5-3-3.7-7.6-5.8-12.3-5.8H165c-6.3 0-10.2 7-6.7 12.3C234.9 863.2 368.5 942 520.6 942c236.2 0 428-190.1 430.4-425.6C953.4 277.1 761.3 82.6 521.7 82zM395.02 624v-76h-314c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h314v-76c0-6.7 7.8-10.5 13-6.3l141.9 112a8 8 0 010 12.6l-141.9 112c-5.2 4.1-13 .4-13-6.3z"/></svg></span></div><div class="text--center padding-horiz--md"><h3>Adaptability</h3><p>Architecture components can be flexibly replaced and added for new requirements</div></div><div class="col col--3"><div class=text--center><span role=img aria-label=file-protect alt="Tech debt & Refactoring" class="anticon anticon-file-protect icon_zeNy"><svg viewBox="64 64 896 896" focusable=false data-icon=file-protect width=1em height=1em fill=currentColor aria-hidden=true><path d="M644.7 669.2a7.92 7.92 0 00-6.5-3.3H594c-6.5 0-10.3 7.4-6.5 12.7l73.8 102.1c3.2 4.4 9.7 4.4 12.9 0l114.2-158c3.8-5.3 0-12.7-6.5-12.7h-44.3c-2.6 0-5 1.2-6.5 3.3l-63.5 87.8-22.9-31.9zM688 306v-48c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8zm-392 88c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm184 458H208V148h560v296c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h312c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm402.6-320.8l-192-66.7c-.9-.3-1.7-.4-2.6-.4s-1.8.1-2.6.4l-192 66.7a7.96 7.96 0 00-5.4 7.5v251.1c0 2.5 1.1 4.8 3.1 6.3l192 150.2c1.4 1.1 3.2 1.7 4.9 1.7s3.5-.6 4.9-1.7l192-150.2c1.9-1.5 3.1-3.8 3.1-6.3V538.7c0-3.4-2.2-6.4-5.4-7.5zM826 763.7L688 871.6 550 763.7V577l138-48 138 48v186.7z"/></svg></span></div><div class="text--center padding-horiz--md"><h3>Tech debt & Refactoring</h3><p>Each module can be independently modified / rewritten without side effects</div></div><div class="col col--3"><div class=text--center><span role=img aria-label=build alt="Explicit code reuse" class="anticon anticon-build icon_zeNy"><svg viewBox="64 64 896 896" focusable=false data-icon=build width=1em height=1em fill=currentColor aria-hidden=true><path d="M916 210H376c-17.7 0-32 14.3-32 32v236H108c-17.7 0-32 14.3-32 32v272c0 17.7 14.3 32 32 32h540c17.7 0 32-14.3 32-32V546h236c17.7 0 32-14.3 32-32V242c0-17.7-14.3-32-32-32zm-504 68h200v200H412V278zm-68 468H144V546h200v200zm268 0H412V546h200v200zm268-268H680V278h200v200z"/></svg></span></div><div class="text--center padding-horiz--md"><h3>Explicit code reuse</h3><p>A balance is maintained between DRY and local customization</div></div></div></div></section><section id=concepts class="section_o6sW sectionAlt_eaXm"><div class=container><h2 class=title_v0wz>Concepts</h2><div class=row><div class="col col--4"><div class=text--center><span role=img aria-label=api alt="Public API" class="anticon anticon-api icon_zeNy"><svg viewBox="64 64 896 896" focusable=false data-icon=api width=1em height=1em fill=currentColor aria-hidden=true><path d="M917.7 148.8l-42.4-42.4c-1.6-1.6-3.6-2.3-5.7-2.3s-4.1.8-5.7 2.3l-76.1 76.1a199.27 199.27 0 00-112.1-34.3c-51.2 0-102.4 19.5-141.5 58.6L432.3 308.7a8.03 8.03 0 000 11.3L704 591.7c1.6 1.6 3.6 2.3 5.7 2.3 2 0 4.1-.8 5.7-2.3l101.9-101.9c68.9-69 77-175.7 24.3-253.5l76.1-76.1c3.1-3.2 3.1-8.3 0-11.4zM769.1 441.7l-59.4 59.4-186.8-186.8 59.4-59.4c24.9-24.9 58.1-38.7 93.4-38.7 35.3 0 68.4 13.7 93.4 38.7 24.9 24.9 38.7 58.1 38.7 93.4 0 35.3-13.8 68.4-38.7 93.4zm-190.2 105a8.03 8.03 0 00-11.3 0L501 613.3 410.7 523l66.7-66.7c3.1-3.1 3.1-8.2 0-11.3L441 408.6a8.03 8.03 0 00-11.3 0L363 475.3l-43-43a7.85 7.85 0 00-5.7-2.3c-2 0-4.1.8-5.7 2.3L206.8 534.2c-68.9 69-77 175.7-24.3 253.5l-76.1 76.1a8.03 8.03 0 000 11.3l42.4 42.4c1.6 1.6 3.6 2.3 5.7 2.3s4.1-.8 5.7-2.3l76.1-76.1c33.7 22.9 72.9 34.3 112.1 34.3 51.2 0 102.4-19.5 141.5-58.6l101.9-101.9c3.1-3.1 3.1-8.2 0-11.3l-43-43 66.7-66.7c3.1-3.1 3.1-8.2 0-11.3l-36.6-36.2zM441.7 769.1a131.32 131.32 0 01-93.4 38.7c-35.3 0-68.4-13.7-93.4-38.7a131.32 131.32 0 01-38.7-93.4c0-35.3 13.7-68.4 38.7-93.4l59.4-59.4 186.8 186.8-59.4 59.4z"/></svg></span></div><div class="text--center padding-horiz--md"><h3>Public API</h3><p>Each module must have a declaration of its public API at the top level</div></div><div class="col col--4"><div class=text--center><span role=img aria-label=block alt=Isolation class="anticon anticon-block icon_zeNy"><svg viewBox="64 64 896 896" focusable=false data-icon=block width=1em height=1em fill=currentColor aria-hidden=true><path d="M856 376H648V168c0-8.8-7.2-16-16-16H168c-8.8 0-16 7.2-16 16v464c0 8.8 7.2 16 16 16h208v208c0 8.8 7.2 16 16 16h464c8.8 0 16-7.2 16-16V392c0-8.8-7.2-16-16-16zm-480 16v188H220V220h360v156H392c-8.8 0-16 7.2-16 16zm204 52v136H444V444h136zm224 360H444V648h188c8.8 0 16-7.2 16-16V444h156v360z"/></svg></span></div><div class="text--center padding-horiz--md"><h3>Isolation</h3><p>The module should not depend directly on other modules of the same layer or overlying layers</div></div><div class="col col--4"><div class=text--center><span role=img aria-label=like alt="Needs Driven" class="anticon anticon-like icon_zeNy"><svg viewBox="64 64 896 896" focusable=false data-icon=like width=1em height=1em fill=currentColor aria-hidden=true><path d="M885.9 533.7c16.8-22.2 26.1-49.4 26.1-77.7 0-44.9-25.1-87.4-65.5-111.1a67.67 67.67 0 00-34.3-9.3H572.4l6-122.9c1.4-29.7-9.1-57.9-29.5-79.4A106.62 106.62 0 00471 99.9c-52 0-98 35-111.8 85.1l-85.9 311H144c-17.7 0-32 14.3-32 32v364c0 17.7 14.3 32 32 32h601.3c9.2 0 18.2-1.8 26.5-5.4 47.6-20.3 78.3-66.8 78.3-118.4 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7-.2-12.6-2-25.1-5.6-37.1zM184 852V568h81v284h-81zm636.4-353l-21.9 19 13.9 25.4a56.2 56.2 0 016.9 27.3c0 16.5-7.2 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 016.9 27.3c0 16.5-7.2 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 016.9 27.3c0 22.4-13.2 42.6-33.6 51.8H329V564.8l99.5-360.5a44.1 44.1 0 0142.2-32.3c7.6 0 15.1 2.2 21.1 6.7 9.9 7.4 15.2 18.6 14.6 30.5l-9.6 198.4h314.4C829 418.5 840 436.9 840 456c0 16.5-7.2 32.1-19.6 43z"/></svg></span></div><div class="text--center padding-horiz--md"><h3>Needs Driven</h3><p>Orientation to business and user needs</div></div></div></div></section><section id=scheme class=section_o6sW><div class=container><h2 class=title_v0wz>Scheme</h2><div class="row scheme_O0RH"><div class=schemeImg_h_tq style='background-size:cover;background-repeat:no-repeat;position:relative;background-image:url("data:image/jpeg;base64,/9j/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAGAAoDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAQI/8QAHRAAAgICAwEAAAAAAAAAAAAAAQIABAMREyExYf/EABQBAQAAAAAAAAAAAAAAAAAAAAH/xAAWEQEBAQAAAAAAAAAAAAAAAAAAASH/2gAMAwEAAhEDEQA/ANL069ytjKcmNgXdtsWJ789lSmwVBJxb19iIQ3H/2Q==")'><svg style=width:100%;height:auto;max-width:100%;margin-bottom:-4px width=640 height=356 /><noscript><img style=width:100%;height:auto;max-width:100%;margin-bottom:-4px;position:absolute;top:0;left:0 src=/assets/ideal-img/visual_schema.5d0b672.640.jpg srcset="/assets/ideal-img/visual_schema.5d0b672.640.jpg 640w,/assets/ideal-img/visual_schema.b6c18f6.1030.jpg 1030w" alt=feature-sliced-scheme,themed--scheme width=640 height=356></noscript></div></div></div></section><section id="companies using fsd" class="section_o6sW root_M0ZT"><div class=rootContainer_QdPn><h2 class=title_v0wz>Companies using FSD</h2><div class=row><span class=addMe_pbNn>FSD is used in your company?<!-- --> <a href=https://github.com/feature-sliced/documentation/issues/131 target=_blank rel="noopener noreferrer">Tell us</a></span></div></div></section><section class=section_o6sW><div class=container><div class="row scheme_O0RH"><div class="prose max-w-none"><h2>Feature-Sliced Design: Concept and Importance</h2><div class=schemeImg2_zKlW style='background-size:cover;background-repeat:no-repeat;position:relative;background-image:url("data:image/jpeg;base64,/9j/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAGAAoDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAQI/8QAHRAAAgICAwEAAAAAAAAAAAAAAQIABAMREyExYf/EABQBAQAAAAAAAAAAAAAAAAAAAAH/xAAWEQEBAQAAAAAAAAAAAAAAAAAAASH/2gAMAwEAAhEDEQA/ANL069ytjKcmNgXdtsWJ789lSmwVBJxb19iIQ3H/2Q==")'><svg style=width:100%;height:auto;max-width:100%;margin-bottom:-4px width=640 height=356 /><noscript><img style=width:100%;height:auto;max-width:100%;margin-bottom:-4px;position:absolute;top:0;left:0 src=/assets/ideal-img/visual_schema.5d0b672.640.jpg srcset="/assets/ideal-img/visual_schema.5d0b672.640.jpg 640w,/assets/ideal-img/visual_schema.b6c18f6.1030.jpg 1030w" alt=feature-sliced-scheme,themed--scheme width=640 height=356></noscript></div><p>Feature-Sliced Design is a modern architectural methodology tailored for building scalable front-end applications, particularly in the React ecosystem. The core principle is to organize project structure by focusing on application features rather than purely technical layers. In traditional paradigms, developers often group code by technical concerns—such as components, services, or styles—leading to monolithic files and complicated dependencies. Feature-Sliced Design addresses these issues by placing features at the forefront. This approach promotes a cleaner, more intuitive structure that streamlines collaboration and maintenance. From an EEAT standpoint (Expertise, Experience, Authoritativeness, and Trustworthiness), Feature-Sliced Design demonstrates its value by emphasizing best practices that are well-recognized within the React community. Its feature-centered mindset ensures each piece of functionality remains coherent and easier to extend, contributing to a trustworthy and robust codebase.<h2>History and Origin</h2><p>The roots of Feature-Sliced Design can be traced back to ongoing community discussions about how to effectively manage complexity in large-scale front-end projects. Developers realized that standard file-grouping methods, whether by type or layer (for instance, "components," "containers," "services"), often failed to scale gracefully. Over time, the concept evolved through collaborative input from open-source contributors and thought leaders who recognized the need for a more intuitive and business-oriented approach. Although Feature-Sliced Design shares conceptual similarities with domain-driven design and modular architectures, it is specifically tailored to tackle React's component-driven nature, ensuring that complexities remain compartmentalized and that boundaries are clearly defined.<h2>Key Elements of Feature-Sliced Design</h2><p>At the heart of this methodology are distinct layers, slices, and segments. Each layer groups the application's parts in a way that reflects the user's journey and the business logic rather than technical minutiae. Slices break down major features into smaller domains, and segments provide clarity within those slices, capturing subtasks or subcomponents in a logically separated manner. By structuring a project with these elements, developers create code that is more approachable, testable, and easier to onboard new team members into.<h2>Benefits for Large-Scale React Projects</h2><p>One of the major advantages in adopting Feature-Sliced Design is that it naturally accommodates growth. Large-scale React applications often suffer from tangled dependencies as features expand. By centering each part of the application on specific features, it becomes far simpler to isolate bugs, roll out new functionality, and refactor existing code. This architectural clarity drives higher maintainability and reduces the likelihood of regressions. From a team perspective, individuals can work in parallel on different slices without stepping on each other's toes, accelerating both feature development and knowledge sharing across the organization.<h2>When to Apply Feature-Sliced Design</h2><p>Although suitable for projects of various sizes, Feature-Sliced Design truly shines when an application begins to scale beyond a few simple pages or components. If your React project is rapidly growing or when multiple teams are collaborating, it is prudent to apply Feature-Sliced Design. This structured approach provides a robust foundation that can gracefully adapt to new requirements. Even in smaller projects, adopting at least some of its principles can help maintain a tidy and future-proof codebase.<h2>Comparison with Traditional Architectures (MVC, MVP)</h2><p>In frameworks such as MVC (Model-View-Controller) or MVP (Model-View-Presenter), functionality is commonly separated by layers of responsibility. While these approaches have been foundational in software development, they don't always align neatly with modern, component-based libraries like React. Feature-Sliced Design, by contrast, goes a step further in aligning the entire codebase around features and user flows, making it more intuitive when dealing with reusable components and complex state management. In essence, MVC or MVP can sometimes force front-end developers to mold their code around classical backend-centric architecture, whereas Feature-Sliced Design embraces the patterns that best suit React's inherently modular design.<h2>Distinguishing Feature-Sliced from Atomic Design</h2><p>Atomic Design focuses on building interfaces from the smallest possible elements (atoms) up to more complex structures (molecules, organisms, templates, and pages). Feature-Sliced Design also embraces modularity but is primarily driven by business logic and user features. While Atomic Design is powerful for creating reusable UI libraries, Feature-Sliced Design explicitly addresses how features relate to each other and to the overall application. Both can coexist in a single project, but their focal points are different: Atomic Design is primarily concerned with UI consistency and reusability, whereas Feature-Sliced centers around application flow and domain complexity.<h2>Common Terms (Layer, Slice, Segment)</h2><p>Layers encapsulate the architectural tiers that group related parts of the application. In many examples, these layers might be labeled as apps, processes, pages, features, entities, and shared. Slices are the conceptual boundaries for distinct features, ensuring each set of functionalities or modules stands on its own. Within those slices, segments represent more granular subdivisions for organizing components, logic, and utilities specific to that particular feature. These terms collectively form a mental model that keeps the application tidy and easy to navigate.<h2>Initial Difficulties and Learning Curve</h2><p>Developers coming from more traditional file- or component-based structures may find it challenging to adopt Feature-Sliced Design. The primary learning curve often involves training one's mindset to think in terms of features rather than simply components or services. Configuring the directory layout can also seem daunting at first, especially when deciding how to slice the application's functionalities. Nonetheless, once these initial hurdles are overcome, teams usually discover that Feature-Sliced Design fosters a more maintainable and intuitive workflow.<h2>Case Study: Building a Simple To-Do App with Feature-Sliced Design</h2><p>Imagine a small to-do application with features like adding tasks, marking tasks complete, and filtering active or completed items. Under Feature-Sliced Design, each feature—task creation, task completion, and task filtering—would be its own slice, containing components, logic, and styles specifically for that function. The layers would separate application-level concerns (like user authentication or routing) from shared utilities and UI elements. Each slice might have its own local state management for tasks, which can be lifted or shared at the higher layers if global state becomes necessary. Although the app remains simple, the immediate benefit is clear: any developer joining the project can quickly see where each functionality resides and how it interacts with the rest of the application, eliminating guesswork and streamlining future enhancements.<p>In summary, Feature-Sliced Design presents a practical and forward-looking approach to structuring React projects. By prioritizing features as the foundational building blocks, it offers clarity and scalability that traditional architectures often lack. Whether you are building a small side project or architecting an enterprise-level platform, incorporating Feature-Sliced Design principles can be a catalyst for more organized development, smoother collaboration, and a codebase that stands the test of time.</div></div></div></section></main></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class=footer__title>Specs</div><ul class="footer__items clean-list"><li class=footer__item><a class=footer__link-item href=/docs>Documentation</a><li class=footer__item><a class=footer__link-item href=/community>Community</a><li class=footer__item><a class=footer__link-item href=/nav>Help</a><li class=footer__item><a href=https://github.com/feature-sliced/documentation/discussions target=_blank rel="noopener noreferrer" class=footer__link-item>Discussions<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_LLSN><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a></ul></div><div class="col footer__col"><div class=footer__title>Community</div><ul class="footer__items clean-list"><li class=footer__item><a href=https://discord.gg/S8MzWTUsmp target=_blank rel="noopener noreferrer" class=footer__link-item>Discord<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_LLSN><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a><li class=footer__item><a href=https://t.me/feature_sliced target=_blank rel="noopener noreferrer" class=footer__link-item>Telegram (RU)<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_LLSN><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a><li class=footer__item><a href=https://twitter.com/feature_sliced target=_blank rel="noopener noreferrer" class=footer__link-item>Twitter<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_LLSN><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a><li class=footer__item><a href=https://opencollective.com/feature-sliced target=_blank rel="noopener noreferrer" class=footer__link-item>Open Collective<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_LLSN><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a><li class=footer__item><a href=https://www.youtube.com/c/FeatureSlicedDesign target=_blank rel="noopener noreferrer" class=footer__link-item>YouTube<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_LLSN><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a></ul></div><div class="col footer__col"><div class=footer__title>More</div><ul class="footer__items clean-list"><li class=footer__item><a href=https://github.com/feature-sliced target=_blank rel="noopener noreferrer" class=footer__link-item>GitHub<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_LLSN><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a><li class=footer__item><a href=https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md target=_blank rel="noopener noreferrer" class=footer__link-item>Contribution Guide<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_LLSN><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a><li class=footer__item><a href=https://github.com/feature-sliced/documentation/blob/master/LICENSE target=_blank rel="noopener noreferrer" class=footer__link-item>License<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_LLSN><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a></ul></div></div><div class="footer__bottom text--center"><div class=margin-bottom--sm><a href=https://github.com/feature-sliced rel="noopener noreferrer" class=footerLogoLink_lElA><img src=/img/brand/logo-primary.png alt="Feature-Sliced Design - Architectural methodology for frontend projects" class="footer__logo themedComponent_jFJo themedComponent--light_Dngm" width=160><img src=/img/brand/logo-primary.png alt="Feature-Sliced Design - Architectural methodology for frontend projects" class="footer__logo themedComponent_jFJo themedComponent--dark_kbs8" width=160></a></div><div class=footer__copyright>Copyright © 2018-2025  Feature-Sliced Design</div></div></div></footer></div>