
Hard limit UX — Optionally surface hard limits in components alongside monetized entitlements with soft limits like overages, pay in advance, etc. Hard limits are themselves optional, displaying them is now any option too.
Improved invoice display — The invoice view in the customer portal has been updated for clarity. Formatting and display logic improvements make billing history easier to read.
Usage bar fix for overage entitlements — The usage bar was rendering incorrectly for entitlements in overage. This is now fixed and accurately reflects over-limit usage state.

checkFlagWithEntitlement is now available across more SDKs. This method returns not just the flag value (true/false) but the full entitlement context: usage, allocation, credit balance, and the reason for evaluation. This is the right call to make when you need to render feature states like usage meters, upgrade prompts, hard limit walls.
Node.js — checkFlagWithEntitlement + datastream support + Replicator support
Go — checkFlagWithEntitlement now available
C# — checkFlagWithEntitlement now available
The datastream and Replicator additions to the Node SDK mean enterprise customers using Schematic's pre-computed entitlement delivery can now use the Node SDK with the same low-latency, cached evaluation path available in other SDKs.
Docs:
Node Effective Entitlements: https://docs.schematichq.com/developer_resources/sdks/nodejs#checking-flags-with-entitlement-details
Node Datastream: https://docs.schematichq.com/developer_resources/sdks/nodejs#datastream
Go Entitlements: https://docs.schematichq.com/developer_resources/sdks/go#checking-flags-with-entitlement-details
C# Entitlements: https://docs.schematichq.com/developer_resources/sdks/csharp#checking-flags-with-entitlement-details

You can now issue read-only API keys from the Schematic dashboard. Read-only keys are restricted to GET operations. They cannot create, update, or delete any resources. Flag check routes (which use POST under the hood) are correctly permitted on read-only keys.
This is useful for giving read access to agents, internal tooling, analytics pipelines, or third-party integrations without exposing write permissions.

Pay-in-advance entitlements now support tiered pricing, both volume and graduated models. Previously, pay-in-advance was flat-fee only. Now you can define pricing tiers on any pay-in-advance monetized entitlement, on plans and add-ons alike.
How it works:
In the entitlement config, after selecting "Pay in advance," a new Pricing Type dropdown appears: Flat fee (existing) or Tiered (new)
When Tiered is selected, choose between Volume or Graduated pricing and define your tiers
In the entitlements table, these show as "Pay in advance, tiered" for clarity
In Components: checkout, pricing tables, and the current plan view all surface tiers via tooltip, consistent with how tiered pricing already works for metered features
The "Add More" CTA in the metered feature element works the same as standard pay-in-advance, with tier pricing impact shown inline during quantity selection

The Schematic app has a new sidebar navigation. The information architecture has been reorganized to reflect how teams actually use the product billing, catalog, features, and company management are easier to find and navigate. The update also includes broader UI polish across the app. Better density and usability across the board.

Plans in Schematic now support versioning. When you make changes to a plan — whether to pricing, entitlements, or metadata — you can save those changes as a new version rather than mutating the plan in place. This means you can grandfather existing customers on their current terms while new subscribers get the updated plan automatically.
What's included:
Plan drafts — all plan edits (name, pricing, entitlements, credits) are handled in a single draft flow with a save bar UI, consistent with how flag changes work
Version creation — when saving changes, a new version is created and once you publish the draft you have the choice to migrate companies to the new version or leave them on the legacy plan
Immediate migration — when creating a new version, you can migrate all or some existing subscribers to the new version immediately
Versions dropdown — view all versions of a plan and which companies are on each
Version selector in Manage Plan — defaults to the latest version; override per-company as needed

More flexible checkout experience
Customers who skip the plan selection in the checkout can now change their plan later without restarting the flow. This makes it easier to explore options and adjust decisions mid-checkout.
Skip configuration support for credit products
For businesses selling credit bundles, the checkout flow now lets customers skip optional setup steps and complete checkout faster.
Billing period selection is clearer
Customers can now choose how often they’re billed (e.g., monthly vs yearly) even when skipping other configuration steps.
Improved credits display
The “credits remaining” indicator has been updated for better clarity and visual consistency. It’s easier to see how many credits a customer has left.
Checkout modal scroll fixes
Users encountering long checkout forms will now be able to scroll reliably without layout issues.
Tooltip behavior fixed inside dialogs
Helpful hints and tooltips now appear reliably within modal dialogs, so customers don’t miss important context.
Stripe integration more resilient in dev
In development environments, Stripe is now mocked so unhandled errors don’t break the app — improving local testing and stability.
Documentation clarity improvement
Minor fix to the setup example in docs so it reads correctly and avoids confusion during integration.
Accurate plan pricing shown in plan selector
Plan prices now consistently display in the plan UI, preventing confusion over what customers are about to purchase.
Pay-in-advance values retained on plan change
If a customer had entered a prepaid amount and then switched base plans, it could clear unexpectedly. This value now persists correctly.

Replicator Performance Improvements
Replicator now starts up significantly faster thanks to asynchronous initial loading. Instead of waiting for a full data sync before responding to requests, Replicator serves data as it becomes available. This reduces cold start time (especially for large datasets) and makes local flag evaluation feel instant in high-throughput environments.
Node SDK: Timeouts and Fallback Values
The Node SDK now supports configurable timeouts and fallback values. You can set a global or per-call timeout to ensure your app doesn’t hang waiting for a response. If a request fails or times out, the SDK will return a default value you define. This improves reliability and makes it easier to design safe failover behavior in degraded conditions.