Skip to content

[WIP] Streaming Data Plugin - #943

Draft
KetanReddy wants to merge 1 commit into
mainfrom
feature/streaming-data-plugin
Draft

[WIP] Streaming Data Plugin#943
KetanReddy wants to merge 1 commit into
mainfrom
feature/streaming-data-plugin

Conversation

@KetanReddy

@KetanReddy KetanReddy commented Aug 27, 2026

Copy link
Copy Markdown
Member

TBA

Change Type (required)

Indicate the type of change your pull request is:

  • patch
  • minor
  • major
  • N/A

Does your PR have any documentation updates?

  • Updated docs
  • No Update needed
  • Unable to update docs

Release Notes

TBD

📦 Published PR as canary version: 1.2.0--canary.943.42384

Try this version out locally by upgrading relevant packages to 1.2.0--canary.943.42384

@KetanReddy KetanReddy added the minor Increment the minor version when merged label Aug 27, 2026
@KetanReddy KetanReddy changed the title Initial pass at data streaming plugin [WIP] Streaming Data Plugin Aug 27, 2026
@intuit-svc

intuit-svc commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

Comparison against baseline from main. ⚠️ = regression (>10% slower), ✅ = improvement (>5% faster)

core/player ⚠️

Benchmark Current Baseline Change
core/player/src/binding/__tests__/parser.bench.ts > parser benchmarks > Resolving binding: foo.bar 834.63K ops/s 685.50K ops/s +21.8% ✅
core/player/src/binding/__tests__/parser.bench.ts > parser benchmarks > Resolving binding: foo.pets.1.name 549.00K ops/s 531.74K ops/s +3.2%
core/player/src/binding/__tests__/parser.bench.ts > parser benchmarks > Resolving binding: foo.pets.01.name 529.57K ops/s 513.60K ops/s +3.1%
core/player/src/binding/__tests__/parser.bench.ts > parser benchmarks > Resolving binding: foo.pets['01'].name 458.50K ops/s 505.58K ops/s -9.3%
core/player/src/binding/__tests__/parser.bench.ts > parser benchmarks > Resolving binding: foo.pets[01].name 509.36K ops/s 557.98K ops/s -8.7%
core/player/src/binding/__tests__/parser.bench.ts > parser benchmarks > Resolving binding: foo.pets[name = "frodo"].type 311.60K ops/s 299.55K ops/s +4.0%
core/player/src/binding/__tests__/parser.bench.ts > parser benchmarks > Resolving binding: foo.pets["name" = "sprinkles"].type 222.28K ops/s 224.17K ops/s -0.8%
core/player/src/binding/__tests__/parser.bench.ts > parser benchmarks > Resolving binding: foo.pets["isDog" = false].type 303.36K ops/s 296.97K ops/s +2.1%
core/player/src/binding/__tests__/parser.bench.ts > parser benchmarks > Resolving binding: foo.pets["isDog" = true].type 313.62K ops/s 297.39K ops/s +5.5% ✅
core/player/src/binding/__tests__/parser.bench.ts > binding creation benchmarks > Resolving binding: foo.bar 581.42K ops/s 618.33K ops/s -6.0%
core/player/src/binding/__tests__/parser.bench.ts > binding creation benchmarks > Resolving binding: foo.pets.1.name 390.72K ops/s 406.40K ops/s -3.9%
core/player/src/binding/__tests__/parser.bench.ts > binding creation benchmarks > Resolving binding: foo.pets.01.name 375.33K ops/s 391.53K ops/s -4.1%
core/player/src/binding/__tests__/parser.bench.ts > binding creation benchmarks > Resolving binding: foo.pets['01'].name 348.13K ops/s 361.80K ops/s -3.8%
core/player/src/binding/__tests__/parser.bench.ts > binding creation benchmarks > Resolving binding: foo.pets[01].name 363.41K ops/s 397.68K ops/s -8.6%
core/player/src/binding/__tests__/parser.bench.ts > binding creation benchmarks > Resolving binding: foo.pets[name = "frodo"].type 237.96K ops/s 244.99K ops/s -2.9%
core/player/src/binding/__tests__/parser.bench.ts > binding creation benchmarks > Resolving binding: foo.pets["name" = "sprinkles"].type 196.19K ops/s 199.48K ops/s -1.6%
core/player/src/binding/__tests__/parser.bench.ts > binding creation benchmarks > Resolving binding: foo.pets["isDog" = false].type 231.77K ops/s 247.03K ops/s -6.2%
core/player/src/binding/__tests__/parser.bench.ts > binding creation benchmarks > Resolving binding: foo.pets["isDog" = true].type 245.57K ops/s 252.99K ops/s -2.9%
core/player/src/expressions/__tests__/performance.bench.ts > Expression Parsing/Execution Benchmark > Parsing: {{foo}} = 1 + 3 (sync) 466.92K ops/s 465.87K ops/s +0.2%
core/player/src/expressions/__tests__/performance.bench.ts > Expression Parsing/Execution Benchmark > Parsing: {{foo}} = 1 + 3 (async) 375.52K ops/s 373.39K ops/s +0.6%
core/player/src/expressions/__tests__/performance.bench.ts > Expression Parsing/Execution Benchmark > Parsing: conditional(true, true, false) (sync) 499.54K ops/s 495.94K ops/s +0.7%
core/player/src/expressions/__tests__/performance.bench.ts > Expression Parsing/Execution Benchmark > Parsing: conditional(true, true, false) (async) 433.98K ops/s 430.64K ops/s +0.8%
core/player/src/expressions/__tests__/performance.bench.ts > Expression Parsing/Execution Benchmark > Parsing: {{foo}} = conditional({{bar}} > 0, true, false) (sync) 209.92K ops/s 213.03K ops/s -1.5%
core/player/src/expressions/__tests__/performance.bench.ts > Expression Parsing/Execution Benchmark > Parsing: {{foo}} = conditional({{bar}} > 0, true, false) (async) 193.43K ops/s 191.42K ops/s +1.1%
core/player/src/expressions/__tests__/performance.bench.ts > Expression Parsing/Execution Benchmark > Parsing: {{foo}} = conditional(conditional(true = false, false, true), conditional(false = false, true, false), conditional(true = true, false, true)) (sync) 147.50K ops/s 162.55K ops/s -9.3%
core/player/src/expressions/__tests__/performance.bench.ts > Expression Parsing/Execution Benchmark > Parsing: {{foo}} = conditional(conditional(true = false, false, true), conditional(false = false, true, false), conditional(true = true, false, true)) (async) 148.07K ops/s 150.54K ops/s -1.6%
core/player/src/expressions/__tests__/performance.bench.ts > Expression Parsing/Execution Benchmark > Parsing: {{foo}} = await(asyncTestFunction(1)) (sync) N/A N/A N/A
core/player/src/expressions/__tests__/performance.bench.ts > Expression Parsing/Execution Benchmark > Parsing: {{foo}} = await(asyncTestFunction(1)) (async) 283.91K ops/s 288.21K ops/s -1.5%
core/player/src/expressions/__tests__/performance.bench.ts > Expression Parsing/Execution Benchmark > Parsing: {{foo}} = asyncTestFunction(1) (sync) 347.70K ops/s 335.04K ops/s +3.8%
core/player/src/expressions/__tests__/performance.bench.ts > Expression Parsing/Execution Benchmark > Parsing: {{foo}} = asyncTestFunction(1) (async) 295.04K ops/s 294.63K ops/s +0.1%
core/player/src/expressions/__tests__/performance.bench.ts > Expression Parsing/Execution Benchmark > Parsing: asyncTestFunction(1) (sync) 825.15K ops/s 847.25K ops/s -2.6%
core/player/src/expressions/__tests__/performance.bench.ts > Expression Parsing/Execution Benchmark > Parsing: asyncTestFunction(1) (async) 636.24K ops/s 653.12K ops/s -2.6%
core/player/src/expressions/__tests__/performance.bench.ts > Expression Parsing/Execution Benchmark > Parsing: {{foo}} = conditional(!{{bar}} == false, await(asyncTestFunction(1)), false) (sync) 186.44K ops/s 182.70K ops/s +2.0%
core/player/src/expressions/__tests__/performance.bench.ts > Expression Parsing/Execution Benchmark > Parsing: {{foo}} = conditional(!{{bar}} == false, await(asyncTestFunction(1)), false) (async) 172.75K ops/s 161.94K ops/s +6.7% ✅
core/player/src/view/resolver/__tests__/index.bench.ts > resolver benchmarks > initial resolve 565.30 ops/s 651.62 ops/s -13.2% ⚠️
core/player/src/view/resolver/__tests__/index.bench.ts > resolver benchmarks > Resolving from cache 16.32K ops/s 20.55K ops/s -20.6% ⚠️
core/player/src/view/resolver/__tests__/index.bench.ts > resolver benchmarks > data changes 2.98K ops/s 3.02K ops/s -1.1%
core/player/src/view/resolver/__tests__/index.bench.ts > resolver benchmarks > data changes slow 649.01 ops/s 651.18 ops/s -0.3%

