Get AI summaries of any video or article — Sign up free
Is full stack even real anymore? thumbnail

Is full stack even real anymore?

Theo - t3․gg·
5 min read

Based on Theo - t3․gg's video on YouTube. If you like this content, support the original creators by watching, liking and subscribing to their content.

TL;DR

“Full stack” is misleading because frameworks differ both in front-end/back-end integration and in how many app-level pieces they bundle as “batteries included.”

Briefing

“Full stack” has become a misleading catch-all because modern frameworks differ at a fundamental level: some mainly connect front end to back end with minimal built-in assumptions, while others bundle a much wider set of application concerns—database access, middleware patterns, API generation, authentication, payments, and more—into a single “batteries included” framework. That gap matters because it changes how much decision-making developers must do, how predictable the request/response flow feels, and how painful it becomes when the framework’s “happy path” doesn’t match real-world needs.

The discussion starts by challenging the idea that “full stack” is a single, stable category. React-adjacent comparisons don’t apply: Next.js, Laravel, Rails, Phoenix, Flask, and Django aren’t just different flavors of the same job. They sit on multiple axes—how much they prioritize front end versus back end, and how many built-in pieces they provide. The speaker argues that “full stack” should at least mean back end plus front end working together, but “fuller stack” is a more accurate label for frameworks that also include database layers, middleware conventions, API generation, and other app-level machinery.

Python’s Flask and Django are used as an early example of the split. Flask’s “getting started” is minimal—import Flask, define routes, return HTML—while Django’s setup scaffolds a larger project with database and server components baked in. That difference becomes a proxy for two philosophies: one framework emphasizes building a relationship between code and browser behavior with fewer primitives, while the other pushes a more prescriptive structure that supplies more of the system upfront.

Next.js is positioned as the minimal end of the spectrum: it prioritizes front-end primitives and keeps the core toolkit small, forcing developers to assemble authentication, payments, and other capabilities from external libraries. The upside is flexibility and innovation—new patterns and tools (including TRPC-style approaches and GraphQL) can emerge because the framework doesn’t lock teams into one set of solutions. The downside is that beginners can struggle to choose the right pieces, and the “wiring” between them becomes the developer’s responsibility.

Laravel sits closer to the “batteries included” side. It aims for a smooth default experience and invests heavily in front-end synchronization through tools like Livewire and inertia-based approaches, while also providing first-party or well-integrated options for common back-end needs. Rails is treated as more painful when the happy path breaks, while Django is described as heavily batteries-included compared with Flask.

The framework comparison expands into a second dimension: the “size of the circle” a tool covers. Minimal stacks cover less (often just front end + back end), while fuller stacks cover more concerns—authentication, queuing, payments, database management—reducing decisions but increasing the cost of mismatch. The trade-off is control versus convenience: swapping components is easier in minimal setups, but fuller stacks can make it harder to replace parts when requirements evolve.

Finally, the transcript argues that “full stack” fails because it tries to describe both axes at once—front/back integration and minimal/batteries-included coverage—plus it ignores other layers like design systems and component libraries. The speaker proposes retiring “full stack” as a term and invites better alternatives, suggesting that the community needs clearer language to separate “BFF-style” back end + front end integration from truly bundled application frameworks.

Cornell Notes

“Full stack” has become confusing because frameworks differ along at least two dimensions: how much they integrate front end with back end, and how many other app concerns they bundle in (“batteries included”). Minimal stacks like Next.js focus on front-end/back-end connection with fewer primitives, pushing authentication, payments, and other infrastructure decisions onto developers. Batteries-included frameworks like Django and Laravel scaffold more of the application—database integration, conventions, and common features—reducing choices but increasing friction when the default path doesn’t fit. The transcript also emphasizes that “full stack” doesn’t capture how much of the overall system a framework owns, including request flow wiring and even design-system-level concerns.

Why does “full stack” stop being useful as a single category?

Because it tries to describe multiple, independent choices at once. Frameworks vary not only in how they connect back end and front end, but also in how prescriptive they are—how many primitives and “batteries included” pieces they ship (database layers, middleware conventions, API generation, authentication, payments, queuing). Two tools can both be “back end + front end” yet differ radically in built-in assumptions and how much wiring developers must do themselves.

