Repository navigation
Conversation
fjakobs
requested review from
MarioCadenas,
atilafassina and
ditadi
and removed request for
ditadi
November 3, 2026 11:16
fjakobs
commented
Nov 3, 2026
tsdown 0.23's rolldown keeps JSDoc in the JS output; set comments.jsdoc: false (the .d.ts files keep theirs). Published JS shrinks by about a quarter with identical code. Also move the package configs from the deprecated external/noExternal to deps.neverBundle/alwaysBundle, and drop skipNodeModulesBundle, which tsdown 0.23 ignores. Co-authored-by: Isaac <no-reply@databricks.com> Signed-off-by: Fabian Jakobs <fabian.jakobs@databricks.com>
exports() returned an inferred type whose extend() referenced itself, so the published declaration elided it to any. Annotate it with a ServerExport interface. Co-authored-by: Isaac <no-reply@databricks.com> Signed-off-by: Fabian Jakobs <fabian.jakobs@databricks.com>
Mirror the vite @databricks/appkit-ui alias in the client tsconfig, fix the type errors that surfaces (renamed chart props, nullable chart rows, the params fallback), and include the client in the playground check. Co-authored-by: Isaac <no-reply@databricks.com> Signed-off-by: Fabian Jakobs <fabian.jakobs@databricks.com>
Make apps/dev-playground/client a pnpm workspace member and drop the npm package-lock.json files of the client, dev-playground and clean-app, plus the cd client && npm install hook. The deploy script adds the hook back to the deployed copy, which Databricks Apps installs with npm. Root pnpm dev skips the client's unused standalone vite server. Co-authored-by: Isaac <no-reply@databricks.com> Signed-off-by: Fabian Jakobs <fabian.jakobs@databricks.com>
fjakobs
force-pushed
the
chore/typescript-7
branch
from
November 3, 2026 13:08
ac8c4b2 to
10fa1ff
Compare
Contributor
📦 Bundle size reportCompared against
|
| dist | raw | gzip |
|---|---|---|
| JS (runtime) | 982 KB (-308 KB) | 326 KB (-131 KB) |
| Type declarations | 465 KB (+1.4 KB) | 167 KB (-896 B) |
| Source maps | 2.5 MB (-23 KB) | 841 KB (-15 KB) |
| Other | 11 KB | 3.7 KB |
| Total | 3.9 MB (-330 KB) | 1.3 MB (-147 KB) |
Per-entry composition (own code — deps external (as shipped))
| Entry | Initial (gz) | Lazy (gz) | Total (gz) | node_modules (min) | Own code (min) |
|---|---|---|---|---|---|
. |
106 KB (+60 B) | 2.5 KB (+1 B) | 109 KB (+61 B) | external | 344 KB (+245 B) |
./beta |
103 KB (+23 B) | 648 B (+163 B) | 103 KB (+186 B) | external | 309 KB (+374 B) |
./testing |
45 KB | 32 KB (+59 B) | 77 KB (+59 B) | external | 224 KB (+222 B) |
./tsdown |
520 B | 0 B | 520 B | external | 813 B |
./type-generator |
26 KB (+40 B) | 0 B | 26 KB (+40 B) | external | 75 KB (+110 B) |
Chunks:
| Entry | Chunk | Load | Size (gz) |
|---|---|---|---|
. |
index.js |
initial | 101 KB |
. |
utils.js |
initial | 4.6 KB |
. |
remote-tunnel-manager.js |
lazy | 2.5 KB |
./beta |
beta.js |
initial | 82 KB |
./beta |
modular.js |
initial | 6.0 KB |
./beta |
stream-manager.js |
initial | 5.9 KB |
./beta |
service-context.js |
initial | 4.5 KB |
./beta |
databricks.js |
initial | 3.3 KB |
./beta |
client.js |
initial | 648 B |
./beta |
index.js |
initial | 20 B |
./beta |
index.js |
lazy | 281 B |
./beta |
supervisor-api.js |
lazy | 191 B |
./beta |
databricks.js |
lazy | 176 B |
./testing |
manifest.js |
initial | 32 KB |
./testing |
index.js |
initial | 10 KB |
./testing |
wide-event-emitter.js |
initial | 2.9 KB |
./testing |
index.js |
lazy | 28 KB |
./testing |
remote-tunnel-manager.js |
lazy | 2.5 KB |
./testing |
utils.js |
lazy | 1.8 KB |
./tsdown |
index.js |
initial | 520 B |
./type-generator |
index.js |
initial | 26 KB |
@databricks/appkit-ui
npm tarball (packed): 367 KB (-31 KB) — gzipped download (dist + bin; excludes release-only docs/NOTICE).
| dist | raw | gzip |
|---|---|---|
| JS (runtime) | 366 KB (-63 KB) | 119 KB (-28 KB) |
| Type declarations | 268 KB (+1.1 KB) | 97 KB (-1.4 KB) |
| Source maps | 828 KB (-25 KB) | 280 KB (-5.3 KB) |
| CSS | 16 KB | 3.2 KB |
| Total | 1.4 MB (-87 KB) | 499 KB (-35 KB) |
Per-entry composition (consumer bundle — deps bundled, peerDeps external)
| Entry | Initial (gz) | Lazy (gz) | Total (gz) | node_modules (min) | Own code (min) |
|---|---|---|---|---|---|
./js |
5.3 KB (-2 B) | 49 KB | 55 KB (-2 B) | 208 KB | 14 KB (-8 B) |
./js/beta |
2.1 KB (+4 B) | 0 B | 2.1 KB (+4 B) | 0 B | 5.0 KB (+10 B) |
./react |
433 KB (+43 B) | 49 KB | 481 KB (+43 B) | 1.3 MB | 177 KB (+1 B) |
./react/beta |
4.9 KB (+9 B) | 0 B | 4.9 KB (+9 B) | 0 B | 12 KB (+19 B) |
Chunks:
| Entry | Chunk | Load | Size (gz) |
|---|---|---|---|
./js |
index.js |
initial | 5.2 KB |
./js |
chunk |
initial | 120 B |
./js |
apache-arrow |
lazy | 49 KB |
./js/beta |
beta.js |
initial | 2.1 KB |
./react |
index.js |
initial | 431 KB |
./react |
tslib |
initial | 2.1 KB |
./react |
apache-arrow |
lazy | 49 KB |
./react/beta |
beta.js |
initial | 4.9 KB |
Contributor
🤖 AppKit PR bot🔬 Run evalsStart an eval for this PR from the evals-monitor app: Go to Evals Monitor → 📦 Try this PR's app templateScaffolds a new app from this PR's SDK build. Run it in any folder (requires the GitHub CLI — gh run download 41643594434 -R databricks/appkit -n appkit-template-0.89.0-pr.aec5206-chore-typescript-7-701 -D appkit-pr-701 \
&& unzip -o "appkit-pr-701/appkit-template-0.89.0-pr.aec5206-chore-typescript-7-701.zip" -d "appkit-pr-701" \
&& databricks apps init --template "appkit-pr-701"The template pins |
…atch tsdown 0.23.2 ships rolldown-plugin-dts 0.29, whose tsgo generator emits declarations through the TypeScript Go API and honors the tsconfig rootDir, so the 0.28.8 patch is no longer needed. That API (getDeclarationEmit) exists only in TypeScript 7.1, so the package configs select the tsgo generator with tsgo.moduleUrl pointing at a pinned 7.1.0-beta. It lives in the private tools/typescript-next workspace package so its tsc bin doesn't replace the workspace's TypeScript 7.0.2, which tsc, typecheck and tests keep using. dev-playground now declares typescript itself, so tsdown's typescript peer can't resolve to the beta. The emitted .d.ts and JS match the patched 0.23.1 build apart from the region-comment format. Co-authored-by: Isaac <no-reply@databricks.com> Signed-off-by: Fabian Jakobs <fabian.jakobs@databricks.com>
This branch has not been deployed
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.
Stacked on #694 (base:
victor-ditadi_data/typescript-7). Merge #694 first. This PR was originally a full TypeScript 7 migration; I rebuilt it on top of #694 and kept only what #694 doesn't do.Changes
rolldown-plugin-dtspatch. tsdown 0.23.2 shipsrolldown-plugin-dts0.29. Itstsgogenerator emits declarations through the TypeScript Go API and honors the tsconfig'srootDir, which is what the patch fixed in 0.28.8..d.tsemit. That API (getDeclarationEmit) exists only in TypeScript 7.1, and 7.0.2 lacks it. The package configs selectgenerator: "tsgo"and pointtsgo.moduleUrlat a pinnedtypescript@7.1.0-beta. Everything else (tsc, typecheck, tests) stays on 7.0.2.tools/typescript-nextworkspace package. As a root dependency, itstscbin replaced 7.0.2's innode_modules/.bin.typescript7.0.2 itself, so tsdown's optionaltypescriptpeer can't auto-resolve to the beta..d.ts/JS files, the output matches chore: build and typecheck with TypeScript 7 #694's patched 0.23.1 build apart from the format of rolldown's region comments.outputOptions: { comments: { jsdoc: false } }. Legal comments and@__PURE__annotations stay, and the.d.tsfiles keep their JSDoc, so IDE hover docs are unchanged.depsoptions. The package configs move from the deprecatedexternal/noExternaltodeps.neverBundle/deps.alwaysBundle, which removes the deprecation warnings from the build. shared also dropsskipNodeModulesBundle, which tsdown 0.23 ignores.appkitServerConfigstill emitsexternal, so apps scaffolded with tsdown 0.20 keep externalizingnode_modules.fix(appkit): type the server plugin'sexports(). The inferred return type references itself throughextend(), so the published.d.tselides it toany, onmainand on chore: build and typecheck with TypeScript 7 #694. An explicitServerExportinterface fixes that.fix(playground): typecheck the client.@databricks/appkit-uialias. Without it, the client had 114 type errors.smooth,showSymbol,showLabelsandshowArea, nullable chart rows, and the{}params fallback.check, which chore: build and typecheck with TypeScript 7 #694 runs in CI, now covers the client too.chore(playground): install the client with pnpm.apps/dev-playground/clientis a pnpm workspace member.package-lock.jsonof the client, dev-playground and clean-app, and thecd client && npm installhook.deploy-playground.tsadds the hook back to the deployed copy, because Databricks Apps installs that copy with npm.pnpm devskips the client's standalone Vite server, which the playground doesn't use.viteand its plugins torolldown-vite7.1.14.Size
@databricks/appkitJS shrinks from 1,648,138 to 1,260,871 B raw (−24%) and from 586,659 to 419,159 B gzipped (−29%).@databricks/appkit-uishrinks from 766,818 to 632,548 B raw (−18%). The code is unchanged: with comments stripped, the output is within about 0.4% ofmain. On this branch,shared/sql/helpers.jsdrops from 16 KB to 8 KB, with all 22@exampleblocks still in its.d.ts.@tanstack/table-corewith appkit-ui instead of bundling two.Test plan
pnpm buildwith tsdown 0.23.2: no patch, no deprecation warnings, attw/publint clean, and every package emits types with TypeScript Go.pnpm docs:buildtsc -vis 7.0.2 in the root and every workspace except docs (5.6.3) andtools/typescript-nextpnpm typecheck,pnpm --filter=dev-playground check(server and client),typecheck:databasepnpm check,pnpm knip,check:licensespnpm test: 5,898 testspnpm build. Clientlintreports the same 12 pre-existing errors as chore: build and typecheck with TypeScript 7 #694; it isn't run in CI.main.This pull request and its description were written by Isaac.