plugins/async-node/core

Benchmark Current Baseline Change
plugins/async-node/core/src/__tests__/index.bench.ts > async node benchmarks > Resolve Async Node 1 times 13.12K ops/s 13.53K ops/s -3.0%
plugins/async-node/core/src/__tests__/index.bench.ts > async node benchmarks > Resolve Async Node 5 times 13.32K ops/s 12.96K ops/s +2.8%
plugins/async-node/core/src/__tests__/index.bench.ts > async node benchmarks > Resolve Async Node 10 times 10.00K ops/s 9.80K ops/s +2.1%
plugins/async-node/core/src/__tests__/index.bench.ts > async node benchmarks > Resolve Async Node 50 times 3.35K ops/s 3.22K ops/s +3.9%
plugins/async-node/core/src/__tests__/index.bench.ts > async node benchmarks > Resolve Async Node 100 times 1.72K ops/s 1.85K ops/s -6.9%
plugins/async-node/core/src/__tests__/transform.bench.ts > async transform benchmarks > Resolve Async Node 1 times 7.59K ops/s 7.85K ops/s -3.3%
plugins/async-node/core/src/__tests__/transform.bench.ts > async transform benchmarks > Resolve Async Node 5 times 8.40K ops/s 8.39K ops/s +0.1%
plugins/async-node/core/src/__tests__/transform.bench.ts > async transform benchmarks > Resolve Async Node 10 times 7.67K ops/s 7.53K ops/s +1.8%
plugins/async-node/core/src/__tests__/transform.bench.ts > async transform benchmarks > Resolve Async Node 50 times 2.87K ops/s 2.80K ops/s +2.5%
plugins/async-node/core/src/__tests__/transform.bench.ts > async transform benchmarks > Resolve Async Node 100 times 1.59K ops/s 1.58K ops/s +0.8%

