Fonctionnalité Next.js App Router avec Server Actions
Développez une fonctionnalité complète avec Next.js App Router : Server Actions, validation Zod, états de chargement et d’erreur, et tests. Conçu pour ChatGPT, Claude et Microsoft Copilot. Il comprend 5 variables personnalisables et vous pouvez le copier gratuitement en un clic.
Avancé · Code · En attente de relecture éditoriale
Prompt
Agis comme un ingénieur frontend senior spécialisé dans Next.js App Router, les React Server Components et TypeScript en mode strict.
Je dois implémenter la fonctionnalité « {{feature}} » dans une application Next.js {{next_version}}.
Couche de données : {{data_layer}}.
Authentification : {{auth}}.
Règles métier et champs du formulaire : {{rules}}.
Livre, dans cet ordre :
1. L’arborescence des fichiers dans `app/` et `lib/` (routes, `page.tsx`, `loading.tsx`, `error.tsx`, composants client et serveur), en expliquant ce qui est un Server Component, ce qui est un Client Component, et pourquoi.
2. Un schéma de validation Zod partagé entre le client et le serveur, avec des messages d’erreur compréhensibles pour l’utilisateur.
3. La Server Action complète (`'use server'`) : vérification de la session et des permissions, validation, écriture en base, `revalidatePath` ou `revalidateTag`, et un objet de réponse typé `{ ok, errors, message }`.
4. Le formulaire avec `useActionState` et `useFormStatus` (sous Next.js 14 avec React 18, utilise `useFormState` de `react-dom` à la place de `useActionState`) : erreurs par champ, bouton désactivé pendant l’envoi et focus placé sur le premier champ invalide.
5. La gestion des erreurs : erreurs attendues ou inattendues, ce qui est journalisé et ce que voit l’utilisateur.
6. Les tests : tests unitaires du schéma et de l’action (couche de données simulée) et un test de bout en bout Playwright pour le scénario nominal.
7. Une liste de contrôle de sécurité : CSRF, autorisation côté serveur, limites de taille des requêtes et données sensibles qui ne doivent jamais arriver côté client.
Contraintes :
- TypeScript strict, sans `any`.
- N’invente ni noms de tables ni variables d’environnement : utilise [À COMPLÉTER] s’il manque une information.
- Si tu manques d’informations pour une décision importante, pose-moi la question avant d’écrire du code.Comment l'utiliser
- Décrivez la fonctionnalité et les règles métier avec le plus de détails possible.
- Indiquez votre version de Next.js et la façon dont vous stockez les données (Prisma, Drizzle, Supabase…).
- Collez le prompt dans votre assistant et copiez les fichiers dans votre projet un par un.
- Lancez les tests et remplacez chaque marqueur [À COMPLÉTER] avant de déployer.
Exemple d'utilisation
Fonctionnalité : créer et modifier des réservations de salles de réunion · Next.js 15 · Couche de données : PostgreSQL avec Prisma · Authentification : Auth.js avec rôles administrateur et employé.
Exemple de résultat
3. Server Action app/bookings/actions.ts
Le schéma Zod se trouve dans lib/validation/booking.ts (un fichier 'use server' ne peut exporter que des fonctions asynchrones). Le nom du modèle Prisma booking est une hypothèse : [À COMPLÉTER] s'il diffère.
'use server';
import { revalidatePath } from 'next/cache';
import { auth } from '@/auth';
import { prisma } from '@/lib/prisma';
import { bookingSchema } from '@/lib/validation/booking';
export type ActionState = {
ok: boolean;
errors?: Partial<Record<'roomId' | 'start' | 'end', string[]>>;
message?: string;
};
export async function createBooking(_prev: ActionState, formData: FormData): Promise<ActionState> {
const session = await auth();
if (!session?.user?.id) return { ok: false, message: 'Connectez-vous pour réserver une salle.' };
const parsed = bookingSchema.safeParse(Object.fromEntries(formData));
if (!parsed.success) return { ok: false, errors: parsed.error.flatten().fieldErrors };
const { roomId, start, end } = parsed.data;
const overlap = await prisma.booking.findFirst({
where: { roomId, start: { lt: end }, end: { gt: start } },
});
if (overlap) return { ok: false, errors: { start: ['Cette salle est déjà réservée sur ce créneau.'] } };
await prisma.booking.create({ data: { roomId, start, end, userId: session.user.id } });
revalidatePath('/bookings');
return { ok: true, message: 'Réservation créée.' };
}
La session et le chevauchement sont toujours vérifiés côté serveur ; la validation côté client ne sert qu'à un retour rapide. En production, renforcez le contrôle avec une contrainte d'exclusion PostgreSQL…
Informations clés
- Catégorie
- Programmation et développement · Next.js
- Type de résultat
- Code
- Niveau
- Avancé
- Conçu pour
- ChatGPT, Claude et Microsoft Copilot
- Vérifié sur
- En attente de vérification éditoriale
- Variables
- Fonctionnalité, Version de Next.js, Couche de données, Authentification et Règles et champs
- Langue
- Français
- Prix
- Gratuit, sans inscription
- Mis à jour
- 07/11/2026
Questions fréquentes
Pourquoi utiliser des Server Actions plutôt qu’une route d’API ?
Pour les formulaires et les mutations internes à votre application, les Server Actions demandent moins de code, s’intègrent à la revalidation du cache et fonctionnent sans JavaScript côté client. Si des tiers consomment l’opération, une route d’API reste le meilleur choix.
La validation côté client suffit-elle ?
Non. La validation côté client améliore l’expérience, mais la Server Action doit valider à nouveau et vérifier les permissions, car n’importe qui peut l’appeler directement.
À quoi sert ce prompt ?
Développez une fonctionnalité complète avec Next.js App Router : Server Actions, validation Zod, états de chargement et d’erreur, et tests.
Avec quels outils d'IA fonctionne-t-il ?
Il est conçu pour ChatGPT, Claude et Microsoft Copilot. Nous ne l'avons pas encore vérifié sur ces outils ; les résultats peuvent donc varier de l'un à l'autre.
Comment personnaliser le prompt ?
Cliquez sur « Personnaliser » et remplissez les variables (Fonctionnalité, Version de Next.js, Couche de données, Authentification et Règles et champs). Le texte se met à jour instantanément et vous pouvez ensuite le copier en un clic. Les valeurs sont stockées uniquement dans votre navigateur.
Faut-il de l'expérience pour l'utiliser ?
Il est de niveau avancé : il s'adresse aux personnes expérimentées dans le domaine, capables d'évaluer et d'ajuster le résultat.
Ce prompt est-il gratuit ?
Oui. Tous les prompts de HomeCasa Prompts sont gratuits, sans inscription ni abonnement. Vous pouvez aussi les utiliser dans des projets professionnels.
Puis-je me fier au résultat de l'IA ?
Considérez-le comme un brouillon de qualité : vérifiez toujours les données, les chiffres et les affirmations importantes avant de publier ou de prendre des décisions.