Skip to content

Revisa Zustand completo y reduce deuda P2 - #10

Merged
cursor[bot] merged 1 commit into
mainfrom
docs/review-p2-zustand-01
Sep 8, 2026
Merged

Revisa Zustand completo y reduce deuda P2#10
cursor[bot] merged 1 commit into
mainfrom
docs/review-p2-zustand-01

Conversation

@IagoPL

@IagoPL IagoPL commented Sep 8, 2026

Copy link
Copy Markdown
Owner

Objetivo

Cerrar la deuda P2 del manual Zustand y alinearlo con las APIs actuales (línea 5.x): create, selectores con Object.is, useShallow, persist, middleware, stores scoped y testing.

Capítulos

Capítulo Problema anterior Mejora
01 Introducción Plantilla + ejemplo genérico + duplicado Store hook, client vs server state, useState/Context/Zustand/RTK sin “siempre mejor”
02 Stores básicos Idem create/set/get, merge superficial, nested spread, TS currificado
03 Selectores Idem No suscribirse al store entero; objeto anónimo en v5; useShallow puntual; estado derivado
04 Persistencia Idem persist, createJSONStorage, partialize, version/migrate; no secretos; hidratación/skipHydration
05 Middleware Idem devtools, subscribeWithSelector, immer opcional, orden + TS
06 React Idem Hook sin Provider; createStore + Context cuando hace falta; RSC/SSR
07 Arquitectura Idem Archivo / feature / slices; no mega-store; acciones de dominio; vs RTK
08 Testing Idem getInitialState + reset; RTL; mock oficial resumido; persist sin overtesting

Zustand moderno

  • import { create } from 'zustand' (sin default export).
  • Selectores específicos; useShallow desde zustand/react/shallow cuando el selector fabrica un objeto.
  • persist + partialize; localStorage no es seguridad.
  • Middleware ≠ cadena Redux; DevTools ≠ usar Redux.
  • createStore + useStore + Context para instancias/SSR.
  • Slices en el store combinado; middleware solo fuera.
  • Tests: store real + reset; no mockear el hook como primera opción.

Zustand vs Redux

Complementarios. Zustand: poco boilerplate, uno o varios stores, client state. RTK: convenciones, un store + slices, ecosistema, RTK Query. Zustand no se presenta como “RTK Query más simple”.

Server state

No se enseña fetch + loading + caché + invalidación en Zustand. La combinación razonable es librería de server-state + Zustand para UI/carrito/prefs.

Auditoría

Métrica Antes (#9 en main) Después
P0 0 0
P1 0 0
P2 87 79
P3 655 663
generic_template 79 71
generic_example 71 63
duplicated_code 87 79
very_short 196 196
high_freshness_risk 141 141
known_outdated_pattern 0 0
Este capitulo profundiza 79 71
Zustand P2 8 0
Zustand P2: 8 → 0
P2 global: 87 → 79

Los 8 capítulos quedan en P3, sin generic_template, generic_example ni duplicated_code. Informes solo con npm run docs:audit.

Fuentes

Validación

Local, todo OK:

npm ci
npm run docs:audit
npm run docs:build
CI_VALIDATE_LINKS=true npm run docs:build
npm run docs:report

Alcance

Solo Zustand 01–08 y reports. No se tocan Delta Lake, Iceberg, Transformers ni el resto de P2.

No fusionar esta PR. El siguiente lote recomendado es Delta Lake (luego Iceberg).

Open in Web Open in Cursor 

Co-authored-by: Iago Prieto Lamas <IagoPL@users.noreply.github.com>
@cursor
cursor Bot merged commit e2bebba into main Sep 8, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants