Core Utilities and Helpers

Core utilities and helpers available across the Limio SDK — formatting, sanitisation, error handling, address lookups, and component props.

These utilities are imported from @limio/sdk (or its subpaths) and are available in any custom component. They are ordered below roughly by how commonly they are used across production components.

circle-info

Offer-specific helpers (useOfferInfo, checkActiveOffers, groupOffers) are documented on the Page, Offers & Add-Ons page. Invoice fetching (LimioFetchers.invoiceFetch) is documented on the Billing & Account page.


sanitiseHTML

An HTML sanitisation function that should be used whenever rendering content from offers or CMS fields via dangerouslySetInnerHTML. It uses DOMPurifyarrow-up-right under the hood and automatically adds security attributes to links.

Most offer attributes that contain rich text — such as offer_features__limio, display_description__limio, or any __limio_richtext prop — should be passed through sanitiseHTML before rendering.

function sanitiseHTML(dirty?: string): string
import { sanitiseHTML } from "@limio/sdk"

const OfferFeatures = ({ offer }) => {
  const featuresHtml = offer.data.attributes.offer_features__limio

  return (
    <div dangerouslySetInnerHTML={{ __html: sanitiseHTML(featuresHtml) }} />
  )
}

Behaviour:

  1. Strips all non-HTML-safe tags and attributes.

  2. Preserves the target attribute on links.

  3. Automatically adds rel="noopener noreferrer" to links with target="_blank", and rel="noopener" to links with other target values.

  4. Throws an error if called in a non-browser environment without DOM support (a Node.js version is available internally for SSR).

Important: Always use sanitiseHTML when rendering user-controlled or offer-sourced HTML with dangerouslySetInnerHTML. This prevents XSS attacks from malicious content in offer attributes.


ErrorBoundary

A React error boundary component that catches JavaScript errors in its child component tree and displays a fallback UI. Errors are automatically reported to Sentry.

Limio wraps individual components in an error boundary as part of the build step, so it is not necessary to use at the top level. However, ErrorBoundary is useful for wrapping specific children that may error where the parent component should remain functional — for example, a subscription details panel that fetches external data.

Props:

Prop
Type
Description

children

React.ReactNode

The component tree to wrap

ErrorUI

React.ComponentType<{ error: Error }>

Optional custom fallback component

With a custom error UI:

Behaviour:

  1. Catches errors during rendering, in lifecycle methods, and in constructors of child components.

  2. Does not catch errors in event handlers — use try/catch for those.

  3. Logs all caught errors to Sentry with component stack info.

  4. A HOC version is also available: withErrorBoundary(Component, ErrorUI).


Formatters

formatCurrency

Formats a numeric amount with a currency code and optional locale. This is the most commonly used price formatter — use it in subscription tables, invoice lists, and anywhere you display monetary values.

Parameters:

  • amount: string | number — The amount to format.

  • currencyCode: string — ISO 4217 currency code (e.g. "USD", "EUR").

  • locality (optional): string — Locale for formatting.

formatCurrencyForCurrentLocale

A convenience wrapper around formatCurrency that automatically resolves the locale from the limio-country cookie. Use this when you want locale-aware formatting without manually specifying a locale — common in cart summaries and checkout components.

Parameters:

  • amount: number | string — The amount to format.

  • currency: string — The ISO 4217 currency code.

Returns: A formatted currency string using the browser's Intl.NumberFormat API.

Use formatCurrency if you need to specify a locale explicitly.

formatDate

Formats an ISO date string into a human-readable date. Use this when displaying subscription start/end dates, invoice dates, or billing cycle information.

Parameters:

  • date: string — An ISO 8601 date string.

  • format (optional): string — One of "DATE_EN", "DATE_FULL", "DATE_SHORT", "DATE_MED". If omitted, defaults to the Limio app locale settings.

formatDisplayPrice

Formats a template string by replacing placeholders with values from a price object. Useful for rendering configurable price display strings that include currency symbols and amounts.

Parameters:

  • template: string — A string containing placeholders (e.g. {{currencyCode}}, {{amount}}).

  • offerPrice: Array<LimioPrice> — Array of price objects; the first element is used.


Component Props

useComponentProps and getPropsFromPackageJson are the standard way to load the configurable props defined in your component's package.json. Almost every custom component uses this pattern to read the values that content editors set in the Page Builder.

For full details on defining limioProps in your package.json, see Prop Types and Development Guidelines.


Address Helpers

Utilities for working with addresses — formatting, metadata lookups, and country-specific form configuration. Import from @limio/sdk/address. These are primarily used in account management and checkout components that collect or display delivery and billing addresses.

addressSummary

Takes a Limio address object and returns a formatted single-line string. Returns "N/A" if the address is empty. Use this in subscription detail tables and payment method displays.

formatCountry

Converts an alpha-2 country code into the full country name.

getAddressMetadata

Returns which address fields are required and which should be rendered for a given country. Use this to build dynamic address forms that adjust their inputs based on the selected country — for example, showing a "State" field for US/CA but not for UK addresses.

Returns:

  • requiredAddressFields: string[] — Fields that must be filled in.

  • addressFieldsToRender: string[] — Fields that should appear in the form.

getCountryMetadata

Returns metadata for a country including its full name and ISO codes.


DateTime

Limio re-exports DateTime from Luxonarrow-up-right for date handling. Use it when formatDate isn't flexible enough — for example, when calculating days until renewal or comparing subscription periods.


LimioAppSettings

Provides access to global application settings configured in Limio. Currently exposes the configured date format.

Available methods:

Method
Returns
Description

getDateFormat()

string

The date format configured for the current Limio environment

Last updated

Was this helpful?