Skip to content

Pass Started Flow Back via Managed Player#881

Merged
sugarmanz merged 6 commits into
player-1-dot-zerofrom
feature/managed-player-on-start
Jun 18, 2026
Merged

Pass Started Flow Back via Managed Player#881
sugarmanz merged 6 commits into
player-1-dot-zerofrom
feature/managed-player-on-start

Conversation

@KetanReddy

@KetanReddy KetanReddy commented Jun 15, 2026

Copy link
Copy Markdown
Member

Enables the instantiator of Managed Player to be notified of the flow Player has started to allow any desired runtime affects for the containing app.

As Android/iOS's Managed Player paradigms don't have this callback (and this is a non-breaking change) we can ship this change just on React for now.

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
📦 Published PR as canary version: 0.15.4--canary.881.37421

Try this version out locally by upgrading relevant packages to 0.15.4--canary.881.37421

@intuit-svc

intuit-svc commented Jun 15, 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 879.35K ops/s 814.11K ops/s +8.0% ✅
core/player/src/binding/__tests__/parser.bench.ts > parser benchmarks > Resolving binding: foo.pets.1.name 561.47K ops/s 520.99K ops/s +7.8% ✅
core/player/src/binding/__tests__/parser.bench.ts > parser benchmarks > Resolving binding: foo.pets.01.name 546.98K ops/s 484.39K ops/s +12.9% ✅
core/player/src/binding/__tests__/parser.bench.ts > parser benchmarks > Resolving binding: foo.pets['01'].name 495.32K ops/s 443.70K ops/s +11.6% ✅
core/player/src/binding/__tests__/parser.bench.ts > parser benchmarks > Resolving binding: foo.pets[01].name 528.34K ops/s 448.52K ops/s +17.8% ✅
core/player/src/binding/__tests__/parser.bench.ts > parser benchmarks > Resolving binding: foo.pets[name = "frodo"].type 299.13K ops/s 229.59K ops/s +30.3% ✅
core/player/src/binding/__tests__/parser.bench.ts > parser benchmarks > Resolving binding: foo.pets["name" = "sprinkles"].type 238.20K ops/s 236.56K ops/s +0.7%
core/player/src/binding/__tests__/parser.bench.ts > parser benchmarks > Resolving binding: foo.pets["isDog" = false].type 310.45K ops/s 293.76K ops/s +5.7% ✅
core/player/src/binding/__tests__/parser.bench.ts > parser benchmarks > Resolving binding: foo.pets["isDog" = true].type 316.27K ops/s 291.77K ops/s +8.4% ✅
core/player/src/binding/__tests__/parser.bench.ts > binding creation benchmarks > Resolving binding: foo.bar 598.77K ops/s 585.10K ops/s +2.3%
core/player/src/binding/__tests__/parser.bench.ts > binding creation benchmarks > Resolving binding: foo.pets.1.name 403.74K ops/s 362.44K ops/s +11.4% ✅
core/player/src/binding/__tests__/parser.bench.ts > binding creation benchmarks > Resolving binding: foo.pets.01.name 392.68K ops/s 365.41K ops/s +7.5% ✅
core/player/src/binding/__tests__/parser.bench.ts > binding creation benchmarks > Resolving binding: foo.pets['01'].name 356.40K ops/s 337.57K ops/s +5.6% ✅
core/player/src/binding/__tests__/parser.bench.ts > binding creation benchmarks > Resolving binding: foo.pets[01].name 398.37K ops/s 360.75K ops/s +10.4% ✅
core/player/src/binding/__tests__/parser.bench.ts > binding creation benchmarks > Resolving binding: foo.pets[name = "frodo"].type 247.20K ops/s 231.82K ops/s +6.6% ✅
core/player/src/binding/__tests__/parser.bench.ts > binding creation benchmarks > Resolving binding: foo.pets["name" = "sprinkles"].type 197.44K ops/s 195.10K ops/s +1.2%
core/player/src/binding/__tests__/parser.bench.ts > binding creation benchmarks > Resolving binding: foo.pets["isDog" = false].type 245.41K ops/s 234.64K ops/s +4.6%
core/player/src/binding/__tests__/parser.bench.ts > binding creation benchmarks > Resolving binding: foo.pets["isDog" = true].type 252.60K ops/s 233.18K ops/s +8.3% ✅
core/player/src/expressions/__tests__/performance.bench.ts > Expression Parsing/Execution Benchmark > Parsing: {{foo}} = 1 + 3 (sync) 463.50K ops/s 386.32K ops/s +20.0% ✅
core/player/src/expressions/__tests__/performance.bench.ts > Expression Parsing/Execution Benchmark > Parsing: {{foo}} = 1 + 3 (async) 375.11K ops/s 355.63K ops/s +5.5% ✅
core/player/src/expressions/__tests__/performance.bench.ts > Expression Parsing/Execution Benchmark > Parsing: conditional(true, true, false) (sync) 493.01K ops/s 467.51K ops/s +5.5% ✅
core/player/src/expressions/__tests__/performance.bench.ts > Expression Parsing/Execution Benchmark > Parsing: conditional(true, true, false) (async) 425.97K ops/s 427.69K ops/s -0.4%
core/player/src/expressions/__tests__/performance.bench.ts > Expression Parsing/Execution Benchmark > Parsing: {{foo}} = conditional({{bar}} > 0, true, false) (sync) 213.37K ops/s 141.47K ops/s +50.8% ✅
core/player/src/expressions/__tests__/performance.bench.ts > Expression Parsing/Execution Benchmark > Parsing: {{foo}} = conditional({{bar}} > 0, true, false) (async) 188.49K ops/s 146.09K ops/s +29.0% ✅
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) 163.72K ops/s 140.98K ops/s +16.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)) (async) 155.48K ops/s 151.43K ops/s +2.7%
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) 286.46K ops/s 261.47K ops/s +9.6% ✅
core/player/src/expressions/__tests__/performance.bench.ts > Expression Parsing/Execution Benchmark > Parsing: {{foo}} = asyncTestFunction(1) (sync) 334.54K ops/s 345.63K ops/s -3.2%
core/player/src/expressions/__tests__/performance.bench.ts > Expression Parsing/Execution Benchmark > Parsing: {{foo}} = asyncTestFunction(1) (async) 291.58K ops/s 269.48K ops/s +8.2% ✅
core/player/src/expressions/__tests__/performance.bench.ts > Expression Parsing/Execution Benchmark > Parsing: asyncTestFunction(1) (sync) 888.41K ops/s 834.09K ops/s +6.5% ✅
core/player/src/expressions/__tests__/performance.bench.ts > Expression Parsing/Execution Benchmark > Parsing: asyncTestFunction(1) (async) 693.79K ops/s 640.68K ops/s +8.3% ✅
core/player/src/expressions/__tests__/performance.bench.ts > Expression Parsing/Execution Benchmark > Parsing: {{foo}} = conditional(!{{bar}} == false, await(asyncTestFunction(1)), false) (sync) 185.51K ops/s 161.30K ops/s +15.0% ✅
core/player/src/expressions/__tests__/performance.bench.ts > Expression Parsing/Execution Benchmark > Parsing: {{foo}} = conditional(!{{bar}} == false, await(asyncTestFunction(1)), false) (async) 167.05K ops/s 158.47K ops/s +5.4% ✅
core/player/src/view/resolver/__tests__/index.bench.ts > resolver benchmarks > initial resolve 670.97 ops/s 545.34 ops/s +23.0% ✅
core/player/src/view/resolver/__tests__/index.bench.ts > resolver benchmarks > Resolving from cache 19.53K ops/s 15.42K ops/s +26.7% ✅
core/player/src/view/resolver/__tests__/index.bench.ts > resolver benchmarks > data changes 3.00K ops/s 2.13K ops/s +40.7% ✅
core/player/src/view/resolver/__tests__/index.bench.ts > resolver benchmarks > data changes slow 647.62 ops/s 406.30 ops/s +59.4% ✅

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.29K ops/s 8.39K ops/s +58.4% ✅
plugins/async-node/core/src/__tests__/index.bench.ts > async node benchmarks > Resolve Async Node 5 times 13.73K ops/s 10.87K ops/s +26.4% ✅
plugins/async-node/core/src/__tests__/index.bench.ts > async node benchmarks > Resolve Async Node 10 times 9.97K ops/s 8.74K ops/s +14.1% ✅
plugins/async-node/core/src/__tests__/index.bench.ts > async node benchmarks > Resolve Async Node 50 times 3.34K ops/s 2.48K ops/s +35.0% ✅
plugins/async-node/core/src/__tests__/index.bench.ts > async node benchmarks > Resolve Async Node 100 times 1.86K ops/s 1.40K ops/s +33.0% ✅
plugins/async-node/core/src/__tests__/transform.bench.ts > async transform benchmarks > Resolve Async Node 1 times 7.54K ops/s 7.81K ops/s -3.4%
plugins/async-node/core/src/__tests__/transform.bench.ts > async transform benchmarks > Resolve Async Node 5 times 8.37K ops/s 7.80K ops/s +7.3% ✅
plugins/async-node/core/src/__tests__/transform.bench.ts > async transform benchmarks > Resolve Async Node 10 times 7.32K ops/s 7.66K ops/s -4.4%
plugins/async-node/core/src/__tests__/transform.bench.ts > async transform benchmarks > Resolve Async Node 50 times 2.66K ops/s 2.53K ops/s +4.8%
plugins/async-node/core/src/__tests__/transform.bench.ts > async transform benchmarks > Resolve Async Node 100 times 1.59K ops/s 1.43K ops/s +11.0% ✅

