Skip to content

Next.js in Barcelona

Next.js development for Barcelona companies

A Next.js development company working with Barcelona teams. Product companies rather than corporates, and a third language that turns internationalisation from a feature into a requirement.

Working day overlap
Six hours or so, the same as Madrid - two hours behind Ankara, with a day that runs later
Who buys here
Product companies, travel and mobility platforms, and venture-backed teams with their own engineers
What that changes
The engagement is a gap closed inside an existing team rather than a project handed over
Local specifics
Catalan is a third locale, which is where most two-language setups fall over

Barcelona buys more like Berlin than like Madrid. Product companies with their own engineers, travel and mobility platforms, venture-backed teams between their first and second serious engineering hires.

The engagement that works here is narrow: a specific thing the team already knows is wrong and has not had a free quarter to fix, closed inside their process rather than beside it.

The third language is where it breaks

This is the local specific, and it catches teams who thought they had already solved internationalisation.

Supporting two languages is a pair: a default and an alternative. Most implementations encode that assumption without anyone deciding to - a isDefault check here, a fallback to English there, a language switcher that renders one other option, a middleware that redirects anything unrecognised to the default.

Catalan makes it a set with no privileged member, and every one of those assumptions has to be revisited at once. The routing, the hreflang cluster, the switcher, and the fallback behaviour when a page exists in two of the three.

That last one is the decision that matters and it is usually never made explicitly. If a page has Spanish and English but no Catalan version yet, what does a Catalan visitor get? A 404 is honest and unhelpful. A silent fallback to Spanish is helpful and tells a crawler the page exists in Catalan when it does not, which is exactly the hreflang mistake that costs rankings. The answer we use is that the locale set is derived from what actually exists on disk, so a missing translation is simply absent from the cluster rather than falsely claimed.

How internationalised routing is structured is the decision to get right before the third language arrives, because retrofitting it means touching every route.

What usually needs doing

Beyond the language work, Barcelona applications arrive with a recognisable shape: built quickly and correctly for the stage they were at, then grown.

Everything has become dynamic. A use client added for one widget propagated upward until the whole tree is a client component. A cookie read in a shared layout opted every page out of static rendering. The bundle grew a library that is used on one route and shipped on all of them.

None of those are mistakes anybody made deliberately, and the fix is rarely a rewrite. It is moving the boundary back down to the component that actually needs it, route by route, with a measurement either side.

Commercially

Invoiced by Codefacture Yazılım A.Ş. in Türkiye, in euros, by bank transfer, with no Turkish VAT because exported services are exempt.

The country-level ground - consent enforcement, invoicing, the regional layer - is on the Spain market page.

The regulatory and commercial ground for this city is on the Spain market page.

Frequently asked questions

We already support Spanish and English. How hard is adding Catalan?
Harder than adding a third file, because two-locale setups usually hardcode the assumption of two. A default and an alternative is a different shape from a set with no privileged member: the routing, the hreflang cluster, the language switcher and the fallback behaviour all assumed a pair. Finding that out during the Catalan launch is the expensive version.
Does Catalan need a separate URL structure?
It needs the same structure the other locales have, which is the point. A language that lives behind a query parameter while the others have a path segment is treated as second-class by crawlers and usually by the application too - its pages get a weaker canonical and an incomplete hreflang cluster.
Can you work with our in-house engineers?
That is the usual arrangement here and the one that lasts. We work in your repository and your review process, with your engineers in the pull requests from week one rather than at handover.
Do you work in Spanish or Catalan?
The project runs in English. The interfaces we build are in whichever languages you serve, and getting a third one structurally equal to the first two is a specific piece of work we do rather than a translation task we hand off.
Call us+1 848 272 7583WhatsApp+90 850 308 5436Emailinfo@codefacture.comContact page