Skip to content

[PF-2031] Upgrade TypeScript to 5.5 and align davinci tooling#4963

Draft
dulishkovych wants to merge 1 commit into
masterfrom
pf-2031-fresh-replica
Draft

[PF-2031] Upgrade TypeScript to 5.5 and align davinci tooling#4963
dulishkovych wants to merge 1 commit into
masterfrom
pf-2031-fresh-replica

Conversation

@dulishkovych
Copy link
Copy Markdown
Contributor

@dulishkovych dulishkovych commented May 15, 2026

Summary

  • Bumps TypeScript from ~4.7.0 to ~5.5.0 across root + 10 publishable packages.
  • Pulls lint / test / codegen infrastructure from the TS-5.5 alpha builds of davinci (syntax@24, engine@14, qa@19, ci@8, code@3 — all from toptal/davinci#2677, commit f29e7d47). These are alphas because the corresponding stable releases on master only carry the pnpm-migration majors, not the TS 5.5 patches.
  • Bumps @babel/preset-typescript to ^7.26.0 (required by davinci-engine@14).

Note: This PR supersedes #4952. Squashed onto a fresh branch from master after extensive investigation into the alpha-publish failures on the previous branch (see #4952 for full history). All review comments from #4952 should be re-raised here.

Public type changes

  • OverridableComponent<P> in @toptal/picasso-shared gains a second call signature — <R = unknown>(props: P & RefAttributes<R>) => JSX.Element | null — so forwardRef<R, P>(...) assigns cleanly under TS 5.x's stricter assignability when P has required fields. Additive only; existing as-prop callers unaffected.
  • BarChartIndicators (@toptal/picasso-charts) exports typed BarSeriesItem / RenderIndicatorParams in place of the previous any-typed render-prop.
  • BarChart.valueAxisTickFormatter is typed as (value: string | number, index: number) => string.
  • composeValidators (@toptal/picasso-forms) is now generic over TValue so downstream inference propagates.

Internal type cleanups (no public API impact)

Resolve any regressions surfaced by @typescript-eslint v8 in: picasso-codemod, picasso-shared, Tagselector, Container, Menu, PromptModal, List, Select, TreeView, NumberInput. OverviewBlock, Page, Breadcrumbs, Button, ButtonAction, ButtonBase, ButtonCircular, MenuItem, Link, and SidebarItem compile cleanly without source changes once OverridableComponent gains its forwardRef-compatible overload.

Two anys are retained with eslint-disable and inline rationale — both are at React ChangeEvent variance boundaries (fire-on-change-event.onChange, Field.children) where a principled type can't be derived from the runtime contract.

Test plan

  • pnpm tsc:all — 0 errors
  • pnpm lint — 0 errors (184 warnings, same as master baseline)
  • pnpm test:unit — 307 suites / 1292 tests / 274 snapshots pass
  • Alpha publish — succeeds (verified)
  • pnpm test:integration (Happo + Cypress) — needs CI
  • Verify storybook builds clean — needs CI

Follow-up

Once toptal/davinci#2677 merges and the alpha tags promote to stable, swap the five pinned alpha versions in root package.json to caret stable ranges (^24.0.0, etc.).

Alpha packages

Manually trigger the publish.yml workflow to publish alpha packages. Specify pull request number as a parameter (only digits, e.g. 123).

PR Review Guidelines

When to approve? ✅

You are OK with merging this PR and

  1. You have no extra requests.
  2. You have optional requests.
    1. Add nit: to your comment. (ex. nit: I'd rename this variable from makeCircle to getCircle)

When to request changes? ❌

You are not OK with merging this PR because

  1. Something is broken after the changes.
  2. Acceptance criteria is not reached.
  3. Code is dirty.

When to comment (neither ✅ nor ❌)

You want your comments to be addressed before merging this PR in cases like:

  1. There are leftovers like unnecessary logs, comments, etc.
  2. You have an opinionated comment regarding the code that requires a discussion.
  3. You have questions.

How to handle the comments?

  1. An owner of a comment is the only one who can resolve it.
  2. An owner of a comment must resolve it when it's addressed.
  3. A PR owner must reply with ✅ when a comment is addressed.

… test

Squashes all of #4952's changes onto a fresh branch from master to test
whether a clean branch state publishes alpha packages successfully despite
the structural project-graph cycle being present. The cycle-breaker hint
on picasso-tailwind-merge is deliberately omitted to mirror the failing
state of commit 8c7a7fd.

This branch is meant to be discarded after the experiment.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented May 15, 2026

🦋 Changeset detected

Latest commit: d147f30

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 87 packages
Name Type
@toptal/picasso Major
@toptal/picasso-charts Major
@toptal/picasso-codemod Major
@toptal/picasso-forms Major
@toptal/picasso-pictograms Major
@toptal/picasso-provider Major
@toptal/picasso-query-builder Major
@toptal/picasso-rich-text-editor Major
@toptal/picasso-shared Major
@topkit/analytics-charts Major
@toptal/picasso-container Patch
@toptal/picasso-list Patch
@toptal/picasso-menu Patch
@toptal/picasso-prompt-modal Patch
@toptal/picasso-select Patch
@toptal/picasso-tagselector Patch
@toptal/picasso-tree-view Patch
@toptal/picasso-accordion Patch
@toptal/picasso-alert Patch
@toptal/picasso-autocomplete Patch
@toptal/picasso-breadcrumbs Patch
@toptal/picasso-button Patch
@toptal/picasso-calendar Patch
@toptal/picasso-checkbox Patch
@toptal/picasso-drawer Patch
@toptal/picasso-dropdown Patch
@toptal/picasso-environment-banner Patch
@toptal/picasso-form Patch
@toptal/picasso-grid Major
@toptal/picasso-icons Patch
@toptal/picasso-link Patch
@toptal/picasso-loader Patch
@toptal/picasso-modal Patch
@toptal/picasso-notification Patch
@toptal/picasso-page Patch
@toptal/picasso-paper Patch
@toptal/picasso-popper Patch
@toptal/picasso-radio Patch
@toptal/picasso-slider Patch
@toptal/picasso-step Patch
@toptal/picasso-switch Patch
@toptal/picasso-table Patch
@toptal/picasso-tabs Patch
@toptal/picasso-tag Patch
@toptal/picasso-tooltip Patch
@toptal/picasso-typography Patch
@toptal/picasso-utils Patch
@toptal/picasso-avatar Patch
@toptal/picasso-avatar-upload Patch
@toptal/picasso-badge Patch
@toptal/picasso-carousel Patch
@toptal/picasso-file-input Patch
@toptal/picasso-form-label Patch
@toptal/picasso-form-layout Patch
@toptal/picasso-input Patch
@toptal/picasso-input-adornment Patch
@toptal/picasso-number-input Patch
@toptal/picasso-outlined-input Patch
@toptal/picasso-overview-block Patch
@toptal/picasso-skeleton-loader Patch
@toptal/picasso-test-utils Patch
@toptal/picasso-timeline Patch
@toptal/picasso-account-select Patch
@toptal/picasso-application-update-notification Patch
@toptal/picasso-date-picker Patch
@toptal/picasso-dropzone Patch
@toptal/picasso-empty-state Patch
@toptal/picasso-helpbox Patch
@toptal/picasso-note Patch
@toptal/picasso-pagination Patch
@toptal/picasso-quote Patch
@toptal/picasso-rating Patch
@toptal/picasso-section Patch
@toptal/picasso-user-badge Patch
@toptal/picasso-date-select Patch
@toptal/picasso-password-input Patch
@toptal/picasso-show-more Patch
@toptal/picasso-timepicker Patch
@toptal/picasso-tailwind-merge Patch
@toptal/picasso-amount Patch
@toptal/picasso-backdrop Patch
@toptal/picasso-collapse Patch
@toptal/picasso-fade Patch
@toptal/picasso-slide Patch
@toptal/picasso-typography-overflow Patch
@toptal/picasso-image Patch
@toptal/picasso-logo Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@github-actions
Copy link
Copy Markdown
Contributor

🎉 Alpha packages are ready!

PR: #4963
Triggered by: @dulishkovych
Workflow run: 25911916048

Installation commands:
pnpm add @toptal/picasso-tailwind@4.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-modal-context@1.0.2-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-shared@15.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/base-tailwind@2.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-typography@5.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-container@3.1.5-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-link@4.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-tooltip@2.0.6-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-loader@3.0.6-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-icons@1.15.3-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-popper@2.0.3-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-paper@4.0.6-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-input-adornment@4.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-typography-overflow@4.0.7-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-grid@5.0.20-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-outlined-input@5.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-tag@5.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-list@5.0.22-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-input@5.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-logo@2.0.19-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-image@3.0.6-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-collapse@3.0.5-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-avatar@7.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-timepicker@5.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-fade@1.0.10-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-user-badge@5.1.23-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-menu@4.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-backdrop@2.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-dropdown@5.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-avatar-upload@4.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-alert@4.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-rating@3.0.21-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-form-layout@1.0.4-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-badge@4.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-tabs@7.0.2-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-form@7.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-account-select@4.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-slider@5.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-form-label@1.0.5-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-select@5.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-number-input@5.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-radio@5.0.23-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-autocomplete@6.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-checkbox@5.0.24-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-switch@5.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-tagselector@4.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-button@5.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-date-select@2.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-timeline@5.0.9-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-file-input@5.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-modal@4.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-calendar@5.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-dropzone@5.0.35-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-prompt-modal@3.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-date-picker@4.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-accordion@4.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-password-input@5.1.14-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-skeleton-loader@1.0.70-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-helpbox@6.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-show-more@3.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-page@6.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-table@4.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-section@6.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-tree-view@3.0.46-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-carousel@4.0.34-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-pagination@5.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-step@4.0.20-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-empty-state@2.0.24-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-note@4.0.8-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-overview-block@5.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-slide@1.0.5-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-environment-banner@3.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-amount@1.0.13-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-drawer@3.0.46-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-breadcrumbs@3.0.21-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-quote@2.0.10-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso@54.1.6-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-utils@4.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-tailwind-merge@2.0.5-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-charts@59.0.7-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-notification@5.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-pictograms@5.5.2-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-provider@5.0.3-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-test-utils@2.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-application-update-notification@2.0.45-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @topkit/analytics-charts@56.0.11-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-forms@74.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-query-builder@8.0.36-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-rich-text-editor@18.0.1-alpha-pf-2031-fresh-replica-d147f309b.0
pnpm add @toptal/picasso-codemod@6.0.1-alpha-pf-2031-fresh-replica-d147f309b.0

These alpha packages were built from the latest commit in this PR.

@github-actions
Copy link
Copy Markdown
Contributor

📖 Storybook Preview

🚀 Your Storybook preview is ready: View Storybook

📍 Preview URL: https://toptal.github.io/picasso/prs/4963/

This preview is updated automatically when you push changes to this PR.

github-actions Bot added a commit that referenced this pull request May 15, 2026
@dulishkovych dulishkovych changed the title [PF-2031] TypeScript 5.5 upgrade — fresh replica (cycle hypothesis test, DRAFT, do not merge) [PF-2031] Upgrade TypeScript to 5.5 and align davinci tooling May 15, 2026
@dulishkovych dulishkovych self-assigned this May 15, 2026
@dulishkovych dulishkovych force-pushed the pf-2031-fresh-replica branch from 03b35ee to d147f30 Compare May 15, 2026 10:43
@github-actions
Copy link
Copy Markdown
Contributor

📖 Storybook Preview

🚀 Your Storybook preview is ready: View Storybook

📍 Preview URL: https://toptal.github.io/picasso/prs/4963/

This preview is updated automatically when you push changes to this PR.

github-actions Bot added a commit that referenced this pull request May 15, 2026
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.

1 participant