Why framework choice is not a minor technical detail
When a client commissions a showcase website, the first technical decision is the framework choice. It is, in a sense, the foundation of the building: invisible to the visitor walking through the pages, but decisive for solidity, lifespan and the ability to extend the site over time.
In 2026, options abound: WordPress, Webflow, Next.js, Astro, SvelteKit and a dozen others. Nuxt.js has been retained as the primary tool for professional showcase projects. The reasons outlined below rest on daily use, not on a marketing argument.
Nuxt.js in thirty seconds
Nuxt.js is a framework built on Vue.js. Vue.js is a JavaScript library used to construct interactive web interfaces. Nuxt adds on top the elements a showcase site needs: server-side rendering (SSR) for SEO, automatic page routing, meta tag management, and build-time performance optimisation.
In short: Vue.js is the engine, Nuxt is the complete vehicle, ready to drive.
The technical reasons that make the difference
Server-side rendering (SSR) for top-tier SEO
The problem with classic JavaScript applications (raw React, raw Vue.js): content is generated in the visitor's browser. When Googlebot crawls the site, it sees a nearly empty page as long as the JavaScript has not executed and generated the HTML. The operation can take several seconds, sometimes too long for indexing robots.
Nuxt solves this natively. The complete HTML is generated on the server before being sent to the browser. Google accesses the full content, tags and structure directly.
- Immediate and reliable indexation by search engines
- Meta tags, Open Graph and Schema.org structured data rendered server-side
- No reliance on pre-rendering or a workaround solution
Loading performance that satisfies Google and visitors
A properly configured Nuxt.js site reaches a Google Lighthouse score of 95 and above on desktop, and 85 and above on mobile. The mechanisms behind this:
- Automatic code splitting: each page loads only the JavaScript it requires, not the whole bundle
- Smart prefetching: Nuxt preloads linked pages when the visitor hovers over a link, before the click
- Asset optimisation: images, CSS and JavaScript are optimised automatically at build time
- Absence of dead code: unlike a WordPress site running many plugins, no unused JavaScript is loaded
In practice, a Nuxt showcase site loads in under one second on a decent 4G connection. My own site (jondelweb.com) loads in approximately 0.6 seconds.
A component architecture for maintainability and consistency
Every site element, header, footer, service card, contact form, CTA button, is a reusable, independent component. The concrete consequences:
- Modifying the header once propagates the change to every page automatically
- A "button" component retains the same style everywhere, without visual inconsistency
- Each component can be tested in isolation
- Components from one project can be reused on the next
Automatic routing: one URL, one file
Under Nuxt, the structure of the pages/ folder maps directly to the URL structure:
pages/
index.vue -> /
about.vue -> /about
contact.vue -> /contact
projects/
index.vue -> /projects
[slug].vue -> /projects/my-project
No router configuration file needs to be maintained. Creating a file creates the URL. Renaming the file modifies the URL. The mechanism is deliberately simple.
Built-in multi-language support
For a bilingual French and English site, the @nuxtjs/i18n module handles the full scope:
- Language-prefixed URLs (
/en/about,/a-propos) - Automatic hreflang tags so Google serves the right language version
- Automatic detection of the browser language
- Language switching without page reload
- Language-specific SEO: distinct meta title and description per version
Under WordPress, the same functionality requires a premium plugin such as WPML (39 euros per year minimum) and several hours of configuration. Under Nuxt, the feature is native and free.
An ecosystem of official, maintained modules
- @nuxt/ui: ready-to-use components (buttons, modals, forms) built on Tailwind CSS
- @nuxtjs/sitemap: automatic sitemap.xml generation for SEO
- @nuxt/image: automatic image optimisation (resizing, WebP format, lazy loading)
- @nuxtjs/robots: robots.txt configuration
Each module is maintained by the Nuxt team or by the official community. The dependencies do not rest on an isolated developer liable to abandon their project.
Flexible deployment aligned with needs and budget
A Nuxt site can be deployed in several ways:
- Node.js server: full SSR, the most flexible setup for dynamic sites
- Static: pre-rendered at build time, free hosting available on Netlify or Vercel
- Hybrid mode: some pages in SSR, others static, depending on needs
The hosting cost of a static Nuxt site can fall to zero euros per month. Vercel and Netlify offer a free tier largely sufficient for a showcase site.
Nuxt.js compared to alternatives
Nuxt.js against WordPress for a professional showcase site
| Criterion | Nuxt.js | WordPress |
|---|---|---|
| Performance | Under 1 second | 2 to 6 seconds |
| SEO | Native and excellent | Decent with plugins |
| Security | High | Average (target of attacks) |
| Content management | Code or headless CMS | Accomplished native back-office |
| Customisation | Unlimited | Limited by themes and plugins |
| Maintenance cost | Low | Medium to high |
WordPress retains a clear advantage for non-technical content management. Nuxt leads on every other criterion.
Nuxt.js against Next.js (React)
| Criterion | Nuxt.js (Vue) | Next.js (React) |
|---|---|---|
| Learning curve | Gentler | Steeper |
| Developer experience | Excellent | Excellent |
| Performance | Comparable | Comparable |
| Ecosystem | Solid, growing | Massive (React dominates the market) |
| Convention vs configuration | More conventions | More freedom |
Both frameworks are of equivalent quality. Next.js carries a larger ecosystem. Nuxt.js offers a smoother developer experience and a more gradual learning curve, which justifies its choice as the primary tool here.
Nuxt.js against Astro
| Criterion | Nuxt.js | Astro |
|---|---|---|
| Interactivity | Excellent (comparable to an SPA) | Minimal by default |
| SSR | Native | Supported, not central |
| Complex applications | Yes | Oriented towards static content |
| Static performance | Excellent | Slightly superior (zero JS by default) |
Astro is excellent for a pure blog or an entirely static site. Nuxt regains the advantage as soon as significant interactivity is required: forms, animations, dynamic components, client portal.
Project types where Nuxt.js is relevant
- Professional showcase websites: performance, SEO and multi-language are native
- Creator or agency portfolios: reusable components, dynamic routing for projects
- Web applications when a showcase site evolves into a business tool (CRM, dashboard, client portal)
- Multilingual sites: first-class i18n without a third-party plugin
Project types where Nuxt.js is not suitable
- Blogs with daily publishing: a CMS like WordPress or a static generator (Hugo, Astro) remains better suited when the client publishes on their own every day
- Budget under 1,000 euros. Custom development has an incompressible minimum cost
- Client entirely autonomous on content. Integrating a headless CMS (Strapi, Sanity, Notion as back-office) remains possible, at the cost of added complexity
Typical Nuxt.js stack for a showcase site
For readers interested in the technical detail, the stack used on showcase projects:
Framework: Nuxt 4 (Vue.js 3)
UI: @nuxt/ui (Tailwind CSS under the hood)
SEO: useSeoMeta() + @nuxtjs/sitemap + Schema.org JSON-LD
i18n: @nuxtjs/i18n (FR/EN)
Fonts: Google Fonts (Inter) with preconnect
Analytics: GTM + GA4 with Consent Mode v2 (GDPR)
Hosting: Node.js (SSR) or Vercel/Netlify (static)
Versioning: Git
This stack powers my own site (jondelweb.com). Lighthouse desktop score: 95 and above. It is also the stack offered to clients when custom development matches their need.
A showcase website project to scope? Get in touch. Guidance will be grounded in the real need, including when Nuxt is not the right answer.