plugins/streaming-data/core ⚠️

Benchmark Current Baseline Change
plugins/streaming-data/core/src/__tests__/index.bench.ts > store operations > ingest 10000 records in 500-record pages (view rebuilt per page) 1.13K ops/s 4.49K ops/s -74.8% ⚠️
plugins/streaming-data/core/src/__tests__/index.bench.ts > store operations > sort 10000 records on a numeric string field 45.00 ops/s 103.63 ops/s -56.6% ⚠️
plugins/streaming-data/core/src/__tests__/index.bench.ts > store operations > search 10000 records for a substring 128.30 ops/s 395.30 ops/s -67.5% ⚠️
plugins/streaming-data/core/src/__tests__/index.bench.ts > store operations > ingest 50000 records in 500-record pages (view rebuilt per page) 53.89 ops/s 298.31 ops/s -81.9% ⚠️
plugins/streaming-data/core/src/__tests__/index.bench.ts > store operations > sort 50000 records on a numeric string field 6.12 ops/s 15.09 ops/s -59.4% ⚠️
plugins/streaming-data/core/src/__tests__/index.bench.ts > store operations > search 50000 records for a substring 27.74 ops/s 78.67 ops/s -64.7% ⚠️
plugins/streaming-data/core/src/__tests__/index.bench.ts > player integration > stream 10000 records through player with a live view 21.11 ops/s 41.20 ops/s -48.8% ⚠️
plugins/streaming-data/core/src/__tests__/index.bench.ts > player integration > random field reads with 10000 records loaded 4.09K ops/s 14.40K ops/s -71.6% ⚠️
plugins/streaming-data/core/src/__tests__/index.bench.ts > player integration > stream 50000 records through player with a live view 2.13 ops/s 5.61 ops/s -62.0% ⚠️
plugins/streaming-data/core/src/__tests__/index.bench.ts > player integration > random field reads with 50000 records loaded 5.49K ops/s 14.36K ops/s -61.8% ⚠️