How do Flask and Django illustrate the minimal vs batteries-included split?

Flask’s “getting started” is intentionally small: import Flask, serve, define a route, return HTML. Django’s onboarding scaffolds a full project setup with server and database components (e.g., Apache and database-related pieces) and includes a manage file, init/settings/URLs structure, and other defaults. The contrast stands in for two philosophies: fewer built-in primitives versus a more prescriptive, bundled application structure.

What’s the core trade-off between Next.js-style minimalism and Laravel-style batteries included?

Minimalism (Next.js) offers flexibility: teams can pick authentication, payments, and data tools that match their needs, and innovation can happen because the framework doesn’t lock in one approach. The cost is more decision-making and more explicit “wiring” code between layers. Batteries included (Laravel) reduces decisions by providing integrated defaults and first-party or tightly aligned options, but if those defaults don’t fit, workarounds can become painful.

What does “size of the circle” mean in the framework comparison?

It’s the idea that frameworks cover different portions of the application surface area. Next.js is largely front-end/back-end integration with fewer built-in concerns. Blitz.js expands coverage by adding more infrastructure-like layers (e.g., its own RPC/auth/database tooling), but still doesn’t cover everything. Laravel is described as covering a much larger set of concerns—front end/back end plus database, authentication, queuing, and payments—so developers can focus on shipping, but swapping components later may be harder.

How does the transcript connect framework bundling to codebase complexity and routing complexity?

Complexity scales with the problem you’re solving, but bundling changes where that complexity lives. In a batteries-included framework, many relationships between layers (payments → queue → database → front-end updates) are handled by the framework, ideally in a way developers can reason about. In minimal frameworks, those relationships must be explicitly set up, so developers see more “arrows” between modules and must understand the full request path across layers to debug or extend behavior.

What alternative framing does the transcript suggest for replacing “full stack”?

It argues for retiring “full stack” because it doesn’t cleanly separate the axes involved. The speaker floats terms like “BFF stack” (backend + front end) and mentions “center stack” as a community suggestion. The goal is clearer language: one term for back end + front end integration, and another for truly bundled application frameworks that include many additional concerns.

Review Questions

  1. What two axes does the transcript claim are being conflated by the term “full stack,” and how do they affect developer decision-making?
  2. Compare Flask and Django in terms of onboarding structure and what that implies about built-in primitives and control.
  3. Why might a developer prefer a minimal framework like Next.js even if it requires more integration work?

Key Points

  1. 1

    “Full stack” is misleading because frameworks differ both in front-end/back-end integration and in how many app-level pieces they bundle as “batteries included.”

  2. 2

    A minimal framework (e.g., Next.js, Flask) reduces built-in assumptions but shifts authentication, payments, and infrastructure choices onto developers.

  3. 3

    A batteries-included framework (e.g., Django, Laravel) scaffolds more of the application upfront, improving the happy path but increasing friction when requirements diverge.

  4. 4

    Frameworks vary in how much of the system they “own,” which affects the complexity of wiring request flows across layers (payments, queues, database updates, UI refresh).

  5. 5

    Bundling can reduce decisions and speed delivery, but it can also make component swapping harder and increase workaround costs over time.

  6. 6

    The transcript argues for new terminology that separates “back end + front end integration” from “fully bundled application frameworks.”

Highlights

Next.js is framed as minimal: it makes front-end/back-end connection easier while leaving authentication and payments to external choices, which can be both empowering and risky for beginners.
Django and Flask demonstrate the core split: Django scaffolds a full project with database/server defaults, while Flask starts from a tiny route-and-render loop.
Laravel is portrayed as “batteries included” with strong front-end synchronization via Livewire and inertia-based patterns, plus broader coverage of common back-end concerns.
The biggest confusion comes from “full stack” trying to describe multiple spectrums at once—front/back integration and minimal-to-batteries-included coverage—without a clean shared definition.

Topics

  • Full Stack Terminology
  • Batteries Included Frameworks
  • Next.js vs Laravel
  • Flask vs Django
  • Framework Complexity

Mentioned