Repository navigation
Version Packages - #390
Merged
Merged
Version Packages#390
Conversation
github-actions
Bot
force-pushed
the
changeset-release/master
branch
from
September 17, 2026 23:31
8f06eb2 to
0ffa68b
Compare
robertherber
enabled auto-merge
September 17, 2026 23:34
commit: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to master, this PR will be updated.
Releases
@react-native-healthkit/core@16.0.0
Major Changes
908aec2: chore: release the three packages on a single, shared version from now on
@kingstinct/react-native-healthkit,@react-native-healthkit/coreand@react-native-healthkit/health-recordscompile into one another's binarythrough the
ReactNativeHealthkitCorepod, and nothing in CocoaPods or npmcould previously detect a mismatched combination: the packages declared the
core pod without a version and the core package with an open-ended range, so an
incompatible pair failed as a Swift compile error deep inside
Pods.They are now a changesets
fixedgroup: every release publishes all three atthe same version, and the lock is enforced at both levels.
On npm,
@react-native-healthkit/coremoved from a peer dependency with anopen-ended range to a regular dependency pinned to an exact version. Your
package manager now installs the one matching core for you, there is no version
for you to keep in sync, and an incompatible combination cannot be resolved in
the first place. Expo autolinks it through that dependency, so most apps no
longer need to mention core at all; a bare React Native app still lists it,
because the React Native CLI only autolinks packages named in the app's own
package.json.In CocoaPods, each dependent podspec requires a core pod of exactly its own
version, so anything that slips past npm, such as a mixed-version family with
the main package at 16.0.0 beside health records at 16.1.0, fails at
pod installwith a version conflict naming both pods rather than as a Swiftcompile error or a runtime surprise.
An exact peer range was the obvious alternative and is the one thing that does
not work here: changesets treats a peer dependency leaving its range as breaking
for its dependents, and the fixed group then lifts everyone to that type, so any
minor anywhere in the family would come out as a major. A regular dependency has
no such feedback loop.
Because the group adopts the highest version in it, this release moves
@react-native-healthkit/coreand@react-native-healthkit/health-recordsupto the main package's number. The jump is a renumbering, not a redesign: apart
from the changes described in the other entries of this release, the two
packages are what they were at 0.0.1 and 0.1.0. Upgrade the packages you use
together; mixing majors across the family is no longer supported.
908aec2: fix: reject undecodable anchors instead of silently restarting the query
deserializeHKQueryAnchornow throws for a base64 string that is not a validHKQueryAnchorarchive, in both packages. Previously@kingstinct/react-native-healthkitreturned nil for such a value, and the anchored query then ran unanchored and
resolved with the entire data set plus a fresh anchor, so a caller syncing on
the anchor re-ingested everything as new with no error to notice. Pass a
nil/absent anchor to start from the beginning deliberately; anything thatfails to decode is now an error.
Also in this release:
Objective-C name
RNHealthKitCoreBackgroundDeliveryManagerrather than thebare
BackgroundDeliveryManagerthat@kingstinct/react-native-healthkit15and earlier export. Installing a core-based
@react-native-healthkit/health-recordsalongside such a version no longer puts two classes with one name in the
binary, which could leave the launch hook resolving either of them and
silently drop background delivery.
the warning is now logged once per metadata key per process instead of once
per sample, so it surfaces without flooding the console or the
background-delivery window.
@react-native-healthkit/coreno longer ships an ESM build. Its previousimportentry could not actually be loaded by Node: the main entry usedextensionless directory imports and the plugin entry took named imports from
CommonJS
@expo/config-plugins. Theimportcondition now resolves to theCommonJS build, which Node imports with working named exports.
908aec2: feat: add
@react-native-healthkit/core, the shared foundation of@kingstinct/react-native-healthkitand@react-native-healthkit/health-records: the TypeScript types both packages expose, the non-iOS stub helper, the Expo config plugin building blocks, and theReactNativeHealthkitCorepod with the sharedHKHealthStore, query, anchor, predicate and metadata helpers, Objective-C exception catching and the launch-time background-delivery observer registration@react-native-healthkit/health-records@16.0.0
Major Changes
908aec2: chore: release the three packages on a single, shared version from now on
@kingstinct/react-native-healthkit,@react-native-healthkit/coreand@react-native-healthkit/health-recordscompile into one another's binarythrough the
ReactNativeHealthkitCorepod, and nothing in CocoaPods or npmcould previously detect a mismatched combination: the packages declared the
core pod without a version and the core package with an open-ended range, so an
incompatible pair failed as a Swift compile error deep inside
Pods.They are now a changesets
fixedgroup: every release publishes all three atthe same version, and the lock is enforced at both levels.
On npm,
@react-native-healthkit/coremoved from a peer dependency with anopen-ended range to a regular dependency pinned to an exact version. Your
package manager now installs the one matching core for you, there is no version
for you to keep in sync, and an incompatible combination cannot be resolved in
the first place. Expo autolinks it through that dependency, so most apps no
longer need to mention core at all; a bare React Native app still lists it,
because the React Native CLI only autolinks packages named in the app's own
package.json.In CocoaPods, each dependent podspec requires a core pod of exactly its own
version, so anything that slips past npm, such as a mixed-version family with
the main package at 16.0.0 beside health records at 16.1.0, fails at
pod installwith a version conflict naming both pods rather than as a Swiftcompile error or a runtime surprise.
An exact peer range was the obvious alternative and is the one thing that does
not work here: changesets treats a peer dependency leaving its range as breaking
for its dependents, and the fixed group then lifts everyone to that type, so any
minor anywhere in the family would come out as a major. A regular dependency has
no such feedback loop.
Because the group adopts the highest version in it, this release moves
@react-native-healthkit/coreand@react-native-healthkit/health-recordsupto the main package's number. The jump is a renumbering, not a redesign: apart
from the changes described in the other entries of this release, the two
packages are what they were at 0.0.1 and 0.1.0. Upgrade the packages you use
together; mixing majors across the family is no longer supported.
908aec2: fix: reject undecodable anchors instead of silently restarting the query
deserializeHKQueryAnchornow throws for a base64 string that is not a validHKQueryAnchorarchive, in both packages. Previously@kingstinct/react-native-healthkitreturned nil for such a value, and the anchored query then ran unanchored and
resolved with the entire data set plus a fresh anchor, so a caller syncing on
the anchor re-ingested everything as new with no error to notice. Pass a
nil/absent anchor to start from the beginning deliberately; anything thatfails to decode is now an error.
Also in this release:
Objective-C name
RNHealthKitCoreBackgroundDeliveryManagerrather than thebare
BackgroundDeliveryManagerthat@kingstinct/react-native-healthkit15and earlier export. Installing a core-based
@react-native-healthkit/health-recordsalongside such a version no longer puts two classes with one name in the
binary, which could leave the launch hook resolving either of them and
silently drop background delivery.
the warning is now logged once per metadata key per process instead of once
per sample, so it surfaces without flooding the console or the
background-delivery window.
@react-native-healthkit/coreno longer ships an ESM build. Its previousimportentry could not actually be loaded by Node: the main entry usedextensionless directory imports and the plugin entry took named imports from
CommonJS
@expo/config-plugins. Theimportcondition now resolves to theCommonJS build, which Node imports with working named exports.
908aec2: refactor: move the code shared with
@kingstinct/react-native-healthkitinto the new@react-native-healthkit/coredependency.Nothing to install: core is pinned to this package's exact version, so your package manager brings in the matching copy and Expo autolinks it. Bare React Native apps must still list it in their own
package.json(bun add @react-native-healthkit/core), because the React Native CLI only autolinks packages named there. The public API is unchanged, and background delivery configured before this release keeps working: the shared manager reads the existing UserDefaults keys.Patch Changes
@kingstinct/react-native-healthkit@16.0.0
Major Changes
908aec2: chore: release the three packages on a single, shared version from now on
@kingstinct/react-native-healthkit,@react-native-healthkit/coreand@react-native-healthkit/health-recordscompile into one another's binarythrough the
ReactNativeHealthkitCorepod, and nothing in CocoaPods or npmcould previously detect a mismatched combination: the packages declared the
core pod without a version and the core package with an open-ended range, so an
incompatible pair failed as a Swift compile error deep inside
Pods.They are now a changesets
fixedgroup: every release publishes all three atthe same version, and the lock is enforced at both levels.
On npm,
@react-native-healthkit/coremoved from a peer dependency with anopen-ended range to a regular dependency pinned to an exact version. Your
package manager now installs the one matching core for you, there is no version
for you to keep in sync, and an incompatible combination cannot be resolved in
the first place. Expo autolinks it through that dependency, so most apps no
longer need to mention core at all; a bare React Native app still lists it,
because the React Native CLI only autolinks packages named in the app's own
package.json.In CocoaPods, each dependent podspec requires a core pod of exactly its own
version, so anything that slips past npm, such as a mixed-version family with
the main package at 16.0.0 beside health records at 16.1.0, fails at
pod installwith a version conflict naming both pods rather than as a Swiftcompile error or a runtime surprise.
An exact peer range was the obvious alternative and is the one thing that does
not work here: changesets treats a peer dependency leaving its range as breaking
for its dependents, and the fixed group then lifts everyone to that type, so any
minor anywhere in the family would come out as a major. A regular dependency has
no such feedback loop.
Because the group adopts the highest version in it, this release moves
@react-native-healthkit/coreand@react-native-healthkit/health-recordsupto the main package's number. The jump is a renumbering, not a redesign: apart
from the changes described in the other entries of this release, the two
packages are what they were at 0.0.1 and 0.1.0. Upgrade the packages you use
together; mixing majors across the family is no longer supported.
908aec2: fix: reject undecodable anchors instead of silently restarting the query
deserializeHKQueryAnchornow throws for a base64 string that is not a validHKQueryAnchorarchive, in both packages. Previously@kingstinct/react-native-healthkitreturned nil for such a value, and the anchored query then ran unanchored and
resolved with the entire data set plus a fresh anchor, so a caller syncing on
the anchor re-ingested everything as new with no error to notice. Pass a
nil/absent anchor to start from the beginning deliberately; anything thatfails to decode is now an error.
Also in this release:
Objective-C name
RNHealthKitCoreBackgroundDeliveryManagerrather than thebare
BackgroundDeliveryManagerthat@kingstinct/react-native-healthkit15and earlier export. Installing a core-based
@react-native-healthkit/health-recordsalongside such a version no longer puts two classes with one name in the
binary, which could leave the launch hook resolving either of them and
silently drop background delivery.
the warning is now logged once per metadata key per process instead of once
per sample, so it surfaces without flooding the console or the
background-delivery window.
@react-native-healthkit/coreno longer ships an ESM build. Its previousimportentry could not actually be loaded by Node: the main entry usedextensionless directory imports and the plugin entry took named imports from
CommonJS
@expo/config-plugins. Theimportcondition now resolves to theCommonJS build, which Node imports with working named exports.
908aec2: refactor: move the code shared with
@react-native-healthkit/health-recordsinto the new@react-native-healthkit/corepackage.Nothing to install: core is a regular dependency pinned to this package's exact version, so your package manager brings in the matching copy and Expo autolinks it. Bare React Native apps must still list it in their own
package.json, because the React Native CLI only autolinks packages named there:Public API is unchanged. The shared types (
AuthorizationStatus,UpdateFrequency,Device,SourceRevision,DateFilter,EmitterSubscription, …) are still exported from this package but are now the same declarations as in@react-native-healthkit/health-records, so values can flow between the two packages without casts.SampleTypefields andEmitterSubscription.remove(which now reports whether the subscription was still active) follow the core definitions. Background delivery configured before this release is picked up unchanged; the shared manager keeps reading the existing UserDefaults keys.Minor Changes
HKQuantityTypeIdentifierHeartRateVariabilityRMSSD(ms, discrete/arithmetic, writeable), and exposegetEarliestAuthorizedSampleDates- a binding forHKHealthStore.earliestAuthorizedSampleDate(for:), which reports the earliest date the app may read samples from for each type the user granted only limited access to. Types without a limited-access lower bound are omitted from the result, and on iOS 26 and below it resolves to an empty object since the concept does not exist there.Patch Changes