react/player

Benchmark Current Baseline Change
react/player/src/asset/__tests__/index.bench.tsx > ReactAsset benchmarks > Render asset nested in 1 ReactAssets 647.92 ops/s 646.92 ops/s +0.2%
react/player/src/asset/__tests__/index.bench.tsx > ReactAsset benchmarks > Bubble errors nested in 1 ReactAssets 1.17K ops/s 1.18K ops/s -0.3%
react/player/src/asset/__tests__/index.bench.tsx > ReactAsset benchmarks > Render asset nested in 5 ReactAssets 647.54 ops/s 652.70 ops/s -0.8%
react/player/src/asset/__tests__/index.bench.tsx > ReactAsset benchmarks > Bubble errors nested in 5 ReactAssets 1.15K ops/s 1.16K ops/s -0.4%
react/player/src/asset/__tests__/index.bench.tsx > ReactAsset benchmarks > Render asset nested in 10 ReactAssets 652.85 ops/s 662.69 ops/s -1.5%
react/player/src/asset/__tests__/index.bench.tsx > ReactAsset benchmarks > Bubble errors nested in 10 ReactAssets 917.70 ops/s 947.49 ops/s -3.1%
react/player/src/asset/__tests__/index.bench.tsx > ReactAsset benchmarks > Render asset nested in 50 ReactAssets 515.61 ops/s 533.45 ops/s -3.3%
react/player/src/asset/__tests__/index.bench.tsx > ReactAsset benchmarks > Bubble errors nested in 50 ReactAssets 275.02 ops/s 278.96 ops/s -1.4%
react/player/src/asset/__tests__/index.bench.tsx > ReactAsset benchmarks > Render asset nested in 100 ReactAssets 418.35 ops/s 428.96 ops/s -2.5%
react/player/src/asset/__tests__/index.bench.tsx > ReactAsset benchmarks > Bubble errors nested in 100 ReactAssets 125.25 ops/s 130.50 ops/s -4.0%

@codecov

codecov Bot commented Aug 27, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 0.00%. Comparing base (7f5110d) to head (f98a8bf).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@     Coverage Diff     @@
##   main   #943   +/-   ##
===========================
===========================

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@codecov

codecov Bot commented Aug 27, 2026

Copy link
Copy Markdown

Bundle Report

Changes will increase total bundle size by 50.89kB (0.85%) ⬆️. This is within the configured threshold ✅

Detailed changes
Bundle name Size Change
plugins/streaming-data/core 50.89kB 50.89kB (100%) ⬆️

@KetanReddy

Copy link
Copy Markdown
Member Author

/docs

intuit-svc added a commit to player-ui/player-ui.github.io that referenced this pull request Aug 27, 2026
@intuit-svc

Copy link
Copy Markdown
Contributor

Docs Preview

A preview of your PR docs was deployed by CircleCI #42360 on Thu, 27 Aug 2026 17:35:31 GMT

📖 Docs (View site)

@KetanReddy

Copy link
Copy Markdown
Member Author

/canary

intuit-svc added a commit to player-ui/player-ui.github.io that referenced this pull request Aug 28, 2026
@intuit-svc

Copy link
Copy Markdown
Contributor

Build Preview

Your PR was deployed by CircleCI #42384 on Fri, 28 Aug 2026 15:18:54 GMT with this version:

1.2.0--canary.943.42384

📖 Docs (View site)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

minor Increment the minor version when merged

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants