feat: migrate xpenser to TypeScript 7.0.2#75
Merged
Conversation
andrewzolotukhin
marked this pull request as ready for review
July 17, 2026 10:13
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Original request
Implement issue #74 through the repository PR workflow, include TypeScript 6 versus TypeScript 7 build-time comparisons in a blog post, and apply SEO guidance to that post.
Summary
Closes #74.
Migrates the xpenser monorepo from TypeScript 6.0.3 to 7.0.2 and enables Next.js's TypeScript CLI integration.
What changed
baseUrland obsolete deprecation configuration16.3.0-preview.6and enableexperimental.useTypeScriptClitsc --emitDeclarationOnlybuilds@next/third-partiesGTM integration with an equivalent localnext/scriptcomponent because the preview's peer range is not yet accepted by that packagenpm ciReasoning
TypeScript 7 no longer exposes the legacy compiler API path used by tsup's declaration bundler. JavaScript bundling remains in tsup, while the compiler now owns declaration emit. The Next preview is pinned and overridden at the root so every consumer resolves one version while the ecosystem's peer ranges catch up. The override uses the literal preview version so both the repository's npm 11 toolchain and the Node 22 deployment image's npm 10.9.8 can install it.
Blog post
/blog/typescript-7-migrationTypeScript 7 migrationTypeScript 7 build performance,TypeScript monorepo migration,TypeScript 7 native compiler,TypeScript 6 vs TypeScript 7The article links this PR, describes the compatibility changes, publishes all measured samples, and distinguishes compiler-only performance from full production build performance.
Methodology: same committed source and build configuration, disposable TypeScript 6 control, one excluded warm-up, five alternating measured trials, non-incremental compiler checks, generated output removed before each full build, and Turbo caches disabled. Every sample—including the shared round-four outlier—is published in the post.
Validation
npm cinpx --yes npm@10.9.8 install --ignore-scripts— deployment-version reproductionnpm run lintnpm run typechecknpm test— 95 files, 520 testsScreenshots / Preview
Preview: https://xpenser-pr-075.cleverbrush.com/blog/typescript-7-migration
Manual browser validation confirmed two semantic benchmark tables, responsive table scrolling without page-level overflow, title/description/Open Graph metadata, PR and internal links, blog-index navigation, and no page or console errors. The targeted Playwright article scenario also passes locally against this deployed preview.
Desktop and mobile screenshots were captured during manual QA. The stable final GitHub Actions run contains the passing Playwright report artifact for the deployed preview.
SigNoz received API and web traffic from both preview services. The only error spans were external Brandfetch
429rate limits produced by vendor-enrichment E2E activity; there were no web error spans.Checklist