<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/vertical-vs-horizontal-slicing---the-only-right-way-to-split-down-your-app-zfmucxnaz" -->

---
title: Vertical vs. Horizontal Slicing - The ONLY Right Way to...
description: A video walkthrough explains vertical versus horizontal slicing when breaking down a large app project. Vertical slicing splits work by feature, while...
canonical: https://daily.dev/posts/vertical-vs-horizontal-slicing---the-only-right-way-to-split-down-your-app-zfmucxnaz
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Vertical vs. Horizontal Slicing - The ONLY Right Way to Split Down Your App | daily.dev
og:description: A video walkthrough explains vertical versus horizontal slicing when breaking down a large app project. Vertical slicing splits work by feature, while...
og:url: https://daily.dev/posts/vertical-vs-horizontal-slicing---the-only-right-way-to-split-down-your-app-zfmucxnaz
og:image: https://api.daily.dev/og/posts/ZfMUcxNaz.png
og:image:alt: Vertical vs. Horizontal Slicing - The ONLY Right Way to Split Down Your App
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Vertical vs. Horizontal Slicing - The ONLY Right Way to Split Down Your App

**[Philipp Lackner](https://daily.dev/sources/philipplackner)** · 13 min read · 3 upvotes · 0 comments

## Summary

A video walkthrough explains vertical versus horizontal slicing when breaking down a large app project. Vertical slicing splits work by feature, while horizontal slicing splits work by layer (UI, domain, data). The recommended approach: build shared infrastructure first (domain, then UI, then data), then vertically slice remaining work into features, and within each feature horizontally slice by domain, UI, then data. A practical example is shown using a Kotlin Multiplatform chat app with Gradle modules per feature and a shared core module, with claimed benefits of team isolation and faster parallel Gradle builds. The video promotes the creator's Kotlin full-stack course bundle and senior app developer mentorship program.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.youtube.com/watch?v=svQAKu30C18>

## Questions this post answers

### What is the difference between vertical slicing and horizontal slicing when structuring an app's architecture?

Vertical slicing splits an app by feature, building one feature fully (auth, then notes, then account) before moving to the next. Horizontal slicing splits by layer, building the entire UI for all features, then the entire domain layer, then the entire data layer. The recommended approach combines both: slice vertically by feature, but slice each feature horizontally by layer, working on shared infrastructure first.

_Developers designing app structure can compare architecture approaches like this on daily.dev before committing to one._

### In what order should I build the domain, UI, and data layers within a feature or shared module?

Domain should be built first since it is the innermost layer that both UI and data depend on, defining shared models and business logic. UI comes second because it gives immediate visual feedback you can verify in previews. Data comes last since by then a UI already exists to trigger and visually confirm network calls or database reads work correctly.

_Anyone debating layer ordering for clean architecture can weigh this reasoning on daily.dev._

### Why use a single Gradle module per feature instead of root-level presentation, domain, and data modules for an entire app?

Per-feature modules keep code isolated so features can be reused independently in other apps and so team members can work on separate features without interfering with each other's code. Root-level layer modules for the whole app grow unbounded as the app grows, becoming unmaintainable and slowing Gradle builds, whereas isolated feature modules let Gradle build changes in parallel for faster build times.

_Teams weighing Gradle module structure for scaling an app can track architecture trade-offs like this on daily.dev._

## Similar posts on daily.dev

- [Vertical slices, their ownership and external dependencies](https://daily.dev/posts/vertical-slices-their-ownership-and-external-dependencies-bsocvubfi) · Event-Driven by Oskar Dudycz · 11 upvotes · 1 comments
- [Vertical Slice Architecture: Where Does the Shared Logic Live?](https://daily.dev/posts/vertical-slice-architecture-where-does-the-shared-logic-live--hxzktyqjf) · Milan Jovanović · 80 upvotes · 4 comments
- [The one thing every experienced engineer gets wrong](https://daily.dev/posts/the-one-thing-every-experienced-engineer-gets-wrong-qx6sxnvvh) · swizec.com · 35 upvotes · 5 comments
- [Vertical Slice Architecture in Node.js: One Folder Per Use Case](https://daily.dev/posts/vertical-slice-architecture-in-node-js-one-folder-per-use-case-a1su2a1gx) · The T-Shaped Dev · 2 upvotes · 0 comments
- [Feature Slicing vs Clean Architecture in C\#: Which One Should You Use?](https://daily.dev/posts/feature-slicing-vs-clean-architecture-in-c-which-one-should-you-use--lbojcrlma) · We Are .NET · 0 upvotes · 0 comments

---

Tags: [#architecture](https://daily.dev/tags/architecture), [#android](https://daily.dev/tags/android), [#kotlin](https://daily.dev/tags/kotlin), [#gradle](https://daily.dev/tags/gradle)

[View this post on daily.dev](https://daily.dev/posts/vertical-vs-horizontal-slicing---the-only-right-way-to-split-down-your-app-zfmucxnaz)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Vertical vs. Horizontal Slicing - The ONLY Right Way to Split Down Your App","url":"https://daily.dev/posts/vertical-vs-horizontal-slicing---the-only-right-way-to-split-down-your-app-zfmucxnaz","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/vertical-vs-horizontal-slicing---the-only-right-way-to-split-down-your-app-zfmucxnaz"},"datePublished":"2026-08-16T11:18:16.905Z","dateModified":"2026-09-14T06:55:37.004Z","description":"A video walkthrough explains vertical versus horizontal slicing when breaking down a large app project. Vertical slicing splits work by feature, while...","image":"https://i.ytimg.com/vi/svQAKu30C18/sddefault.jpg","thumbnailUrl":"https://i.ytimg.com/vi/svQAKu30C18/sddefault.jpg","isAccessibleForFree":true,"articleSection":"Philipp Lackner","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Philipp Lackner","logo":"https://media.daily.dev/image/upload/s--WOEWUbRT--/f_auto/v1725038407/logos/philipplackner","url":"https://daily.dev/sources/philipplackner"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/vertical-vs-horizontal-slicing---the-only-right-way-to-split-down-your-app-zfmucxnaz","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":3},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"architecture,android,kotlin,gradle","timeRequired":"PT13M","video":{"@type":"VideoObject","name":"Vertical vs. Horizontal Slicing - The ONLY Right Way to Split Down Your App","description":"A video walkthrough explains vertical versus horizontal slicing when breaking down a large app project. Vertical slicing splits work by feature, while...","thumbnailUrl":"https://i.ytimg.com/vi/svQAKu30C18/sddefault.jpg","uploadDate":"2026-08-16T11:18:16.905Z","duration":"PT13M","url":"https://api.daily.dev/r/ZfMUcxNaz","embedUrl":"https://www.youtube.com/embed/svQAKu30C18"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Philipp Lackner","item":"https://daily.dev/sources/philipplackner"},{"@type":"ListItem","position":3,"name":"Vertical vs. Horizontal Slicing - The ONLY Right Way to Split Down Your App"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/vertical-vs-horizontal-slicing---the-only-right-way-to-split-down-your-app-zfmucxnaz#faq","mainEntity":[{"@type":"Question","name":"What is the difference between vertical slicing and horizontal slicing when structuring an app's architecture?","acceptedAnswer":{"@type":"Answer","text":"Vertical slicing splits an app by feature, building one feature fully (auth, then notes, then account) before moving to the next. Horizontal slicing splits by layer, building the entire UI for all features, then the entire domain layer, then the entire data layer. The recommended approach combines both: slice vertically by feature, but slice each feature horizontally by layer, working on shared infrastructure first. Developers designing app structure can compare architecture approaches like this on daily.dev before committing to one."}},{"@type":"Question","name":"In what order should I build the domain, UI, and data layers within a feature or shared module?","acceptedAnswer":{"@type":"Answer","text":"Domain should be built first since it is the innermost layer that both UI and data depend on, defining shared models and business logic. UI comes second because it gives immediate visual feedback you can verify in previews. Data comes last since by then a UI already exists to trigger and visually confirm network calls or database reads work correctly. Anyone debating layer ordering for clean architecture can weigh this reasoning on daily.dev."}},{"@type":"Question","name":"Why use a single Gradle module per feature instead of root-level presentation, domain, and data modules for an entire app?","acceptedAnswer":{"@type":"Answer","text":"Per-feature modules keep code isolated so features can be reused independently in other apps and so team members can work on separate features without interfering with each other's code. Root-level layer modules for the whole app grow unbounded as the app grows, becoming unmaintainable and slowing Gradle builds, whereas isolated feature modules let Gradle build changes in parallel for faster build times. Teams weighing Gradle module structure for scaling an app can track architecture trade-offs like this on daily.dev."}}]}
```