react/player

Benchmark Current Baseline Change
react/player/src/asset/__tests__/index.bench.tsx > ReactAsset benchmarks > Render asset nested in 1 ReactAssets 624.08 ops/s 572.33 ops/s +9.0% ✅
react/player/src/asset/__tests__/index.bench.tsx > ReactAsset benchmarks > Bubble errors nested in 1 ReactAssets 1.10K ops/s 895.15 ops/s +23.2% ✅
react/player/src/asset/__tests__/index.bench.tsx > ReactAsset benchmarks > Render asset nested in 5 ReactAssets 648.08 ops/s 564.93 ops/s +14.7% ✅
react/player/src/asset/__tests__/index.bench.tsx > ReactAsset benchmarks > Bubble errors nested in 5 ReactAssets 1.09K ops/s 888.75 ops/s +22.2% ✅
react/player/src/asset/__tests__/index.bench.tsx > ReactAsset benchmarks > Render asset nested in 10 ReactAssets 655.71 ops/s 536.68 ops/s +22.2% ✅
react/player/src/asset/__tests__/index.bench.tsx > ReactAsset benchmarks > Bubble errors nested in 10 ReactAssets 955.99 ops/s 805.32 ops/s +18.7% ✅
react/player/src/asset/__tests__/index.bench.tsx > ReactAsset benchmarks > Render asset nested in 50 ReactAssets 529.80 ops/s 389.77 ops/s +35.9% ✅
react/player/src/asset/__tests__/index.bench.tsx > ReactAsset benchmarks > Bubble errors nested in 50 ReactAssets 243.10 ops/s 208.73 ops/s +16.5% ✅
react/player/src/asset/__tests__/index.bench.tsx > ReactAsset benchmarks > Render asset nested in 100 ReactAssets 409.44 ops/s 282.34 ops/s +45.0% ✅
react/player/src/asset/__tests__/index.bench.tsx > ReactAsset benchmarks > Bubble errors nested in 100 ReactAssets 130.10 ops/s 92.51 ops/s +40.6% ✅

