Learn about the @hubspot/cms-components library
@hubspot/cms-components
is a runtime library providing primitives that interact with CMS React features and other HubSpot data from your components.
( ) => number
Returns the ID of the HubSpot account for the page that’s being rendered.
( ) => boolean
Returns true
for components rendered live for a deployed project, and false
when rendered in the dev server.
(secretName: string) => string
Returns a value for a given secret key. The secret must be defined using the hs secrets
CLI command and the key must be included in a secretNames
array in your cms-assets.json
configuration.
To prevent accidentally leaking secrets, getSecret
must be called from a React component function that is rendered on the server. In other words, getSecret()
:
( ) => boolean
Will return true
only after hydration is completed. More specifically it will:
false
during the initial render on the server.false
during the first render that happens inside the browser.true
during any subsequent renders that happen after the component has been “mounted” in the browser.( ) => boolean
Returns true
while the component is being rendered on the server and false
in the browser. Note that in most cases, it is better to use useAfterIslandHydration()
, since it makes it easier for your code to “do the right thing” for hydration.
( ) => URL
Returns the current page URL. Works on the server and is reactive to changes to the URL on client. This can be useful when components need to react to URL changes, such as query params, while also supporting server rendering. To programmatically trigger non-navigation URL changes, use pushHistoryState()
which is identical to window.history.pushState()
but integrates with usePageUrl()
to ensure it receives change events.
(renderFunc: () => JSX.Element) => void
Provides an API to pass HTML to render in the <head>
. This is most useful for collecting CSS from CSS-in-JS libraries and including the emitted CSS in the initial page response. See Styling for more details.
useState
, but updating the state via updateSharedState(newValue)
will update all of the other islands that also use useSharedIslandState()
. Works in coordination with the SharedIslandState
component.
useReducer
, but actions dispatched will “reach across” and update all of the other islands that also use useSharedIslandReducer()
. Works in coordination with the SharedIslandReducer
component.
<Island>
in the island documentation.
useSharedIslandState()
by other islands in this JS module or partial. All islands that are “wrapped” by SharedIslandState
(i.e. are children or descendents of the children) will share a single state reference.
SharedIslandState
must be rendered on the server and cannot be contained inside an island.
useSharedIslandReducer()
by other islands in this JS module or partial. All islands that are “wrapped” by SharedIslandReducer
(i.e. are children or descendants of the children) will share a single state reference and dispatch function.
SharedIslandReducer
must be rendered on the server and cannot be contained inside an island. The reducer function passed in must be imported with the ?client
suffix (which will automatically prepare code-splitting that function for the browser to grab it).
fieldPath
then the components will render null.
@hubspot/cms-components/Icon
The Icon
component renders an SVG for a referenced Icon
field.
This component also accepts and applies all valid attributes for an SVG element, such as id
and style
.
Prop | Type | Description |
---|---|---|
fieldPath | String | The path of the icon field to render. For example:
|
iconPurpose | 'SEMANTIC' (default) | 'DECORATIVE' | SEMANTIC will set the role="img" attribute on the SVG, as well as aria-labelledby pointing to the title element. |
Title | String | If provided, will render a tag within the SVG for accessibility to be described by aria-labelledby via iconPurpose . iconStyle 'REGULAR' | 'SOLID' | 'LIGHT' If provided, overrides the default icon style associated with the field. Not all icons have every style. Will only use the override if the icon style exists. |
@hubspot/cms-components/RichText
The RichText
component handles inserting the RichText HTML into your component.
This component passes through all valid attributes, such as id
and style
, to the wrapper tag and applies them.
Prop | Type | Description |
---|---|---|
fieldPath | String | The field of the Rich Text field to render. |
tag | String | The HTML tag used as the wrapping element for the content (e.g., div ). |