Back to Blog
Engineering May 28, 2026 6 min read Zerguine Abdelbasset

Our 2026 stack for web and mobile

The frameworks, runtimes, and tooling we reach for when starting a new product this year.

Every twelve months we audit the stack we reach for when starting a new project. The goal isn't novelty — it's to make sure the defaults we've been carrying still earn their place. Mid-2026 the list looks meaningfully different from a year ago, mostly because the ecosystem around React, edge runtimes, and cross-platform mobile has matured in ways that shrink the boring code.

On the web, Next.js with the App Router remains our default. Server components have stopped being a controversy and started being how we structure data fetching. The mental model — server by default, client where you need interactivity — produces less code than the old hooks-everywhere approach, and the streaming story finally pays off on slow networks. Tailwind v4 with config-in-CSS removed the last piece of friction we still had about styling.

For state and forms, we've simplified ruthlessly. TanStack Query handles server state, React Hook Form plus Zod handles form state and validation, and we've stopped reaching for global state libraries unless the app genuinely needs them. URL search params do more work than they used to — filters, dialogs, multi-step flows all serialize through the URL, which makes deep links and back-button behavior free.

On mobile, the answer depends on the team. For product-led startups shipping features fast, React Native with Expo gives us code reuse and a single hire pool. For experiences that lean heavily on native gestures, camera, or platform-specific UI, we still go native — Swift for iOS, Kotlin for Android. The 'one codebase' promise is real for most apps and a lie for the rest; the discipline is being honest about which side you're on.

The thing we've removed from the default stack: bespoke build pipelines. Turbopack, Vite, and Bun ship sane defaults. Custom webpack configs are tech debt we don't choose anymore. If we need something the defaults can't do, that's a signal to question the requirement, not to start configuring.

Key Takeaways

  • Next.js App Router + server components are now the boring default, not the bleeding edge
  • Tailwind v4, TanStack Query, React Hook Form + Zod cover most product needs
  • Mobile choice depends on platform integration depth, not ideology
  • Avoid custom build pipelines — the defaults are good enough
ZA

Zerguine Abdelbasset

PerceptronDev Team

More from Engineering