Skip to content

refactor(appkit): remove database hooks and read serializers - #687

Open
ditadi wants to merge 1 commit into
mainfrom
stack/database-stable/01-remove-hooks
Open

ditadi wants to merge 1 commit into
mainfrom
stack/database-stable/01-remove-hooks

Conversation

@ditadi

@ditadi ditadi commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

What did you change, and why?

Why: Explicit operation executors will own business behavior and response mapping. Remove the unused database lifecycle and serializer extension points first, without a compatibility layer.

Change:

  • Removes entity mutation hooks, serialize, their public types, and hook-only mutation frames.
  • Removes serialized<T>(), shape, and caller-selected row overrides. React database read and write hooks remain schema-typed.
  • Preserves explicit transaction joins, predicates, limits, expiry, safe JSON encoding, and public-column projection. The hooks field is removed without runtime compatibility checks or migration warnings.
  • Removes the playground hook and redactor demo and regenerates the API docs.
  • Safe to deploy alone: it adds no routes, changes no exposure settings, and adds no feature flag or legacy callback path.

How do you know it works?

Testing: The database plugin, database, and appkit-ui client and hook suites pass (48 files, 777 tests). Added regressions cover joined and mixed transaction budgets, Promise rejection, nested joins, no-match continuation, and early response-size termination. A real local Express request confirmed the omission of a private field, and Playwright confirmed that the playground page renders without the removed demo. These checks did not use a live Lakebase database.

Stack

#683 → #687 → #688 → #689 → #690 → #691 → #692

Design: #683. Previous layer: #683. Next layer: #688.

Restacked onto the updated design without changing this layer's implementation patch.


Stack created with GitHub Stacks CLI • Give Feedback 💬

@ditadi
ditadi added this pull request to stack #693 October 23, 2026 15:01
@github-actions

github-actions Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

📦 Bundle size report

Compared against bundle-size-baseline.json (main).

@databricks/appkit

npm tarball (packed): 1.2 MB (-7.4 KB) — gzipped download (dist + bin; excludes release-only docs/NOTICE).

dist raw gzip
JS (runtime) 1.3 MB (-7.9 KB) 457 KB (-2.0 KB)
Type declarations 461 KB (-3.8 KB) 167 KB (-1.5 KB)
Source maps 2.5 MB (-18 KB) 854 KB (-4.5 KB)
Other 11 KB 3.7 KB
Total 4.2 MB (-29 KB) 1.4 MB (-8.0 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 (-1 B) 2.5 KB (-1 B) 109 KB (-2 B) external 344 KB
./beta 102 KB (-1.0 KB) 482 B 103 KB (-1.0 KB) external 306 KB (-3.7 KB)
./testing 45 KB (-1 B) 32 KB (+2 B) 77 KB (+1 B) external 223 KB
./tsdown 520 B 0 B 520 B external 813 B
./type-generator 26 KB 0 B 26 KB external 74 KB

Chunks:

Entry Chunk Load Size (gz)
. index.js initial 102 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.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 176 B
./beta index.js lazy 114 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): 395 KB (-2.7 KB) — gzipped download (dist + bin; excludes release-only docs/NOTICE).

dist raw gzip
JS (runtime) 427 KB (-1.9 KB) 146 KB (-774 B)
Type declarations 265 KB (-1.8 KB) 98 KB (-740 B)
Source maps 848 KB (-4.7 KB) 284 KB (-1.6 KB)
CSS 16 KB 3.2 KB
Total 1.5 MB (-8.3 KB) 531 KB (-3.0 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.1 KB 0 B 2.1 KB 0 B 5.0 KB
./react 433 KB 49 KB 481 KB 1.3 MB 177 KB
./react/beta 4.7 KB (-199 B) 0 B 4.7 KB (-199 B) 0 B 12 KB (-561 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.7 KB

@github-actions

github-actions Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

🤖 AppKit PR bot

🔬 Run evals

Start an eval for this PR from the evals-monitor app: Go to Evals Monitor →

📦 Try this PR's app template

Scaffolds a new app from this PR's SDK build. Run it in any folder (requires the GitHub CLI — gh auth login — and the Databricks CLI):

gh run download 42205551334 -R databricks/appkit -n appkit-template-0.90.0-pr.e565e8d-stack-database-stable-01-remove-hooks-687 -D appkit-pr-687 \
  && unzip -o "appkit-pr-687/appkit-template-0.90.0-pr.e565e8d-stack-database-stable-01-remove-hooks-687.zip" -d "appkit-pr-687" \
  && databricks apps init --template "appkit-pr-687"

The template pins @databricks/appkit and @databricks/appkit-ui to tarballs built from this branch, so the scaffolded app runs against this PR's code.

@ditadi
ditadi marked this pull request as ready for review October 26, 2026 02:03
@ditadi
ditadi requested a review from a team as a code owner October 26, 2026 02:03
@ditadi
ditadi requested a review from calvarjorge October 26, 2026 02:03
@ditadi
ditadi force-pushed the stack/database-stable/01-remove-hooks branch from 11e18d3 to fa6ff70 Compare October 26, 2026 10:41
@ditadi
ditadi requested a review from MarioCadenas October 26, 2026 16:31
@ditadi
ditadi removed the request for review from calvarjorge November 3, 2026 13:55
@ditadi
ditadi removed this pull request from stack #693 November 3, 2026 15:18
@ditadi
ditadi force-pushed the stack/database-stable/01-remove-hooks branch from fa6ff70 to 613520e Compare November 3, 2026 15:18
@ditadi
ditadi changed the base branch from main to victor-ditadi_data/stack/database-route-blocks-00-design November 3, 2026 15:19
@ditadi
ditadi added this pull request to stack #704 November 3, 2026 15:19
@ditadi
ditadi force-pushed the stack/database-stable/01-remove-hooks branch from 613520e to 7e8af2c Compare November 4, 2026 19:15
@ditadi
ditadi force-pushed the stack/database-stable/01-remove-hooks branch from 7e8af2c to 3bd1b74 Compare November 4, 2026 20:06
Base automatically changed from victor-ditadi_data/stack/database-route-blocks-00-design to main November 6, 2026 10:48
Remove entity lifecycle callbacks and serializer-only client APIs.
Keep explicit transactions and the schema-derived HTTP contract.

Database hooks and serialize are removed from the hidden database plugin.
Database read hooks no longer accept shape or caller-selected row overrides.
The plugin is not publicly exposed yet, so this is not a public breaking change.

Signed-off-by: ditadi <victordperd@gmail.com>
@ditadi
ditadi force-pushed the stack/database-stable/01-remove-hooks branch from 3bd1b74 to ad3f3ec Compare November 6, 2026 10:49

This branch has not been deployed

No deployments
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