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.
