Skip to content

Releases: player-ui/player

0.15.4-next.0

29 Apr 20:36
23a98a4

Choose a tag to compare

0.15.4-next.0 Pre-release
Pre-release

🐛 Bug Fix

Authors: 1

0.15.3

28 Apr 18:06

Choose a tag to compare

Release Notes

guard against async released exceptions when retrieving state (#853)

Guard against released exceptions when retrieving state since we can turn that into a ReleasedState.

Fix HermesNode property access on released JSI objects (#825)

Added a defensive guard in HermesNode so property reads on a released runtime/object fail safely by throwing a PlayerRuntimeException with context instead of a fatal native NPE.

Added regression tests:

  • A deterministic unit test for “released JSI object property read”
  • A small concurrency test that reads player.state while player.release() is happening

🐛 Bug Fix

Authors: 8

0.15.2

30 Mar 17:53

Choose a tag to compare

Release Notes

Use workspace:^ for all internal workspace dependencies (#804)

Update core/react packages to use use peer versions for all internal player dependencies.


🐛 Bug Fix

📝 Documentation

  • Add CLAUDE.md with guidelines for reporting and reviewing pull requests #827 (@spentacular)

Authors: 8

0.15.1

16 Mar 21:09

Choose a tag to compare

🐛 Bug Fix

📝 Documentation

Authors: 9

0.15.0

10 Feb 19:49

Choose a tag to compare

Release Notes

Remove async node tracking from core and rely on node-based caching (#777)

  • Remove async node references from player core resolver.
  • Allow the resolver to update using node changes instead of just data changes
  • Add markAsChanged function to the ViewController to support triggering updates caused by node changes.
  • Update AsyncNodePlugin and AsyncNodePluginPlugin to make use of the above.
  • Fixed a bug causing assets loaded using the AsyncNodePlugin to crash on android

Expand Docs on Using XLRs for Validations (#784)

Docs: Expanded content validation Docs

Remove chakra/emotion and unused Storybook components (#776)

  • Remove Chakra/Emotion dependencies in Storybook.

feat(storybook): upgrade to version 10.1.4 (#767)

Upgraded Storybook from version 7.6.10 to latest 10.1.4. Also fixed broken images within stories and initial value for dark mode for the editors.

Add Back in Stamping for JavaScript Builds (#761)

Fix stamping in core/react builds for Player version and commit used to build the bundle

Markdown handle empty (#752)

Add option to provide a handler for when where nothing is returned from the markdown mapping.

Maintainance: Dependency Updates (#745)

Minor dependency updates to address security bulletins


🚀 Enhancement

🐛 Bug Fix

📝 Documentation

  • Docs: Plugin Architecture/Hooks + Landing Page Fix #780 (@kharrop)

Authors: 8

0.14.1

04 Nov 00:31

Choose a tag to compare

Release Notes

iOS ManagedPlayer only call unload in loading state (#749)

iOS Managed Player fix for SwiftuiPlayer's context unload being called in loaded state

  • Fix: Only call context.unload if we are in a loading state not when its in loaded state

refactor: replace default exports with named exports (#732)

All default exports have been replaced with named exports across core packages, plugins, and React components.

Affected packages:

  • @player-ui/make-flow: identify function
  • @player-ui/partial-match-registry: createObjectMatcher function
  • @player-ui/player: Logger classes and view plugins
  • @player-ui/react: ReactPlayer component and OnUpdatePlugin
  • @player-ui/metrics-plugin: MetricsCorePlugin class
  • @player-ui/auto-scroll-manager-plugin-react: scrollIntoViewWithOffset

Fix Broken Links in Doc Site (#737)

Fix a handful of broken links on the doc site

Codecov Bundle Analysis for JS Targets (#736)

Upload JS bundle size analysis to codecov

Adding docs-preview workflow, Canary release PR comments (#720)

This PR contains a few docs-related quality of life improvements, details below:

  • Adds a pr-comment workflow that supports command-triggered PR comments - including: /canary, /docs
  • Adds a docs preview workflow that is triggered when a collaborator adds a comment including /docs, similar to our /canary workflow. This workflow will push static docs files to https://github.com/player-ui/player-ui.github.io and publish a URL that includes PR docs changes.
  • Adds a pr-closed workflow that will run when a PR is either closed manually or merged, which will automatically clean up the pr folder in the https://github.com/player-ui/player-ui.github.io. This workflow can be expanded on in the future if needed.
  • Adds a PR comment that includes Canary release information after the "/canary" workflow is done and a new release becomes available, making it more clear to users which version is tied to when the command was run.
  • Updated full release job to be dependent on docs build success
  • Updated maybe_release to depend on android tests as well

export soloader from hermes (#733)

Export com.facebook.soloader:soloader from hermes artifacts

replace parallel hook with series hook in async node (#718)

  • make the onAsyncNode hook of AsyncNodePlugin an AsyncSeriesBailHook to allow taps to return undefined in order to skip resolving the node.
  • Remove asyncNode hook from AsyncNodePluginPlugin because it never gets called or tapped.

allow for arrays of expressions in reference action asset dsl (#726)

  • Extend type on Action dsl component props to allow for exp to be an array of expressions.

fix caching issues with resolved async nodes. (#716)

  • fix an issue where resolving async nodes directly would sometimes not track correctly for the purpose of invalidating the cache.

🐛 Bug Fix

📝 Documentation

Authors: 9

0.14.0

15 Sep 23:08

Choose a tag to compare

Release Notes

Remove support for J2V8 on Android (#712)

With the Android 15 16 KB page size requirement, Android Player is dropping support for J2V8 as it fails to meet those requirements. It will no longer be a transitive dependency, requiring the desired runtime module to be declared explicitly as a dependency of the app.

For example, Hermes is now the recommended runtime for Android Player use cases, and can be configured simply via including the dependency:

dependencies {
    implementation("com.intuit.playerui", "hermes-android", $PLAYER_VERSION)
}

add asyncNodePosition to createAsyncTransform options (#714)

  • Added asyncNodePosition as an option to createAsyncTransform. This lets user choose if the generated async node goes to the top or bottom of the generated multi-node.

update createAsyncTransform to allow for different node types (#708)

  • Update the createAsyncTransform util to consider different incoming node types coming from getNestedAsset option. Originally, this assumed that it would always be an asset node type and would asset-wrap the node, but to allow for some additional flexibility, the following rules are applied:
    • Asset nodes and Applicability nodes with a value that is an asset node get asset wrapped like before.
    • multi-nodes have their values spread into the initialized multi-node to keep the structure flat
    • everything else gets added to the initialized multi-node as-is.

Migrate to Bazel 8 (#700)

  • Update to Bazel 8
  • Android SDK/NDK now only needed for Android targets
    • Applicable to CI and local development
  • Coverage for JVM modules
  • Updated just commands and documentation

improve async node flattening and apply resolver cache to async nodes (#694)

  • Simplify async node flattening to just check for multi-nodes inside multi-nodes after async nodes are resolved.
  • Introduce async node id cache in the resolver to allow async nodes to be marked as dirty and limit scope of resolver update to the specific node and use cache for the rest of the update.

support boolean values in binding queries (#703)

  • Update binding parser to allow for boolean value nodes
  • Only use boolean values in query values as parts of the path should always be strings or numbers

🚀 Enhancement

  • Remove support for J2V8 on Android #712 (@sugarmanz)
  • improve async node flattening and apply resolver cache to async nodes #694 (@tmarmer)

🐛 Bug Fix

⚠️ Pushed to main

📝 Documentation

Authors: 6

0.13.0

14 Aug 00:27

Choose a tag to compare

Release Notes

update reference assets to support chat-ui demo from core plugin (#702)

  • Update core reference assets plugin to handle chat-ui mock across platforms, including setup the async node plugin at the core level

add option to report unused disable directives in eslint (#697)

  • add linterOptions.reportUnusedDisableDirectives: "error" to eslint config

Docs: Updating Astro/Starlight, PageFind, Sidebar Enhancements (#698)

Updating Astro and Starlight to support linkable headers and other features, updating pagefind to support search enhancements, and updated sidebar navigation to simplify logic and highlight getting started.

track inProgressNodes to prevent duplicate async processes (#693)

  • fix an issue where promises generated by onAsyncNode could be generated multiple times if a view update caused the same async node to get resolved again before the promise completed.

update core async node plugins to catch and handle errors (#666)

  • Update the AsyncNodePlugin to include a new hook onAsyncNodeError for catching errors triggered when resolving async nodes.
  • Not using the hook or failing to return fallback content will allow the error to bubble up and fail the player state.
  • Fix cyclic deps between //plugins/async-node/core and //plugins/reference-assets/core
  • Scope the content cache on the async-node to the view that generated it to prevent re-use of the cache across views, flows or player instances.

Build Tweaks (#685)

  • Update codecov and android orb to latest
  • Run iOS lint as a separate parallel step
  • Remove rosetta and JDK install from mac stage

Fix ASYNC_ACTION Expressions Being Fired Multiple Times (#691)

Fix Issue with awaited ASYNC_ACTION state's expressions being fired multiple times if the Previous State was as ACTION state by deferring the awaited execution results rather than handling them in an async tap

add bench test for streaming player (#680)

  • Add initial bench test to async-node plugin
  • Add step to run bench tests in just and in CI.

remove DefaultViewPlugins and move implementation into ViewController (#689)

  • Remove DefaultViewPlugins and add all plugins it uses into the ViewController
  • Add and export types for the hooks on the ViewController and ViewInstance

Async Expression Support (#649)

Adds experimental support for asynchronous expressions within Player. This functionality should be consider in beta and effectively an unstable API, however the API of the ASYNC_ACTION itself should be considered stable.

The new built-in expression await can be used to block execution of expressions until the underlying Promise is resolved. The await expression can only be used when the expression-evaluator enables async expressions to be evaluated, which is currently only supported on ASYNC_ACTION navigation nodes. Async expressions can be used in a regular ACTION node but they can not be awaited on. Using await in an ACTION node will cause a runtime exception.

Fixes for manager becoming stale (#683)

Updates to the React Managed Player to ensure updates to the manager terminate the running instance and start a brand new instance.


🚀 Enhancement

🐛 Bug Fix

Authors: 10

0.12.0

10 Jul 19:53

Choose a tag to compare

Release Notes

Fix default-view-plugin sort order (#679)

Change how player.hooks.view call is handled to ensure tap order comes from default plugins first.

Revert "Asset deprecation (#639)" + add async hydration tracker plugin as default (#676)

  • Revert #639 for performance reasons
  • AsyncHydrationTrackerPlugin is now a default AndroidPlayerPlugin

fix issues with react 18 suspense (#670)

  • Fix dependencies using React 17 in Player
  • Fix Suspense staying triggered via useEffect callbacks
  • Convert useSubscribedState to use useSyncExternalStore instead of useEffect for callbacks

feat(common-expressions): add substr and split string functions (#671)

Added substr and split functions to common expressions plugin that mirror their javascript implementation

Fix transforms on assets with applicability (#668)

Move AssetTransformCorePlugin application after applicability and switch view plugins to ensure transforms properly apply to conditional assets.

Updated docs, platform param (#660)

Updated contributing docs to include information around how the docs site is generated, re-added platform param capability so that the URL updates based on platform tab, updated team page.

Export Underlying Expressions from Common Expression Plugin (#657)

Update Common Expressions Plugin to export underlying functions to allow them to be converted to DSL functions as well as export them as XLRs for consumption by the XLR SDK.


🚀 Enhancement

  • Revert "Asset deprecation (#639)" + add async hydration tracker plugin as default #676 (@sugarmanz)
  • Renew hydration scope, wrap composableAsset and apply the modifiers to all assets through the compose call #630 (@A1shK @brocollie08 @nancywu1)

🐛 Bug Fix

Authors: 9

0.11.2

22 May 20:40
24c8e54

Choose a tag to compare

Release Notes

fix: CheckPathPlugin throws error with chained AsyncNode (#621)

fix CheckPathPlugin throws error with chained AsyncNode


🐛 Bug Fix

Authors: 3