@codecov

codecov Bot commented Jun 15, 2026

Copy link
Copy Markdown

Bundle Report

Changes will increase total bundle size by 383.0kB (8.0%) ⬆️⚠️, exceeding the configured threshold of 5%.

Bundle name Size Change
plugins/check-path/core 442.6kB 41 bytes (0.01%) ⬆️
plugins/async-node/core 504.25kB 41 bytes (0.01%) ⬆️
plugins/markdown/core 683.26kB 41 bytes (0.01%) ⬆️
plugins/asset-transform/core 11.25kB 3.34kB (42.22%) ⬆️⚠️
plugins/reference-assets/core 554.9kB 41 bytes (0.01%) ⬆️
plugins/beacon/core 424.2kB 41 bytes (0.01%) ⬆️
react/player 83.8kB 54 bytes (0.06%) ⬆️
plugins/metrics/core 460.76kB 41 bytes (0.01%) ⬆️
core/player 1.02MB 146 bytes (0.01%) ⬆️
plugins/external-state/core 426.87kB 379.22kB (795.79%) ⬆️⚠️

Affected Assets, Files, and Routes:

view changes for bundle: react/player

Assets Changed:

Asset Name Size Change Total Size Change (%)
cjs/index.cjs 18 bytes 30.38kB 0.06%
index.legacy-esm.js 18 bytes 26.71kB 0.07%
index.mjs 18 bytes 26.71kB 0.07%
view changes for bundle: plugins/async-node/core

