Importa desde el calendario del iPhone — tráelo todo de una vez
No deberías tener que teclear 200 eventos antiguos para cambiarte a FamilyBoard. Un toque los trae desde iOS Calendar — y los duplicados no pueden ocurrir.

Lo que más frena a la gente para cambiar de app de calendario no es aprender la nueva — es mover la antigua. La agenda de Mia con seis meses de antelación. Toda la temporada de fútbol de Lucía. Las citas con el dentista de agosto. Si tienes que reescribir 200 eventos a mano, no cambias. Te quedas en la app de la que ya estás harta.
Hoy cerramos ese hueco. Importar desde el calendario del iPhone ya está en FamilyBoard para iOS.
Qué es
Abre Ajustes → Sincronización de calendario → Importar desde el calendario del iPhone. Verás una lista de todos los calendarios que tu iPhone conoce — Apple iCloud, posiblemente Google vía el puente de Apple, posiblemente el Exchange del trabajo. Marca los que quieras leer (por defecto: todos excepto cumpleaños). Pulsa Importar.
En unos segundos tus eventos aparecen en FamilyBoard. No todo tu histórico — la ventana por defecto es 30 días atrás y 365 hacia adelante. Suficiente para que el calendario se sienta tuyo desde la primera apertura, sin tragarse cenas de cumpleaños de hace cinco años.
Lo importante — es idempotente
Ejecútalo dos veces y obtendrás cero duplicados. Diez veces en la misma semana — sigue sin haber duplicados. Usamos el iCal UID que cada evento lleva como clave única, le añadimos el prefijo ek- para saber que viene de EventKit, y comprobamos a nivel de base de datos si ese evento ya existe.
Suena trivial pero es en realidad la decisión más valiosa de toda la función. Significa que puedes volver a ejecutar el import un mes después para traer un nuevo turno de trabajo sin tener que borrar en pánico antes.
Cómo funciona
En el lado iOS usamos EventKit:
EKEventStore.requestFullAccessToEventspide el permiso. El permiso persiste hasta que lo revocas en Ajustes → Privacidad → Calendarios.predicateForEvents(withStart:end:calendars:)sobre la ventana, contra los calendarios que elegiste.- Por cada evento: comprobar si
events.ical_uid = 'ek-' || event.calendarItemIdentifierya existe. Sí — saltar. No — crear.
En el servidor (Supabase) hay un índice único sobre (family_id, ical_uid) así que el mismo evento no puede insertarse dos veces aunque dos clientes hagan el import a la vez.
¿Y en la dirección contraria?
La exportación — FamilyBoard → calendario del iPhone — lleva un tiempo funcionando. Esto significa que ahora es bidireccional. Puedes importar lo que ya tienes, seguir usando el calendario del iPhone en paralelo si quieres, y todo lo nuevo que añadas en FamilyBoard se escribe de vuelta.
Dos matices en la exportación: las RRULE simples (cada semana, todos los lunes) las reconstruimos; los patrones raros ("cada cuarto martes excepto festivos") se aplanan en eventos individuales. Mejor que se vea todo, antes que una interpretación de RRULE que diverja entre apps.
Decisiones a propósito
La ventana 30/365 no es configurable en v1. No queremos sorprender a los usuarios con una importación de varios minutos en su primera ejecución.
Sin calendarios compartidos de Apple en v1. Los calendarios a los que te han invitado no entran automáticamente.
No tocamos tu calendario del iPhone. El import es read-only desde el lado de Apple.
Pruébalo
Actualiza FamilyBoard vía TestFlight, abre Ajustes → Sincronización de calendario → Importar desde el calendario del iPhone. Da el permiso, elige calendarios, pulsa. Treinta segundos después ya te has mudado.
No es la función más brillante que hemos lanzado este año — pero es la que elimina la razón más común para no cambiar.