CSS natif en 2026 : pourquoi Tailwind n'est plus la seule option
Container queries, :has(), nesting natif, view transitions — le CSS de 2026 fait ce que JavaScript et Sass faisaient avant. Tour d'horizon des fonctionnalités qui changent la donne.

Pendant longtemps, le backend, c'était simple : un serveur quelque part (souvent aux US ou à Paris), et tous les utilisateurs du monde se connectaient à ce point unique. Si vous étiez à Tokyo et le serveur à Paris, tant pis pour la latence.
Puis est arrivé le CDN pour les fichiers statiques (images, CSS). C'était mieux. Maintenant, nous avons le Edge Computing : la possibilité d'exécuter du code dynamique directement sur le CDN, au plus près de l'utilisateur.
Voici comment Next.js et Vercel rendent cette technologie accessible, et pourquoi vous devriez vous y intéresser.
Imaginez une fonction JavaScript standard. Au lieu de l'héberger sur un seul serveur Node.js (Serverless "classique"), elle est déployée simultanément sur des centaines de serveurs à travers le monde.
Quand un utilisateur appelle cette fonction, c'est le serveur le plus proche géographiquement qui répond.
Contrairement au Serverless classique (AWS Lambda), les Edge Functions ont un démarrage à froid (cold start) quasi inexistant car elles utilisent souvent le V8 Engine (comme votre navigateur) au lieu d'un conteneur Node.js complet.
Avant de vous emballer, sachez qu'il y a des contraintes. Les Edge Functions (chez Vercel ou Cloudflare) n'exécutent pas Node.js complet.
Ce que vous NE POUVEZ PAS faire :
Ce que vous POUVEZ faire :
C'est l'usage le plus courant. Avant même que votre page ne soit rendue, vous pouvez intercepter la requête.
// middleware.ts
import { NextResponse } from 'next/server'
import type { NextRequest } from 'next/server'
export function middleware(request: NextRequest) {
const country = request.geo?.country || 'CH';
// Redirection basée sur la géolocalisation
if (country === 'FR' && !request.nextUrl.pathname.startsWith('/fr')) {
return NextResponse.redirect(new URL('/fr', request.url))
}
return NextResponse.next()
}
Ce code s'exécute à la volée, sans ralentir perceptiblement la requête.
Au lieu de faire clignoter la page côté client (flicker) pendant qu'un script JS décide quelle version afficher, faites le choix à la frontière (Edge).
// middleware.ts
import { NextResponse } from 'next/server'
import { getBucket } from '@utils/ab-testing' // votre logique de bucket
export function middleware(request: NextRequest) {
const cookie = request.cookies.get('bucket')?.value;
const bucket = cookie || getBucket();
// Réécrire l'URL en interne sans changer l'URL du navigateur
const response = NextResponse.rewrite(new URL(`/${bucket}`, request.url));
if (!cookie) {
response.cookies.set('bucket', bucket);
}
return response;
}
Le serveur renvoie directement la variante A ou B. Zéro impact sur les Core Web Vitals.
Vérifier un JWT (Json Web Token) à l'Edge est extrêmement rapide. Si le token est invalide, la requête est rejetée avant même d'atteindre votre serveur principal ou votre base de données.
Le plus gros problème du Edge Computing a longtemps été les données. Si votre code est à Tokyo mais votre base de données en Virginie, vous ne gagnez rien (le code doit traverser le pacifique pour chercher la donnée).
La solution : Distributed Data.
Voici comment implémenter un compteur de vues simple qui tourne entièrement à l'Edge avec Redis (via Upstash).
// app/api/views/[slug]/route.ts
import { Redis } from '@upstash/redis'
import { NextResponse } from 'next/server'
export const runtime = 'edge'; // Active le runtime Edge
const redis = Redis.fromEnv();
export async function POST(req: Request) {
const { slug } = await req.json();
// Incrémenter atomiquement
const views = await redis.incr(`pageviews:projects:${slug}`);
return NextResponse.json({ views });
}
Grâce à runtime: 'edge', cette API répondra en <50ms depuis n'importe où dans le monde (si Redis est bien configuré).
Si votre application a besoin d'une connexion lourde à une base de données SQL classique hébergée à un seul endroit, restez sur du Serverless classique (Node.js) déployé dans la même région que votre DB.
Faire Utilisateur (Tokyo) -> Edge (Tokyo) -> DB (Paris) -> Edge (Tokyo) -> Utilisateur (Tokyo) est plus lent que Utilisateur (Tokyo) -> Server (Paris) -> DB (Paris) -> Server (Paris) -> Utilisateur (Tokyo) à cause des multiples allers-retours (round-trips).
L'Edge Computing n'est pas une solution miracle qui remplace tout. C'est un outil puissant pour rapprocher la logique de l'utilisateur.
Commencez par l'utiliser pour :
Avec Next.js, c'est aussi simple que de changer une ligne de config : export const runtime = 'edge'. Pourquoi s'en priver ?
Besoin d'aide ?
Container queries, :has(), nesting natif, view transitions — le CSS de 2026 fait ce que JavaScript et Sass faisaient avant. Tour d'horizon des fonctionnalités qui changent la donne.
Les sites statiques appartiennent au passé. Découvrez comment les micro-interactions fluides avec Framer Motion augmentent l'engagement utilisateur et le taux de conversion.
Un site WordPress qui mettait 12 secondes à charger est passé à 1,8 seconde en corrigeant trois erreurs courantes. Voici lesquelles.