Skip to main content

Command Palette

Search for a command to run...

Where to Go From Here — Next.js, Micro-Frontends, and What's Actually Worth Learning

Day 40 of 40 — React System Design Series

Updated
10 min read
Where to Go From Here — Next.js, Micro-Frontends, and What's Actually Worth Learning
R

Hi, I’m Richa — a Senior Frontend Engineer with 5+ years of experience building scalable, production-grade web interfaces for enterprise and consumer applications. I work primarily with React, TypeScript, and modern frontend architectures, focusing on component systems, performance, and maintainability. Most of my experience comes from building real-world products in regulated domains like banking and insurance, where clarity, reliability, and long-term ownership matter more than quick demos. Through this blog, I write about frontend engineering fundamentals, scalable UI design, problem-solving, and the lessons I’ve learned working on large codebases. My goal is to share practical insights — not shortcuts — for developers who want to grow strong engineering foundations. I also mentor early-career developers and strongly believe that curiosity, asking the right questions, and understanding why something works are more important than memorizing tools. If you’re serious about improving as an engineer, you’re in the right place.


Hey everyone, Richa here! 👋

done gif

Day 40.

We made it.

40 days. 8 weeks. 40 blog posts. I started this series with one goal: go from "React developer who's been away for two years" to "React developer ready for a senior interview."

And honestly? Writing this series taught me as much as reading it would have.

Today is the last post — and I want to be honest about what comes next, and what's actually worth your time to learn.


What we covered in 40 days

Let me look back at the full arc:

Week 1 — Foundations The mental model, component design, state fundamentals, useEffect as a sync tool, performance basics.

Week 2 — State Management Context API pitfalls, Zustand, Redux Toolkit, React Query for server state, picking the right tool.

Week 3 — Authentication JWT vs cookies, building an auth service, protected routes, AuthContext, refresh token handling.

Week 4 — Architecture Feature-based folder structure, compound components, custom hook design, the API layer, monorepo basics.

Week 5 — Performance Rendering patterns (CSR/SSR/SSG/ISR), code splitting, list virtualisation, bundle optimisation, the React Profiler.

Week 6 — System Design Feed, autocomplete, real-time dashboard, full auth system, shopping cart and checkout.

Week 7 — Testing Testing philosophy, React Testing Library, custom hook testing, async testing with MSW, E2E with Playwright.

Week 8 — Interview Prep How senior interviews work, 20 common questions, the system design framework, 10 interview-killing mistakes.

That's a genuine senior-level React curriculum. Not comprehensive of everything that exists — but comprehensive of what you need to perform at a senior level.


What comes after React fundamentals

If you've finished this series and want to keep growing, here's my honest take on what's worth learning next.


Next.js — learn this

If you're not already using Next.js, learn it. React is increasingly a library that runs inside a framework rather than standalone, and Next.js is the most production-ready option.

What to learn:

  • App Router — React Server Components, async server components, Server Actions
  • Route handlers — replacing the need for a separate Express API for simple backends
  • Metadata API — SEO without react-helmet
  • Incremental Static Regeneration (Day 21 — you already know the concept)
  • Edge Runtime — running Next.js at the CDN edge for minimal latency

The learning curve is real. The React Server Components mental model takes time to internalise. But it's the direction React is heading, and knowing it well is a significant advantage in 2025+.

Time investment: 2–3 weeks of real project work
Worth it: Yes, unambiguously

React Native — conditional

If you want to build mobile apps, React Native (with Expo) is an excellent choice. A lot of what you know from React transfers.

The main differences: no DOM, platform-specific APIs, layout is Flexbox-only, animations work differently (Reanimated), navigation has its own ecosystem (React Navigation).

Time investment: 4–6 weeks to build something real
Worth it: If mobile is relevant to your target role — yes

Micro-frontends — learn the concept, be sceptical

Micro-frontends is the idea of splitting a large frontend into independently deployable pieces — similar to microservices on the backend.

Tools: Module Federation (Webpack 5), single-spa, Nx.

The honest take: Micro-frontends solve organisational problems — multiple teams deploying independently. They introduce significant technical complexity: shared dependency management, cross-app communication, routing coordination, consistent UI.

If you're joining a company that uses them — learn the specific implementation. If you're choosing an architecture — only reach for micro-frontends when you have multiple teams who genuinely need independent deployments. For most companies, a well-structured monorepo (Day 20) solves the same problem with far less complexity.

Time investment: 3–4 weeks to understand properly
Worth it: Learn the concept. Use cautiously.

