Releases: youversion/platform-sdk-react
Release list
@youversion/platform-react-ui@2.3.0
Minor Changes
-
ab38fb5: Surface a clear error when
YouVersionProvideris given a missing or emptyappKeyinstead of rendering a blank page. The UI provider now renders a styled "Missing app key" message, and the hooks provider throws a descriptive error for hooks-only consumers. -
fc054c6: Add
ProfileAvatarcomponent with initials fallback (YPE-3648). Signed-in users without a profile image now see their initials ("Cam Anderson" → "CA", "Cher" → "C") in a bordered circle instead of a broken avatar; loaded photos get a 3px gray ring per design.BibleReader's user menu now usesProfileAvatarfor all authenticated states, and the component is exported for direct use. -
683c123: Allow requesting YouVersion data-exchange permissions (e.g.
highlights) at sign-in. These are intentionally not OIDC scopes: they ride alongside the standardscopeparam as repeatablerequested_permissions[]query params on the authorize URL and are authorized via a separate per-app ACL rather than the token's scope claim.YouVersionAPIUsers.signIn(redirectURL, scopes?, permissions?)and the underlying PKCE authorization request builder now accept apermissionsarray typed asSignInWithYouVersionPermissionValues[].useYVAuth().signIn({ permissions })forwards them from React.<YouVersionAuthButton permissions={['highlights']} />requests them from the sign-in button.
Scopes and permissions are separate arguments; existing calls that only pass scopes are unaffected.
-
af37b90: Add a verse action popover to
BibleReader. Tapping verses selects them (shown with an underline) and opens a popover anchored to the last-selected verse with five highlight colors, Copy, and Share. Highlights apply a translucent fill, persist tolocalStorageper Bible version (shaped like the future highlight API), and can be removed individually. Copy/Share output mirrors bible.com formatting: the verse text in curly quotes, gaps in a non-contiguous selection joined with..., followed by theBook Chapter:verses VERSIONreference. Share uses the Web Share API and falls back to copying where it isn't available.BibleReaderalso accepts optionalonCopy/onShareprops. When provided, they receive the structured selection payload and suppress the default Web Share / clipboard flow, so React Native / Expo hosts can forward it across the native bridge (mirrorsVerseOfTheDay'sonShare).Note:
BibleTextViewProps.highlightedVerseschanged fromRecord<number, boolean>toRecord<number, string>(verse number → highlight hex). This prop was never wired into shipped usage, so no released consumer is affected; the bump staysminor.
Patch Changes
-
fb7ac35: Tag the
X-YVP-Sdkheader with a-devsuffix for non-published builds so platform telemetry can separate internal YouVersion dev-time traffic from published partner traffic.Published builds report the real version (
ReactSDK=2.2.0); builds from source, dev, or tests reportReactSDK=2.2.0-dev. The version is stamped at build time viaYVP_PUBLISH_BUILD(set by each package'sprepublishOnly), and a publish guard aborts the release if an unstamped-devbuild would ship. Published header values are otherwise unchanged, and consumers can still overrideX-YVP-SdkviaadditionalHeaders. -
Updated dependencies [d6ab2d5]
-
Updated dependencies [ab38fb5]
-
Updated dependencies [683c123]
-
Updated dependencies [fb7ac35]
- @youversion/platform-core@2.3.0
- @youversion/platform-react-hooks@2.3.0
@youversion/platform-react-hooks@2.3.0
Minor Changes
-
d6ab2d5: Fix
HighlightsClientto match the live highlights API contract. The client previously sent requests the API rejects on every call (401/400), so highlights could never be fetched, created, or deleted.- Auth token is now sent as an
Authorization: Bearer <token>header instead of alatquery parameter - Query/body fields now use the API's
bible_idnaming on the wire (the SDK keepsversion_idin its public types and maps at the boundary) createHighlightnow sends the required{ request_id, highlight: { ... } }envelope (request_idis a unique per-request id the API requires)getHighlightsnow requiresversion_idandpassage_id(verse or chapter USFM), anddeleteHighlightrequiresversion_id, matching the API's required parameters;useHighlightsoptions are updated accordinglygetHighlightsnow treats a204(no highlights for the passage) as an empty collection instead of throwingcreateHighlightnormalizescolorto lowercase before sending, since the API accepts lowercase hex only- API responses are validated with Zod and mapped from the wire shape
- Auth token is now sent as an
-
ab38fb5: Surface a clear error when
YouVersionProvideris given a missing or emptyappKeyinstead of rendering a blank page. The UI provider now renders a styled "Missing app key" message, and the hooks provider throws a descriptive error for hooks-only consumers. -
683c123: Allow requesting YouVersion data-exchange permissions (e.g.
highlights) at sign-in. These are intentionally not OIDC scopes: they ride alongside the standardscopeparam as repeatablerequested_permissions[]query params on the authorize URL and are authorized via a separate per-app ACL rather than the token's scope claim.YouVersionAPIUsers.signIn(redirectURL, scopes?, permissions?)and the underlying PKCE authorization request builder now accept apermissionsarray typed asSignInWithYouVersionPermissionValues[].useYVAuth().signIn({ permissions })forwards them from React.<YouVersionAuthButton permissions={['highlights']} />requests them from the sign-in button.
Scopes and permissions are separate arguments; existing calls that only pass scopes are unaffected.
Patch Changes
-
fb7ac35: Tag the
X-YVP-Sdkheader with a-devsuffix for non-published builds so platform telemetry can separate internal YouVersion dev-time traffic from published partner traffic.Published builds report the real version (
ReactSDK=2.2.0); builds from source, dev, or tests reportReactSDK=2.2.0-dev. The version is stamped at build time viaYVP_PUBLISH_BUILD(set by each package'sprepublishOnly), and a publish guard aborts the release if an unstamped-devbuild would ship. Published header values are otherwise unchanged, and consumers can still overrideX-YVP-SdkviaadditionalHeaders. -
Updated dependencies [d6ab2d5]
-
Updated dependencies [683c123]
-
Updated dependencies [fb7ac35]
- @youversion/platform-core@2.3.0
@youversion/platform-core@2.3.0
Minor Changes
-
d6ab2d5: Fix
HighlightsClientto match the live highlights API contract. The client previously sent requests the API rejects on every call (401/400), so highlights could never be fetched, created, or deleted.- Auth token is now sent as an
Authorization: Bearer <token>header instead of alatquery parameter - Query/body fields now use the API's
bible_idnaming on the wire (the SDK keepsversion_idin its public types and maps at the boundary) createHighlightnow sends the required{ request_id, highlight: { ... } }envelope (request_idis a unique per-request id the API requires)getHighlightsnow requiresversion_idandpassage_id(verse or chapter USFM), anddeleteHighlightrequiresversion_id, matching the API's required parameters;useHighlightsoptions are updated accordinglygetHighlightsnow treats a204(no highlights for the passage) as an empty collection instead of throwingcreateHighlightnormalizescolorto lowercase before sending, since the API accepts lowercase hex only- API responses are validated with Zod and mapped from the wire shape
- Auth token is now sent as an
-
683c123: Allow requesting YouVersion data-exchange permissions (e.g.
highlights) at sign-in. These are intentionally not OIDC scopes: they ride alongside the standardscopeparam as repeatablerequested_permissions[]query params on the authorize URL and are authorized via a separate per-app ACL rather than the token's scope claim.YouVersionAPIUsers.signIn(redirectURL, scopes?, permissions?)and the underlying PKCE authorization request builder now accept apermissionsarray typed asSignInWithYouVersionPermissionValues[].useYVAuth().signIn({ permissions })forwards them from React.<YouVersionAuthButton permissions={['highlights']} />requests them from the sign-in button.
Scopes and permissions are separate arguments; existing calls that only pass scopes are unaffected.
Patch Changes
-
fb7ac35: Tag the
X-YVP-Sdkheader with a-devsuffix for non-published builds so platform telemetry can separate internal YouVersion dev-time traffic from published partner traffic.Published builds report the real version (
ReactSDK=2.2.0); builds from source, dev, or tests reportReactSDK=2.2.0-dev. The version is stamped at build time viaYVP_PUBLISH_BUILD(set by each package'sprepublishOnly), and a publish guard aborts the release if an unstamped-devbuild would ship. Published header values are otherwise unchanged, and consumers can still overrideX-YVP-SdkviaadditionalHeaders.
@youversion/platform-react-ui@2.2.0
Minor Changes
-
2ba9e6d: Match Book/Chapter picker typography to the Figma design.
BibleChapterPickernow uses the Aktiv Grotesk App brand font (served from the YouVersion CDN): book rows render at 16px regular and bold when expanded, chapter/intro number buttons at 16px bold, and the search input at 16px. Falls back to the default sans font if the webfont fails to load. -
0d184fc: Update the Bible Version picker to match the latest Reader SDK Figma design, adding publisher names and refreshing the abbreviation tile.
@youversion/platform-core: NewOrganizationsClientwithgetOrganization(organizationId)for fetching an organization by its UUID (GET /v1/organizations/{id}), validated against the existingOrganizationSchema. Design tokens use Inter (--yv-font-sans) and Source Serif 4 (--yv-font-serif); the YouVersion brand fonts (Aktiv Grotesk App / Untitled Serif) are reverted pending licensing — seedocs/adr/0001-revert-brand-fonts-pending-licensing.md.@youversion/platform-react-hooks: NewuseOrganization(organizationId)hook (plususeOrganizationsClient) following the standarduseApiDatapattern. Fetching is skipped when the id is empty. Also addsuseOrganizations(organizationIds), which resolves many organizations at once, deduplicated by id, so a list of versions sharing publishers only fetches each organization once.@youversion/platform-react-ui:BibleVersionPickernow renders the publisher name above the version title for versions that have anorganization_id(rows without an associated organization render the title only), and recently used versions persistorganization_idso they display the publisher too. Publisher names are resolved once at the list level viauseOrganizationsinstead of per row, avoiding N+1 requests when many versions share a publisher. TheVersionAbbreviationIcontile now renders as a 64px square with a 6px radius, warm-neutral (secondary) fill, themed border, and serif typography (Source Serif 4) using the foreground text color; recent-version and all-version rows share the same tile styling, and long or trailing-digit abbreviations (e.g.NASB1995→NASB/1995) stay readable without overflowing. Brand fonts (Aktiv Grotesk App / Untitled Serif) are reverted to Inter / Source Serif 4 pending licensing; the brand-font implementation is parked on branchfeat/youversion-brand-fonts.
-
ed9eb23: Add language search to
BibleVersionPicker. The language panel now includes a bottom search input that globally filters available languages, shows a no-results empty state, and clears when the panel or popover closes.
Patch Changes
- Updated dependencies [0d184fc]
- @youversion/platform-core@2.2.0
- @youversion/platform-react-hooks@2.2.0
@youversion/platform-react-hooks@2.2.0
Minor Changes
- 0d184fc: Update the Bible Version picker to match the latest Reader SDK Figma design, adding publisher names and refreshing the abbreviation tile.
@youversion/platform-core: NewOrganizationsClientwithgetOrganization(organizationId)for fetching an organization by its UUID (GET /v1/organizations/{id}), validated against the existingOrganizationSchema. Design tokens use Inter (--yv-font-sans) and Source Serif 4 (--yv-font-serif); the YouVersion brand fonts (Aktiv Grotesk App / Untitled Serif) are reverted pending licensing — seedocs/adr/0001-revert-brand-fonts-pending-licensing.md.@youversion/platform-react-hooks: NewuseOrganization(organizationId)hook (plususeOrganizationsClient) following the standarduseApiDatapattern. Fetching is skipped when the id is empty. Also addsuseOrganizations(organizationIds), which resolves many organizations at once, deduplicated by id, so a list of versions sharing publishers only fetches each organization once.@youversion/platform-react-ui:BibleVersionPickernow renders the publisher name above the version title for versions that have anorganization_id(rows without an associated organization render the title only), and recently used versions persistorganization_idso they display the publisher too. Publisher names are resolved once at the list level viauseOrganizationsinstead of per row, avoiding N+1 requests when many versions share a publisher. TheVersionAbbreviationIcontile now renders as a 64px square with a 6px radius, warm-neutral (secondary) fill, themed border, and serif typography (Source Serif 4) using the foreground text color; recent-version and all-version rows share the same tile styling, and long or trailing-digit abbreviations (e.g.NASB1995→NASB/1995) stay readable without overflowing. Brand fonts (Aktiv Grotesk App / Untitled Serif) are reverted to Inter / Source Serif 4 pending licensing; the brand-font implementation is parked on branchfeat/youversion-brand-fonts.
Patch Changes
- Updated dependencies [0d184fc]
- @youversion/platform-core@2.2.0
@youversion/platform-core@2.2.0
Minor Changes
- 0d184fc: Update the Bible Version picker to match the latest Reader SDK Figma design, adding publisher names and refreshing the abbreviation tile.
@youversion/platform-core: NewOrganizationsClientwithgetOrganization(organizationId)for fetching an organization by its UUID (GET /v1/organizations/{id}), validated against the existingOrganizationSchema. Design tokens use Inter (--yv-font-sans) and Source Serif 4 (--yv-font-serif); the YouVersion brand fonts (Aktiv Grotesk App / Untitled Serif) are reverted pending licensing — seedocs/adr/0001-revert-brand-fonts-pending-licensing.md.@youversion/platform-react-hooks: NewuseOrganization(organizationId)hook (plususeOrganizationsClient) following the standarduseApiDatapattern. Fetching is skipped when the id is empty. Also addsuseOrganizations(organizationIds), which resolves many organizations at once, deduplicated by id, so a list of versions sharing publishers only fetches each organization once.@youversion/platform-react-ui:BibleVersionPickernow renders the publisher name above the version title for versions that have anorganization_id(rows without an associated organization render the title only), and recently used versions persistorganization_idso they display the publisher too. Publisher names are resolved once at the list level viauseOrganizationsinstead of per row, avoiding N+1 requests when many versions share a publisher. TheVersionAbbreviationIcontile now renders as a 64px square with a 6px radius, warm-neutral (secondary) fill, themed border, and serif typography (Source Serif 4) using the foreground text color; recent-version and all-version rows share the same tile styling, and long or trailing-digit abbreviations (e.g.NASB1995→NASB/1995) stay readable without overflowing. Brand fonts (Aktiv Grotesk App / Untitled Serif) are reverted to Inter / Source Serif 4 pending licensing; the brand-font implementation is parked on branchfeat/youversion-brand-fonts.
@youversion/platform-react-ui@2.1.0
Minor Changes
-
5b40719: Add a cycling line spacing setting to BibleReader
The Bible theme settings panel now includes a line spacing control that cycles
through three presets (small1.45, default1.7, large2.0) on each press.
The selection persists tolocalStoragewhen uncontrolled.BibleReader.RootgainslineSpacing,defaultLineSpacing, and
onChangeLineSpacingprops for controlled/uncontrolled usage. The existing
lineHeightprop is deprecated but still honored as the initial line spacing,
so this change is backward compatible; it will be removed in the next major.
Patch Changes
- f2c83cf: VerseOfTheDay now shows the Bible reference directly under the "Verse of the Day" label in foreground text instead of below the verse body. BibleCard and VerseOfTheDay no longer display inline verse numbers in passage text.
- @youversion/platform-core@2.1.0
- @youversion/platform-react-hooks@2.1.0
@youversion/platform-react-hooks@2.1.0
Patch Changes
- @youversion/platform-core@2.1.0
@youversion/platform-core@2.1.0
@youversion/platform-core@2.1.0
@youversion/platform-react-ui@2.0.1
Patch Changes
- dd83b33: BibleReader now keeps the previous chapter's text on screen while the next chapter loads, dimming it and floating a spinner over it (after a short delay) instead of pulsing stale text or flashing a blank spinner. Fast/cached chapter switches stay instant, the scroll position resets to the top on chapter change, and the
useDelayedLoadinghelper is shared with BibleCard. No changes to BibleTextView.- @youversion/platform-core@2.0.1
- @youversion/platform-react-hooks@2.0.1