You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Oct 23, 2026. It is now read-only.
Repository navigation
This repository was archived by the owner on Oct 23, 2026. It is now read-only.
refactor: remove remaining Zod usage after valibot migration #1371
@BYK opened a first-pass draft PR for this: #1388.
wanted to flag two things before going further, since one is a behavior-adjacent call and the other affects how we scope the rest:
1. the valibot entrypoint forces an @sentry/api bump — which narrows the issue-status union. the ./valibot export only actually ships a file as of @sentry/api0.256.0 (0.253–0.255 advertise ./valibot in their exports map but ship no valibot.js). so removing @sentry/api/zod requires bumping ^0.253.0 → ^0.256.0. that bump narrows GetOrganizationIssueResponse["status"] and drops resolvedInNextRelease and muted, which tripped the ISSUE_STATUSESsatisfies drift-guard in types/sentry.ts.
in the PR i kept those two statuses (they're still emitted by the retrieve-issue endpoint and still rendered by the CLI via STATUS_ICONS/STATUS_LABELS/STATUS_COLORS) and relaxed the guard to a deliberate superset — no rendering change. but it's your call: keep the superset (my pick, zero UX regression), or strictly follow the narrowed SDK union and drop them from rendering?
2. the "remaining" zod is larger than the three bullets, and can't be split cleanly. there are actually ~18 files still importing zod, and two shared hubs make it effectively all-or-nothing:
lib/api/infrastructure.ts — schema?: z.ZodType<T> + .safeParse() is used by ~30 callsites; changing the type migrates them all at once.
lib/formatters/output.ts — extractSchemaFields reads zod internals for ~16 commands' --help/--fields docs; valibot's runtime shape differs and needs a rewrite.
the replay SDK validator was the only piece safe to migrate in isolation, so that (plus the unblocking dep bump) is what #1388 does. the rest is a bigger, coordinated change — happy to take it on in a follow-up once you confirm the status-union direction above. full breakdown is in the PR description.
Activity
MathurAditya724 commentedon Aug 6, 2026
Jared you should shift this issue to https://github.com/getsentry/sentry-api-schema repo
BYK commentedon Aug 6, 2026
@MathurAditya724 I'll work on the transition over at sentry-api-schema separately. This is to track the removal of Zod from the CLI itself.
BYK commentedon Aug 7, 2026
Jared, @sentry/api@0.256.0 is out now, check it out and see if we can switch to valibot completely
fix(containers): don't run operator turns against a half-prepped sand…
MathurAditya724 commentedon Aug 7, 2026
Can you pick this up and open a PR for it?
jared-outpost commentedon Aug 7, 2026
@BYK opened a first-pass draft PR for this: #1388.
wanted to flag two things before going further, since one is a behavior-adjacent call and the other affects how we scope the rest:
1. the valibot entrypoint forces an
@sentry/apibump — which narrows the issue-status union. the./valibotexport only actually ships a file as of@sentry/api0.256.0 (0.253–0.255 advertise./valibotin theirexportsmap but ship novalibot.js). so removing@sentry/api/zodrequires bumping^0.253.0 → ^0.256.0. that bump narrowsGetOrganizationIssueResponse["status"]and dropsresolvedInNextReleaseandmuted, which tripped theISSUE_STATUSESsatisfiesdrift-guard intypes/sentry.ts.in the PR i kept those two statuses (they're still emitted by the retrieve-issue endpoint and still rendered by the CLI via
STATUS_ICONS/STATUS_LABELS/STATUS_COLORS) and relaxed the guard to a deliberate superset — no rendering change. but it's your call: keep the superset (my pick, zero UX regression), or strictly follow the narrowed SDK union and drop them from rendering?2. the "remaining" zod is larger than the three bullets, and can't be split cleanly. there are actually ~18 files still importing zod, and two shared hubs make it effectively all-or-nothing:
lib/api/infrastructure.ts—schema?: z.ZodType<T>+.safeParse()is used by ~30 callsites; changing the type migrates them all at once.lib/formatters/output.ts—extractSchemaFieldsreads zod internals for ~16 commands'--help/--fieldsdocs; valibot's runtime shape differs and needs a rewrite.the replay SDK validator was the only piece safe to migrate in isolation, so that (plus the unblocking dep bump) is what #1388 does. the rest is a bigger, coordinated change — happy to take it on in a follow-up once you confirm the status-union direction above. full breakdown is in the PR description.
refactor(cli): migrate replay SDK validator from zod to valibot (#1388)
BYK commentedon Aug 7, 2026
Jared, first pass got merged. Let's finish this off
BYK commentedon Aug 7, 2026
JARED
BYK commentedon Aug 7, 2026
JARED DONALD DUNN, get the follow up PR. NOW.
MathurAditya724 commentedon Aug 7, 2026
Jared, finish the work which byk is talking about
refactor(cli): remove remaining zod usage, migrate to valibot
refactor(cli): remove remaining zod usage, migrate to valibot (#1389)