Web Components and Lit.js

I spent two years with Lit.js before coming back to React for this series. Here's my honest assessment:

Web Components (Custom Elements, Shadow DOM, HTML Templates) are a browser standard — they work everywhere, no framework required. Lit.js is a thin library that makes authoring web components much more ergonomic.

When they make sense:

  • Design systems that need to work across multiple frameworks (Angular, React, Vue teams all using the same component library)
  • Embedding widgets into third-party pages (the Shadow DOM prevents style leakage)
  • Long-lived projects where framework churn is a risk

When React is better:

  • Single-framework apps
  • When you need React's ecosystem (React Query, Zustand, Testing Library, etc.)
  • When your team knows React

The shadow DOM can make styling and testing harder. React's dev experience is generally better for complex UIs. But for design system components shared across frameworks — Lit is genuinely excellent.

Time investment: 2–3 weeks
Worth it: If cross-framework compatibility is a requirement

TypeScript — go deeper

You've used TypeScript throughout this series. But there's a lot more depth available:

  • Conditional typestype IsArray<T> = T extends any[] ? true : false
  • Template literal typestype EventName = on${Capitalize}``
  • Mapped types — transform object types programmatically
  • Utility typesPartial, Required, Pick, Omit, ReturnType, Parameters
  • Discriminated unions — the pattern for type-safe state machines
  • Declaration files — typing untyped JS libraries

Matt Pocock's Total TypeScript course is the best resource I've found. Well worth the investment.

Time investment: 2–4 weeks
Worth it: Yes — TypeScript depth directly translates to better code

GraphQL — learn the concept, evaluate per project

GraphQL is a query language for APIs — clients request exactly the data they need, no more. Apollo Client and urql are the main React integrations.

When it shines: Complex apps with many different views needing different data shapes. Replaces REST + React Query with a single data graph.

When it's not worth it: Most apps. REST + React Query handles 90% of use cases with less complexity. GraphQL adds a schema, resolvers, codegen tooling, and a learning curve.

Time investment: 2–3 weeks to be productive
Worth it: If your company uses it or the API is GraphQL-native — yes. Otherwise, wait for the need.

The real answer — build real things

Every technology above: you can read about it for weeks and still not feel confident. The only thing that actually builds competence is using it to build something real.

After this series, the move is:

  1. Pick one real project — something you actually want to exist
  2. Use Next.js — you'll hit every concept in a meaningful context
  3. Write tests — use the testing week as your guide
  4. Ship it — a deployed URL is worth more than any tutorial certificate

The project doesn't need to be impressive. It needs to be real — real data, real users (even if just you), real deployment.


My honest reflection on 40 days

Coming back to React after two years with Lit.js was humbling.

The ecosystem had moved. React Query had matured. Zustand had replaced most Redux use cases. Server Components were becoming real. TypeScript was table stakes, not optional.

But the fundamentals hadn't changed. Components. State. Side effects. Performance. The same principles from Week 1 apply to everything we covered in Week 8.

That's the thing about going deep into fundamentals — they compound. Understanding why useEffect works the way it does means you understand why React Query works the way it does. Understanding why the Context re-render problem exists means you understand why Zustand selectors matter.

Depth beats breadth. Always.


Thank you

To everyone who's followed along, commented, asked questions, and shared these posts — thank you genuinely.

Writing in public is uncomfortable. Admitting what you've forgotten is uncomfortable. But it's also the fastest way I know to learn.

If this series helped you — go build something. Ship it. Write about what you learned. The best thing you can do with knowledge is pass it on.

See you in the next series.

— Richa 💙

end gif


🚀 What's Coming Next — React + GraphQL Series

graphql gif

I mentioned GraphQL above as a "conditional" — learn it when the need arises.

Well. The need has arisen. 😄

My next series is going to be "React + GraphQL — From Zero to Production".

This is what we'll cover:

Day Topic
Week 1 GraphQL fundamentals — queries, mutations, subscriptions, the schema
Week 2 Apollo Client with React — setup, useQuery, useMutation, caching
Week 3 Advanced Apollo — optimistic updates, fragments, local state, pagination
Week 4 GraphQL + TypeScript — codegen, typed hooks, no more any
Week 5 Real-world patterns — auth headers, error handling, file uploads
Week 6 System design with GraphQL — designing the schema before the UI
Week 7 Testing GraphQL in React — mocking with MSW, Apollo MockedProvider
Week 8 Performance — persisted queries, batching, normalised cache deep-dive