Assets Changed:

Asset Name Size Change Total Size Change (%)
AsyncNodePlugin.native.js 41 bytes 441.63kB 0.01%
view changes for bundle: plugins/beacon/core

Assets Changed:

Asset Name Size Change Total Size Change (%)
BeaconPlugin.native.js 41 bytes 409.73kB 0.01%
view changes for bundle: plugins/reference-assets/core

Assets Changed:

Asset Name Size Change Total Size Change (%)
ReferenceAssetsPlugin.native.js 41 bytes 516.92kB 0.01%
view changes for bundle: plugins/check-path/core

Assets Changed:

Asset Name Size Change Total Size Change (%)
CheckPathPlugin.native.js 41 bytes 413.12kB 0.01%
view changes for bundle: core/player

Assets Changed:

Asset Name Size Change Total Size Change (%)
Player.native.js 41 bytes 426.34kB 0.01%
cjs/index.cjs 35 bytes 202.28kB 0.02%
index.legacy-esm.js 35 bytes 195.55kB 0.02%
index.mjs 35 bytes 195.55kB 0.02%
view changes for bundle: plugins/markdown/core

Assets Changed:

Asset Name Size Change Total Size Change (%)
MarkdownPlugin.native.js 41 bytes 658.11kB 0.01%
view changes for bundle: plugins/external-state/core

Assets Changed:

Asset Name Size Change Total Size Change (%)
ExternalStatePlugin.native.js 373.57kB 407.9kB 1088.21% ⚠️
cjs/index.cjs 1.92kB 7.08kB 37.3% ⚠️
index.legacy-esm.js 1.86kB 5.94kB 45.54% ⚠️
index.mjs 1.86kB 5.94kB 45.54% ⚠️
view changes for bundle: plugins/metrics/core

Assets Changed:

Asset Name Size Change Total Size Change (%)
MetricsPlugin.native.js 41 bytes 428.42kB 0.01%
view changes for bundle: plugins/asset-transform/core

Assets Changed:

Asset Name Size Change Total Size Change (%)
index.legacy-esm.js 3.34kB 3.34kB 100.0% ⚠️

@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 Jun 15, 2026
@intuit-svc

intuit-svc commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Build Preview

Your PR was deployed by CircleCI #37421 on Mon, 15 Jun 2026 22:54:58 GMT with this version:

0.15.4--canary.881.37421

📖 Docs (View site)

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

codecov Bot commented Jun 16, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 0.00%. Comparing base (f501972) to head (01e21a4).
⚠️ Report is 27 commits behind head on player-1-dot-zero.

Additional details and impacted files
@@           Coverage Diff            @@
##   player-1-dot-zero   #881   +/-   ##
========================================
========================================

☔ 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.

@KetanReddy KetanReddy marked this pull request as ready for review June 16, 2026 19:09
@KetanReddy KetanReddy requested review from a team as code owners June 16, 2026 19:09

@sugarmanz sugarmanz left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Weird this needed some of the KT API updates 🤔

@KetanReddy

Copy link
Copy Markdown
Member Author

Weird this needed some of the KT API updates 🤔

Yeah not too sure why the main 1.0 branch isn't failing? This might have been cut from a older commit?

@KetanReddy KetanReddy requested a review from a team as a code owner June 17, 2026 01:46
@sugarmanz sugarmanz merged commit 073ec0d into player-1-dot-zero Jun 18, 2026
16 checks passed
@sugarmanz sugarmanz deleted the feature/managed-player-on-start branch June 18, 2026 01:07
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.

4 participants