Astro 6 Architektur: Islands, Server Islands & Content Layer API im Detail
Technischer Deep-Dive in Astro 6: Islands Architecture, Server Islands für dynamische Inhalte, die neue Content Layer API und View Transitions mit ClientRouter.
Rechtliches & Info
Was sich mit Tailwind CSS 4 wirklich ändert: CSS-first Konfiguration mit @theme, der Oxide Compiler, Container Queries, color-mix() und die Migration von v3.
Tailwind CSS 4 ist kein inkrementelles Update — es ist ein kompletter Architektur-Wechsel. Die tailwind.config.js ist weitgehend abgelöst. Die Konfiguration findet jetzt direkt im CSS statt. Der Compiler ist neu geschrieben. Und mehrere Browser-Features, die bisher Polyfills erforderten, sind jetzt nativ eingebaut. Dieser Artikel erklärt, was das konkret bedeutet und wie die Migration von v3 aussieht.
In Tailwind CSS 3 lebten alle Design-Token in tailwind.config.js:
// v3 — JavaScript-Konfiguration
module.exports = {
theme: {
extend: {
colors: {
primary: { 500: '#0072BB' },
},
},
},
};
In Tailwind CSS 4 definiert man Design-Token direkt im CSS mit der neuen @theme-Direktive:
/* global.css — v4 */
@import 'tailwindcss';
@theme {
--color-primary-500: #0072BB;
--color-primary-600: #004C91;
--color-primary-700: #003d74;
--font-family-heading: 'Inter', sans-serif;
--spacing-section: 5rem;
--radius-card: 0.75rem;
}
Diese CSS Custom Properties sind nach der @theme-Deklaration als Tailwind-Utilities verfügbar — text-primary-500, bg-primary-600, rounded-card funktionieren automatisch. Das bedeutet: kein Build-Schritt, kein tailwind.config.js, keine Umwandlung von Tokens in Utility-Klassen — alles ist zur Laufzeit native CSS.
Wichtig: @theme-Variablen sind nicht dasselbe wie :root-Variablen. Sie werden von Tailwind verarbeitet und erzeugen Utility-Klassen. :root-Variablen sind reguläre CSS Custom Properties, die nur per var() referenziert werden können.
Für Design Tokens, die in Komponenten via var() genutzt werden UND als Tailwind-Utilities verfügbar sein sollen, definiert man sie in @theme und referenziert sie mit dem gleichen Namen:
@theme {
--color-brand: #0072BB;
}
/* Nutzung als var() */
.logo { color: var(--color-brand); }
/* Nutzung als Utility-Klasse */
/* <div class="text-brand"> funktioniert */
Tailwind CSS 4 nutzt einen neu geschriebenen Compiler (intern “Oxide” genannt), der mit Rust implementiert ist. Die Auswirkungen auf den Entwicklungsalltag:
content-Array in der Konfiguration mehr nötig.Für Astro-Projekte mit dem @tailwindcss/vite-Plugin:
// astro.config.mjs
import tailwindcss from '@tailwindcss/vite';
export default defineConfig({
vite: {
plugins: [tailwindcss()],
},
});
/* global.css — ein einziger Import reicht */
@import 'tailwindcss';
Tailwind CSS 4 unterstützt Container Queries ohne Plugin. Die entsprechenden Utilities sind eingebaut:
<!-- Container definieren -->
<div class="@container">
<!-- Responsiv zum Container, nicht zum Viewport -->
<div class="grid grid-cols-1 @md:grid-cols-2 @xl:grid-cols-3">
<!-- ... -->
</div>
</div>
Container Query Breakpoints folgen derselben Naming-Konvention wie Viewport Breakpoints: @sm, @md, @lg, @xl, @2xl. Custom Container Breakpoints lassen sich in @theme definieren:
@theme {
--container-card: 28rem;
}
Damit steht @card: als Utility-Prefix zur Verfügung.
Container Queries lösen ein grundlegendes Problem: Eine Karte, die in einer 3-Spalten-Grid verwendet wird, ist schmaler als dieselbe Karte auf einer Single-Column-Seite. Mit Media Queries muss man das Breakpoint-Verhalten für jeden Kontext separat definieren. Mit Container Queries definiert die Karte ihr eigenes responsives Verhalten — unabhängig vom Viewport.
<!-- Dieselbe Komponente funktioniert korrekt in jedem Layout -->
<div class="@container rounded-card p-4 bg-white shadow-sm">
<img class="w-full @lg:w-1/3 @lg:float-right @lg:ml-4" src="..." alt="..." />
<h2 class="text-base @md:text-lg font-semibold">Titel</h2>
<p class="text-sm @md:text-base text-gray-600">Beschreibung</p>
</div>
Tailwind CSS 4 integriert die CSS-native color-mix()-Funktion für Farbmodifikationen. Das ermöglicht transparente Varianten ohne separate Token-Definitionen:
/* Transparenz über color-mix() */
.overlay {
background-color: color-mix(in srgb, var(--color-primary-600) 20%, transparent);
}
Als Tailwind-Utility:
<!-- 20% Deckkraft des primären Blaus -->
<div class="bg-primary-600/20">...</div>
Die /-Syntax für Opacity-Modifier ist in Tailwind 4 direkt an color-mix() gebunden — es gibt keine separaten -transparent-Varianten mehr.
Mehrere Tailwind-v3-Utilities verhalten sich in v4 anders oder wurden umbenannt:
| v3 | v4 | Änderung |
|---|---|---|
bg-opacity-50 | bg-primary/50 | Opacity-Modifier direkt |
ring-offset-* | entfernt | Ring-Offset-Utilities gestrichen |
flex-shrink-0 | shrink-0 | Kurzform |
overflow-ellipsis | text-ellipsis | Umbenannt |
transform | automatisch | Kein explizites transform mehr nötig |
Die Migration ist gut dokumentiert unter tailwindcss.com/docs/upgrade-guide. Ein automatisches Codemod steht bereit:
npx @tailwindcss/upgrade@next
Da Tailwind 4 zusammen mit Vite 7 deployed wird, gibt es Build-Inkompatibilitäten mit bestimmten Patch-Versionen. Für stabile Astro-Projekte empfiehlt sich ein explizites Version-Pinning in package.json:
{
"overrides": {
"vite": "^7.3.2"
},
"devDependencies": {
"tailwindcss": "4.2.2",
"@tailwindcss/vite": "4.2.2"
}
}
Tailwind 4.2.4 mit Vite 8 (Rolldown-Bundler) kann zu Build-Fehlern wie Missing field 'tsconfigPaths' führen — bis die Kompatibilität offiziell bestätigt ist, bleibt man bei den genannten Versionen.
npx @tailwindcss/upgrade@next — migriert automatisch ~80% der Änderungen@theme-Block im CSS überführennpm run build und auf Utility-Klassen achten, die umbenannt wurdenring, bg-opacity, shadowTailwind CSS 4 macht das Framework deutlich weniger abhängig von JavaScript-Konfiguration und näher an nativen CSS-Workflows. Die wichtigsten Gewinne: schnellere Builds, eingebaute Container Queries und ein Token-System, das direkt im CSS lebt.
Weiterführende Artikel auf Wender Media Wissen:
Sie planen eine Migration auf Tailwind CSS 4 oder einen Neubau auf modernem Stack? Wender Media berät Sie technisch und umsetzt — info@wendermedia.info.
Wender Media unterstützt Sie bei der praktischen Umsetzung — von der technischen Konzeption bis zum Launch. Schreiben Sie uns, wir antworten innerhalb von 24 Stunden.
Jetzt Beratung anfragenKostenlos & unverbindlich — info@wendermedia.info
Technischer Deep-Dive in Astro 6: Islands Architecture, Server Islands für dynamische Inhalte, die neue Content Layer API und View Transitions mit ClientRouter.
TypeScript strict vollständig in Astro-Projekten nutzen: das strict-Flag, der satisfies-Operator, typsichere Props mit Generics und das Typsystem der Content Collections.
Die Atomic Design Methodik konsequent in Astro umsetzen: Hierarchie-Regeln, Import-Grenzen, Slot-Komposition und häufige Fallstricke beim Aufbau eines Komponentensystems.