Frontend development

Written by Olivér Haszpra

Frontend Development

A great product experience today is defined on the frontend: how fast it feels, how clear the flows are and how safely you can evolve it without breaking production. At CoreConsult we treat the frontend as a first‑class product surface, not a thin layer on top of “real” backend logic.

To keep this surface reliable we rely on end‑to‑end tests and CI/CD pipelines. Playwright exercises the critical user journeys the same way a real user would, while automation makes every deployment repeatable – which translates directly into fewer regressions and faster lead time from idea to production, and ultimately a better ROI on every feature we ship.

Frontend development illustration

TypeScript‑first: Next.js, React, Angular

Our primary stack is TypeScript, with a strong focus on Next.js and React, complemented by Angular where its ecosystem or structure makes more sense. In practice this means:

  • Next.js for modern React apps (SSR/SSG, app router, server components where they actually help)
  • React for highly interactive UIs and design‑system heavy dashboards
  • Angular where opinionated structure, DI and RxJS bring more value

We actively track new features in Next.js (routing, caching, server actions, RSC, turbopack, partial prerendering, etc.) and apply them where they give measurable benefits in performance, developer experience or infrastructure simplicity – not just because they are new.

Design systems, MUI and Tailwind

We like building coherent design systems instead of one‑off screens. On React projects that often means a combination of MUI and Tailwind CSS:

  • MUI for accessible, well‑tested components and layout primitives
  • Tailwind for fast iteration on spacing, typography and responsive behaviour
  • Custom component libraries where product branding or UX requires it

The result is a frontend that looks consistent, behaves predictably across breakpoints and can be evolved by multiple teams without visual regressions on every release.

State management that fits the problem

We do not force a single state‑management library on every project. Instead we pick tools that match the complexity of the application:

  • Lightweight local state with React hooks and context where that is enough
  • Libraries like Redux Toolkit, Zustand or NgRx when many screens share complex, long‑lived state
  • Data‑fetching helpers such as React Query or SWR for cache‑aware, resilient API access

This keeps the codebase understandable even years later and makes onboarding new developers faster.

Playwright e2e tests and CI/CD

For serious frontends we treat end‑to‑end tests as part of the product, not an optional nice‑to‑have. We use Playwright to cover critical flows (checkout, login, onboarding, back‑office workflows) and run them in CI/CD pipelines on every change. Where it makes sense, we complement this with tools like Vitest for focused unit and component tests – in a clearly supporting role next to e2e coverage and automation:

  • Cross‑browser checks (Chromium, WebKit, Firefox) where they matter
  • Visual and regression‑prone flows covered by stable test IDs, not fragile selectors
  • Test suites tuned to run quickly so they fit into everyday development, not just releases

This gives product teams confidence to iterate on UX, try experiments and ship more often without turning releases into a stressful event.

AI‑assisted frontend development

We actively use AI tools during development: generating test data, scaffolding components, reviewing tricky refactors and exploring alternative implementations. This is not about replacing engineers, but about leveraging AI to move faster while keeping human ownership of architecture and quality.

We are also preparing a dedicated article on how we use AI across the whole delivery pipeline – from design exploration to code review and automated testing. You will be able to read more about that in our AI in software development post once it is published.

Back to the posts