2026-09-02
Consistent entitlement fallbacks across the Node and JavaScript SDKsEntitlement fallbacks, misses and offline reads now behave the same way in both SDKs. Reads served from cache are unchanged, field for field — every change below affects a degraded read only: a configured fallback, a miss, a kind mismatch, offline mode, or a failed read.Credit
A spent balance is deliberately not in that list: it comes back as a real entitlement carrying
Unchanged: the typed reads (
getMeteredEntitlement and friends) still treat “not in the subscription” as a real answer and ignore the configured fallback, while getEntitlement / getEntitlementV2 still answer from it.Credit isFallback: telling “no data” from “not entitled”
isFallback on a credit read used to be true on every miss, so the flag never meant what it says. It now means only what the fallback strategy page already documents: the read never reached cached state.Consequence: a customer who simply has no entitlement to a currency now comes back with isFallback: false and a zeroed balance. Code that used isFallback alone to mean “we have no real data” renders that zero as though it were real.The check to migrate to:RequestedUsageExceedingLimit, and its numbers are the ones worth rendering — “0 / 100” and an offer to top up, not “no data”.If you use @stigg/react-sdk’s credit widgets, this is handled for you as of react-sdk 11.0.0 — see the React SDK changelog.2026-06-25
Credit wallet soft limit
- Added:
hasSoftLimitfield onCreditEntitlement. When a credit entitlement is configured as a soft limit,getEntitlement()returnshasAccess: trueandhasSoftLimit: trueeven after the credit balance reaches zero. Hard limit (the default) continues to returnhasAccess: falsewhen the balance is exhausted. Credit-backed features inherit the wallet’s soft-limit so dependent feature reads stay consistent.
2026-04-01
Breaking changes — aligns entitlement types and evaluation behavior with
@stigg/node-server-sdk:2026-03-19
- Added:
billingCycleAnchorproperty when provisioning and updating subscriptions. AcceptsSubscriptionBillingCycleAnchor.UNCHANGED(default) to keep the existing billing cycle anchor, orSubscriptionBillingCycleAnchor.NOWto reset it to the current timestamp.
2026-03-17
- Deprecated:
getCreditBalance()(please usegetCreditEntitlement()instead).getCreditEntitlement()reads directly from the SDK’s local cache, significantly reducing latency and removing rate-limit concerns. It returns the same data:currentBalance,totalConsumed,totalGranted, andcurrency.
2026-03-17
- Added:
getCreditEntitlement()method for low-latency retrieval of customer credit balance. - Added: Support for provisioning subscriptions with variable recurring credit grant entitlements.
2026-02-26
- Enhanced
getCreditEntitlementto return currency information.
2026-01-24
- Added: Support for configuring and managing credit auto-recharge settings, including trigger balance, target top-up amount, and monthly spend limit.
2025-12-07
- Added support for subscriptions filter by resourceId and plan (planId/displayName).
2025-09-09
- Updated SDK to prevent dependency on compromised NPM packages
2025-09-01
- Added:
AccessDeniedReason.Revokedfor determining when an entitlement has been explicitly revoked.
2025-06-26
- Added:
getSubscriptionsendpoint that allows retrieving all of customers’ subscriptions
2025-02-19
- Added: ability to determine the number of attempts that were made to collect payment for a generated invoice when Stigg is integrated with Stripe using the
latestInvoice.attemptCountproperty of thegetActiveSubscriptions()andgetSubscription()endpoints
2025-01-12
- Added: support for offline mode
2024-12-17
- Added:
GetUsageHistoryV2 - ⚠️ Deprecated:
GetUsageHistory(please useGetUsageHistoryV2instead) - Changed:
- Input Object:
customerRefIdrenamed tocustomerIdresourceRefIdrenamed toresourceIdfeatureRefIdrenamed tofeatureIdresetPeriodremovedyearlyResetPeriodConfigurationremovedmonthlyResetPeriodConfigurationremovedweeklyResetPeriodConfigurationremoved
- Output Object
startDateremovedendDateremovedusageMeasurements[i].daterenamed toseries[0].point[i].timestampusageMeasurements[i].valuerenamed toseries[0].point[i].valueusageMeasurements[i].isResetPointrenamed toseries[0].point[i].isResetPoint- Old Value:
trueif and only if usage was reset due to periodic reset. - New Value:
trueif and only if usage was reset due to periodic reset or due to a plan transition.
- Old Value:
groups[i].groupInfo[j].keyrenamed toseries[i].tags[j].keygroups[i].groupInfo[j].valuerenamed toseries[i].tags[j].valuegroups[i].usageMeasurements[j].daterenamed toseries[i].point[j].timestampgroups[i].usageMeasurements[j].valuerenamed toseries[i].point[j].valuegroups[i].usageMeasurements[j].isResetPointrenamed toseries[i].point[j].isResetPoint- Old Value:
trueif and only if usage was reset due to periodic reset. - New Value:
trueif and only if usage was reset due to periodic reset or due to a plan transition.
- Old Value:
- Input Object:
2024-12-08
- Added: ability to override prices when there’s a scheduled update in place
2024-11-21
- Added: support for price localization in fixed fee coupons
2024-10-14
- Added: ability to estimate the subscription cost when the payment of the subscription is delegated to a different customer using:
PreviewSubscription.payingCustomerIdEstimateSubscription.payingCustomerIdEstimateSubscriptionUpdate.payingCustomerId
2024-10-08
- Added: ability to more easily determine the usage period of metered entitlements using:
MeteredEntitlement.usagePeriodStartMeteredEntitlement.usagePeriodEnd
- 🛑 Removed:
MeteredEntitlement.nextResetDate
2024-06-20
- Added: ability to get the list of active subscriptions from Edge using
getActiveSubscriptionsList()
2024-06-20
- Added: ability to get the details of a specific subscription using
getSubscription()
