cffsadasdasdfasdfasd
Publicado el 26 de November, 20252 min de lectura

Quiero que soluciones el error de Next.js:
“Only plain objects can be passed to Client Components. Objects with toJSON methods are not supported.”
Este error ocurre porque mi página en src/app/page.tsx está enviando documentos Firestore directamente al componente cliente HomePageClient, y Firestore devuelve objetos no serializables como Timestamp.
Necesito que realices estos cambios EXACTOS:
✅ 1. Crear una función que convierta documentos Firestore a JSON seguro
Crea en src/lib/firestore.ts una función llamada:
export function serializeFirestoreDoc(doc: any) {
return {
...doc,
id: doc.id ?? "",
createdAt: doc.createdAt ? doc.createdAt.toDate().toISOString() : null,
updatedAt: doc.updatedAt ? doc.updatedAt.toDate().toISOString() : null,
};
}
Y úsala en todas las consultas para que:
convierta timestamps a strings
convierta el ID
elimine valores no serializables
✅ 2. Actualizar la función que obtiene artículos
En getAllArticles() modificar para que use la función de serialización:
export async function getAllArticles() {
const q = query(collection(db, "articles"));
const snapshot = await getDocs(q);
return snapshot.docs.map(d => serializeFirestoreDoc({ id: d.id, ...d.data() }));
}
✅ 3. Corregir src/app/page.tsx para que funcione como Server Component
Debe verse así:
import { getAllArticles } from "@/src/lib/firestore";
import HomePageClient from "@/src/components/site/HomePageClient";
export default async function Home() {
const allArticles = await getAllArticles();
return (
);
}
✅ 4. Asegurar que el componente cliente acepte datos serializados
En HomePageClient.tsx, indicar:
"use client";
export default function HomePageClient({ articles }) {
console.log("Articles ready:", articles);
return (...);
}
⚠️ IMPORTANTE
No elimines Firestore, no cambies Next.js a client page.
Solo aplica serialización antes de enviar los datos al cliente.
📌 OBJETIVO FINAL
que el home muestre los artículos desde Firestore
sin errores de serialización
sin romper el diseño
respetando mi estructura actual
Al final, dime exactamente qué archivos cambiaste y qué líneas fueron modificadas.
🚀 "Haz exactamente lo que te pedí, sin inventar ni modificar nada adicional."
