Skip to content

AppKit templates: 0.87.0 -> 0.91.3; drop the temporary security overrides - #303

Open
mikehelmick wants to merge 3 commits into
databricks:mainfrom
mikehelmick:deps/appkit-0.91.2
Open

mikehelmick wants to merge 3 commits into
databricks:mainfrom
mikehelmick:deps/appkit-0.91.2

Conversation

@mikehelmick

@mikehelmick mikehelmick commented Nov 9, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Moves the 10 AppKit templates from 0.87.0 to 0.91.3, which carries databricks/appkit#720 (0.91.2) and databricks/appkit#724 (0.91.3), and removes the temporary security overrides #299 added.

Templates: the six appkit-*, plus agentic-support-console, inventory-intelligence, rag-chat and vacation-rentals. content-moderator and saas-tracker are still on 0.40, because type generation needs their tables to exist first; #305 moves them.

Overrides

AppKit 0.91.3 pins the fixed versions itself: dompurify 3.4.17, zod 4.6.7, js-yaml 4.3.2 and OTel auto-instrumentations-node 0.81.2 (0.91.2), plus echarts 6.1.0, yaml 2.9.1 and express 4.22.3 (0.91.3). So:

  • Removed: dompurify, zod, js-yaml, @opentelemetry/propagator-jaeger.
  • @opentelemetry/core 2.8.0 → 2.12.0 (six appkit-* templates), matching AppKit's OTel set and its own scaffold. Left at 2.8.0, it would force an older core under OTel 2.12.
  • Kept systeminformation 5.33.16, which AppKit's scaffold also uses.

inventory-intelligence: keep npm packages external in the server build

This template's server build bundled every npm dependency (noExternal: /.*/). With the new OTel 2.12 set (since 0.91.2), the bundled CommonJS modules initialize out of order, and the app crashes on startup:

ReferenceError: Cannot access 'require_SemanticAttributes' before initialization

It now uses the same build as its sibling showcase apps (vacation-rentals, agentic-support-console, rag-chat): an unbundled server with node_modules packages kept external. The Apps runtime installs dependencies from package.json, so nothing needs to be bundled. I reproduced the crash locally, and with the change the server starts and gets as far as asking for DATABRICKS_WAREHOUSE_ID, as expected without bound resources.

Changes between 0.87 and 0.91.3

None are marked breaking. Most are internal: AppKit moved its analytics, files, genie, serving and Lakebase plumbing onto the modular @databricks/sdk-* clients. The rest are fixes: invalid/expired user tokens surface as IDENTITY_EXPIRED, MLflow traces export under a remote parent span, and the Lakebase user resolves without PGUSER.

Validation

--val-force-build (npm ci + build, AppKit typegen against the shared app's warehouse) 10/10 on 0.91.3
Deploy + serve on the shared template-e2e-test app 10/10 on 0.91.2 (inventory-intelligence re-run after the build fix), then again on 0.91.3 together with #304/#305 (12/12)
npm audit 0 critical / 0 high, as before; moderates 30 → 7 per template, with no overrides needed. All 7 are minimatch via the dev-only typescript-eslint; #304 clears them
Plain npm ci passes everywhere; lockfiles use only registry.npmjs.org URLs
validate_templates.py::test_validate_template[rag-chat] PASSED
validate_templates.py::test_validate_template[appkit-all-in-one] PASSED
validate_templates.py::test_validate_template[appkit-analytics] PASSED
validate_templates.py::test_validate_template[appkit-files] PASSED
validate_templates.py::test_validate_template[appkit-genie] PASSED
validate_templates.py::test_validate_template[appkit-lakebase] PASSED
validate_templates.py::test_validate_template[appkit-serving] PASSED
validate_templates.py::test_validate_template[agentic-support-console] PASSED
validate_templates.py::test_validate_template[inventory-intelligence] PASSED
validate_templates.py::test_validate_template[vacation-rentals] PASSED

Lockfiles were updated incrementally. The only packages newer than the repo's usual 7-day cooldown are @databricks/appkit and @databricks/appkit-ui 0.91.2/0.91.3 themselves. They're first-party and carry the security fixes this PR is for.

This pull request and its description were written by Isaac.

mikehelmick and others added 2 commits November 9, 2026 10:20
…ides

AppKit 0.91.2 ships the dependency fixes from databricks/appkit#720
(dompurify 3.4.17, zod 4.6.7, js-yaml 4.3.2, OTel auto-instrumentations
0.81.2), so the overrides added in databricks#299 for versions AppKit pinned are no
longer needed:
- removed: dompurify, zod, js-yaml, @opentelemetry/propagator-jaeger
- @opentelemetry/core override 2.8.0 -> 2.12.0 (six appkit-* templates),
  matching AppKit's OTel set and its own scaffold
- systeminformation 5.33.16 kept (matches the AppKit scaffold)

Ten templates: the six appkit-* plus agentic-support-console,
inventory-intelligence, rag-chat and vacation-rentals. content-moderator
and saas-tracker stay on 0.40 (typegen needs their tables first).

Lockfiles updated incrementally. npm audit stays 0 critical / 0 high and
moderates drop 30 -> 13 per template; plain npm ci passes.

Co-authored-by: Isaac <no-reply@databricks.com>
The server build bundled every npm dependency (noExternal: /.*/). With
AppKit 0.91.2 and its OTel 2.12 set, the bundled CommonJS modules
initialize out of order and the app crashes on startup:

  ReferenceError: Cannot access 'require_SemanticAttributes' before
  initialization

Use the same build as the sibling showcase apps (vacation-rentals,
agentic-support-console, rag-chat): unbundle the server and keep
node_modules packages external. The Apps runtime installs dependencies
from package.json, so nothing needs to be bundled.

Co-authored-by: Isaac <no-reply@databricks.com>
AppKit 0.91.3 bumps its echarts (6.1.0), yaml (2.9.1) and express (4.22.3,
qs 6.16.x) pins (databricks/appkit#724), clearing those moderate npm audit
findings without template overrides. The 7 moderates left per template are
all minimatch via the dev-only typescript-eslint.

Co-authored-by: Isaac <no-reply@databricks.com>
@mikehelmick mikehelmick changed the title AppKit templates: 0.87.0 -> 0.91.2; drop the temporary security overrides AppKit templates: 0.87.0 -> 0.91.3; drop the temporary security overrides Nov 10, 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