Same format as this series:

  • Personal story opener
  • Real TypeScript code
  • ❌ wrong patterns vs ✅ right patterns
  • LinkedIn post templates
  • Navigation links

Day 1 drops next Monday.

If this series helped you — follow along for the next one. And if you have specific GraphQL pain points you want me to cover, drop them in the comments. I read every one.

See you Monday. 👋


🚀 Next series: React + GraphQL — From Zero to Production

Queries. Mutations. Apollo Client. TypeScript codegen. Real-world patterns. Day 1 drops next Monday.

Follow for the next one. 👋

#ReactJS #GraphQL #SystemDesign #Frontend #LearningInPublic #SoftwareEngineering


---

*← [Day 39 — Mistakes to Avoid](./w8-d4-mistakes-to-avoid.md)*

---

## 📚 Complete Series Index

| Week | Topic | Days |
|---|---|---|
| Week 1 — Foundations | [Day 1](../week-1/w1-d1-react-mental-model.md) · [Day 2](../week-1/w1-d2-component-design.md) · [Day 3](../week-1/w1-d3-state-fundamentals.md) · [Day 4](../week-1/w1-d4-useeffect-deep-dive.md) · [Day 5](../week-1/w1-d5-performance-basics.md) | 1–5 |
| Week 2 — State Management | [Day 6](../week-2/w2-d1-context-api.md) · [Day 7](../week-2/w2-d2-zustand.md) · [Day 8](../week-2/w2-d3-redux-toolkit.md) · [Day 9](../week-2/w2-d4-server-state.md) · [Day 10](../week-2/w2-d5-state-architecture.md) | 6–10 |
| Week 3 — Authentication | [Day 11](../week-3/w3-d1-auth-concepts.md) · [Day 12](../week-3/w3-d2-auth-in-react.md) · [Day 13](../week-3/w3-d3-protected-routes.md) · [Day 14](../week-3/w3-d4-auth-context.md) · [Day 15](../week-3/w3-d5-refresh-tokens.md) | 11–15 |
| Week 4 — Architecture | [Day 16](../week-4/w4-d1-folder-structure.md) · [Day 17](../week-4/w4-d2-component-patterns.md) · [Day 18](../week-4/w4-d3-custom-hooks-design.md) · [Day 19](../week-4/w4-d4-api-layer.md) · [Day 20](../week-4/w4-d5-monorepo-basics.md) | 16–20 |
| Week 5 — Performance | [Day 21](../week-5/w5-d1-rendering-patterns.md) · [Day 22](../week-5/w5-d2-code-splitting.md) · [Day 23](../week-5/w5-d3-virtualization.md) · [Day 24](../week-5/w5-d4-bundle-optimization.md) · [Day 25](../week-5/w5-d5-react-profiler.md) | 21–25 |
| Week 6 — System Design | [Day 26](../week-6/w6-d1-design-a-feed.md) · [Day 27](../week-6/w6-d2-design-autocomplete.md) · [Day 28](../week-6/w6-d3-design-dashboard.md) · [Day 29](../week-6/w6-d4-design-auth-system.md) · [Day 30](../week-6/w6-d5-design-e-commerce.md) | 26–30 |
| Week 7 — Testing | [Day 31](../week-7/w7-d1-testing-mindset.md) · [Day 32](../week-7/w7-d2-react-testing-library.md) · [Day 33](../week-7/w7-d3-testing-hooks.md) · [Day 34](../week-7/w7-d4-testing-async.md) · [Day 35](../week-7/w7-d5-e2e-with-playwright.md) | 31–35 |
| Week 8 — Interview Prep | [Day 36](./w8-d1-interview-patterns.md) · [Day 37](./w8-d2-common-questions.md) · [Day 38](./w8-d3-system-design-framework.md) · [Day 39](./w8-d4-mistakes-to-avoid.md) · Day 40 | 36–40 |

---

*Part of the [React System Design Series](../00-MASTER-PLAN.md) — 40 days, one topic per day.*

React System Design — Learning in Public

Part 34 of 34

I'm a React developer with 5.5 years of experience who spent 2 years in Lit.js — and slowly forgot how React really works at a senior level. This series is my public journey back. Every day I cover one topic: state management, authentication, performance, system design interviews, testing — the real stuff that separates a mid-level dev from a senior. Written honestly, with real code, for developers at every level.

Start from the beginning

How React Actually Works — And Why I Never Bothered to Learn It (Until Now)

Day 1 of 40 — React System Design Series