Repository navigation
Conversation
database({ routes }) mounts the generated registry under
/api/database/operations/<name>; without routes the plugin serves no
HTTP endpoint. The table routes, the api and crudRoutes options, the
entity client and hooks, and their HTTP facets are removed.
The playground, template, and docs move to named operations. The
playground writes a note and its event in one transaction, and only
the author may change or delete the note.
Signed-off-by: ditadi <victordperd@gmail.com>
ditadi
added this pull request to stack #693
October 23, 2026 15:01
Contributor
📦 Bundle size reportCompared against
|
| dist | raw | gzip |
|---|---|---|
| JS (runtime) | 1.3 MB (+20 KB) | 467 KB (+9.2 KB) |
| Type declarations | 476 KB (+13 KB) | 172 KB (+4.1 KB) |
| Source maps | 2.6 MB (+58 KB) | 877 KB (+21 KB) |
| Other | 11 KB | 3.7 KB |
| Total | 4.3 MB (+91 KB) | 1.5 MB (+34 KB) |
Per-entry composition (own code — deps external (as shipped))
| Entry | Initial (gz) | Lazy (gz) | Total (gz) | node_modules (min) | Own code (min) |
|---|---|---|---|---|---|
. |
111 KB (+4.7 KB) | 2.5 KB | 113 KB (+4.7 KB) | external | 357 KB (+14 KB) |
./beta |
104 KB (+1.2 KB) | 485 B | 104 KB (+1.2 KB) | external | 310 KB (+1.6 KB) |
./testing |
45 KB (+312 B) | 37 KB (+4.4 KB) | 82 KB (+4.7 KB) | external | 237 KB (+14 KB) |
./tsdown |
520 B | 0 B | 520 B | external | 813 B |
./type-generator |
30 KB (+4.2 KB) | 0 B | 30 KB (+4.2 KB) | external | 86 KB (+12 KB) |
Chunks:
| Entry | Chunk | Load | Size (gz) |
|---|---|---|---|
. |
index.js |
initial | 106 KB |
. |
utils.js |
initial | 4.6 KB |
. |
remote-tunnel-manager.js |
lazy | 2.5 KB |
./beta |
beta.js |
initial | 84 KB |
./beta |
modular.js |
initial | 6.0 KB |
./beta |
stream-manager.js |
initial | 5.9 KB |
./beta |
service-context.js |
initial | 4.2 KB |
./beta |
databricks.js |
initial | 3.3 KB |
./beta |
client.js |
initial | 647 B |
./beta |
index.js |
initial | 20 B |
./beta |
supervisor-api.js |
lazy | 192 B |
./beta |
databricks.js |
lazy | 178 B |
./beta |
index.js |
lazy | 115 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 | 32 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 | 30 KB |
@databricks/appkit-ui
npm tarball (packed): 377 KB (-21 KB) — gzipped download (dist + bin; excludes release-only docs/NOTICE).
| dist | raw | gzip |
|---|---|---|
| JS (runtime) | 416 KB (-12 KB) | 141 KB (-5.3 KB) |
| Type declarations | 243 KB (-24 KB) | 90 KB (-8.8 KB) |
| Source maps | 813 KB (-40 KB) | 271 KB (-15 KB) |
| CSS | 16 KB | 3.2 KB |
| Total | 1.5 MB (-77 KB) | 505 KB (-29 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 | 49 KB | 55 KB | 208 KB | 14 KB |
./js/beta |
2.4 KB (+264 B) | 0 B | 2.4 KB (+264 B) | 0 B | 5.2 KB (+159 B) |
./react |
433 KB | 49 KB | 481 KB | 1.3 MB | 177 KB |
./react/beta |
3.6 KB (-1.2 KB) | 0 B | 3.6 KB (-1.2 KB) | 0 B | 8.4 KB (-4.0 KB) |
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.4 KB |
./react |
index.js |
initial | 431 KB |
./react |
tslib |
initial | 2.1 KB |
./react |
apache-arrow |
lazy | 49 KB |
./react/beta |
beta.js |
initial | 3.6 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 39974632132 -R databricks/appkit -n appkit-template-0.89.0-pr.d7dce6d-stack-database-stable-06-serve-operations-692 -D appkit-pr-692 \
&& unzip -o "appkit-pr-692/appkit-template-0.89.0-pr.d7dce6d-stack-database-stable-06-serve-operations-692.zip" -d "appkit-pr-692" \
&& databricks apps init --template "appkit-pr-692"The template pins |
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.
What did you change, and why?
Why: Generated table routes are a second path around operation authorization, so authored operations must be the only HTTP surface.
Change:
database({ routes: databaseRoutes })mounts the generated registry at/api/database/operations/<name>. Withoutroutes, the plugin serves no HTTP endpoint.apioption, thecrudRoutescheck, the entity client and hooks, the CRUD HTTP facets, and theDatabricksAppKitDatabaseRegistryglobal, with no compatibility layer.routes. Beta apps that use AutoCRUD or the entity hooks break by design.Interface
Removed, with no compatibility layer:
database({ api })withDatabaseApiConfig,DatabaseApiWriteOperation, andDatabaseApiWritesConfig, and the AutoCRUD routes under/api/database/<table>.databaseApi.list,get,create,update, andremove, anduseDatabaseList,useDatabaseRecord,useDatabaseCreate,useDatabaseUpdate,useDatabaseDelete, andinvalidateDatabaseReads.DatabricksAppKitDatabaseRegistryglobal that the entity hooks read.How do you know it works?
Testing:
operations.integration.test.tsdrivescreateAppover real HTTP with a fake workspace and an in-memory database (15 tests). Removed routes answer 404, authentication precedes body parsing, policies and transactions hold, and no sentinel reaches spans or logs.pnpm testpasses (309 files, 5808 tests, 1 skipped).pnpm build && pnpm docs:build,pnpm check && pnpm -r typecheck,typecheck:database, and the source-less bundle check pass. A Playwright run of the built playground with fake identity and database edges created a note (201), refreshed the list (200), wrote nothing on a forced failure (500), refused a non-author (403), and admitted the author (200). Live Databricks Apps identity and Lakebase are not verified, and the template's--runsmoke runs in CI only.Stack created with GitHub Stacks CLI • Give Feedback 💬