Vue or React: which should we choose?
Choose Vue when your team comes from a PHP or Laravel background, you want to use Inertia.js, or you find the template syntax more readable than JSX. Choose
React when you want Next.js, need a large React ecosystem, or may later move to React Native for mobile with shared components. Both work well for 90 per cent of projects; the context determines which fits best.
Is Vue future-proof? Is it still maintained?
Yes. Vue 3 is the current major version, with predictable release cycles and LTS versions. Pinia has officially succeeded Vuex, Vue Router is at version 4, and Nuxt 3 is a thorough rewrite. The Vue team works structurally with the maintainers of Vite, Vitest and Nuxt, so the whole ecosystem evolves in the same spirit. In the Netherlands, Vue is dominant among agencies, educational institutions and small and medium-sized businesses, which keeps the talent pool stable.
What exactly is Inertia.js, and when do you choose it?
Inertia.js connects Laravel (or another server-rendered backend) to Vue without you having to write a separate REST or GraphQL API. The Laravel controller passes props directly to Vue pages, Inertia handles navigation client-side like an SPA, and you keep the mental model of a traditional server-rendered application. We choose Inertia.js when one team maintains both front end and back end, and a separate API layer for a single consumer would be over-engineered.
What about SEO for a Vue site?
SEO with Vue is not a problem, provided you choose the right approach. For public pages that need to rank highly, we use Nuxt 3 with server-side rendering or static generation, which delivers full HTML that Google can index directly. We vary the approach per page type: prerendering for pages that rarely change, SSR for pages that change regularly, and client-side rendering for the logged-in dashboard. We advise against a pure client-side SPA for the public site, as first paint and consistency remain better with SSR.
Can you also migrate an existing Vue 2 application?
Yes. Vue 2 has been end-of-life since late 2023 and no longer receives security updates, so migrating is unavoidable at some point. We approach it incrementally: first to Vue 2.7 (which backports the Composition API), then the Vue 3 migration using the official Migration Build, which lets both versions run side by side. Vuex to Pinia and Options API to Composition API happen page by page, in the areas we're already touching anyway. No big-bang rewrite.
Which UI component library do you choose?
It depends on the project. PrimeVue for enterprise dashboards with lots of tables and complex forms. Naive UI or Headless UI for Vue plus Tailwind for projects where your brand look needs to be sharp. Vuetify when Material Design is your target aesthetic. Vueform for form-heavy applications such as quote flows. We almost always pair the chosen library with a custom design system layer, so components stay replaceable without touching the rest of the codebase.
How do you handle state management?
Pinia is the default. For server state we use TanStack Query (Vue version) or Nuxt 3's built-in data fetching, which handle caching, refetching and optimistic updates well. We no longer use Vuex for new projects. The guiding principle: keep global state to a minimum, and whatever state there is belongs in Pinia rather than scattered across composables.
Do you work together with our own developers?
Yes, we do this often. Some clients want us to build the Vue application entirely and then take over maintenance; others want co-development from day one so that their own team can eventually take over the codebase. In both setups we are productive, as long as we agree clearly in advance on code ownership, review protocols and handover. For stacks where we combine Vue with a Laravel backend, we also look at capacity through
hiring a full-stack developer, so that one person can cover both Vue and Laravel.
How do we handle authentication in a Vue application?
For client portals we often choose a hosted identity provider such as Auth0 for social logins, SAML and SSO. For privacy-sensitive sectors or on-premise requirements we deploy Keycloak. In Laravel + Inertia stacks we use Laravel Sanctum for session-based auth and Laravel Passport for token-based auth, with a composable on the Vue side that keeps the auth state in Pinia. We only build a custom JWT stack when there is a strong reason to, as authentication mistakes are costly.
What about accessibility and GDPR?
Accessibility is taken into account from day one: semantic HTML, ARIA where needed, focus management in client-side routing, and contrast checks against WCAG 2.2 AA. For B2B applications subject to public procurement or EN 301 549, we also deliver an accessibility report. GDPR compliance is standard: data stays within the EU (Cloudflare EU, Vercel EU regions or a dedicated EU cloud), privacy-by-design architecture, and a DPIA where relevant.
What determines the cost and the lead time?
The number and complexity of the screens, the number of roles and permissions, the depth of the integrations, and whether we also need to build a server layer or API. A bounded Vue portal with a single role is a different conversation from a Nuxt platform with multiple roles, SSR and three integrations. We work with fixed sprint budgets so that you stay in control of spending sprint by sprint, and we commit to a sprint cadence and clear milestones rather than a fixed figure that would do violence to the scope. In the first conversation we outline the scope together and give you an honest estimate.