appgram / docs
Dashboard

REACT NATIVE SDK

React Native SDK

Native mobile components and hooks for React Native apps on iOS and Android.

Install bash
npm install @appgram/react-native
174 symbols 15 categories tsx

Provider

component

AppgramProvider

Root provider component for the Appgram SDK. Provides configuration, API client, theming, and fingerprinting to all child components.

Parameters

props AppgramProviderProps

Returns

ReactElement

Client

Methods

addSupportMessage async → Promise<ApiResponse<object>>

Add a message to a support ticket

  • ticketId : string
  • token : string
  • content : string
checkVote async → Promise<ApiResponse<VoteCheckResponse>>

Check if a fingerprint has voted on a wish

  • wishId : string
  • fingerprint : string
createComment async → Promise<ApiResponse<Comment>>

Create a comment

  • data : object
createVote async → Promise<ApiResponse<object>>

Create a vote

  • wishId : string
  • fingerprint : string
  • voterEmail : string optional
createWish async → Promise<ApiResponse<Wish>>

Create a new wish (feature request)

  • data : object
deleteVote async → Promise<ApiResponse<object>>

Delete a vote

  • voteId : string
getBlogCategories async → Promise<ApiResponse<BlogCategory[]>>

Get blog categories

getBlogPost async → Promise<ApiResponse<BlogPost>>

Get a single blog post by slug

  • slug : string
getBlogPosts async → Promise<ApiResponse<BlogPostsResponse>>

Get public blog posts with optional filters

  • filters : BlogFilters optional
getBlogPostsByCategory async → Promise<ApiResponse<BlogPostsResponse>>

Get blog posts by category slug

  • categorySlug : string
  • options : object optional
getBlogPostsByTag async → Promise<ApiResponse<BlogPostsResponse>>

Get blog posts by tag

  • tag : string
  • options : object optional
getComments async → Promise<ApiResponse<CommentsResponse>>

Get comments for a wish

  • wishId : string
  • options : object optional
getFeaturedBlogPosts async → Promise<ApiResponse<BlogPost[]>>

Get featured blog posts

getForm async → Promise<ApiResponse<Form>>

Get a form by ID via portal endpoint

  • formId : string
getHelpArticle async → Promise<ApiResponse<HelpArticle>>

Get a help article by slug

  • slug : string
  • flowId : string
getHelpCollection async → Promise<ApiResponse<object>>

Get help center collection for the project

getHelpFlow async → Promise<ApiResponse<HelpFlow>>

Get a help flow by slug

  • slug : string
getPageData async → Promise<ApiResponse<object>>

Get all public page data in one request

getPublicStatusOverview async → Promise<ApiResponse<StatusPageOverview>>

Get public status page overview (services, active updates, overall status)

  • slug : string
getPublicSurvey async → Promise<ApiResponse<Survey & object>>

Get a public survey by slug

  • slug : string
getPublicSurveyCustomization async → Promise<ApiResponse<Record<string, unknown>>>

Get survey customization settings

  • surveyId : string
getPublicWishes async → Promise<ApiResponse<WishesResponse>>

Get public wishes for the project

  • filters : WishFilters optional
getRelatedBlogPosts async → Promise<ApiResponse<BlogPost[]>>

Get related blog posts for a given post

  • slug : string
getRelease async → Promise<ApiResponse<Release>>

Get a single release by slug

  • releaseSlug : string
getReleaseFeatures async → Promise<ApiResponse<ReleaseFeature[]>>

Get features for a release (public endpoint)

  • releaseSlug : string
getReleases async → Promise<ApiResponse<Release[]>>

Get public releases for the project

  • options : object optional
getRoadmapData async → Promise<ApiResponse<RoadmapData>>

Get roadmap data for the project

getSupportTicket async → Promise<ApiResponse<SupportRequest>>

Get a specific support ticket using magic link token

  • ticketId : string
  • token : string
getWish async → Promise<ApiResponse<Wish>>

Get a single wish by ID

  • wishId : string
searchBlogPosts async → Promise<ApiResponse<BlogPostsResponse>>

Search blog posts

  • query : string
  • options : object optional
sendSupportMagicLink async → Promise<ApiResponse<object>>

Request a magic link to access support tickets

  • userEmail : string
submitForm async → Promise<ApiResponse<FormSubmission>>

Submit a form

  • projectId : string
  • formId : string
  • data : FormSubmitInput
submitSupportRequest async → Promise<ApiResponse<SupportRequest>>

Submit a support request

  • data : SupportRequestInput
submitSurveyResponse async → Promise<ApiResponse<SurveyResponse>>

Submit a survey response

  • surveyId : string
  • data : SurveySubmitInput
trackFormView async → Promise<ApiResponse<object>>

Track a form view (call when form is displayed)

  • formId : string
uploadFile async → Promise<ApiResponse<object>>

Upload a file via public portal (no auth required)

  • file : File
verifySupportToken async → Promise<ApiResponse<object>>

Verify magic link token and get user's support tickets

  • token : string

Hooks

Hook to access the full Appgram context. Must be used within an AppgramProvider.

Returns

AppgramContextValue

Hook to access the current theme. Must be used within an AppgramProvider.

Returns

AppgramTheme

Parameters

options UseBlogCategoriesOptions

Returns

UseBlogCategoriesResult

Parameters

options UseBlogPostOptions

Returns

UseBlogPostResult

Parameters

options UseBlogPostsOptions

Returns

UseBlogPostsResult

Parameters

options UseCommentsOptions

Returns

UseCommentsResult

Parameters

options UseFeaturedPostsOptions

Returns

UseFeaturedPostsResult
hook

useForm

Fetch a form configuration by ID.

Parameters

formId string

The form ID

options UseFormOptions

Hook options

Returns

UseFormResult

Submit forms with rate limiting.

Parameters

options UseFormSubmitOptions

Hook options

Returns

UseFormSubmitResult

Fetch a specific help article by slug and flow ID.

Parameters

slug string

The article slug

flowId string

The parent flow ID

Returns

UseHelpArticleResult

Returns

UseHelpCenterResult

Fetch a specific help flow by slug.

Parameters

slug string

The help flow slug

Returns

UseHelpFlowResult
hook

useRelease

Parameters

options UseReleaseOptions

Returns

UseReleaseResult

Parameters

options UseReleasesOptions

Returns

UseReleasesResult
hook

useRoadmap

Parameters

options UseRoadmapOptions

Returns

UseRoadmapResult
hook

useStatus

Parameters

options UseStatusOptions

Returns

UseStatusResult
hook

useSupport

Parameters

options UseSupportOptions

Returns

UseSupportResult
hook

useSurvey

Fetch a survey by slug.

Parameters

slug string

The survey slug to fetch

options UseSurveyOptions

Hook options

Returns

UseSurveyResult

Submit survey responses.

Parameters

options UseSurveySubmitOptions

Hook options

Returns

UseSurveySubmitResult
hook

useVote

Parameters

options UseVoteOptions

Returns

UseVoteResult
hook

useWishes

Parameters

options UseWishesOptions

Returns

UseWishesResult

Components

component

Badge

Badge Component A small status indicator with variant support. Supports muted, success, warning, error, and info actions.

Parameters

props BadgeProps

Returns

ReactElement
component

Blog

Blog Component Full-featured blog with list and detail views. Note: For app navigation, use BlogList and BlogPostDetail separately.

Parameters

props BlogProps

Returns

ReactElement
component

BlogCard

BlogCard Component Modern card with image overlay text. Supports default, compact, and large variants.

Parameters

props BlogCardProps

Returns

ReactElement
component

BlogList

BlogList Component Blog list with search, filter, and category pills. Use this for custom navigation instead of the full Blog component.

Parameters

props BlogListProps

Returns

ReactElement
component

BlogPostDetail

BlogPostDetail Component Blog detail view with full-width hero image. Can receive post data directly or fetch by slug.

Parameters

props BlogPostDetailProps

Returns

ReactElement<any, string | JSXElementConstructor<any>> | null
component

Button

Button Component A styled button with variant support. Supports solid, outline, and ghost variants with sm, md, lg sizes.

Parameters

props ButtonProps

Returns

ReactElement
component

Card

Card Component A styled container with variant support. Supports default, elevated, and outlined variants.

Parameters

props CardProps

Returns

ReactElement
component

ChatScreen

ChatScreen Component Full-screen AI-powered chat for help center integration. Queries the help center API and displays responses with sources.

Parameters

props ChatScreenProps

Returns

ReactElement
component

FormRenderer

FormRenderer Component Renders a dynamic form based on form configuration. Supports text, email, textarea, checkbox, select, and radio fields.

Parameters

props FormRendererProps

Returns

ReactElement
component

HelpArticleCard

HelpArticleCard Component A card displaying a help article preview. Use to build custom help article lists.

Parameters

props HelpArticleCardProps

Returns

ReactElement
component

HelpArticleDetail

HelpArticleDetail Component Displays help article content with HTML rendering. Use with your app's navigation.

Parameters

props HelpArticleDetailProps

Returns

ReactElement
component

HelpCenter

HelpCenter Component Displays help center flows/collections list. Use onFlowPress to navigate to flow detail in your app.

Parameters

props HelpCenterProps

Returns

ReactElement
component

HelpFlowCard

HelpFlowCard Component A card displaying a help flow/collection. Use to build custom help center navigation.

Parameters

props HelpFlowCardProps

Returns

ReactElement
component

HelpFlowDetail

HelpFlowDetail Component Displays articles within a help flow/collection. Use with your app's navigation.

Parameters

props HelpFlowDetailProps

Returns

ReactElement
component

Input

Input Component A styled text input with label and error support. Automatically shows focus and error states.

Parameters

props InputProps

Returns

ReactElement
component

ReleaseDetail

ReleaseDetail Component Displays a single release with its description, features, and changelog items. Can receive release data directly or fetch by slug.

Parameters

props ReleaseDetailProps

Returns

Element | null
component

ReleaseList

ReleaseList Component A list of product releases with version badges and dates. Use this for custom navigation instead of the full Releases component.

Parameters

props ReleaseListProps

Returns

Element
component

Releases

Releases Component A timeline-style changelog displaying product releases with features, improvements, and bugfixes.

Parameters

props ReleasesProps

Returns

Element
component

RoadmapBoard

RoadmapBoard Component A horizontal scrollable Kanban-style roadmap displaying columns and items. Tapping an item opens the WishDetailModal for voting and comments.

Parameters

props RoadmapBoardProps

Returns

Element
component

StatusBoard

StatusBoard Component Displays system status with services and incidents.

Parameters

props StatusBoardProps

Returns

ReactElement
component

SubmitWishSheet

SubmitWishSheet Component Bottom sheet/modal for submitting new feature requests. Supports auto-detection of custom forms from project customization.

Parameters

props SubmitWishSheetProps

Returns

ReactElement
component

SupportForm

SupportForm Component Modern support form with tabs for submitting and tracking support tickets. Supports custom contact forms with dynamic field rendering.

Parameters

props SupportFormProps

Returns

ReactElement
component

SurveyForm

SurveyForm Component Interactive survey form with decision tree branching support. Supports yes/no branching, conditional branches, and result messages.

Parameters

props SurveyFormProps

Returns

Element | null
component

VoteButton

VoteButton Component An upvote button for wishes with optimistic updates.

Parameters

props VoteButtonProps

Returns

ReactElement
component

WishCard

WishCard Component A card displaying a wish/feature request with voting and status.

Parameters

props WishCardProps

Returns

ReactElement
component

WishDetailModal

WishDetailModal Component A bottom sheet modal displaying wish details, voting, and comments. Supports swipe-to-dismiss and inline comment submission.

Parameters

props WishDetailModalProps

Returns

ReactElement<any, string | JSXElementConstructor<any>> | null
component

WishList

WishList Component A list of wishes with header, submit button, and empty states. Includes built-in SubmitWishSheet for submitting new feature requests.

Parameters

props WishListProps

Returns

ReactElement

Wish Types

Properties

customFormId string optional

Custom form ID to use instead of default form. When provided, fetches the form config and renders its fields dynamically. The form should have integration.type = 'wish' to create feature requests.

description string optional

Form description

onClose () => void

Callback when visibility changes

onError (error: string) => void optional

Callback when submission fails

onSuccess (wish: Wish) => void optional

Callback when wish is successfully submitted

submitButtonText string optional

Submit button text

Default: 'Submit Feature Request'

title string optional

Form title

Default: 'Submit a Feature Request'

visible boolean

Whether the sheet is visible

interface

UseVoteOptions

Properties

onError (error: string) => void optional

Callback when a vote action fails

onVote (wishId: string, hasVoted: boolean, newCount: number) => void optional

Callback when a vote action completes successfully

interface

UseVoteResult

Properties

checkVote (wishId: string) => Promise<object>

Check if the current user has voted on a wish

error string | null

Error message if any

isVoting boolean

Loading state for vote operations

unvote (wishId: string, voteId: string, currentVoteCount: number) => Promise<boolean>

Remove a vote from a wish

vote (wishId: string, currentVoteCount: number) => Promise<boolean>

Cast a vote on a wish

interface

UseWishesOptions

Properties

filters WishFilters optional

Initial filters for the wishes query

refreshInterval number optional

Auto-refresh interval in milliseconds (0 to disable)

Default: 0

skip boolean optional

Skip initial fetch

Default: false

interface

UseWishesResult

Properties

error string | null

Error message if any

isLoading boolean

Loading state

page number

Current page

refetch () => Promise<void>

Manually refetch data

setFilters (filters: WishFilters) => void

Update filters (resets to page 1)

setPage (page: number) => void

Go to a specific page

total number

Total number of wishes

totalPages number

Total pages

wishes Wish[]

List of wishes

interface

Vote

Vote Types

Properties

created_at string
fingerprint string
id string
user_id string | null optional
voter_email string | null optional
wish_id string
interface

VoteButtonProps

Properties

initialHasVoted boolean optional
initialVoteCount number
initialVoteId string optional
onVoteChange (hasVoted: boolean, newCount: number) => void optional
size 'sm' | 'md' | 'lg' optional
style ViewStyle optional
wishId string
interface

VoteCheckResponse

Properties

has_voted boolean
vote_id string optional
interface

Wish

Properties

author WishAuthor optional
author_email string | null optional
author_name string | null optional
author_type 'user' | 'anonymous' | 'team_member'
category Category | null optional
category_id string | null optional
comment_count number
completed_at string | null optional
created_at string
description string
has_voted boolean optional
id string
is_pinned boolean optional
priority WishPriority | null optional
project_id string
slug string
status WishStatus
title string
updated_at string
vote_count number
interface

WishAuthor

Properties

avatar_url string | null optional
email string | null optional
name string
interface

WishCardProps

Properties

onCommentPress (wish: Wish) => void optional
onPress (wish: Wish) => void optional
onVote (wishId: string) => void optional
style ViewStyle optional
wish Wish

Properties

onClose () => void
onVote (wishId: string) => void optional
visible boolean
wish Wish | null
interface

WishesResponse

Properties

data Wish[]
page number
per_page number
total number
total_pages number
interface

WishFilters

Properties

category_id string optional
fingerprint string optional
page number optional
per_page number optional
priority WishPriority | WishPriority[] optional
search string optional
sort_by 'votes' | 'created_at' | 'updated_at' optional
sort_order 'asc' | 'desc' optional
status WishStatus | WishStatus[] optional
interface

WishListProps

Properties

contentContainerStyle ViewStyle optional
customFormId string optional

Custom form ID for the submit sheet

description string optional
emptyText string optional
filters WishFilters optional
onAddWish () => void optional
onCommentPress (wish: Wish) => void optional
onVote (wishId: string) => void optional
onWishPress (wish: Wish) => void optional
onWishSubmitted (wish: Wish) => void optional

Callback when a wish is successfully submitted

refreshInterval number optional
showSubmitButton boolean optional

Show the submit idea button (defaults to true)

style ViewStyle optional
submitButtonText string optional

Submit button text

submitSheetDescription string optional

Submit sheet description

submitSheetTitle string optional

Submit sheet title

title string optional

Help Center Types

interface

HelpArticle

Properties

article_type ArticleType
content string
created_at string
excerpt string | null optional
flow_id string
id string
is_published boolean
published_at string | null optional
slug string
sort_order number
title string
updated_at string

Properties

article HelpArticle
onPress (article: HelpArticle) => void optional
style ViewStyle optional

Properties

article HelpArticle
contentContainerStyle ViewStyle optional
style ViewStyle optional
interface

HelpCenterProps

Properties

contentContainerStyle ViewStyle optional
description string optional
emptyText string optional
numColumns number optional
onFlowPress (flow: HelpFlow) => void optional
style ViewStyle optional
title string optional
interface

HelpCollection

Properties

created_at string
description string | null optional
flows HelpFlow[] optional
id string
is_live boolean
name string
project_id string
updated_at string
version string
interface

HelpFlow

Properties

articles HelpArticle[] optional
collection_id string
color string | null optional
created_at string
description string | null optional
display_type FlowDisplayType
icon string | null optional
id string
name string
slug string
sort_order number
updated_at string
interface

HelpFlowCardProps

Properties

flow HelpFlow
onPress (flow: HelpFlow) => void optional
style ViewStyle optional

Properties

contentContainerStyle ViewStyle optional
emptyText string optional
flow HelpFlow
onArticlePress (article: HelpArticle) => void optional
style ViewStyle optional

Properties

article HelpArticle | null

The help article data

error string | null

Error message if any

isLoading boolean

Loading state

refetch () => Promise<void>

Manually refetch data

Properties

collection HelpCollection | null

The help collection data

error string | null

Error message if any

flows HelpFlow[]

List of help flows in this collection

isLoading boolean

Loading state

refetch () => Promise<void>

Manually refetch data

interface

UseHelpFlowResult

Properties

error string | null

Error message if any

flow HelpFlow | null

The help flow data with its articles

isLoading boolean

Loading state

refetch () => Promise<void>

Manually refetch data

Release Types

interface

Release

Properties

author_user_id string
content string
cover_image_url string | null optional
created_at string
excerpt string | null optional
features ReleaseFeature[] optional
id string
is_published boolean
items ReleaseItem[] optional
labels string[]
project_id string
published_at string | null optional
slug string
title string
updated_at string
version string | null optional
wish_ids string[]
interface

ReleaseDetailProps

Properties

release Release optional
releaseSlug string optional
interface

ReleaseFeature

Properties

description string
id string
image_url string | null optional
release_id string
sort_order number
title string
interface

ReleaseListProps

Properties

description string optional
limit number optional
onReleasePress (release: Release) => void optional
title string optional
interface

ReleasesProps

Properties

description string optional
limit number optional
onReleasePress (release: Release) => void optional
title string optional
interface

UseReleaseOptions

Properties

releaseSlug string

The release slug to fetch

skip boolean optional

Skip initial fetch

Default: false

interface

UseReleaseResult

Properties

error string | null

Error message if any

features ReleaseFeature[]

Features included in this release

isLoading boolean

Loading state

refetch () => Promise<void>

Manually refetch data

release Release | null

The release data

interface

UseReleasesOptions

Properties

limit number optional

Maximum number of releases to fetch

Default: 50

skip boolean optional

Skip initial fetch

Default: false

interface

UseReleasesResult

Properties

error string | null

Error message if any

isLoading boolean

Loading state

refetch () => Promise<void>

Manually refetch data

releases Release[]

List of releases

Roadmap Types

interface

RoadmapBoardProps

Properties

description string optional
onItemPress (item: RoadmapItem) => void optional
showVoteCounts boolean optional
title string optional
interface

RoadmapColumn

Properties

color string
created_at string
id string
items RoadmapItem[] optional
name string
roadmap_id string
sort_order number
updated_at string
wip_limit number | null optional
interface

RoadmapData

Properties

columns RoadmapColumn[]
customization object | null optional
roadmap Roadmap | null
total_items number
interface

RoadmapItem

Properties

color string | null optional
column_id string
comment_count number optional
created_at string
description string | null optional
id string
roadmap_id string
sort_order number
target_date string | null optional
title string
updated_at string
vote_count number optional
wish Wish | null optional
wish_id string | null optional
interface

UseRoadmapOptions

Properties

refreshInterval number optional

Auto-refresh interval in milliseconds (0 to disable)

Default: 0

skip boolean optional

Skip initial fetch

Default: false

interface

UseRoadmapResult

Properties

columns RoadmapColumn[]

Roadmap columns with items

error string | null

Error message if any

isLoading boolean

Loading state

refetch () => Promise<void>

Manually refetch data

roadmap RoadmapData | null

Full roadmap data object

totalItems number

Total number of items across all columns

Status Types

interface

StatusBoardProps

Properties

onIncidentPress (incidentId: string) => void optional
onSubscribe () => void optional
refreshInterval number optional
slug string optional
style ViewStyle optional
subtitle string optional
title string optional
interface

StatusPage

Properties

created_at string
description string | null
id string
is_active boolean
name string
project_id string
slug string
updated_at string
interface

StatusPageOverview

Properties

active_count number
active_updates StatusUpdate[]
current_status StatusType
recent_updates StatusUpdate[]
resolved_count number
services StatusPageService[]
services_status Record<string, StatusType>
status_breakdown Record<string, number>
status_page StatusPage
total_updates number
interface

StatusPageService

Properties

color string | null
created_at string
description string | null
group_name string | null
id string
is_active boolean
name string
sort_order number
status_page_id string
updated_at string
interface

UseStatusOptions

Properties

refreshInterval number optional

Auto-refresh interval in milliseconds (0 to disable)

Default: 0

slug string optional

Status page slug

Default: 'status'

interface

UseStatusResult

Properties

data StatusPageOverview | null

Status page data including services and incidents

error string | null

Error message if any

isLoading boolean

Loading state

refetch () => Promise<void>

Manually refetch data

Support Types

interface

StoredTicket

Properties

access_token string

Access token for viewing the ticket

created_at string

Creation timestamp

id string

Ticket ID

magic_link string optional

Magic link for authentication (optional)

status string

Ticket status

subject string

Ticket subject

user_email string

User email

interface

SupportAttachment

Properties

mime_type string optional
name string
size number
url string
interface

SupportFormProps

Properties

checkDescription string optional

Check status section description

checkTitle string optional

Check status section title

customFormId string optional

Custom contact form ID to use instead of default support form. When provided, fetches the form config and renders its fields dynamically. The form should have integration.type = 'support' to create tickets.

description string optional

Page description

externalUserId string optional

External user ID for tracking

heading string optional

Page heading

onCheckStatus (email: string) => void optional

Callback when checking status

onError (error: string) => void optional

Callback when submission fails

onSuccess (ticket: SupportRequest) => void optional

Callback when ticket is successfully submitted

onTicketClick (ticket: SupportRequest) => void optional

Callback when a ticket is clicked

showCategory boolean optional

Show category selector

showCheckStatus boolean optional

Show check status tab

showName boolean optional

Show name field

submitButtonText string optional

Submit button text

submitDescription string optional

Submit section description

submitTitle string optional

Submit section title

userEmail string optional

Pre-filled user email

userName string optional

Pre-filled user name

interface

SupportMessage

Properties

attachments SupportAttachment[] optional
author_email string | null optional
author_name string | null optional
author_type 'user' | 'team_member'
author_user_id string | null optional
content string
created_at string
id string
is_internal boolean
support_request_id string
interface

SupportRequest

Properties

assignee_id string | null optional
attachments SupportAttachment[] optional
category SupportRequestCategory | null optional
created_at string
description string
id string
message_count number
messages SupportMessage[] optional
priority SupportRequestPriority | null optional
project_id string
resolved_at string | null optional
status SupportRequestStatus
subject string
updated_at string
user_email string
user_name string | null optional

Properties

attachments File[] optional
category SupportRequestCategory optional
description string
external_user_id string optional
subject string
user_email string
user_name string optional
interface

SupportSubmitData

Properties

category SupportRequestCategory optional

Ticket category (optional)

description string

Ticket description/body

external_user_id string optional

External user ID for tracking (optional)

subject string

Ticket subject

user_email string

User's email address

user_name string optional

User's name (optional)

interface

UseSupportOptions

Properties

onError (error: string) => void optional

Callback when an error occurs

onSuccess (ticket: SupportRequest) => void optional

Callback when ticket is submitted successfully

interface

UseSupportResult

Properties

clearMessages () => void

Clear error and success messages

clearStoredTickets () => Promise<void>

Clear all locally stored tickets

error string | null

Error message if any operation failed

isSendingMagicLink boolean

Loading state while sending magic link

isSubmitting boolean

Loading state during submission

isVerifying boolean

Loading state while verifying token

loadStoredTickets () => Promise<void>

Reload stored tickets from local storage

requestMagicLink (email: string) => Promise<boolean>

Request a magic link to be sent to the user's email

storedTickets StoredTicket[]

Locally stored tickets from previous submissions

submitTicket (data: SupportSubmitData) => Promise<SupportRequest | null>

Submit a support ticket

successMessage string | null

Success message after successful operations

verifyToken (token: string) => Promise<object | null>

Verify a magic link token to get user's tickets

Survey Types

interface

Survey

Survey

Properties

created_at string
description string
id string
is_active boolean
name string
nodes SurveyNode[] optional
number_of_questions number optional
number_of_responses number optional
project_id string
responses SurveyResponse[] optional
slug string
updated_at string
interface

SurveyAnswer

Survey Answer

Properties

answer boolean optional
answer_options string[] optional
answer_rating number optional
answer_text string optional
created_at string
id string
node object optional
node_id string
response_id string
interface

SurveyFormProps

Properties

autoAdvance boolean optional
fingerprint string optional
onError (error: string) => void optional
onSuccess () => void optional
slug string
interface

SurveyNode

Survey Node Individual questions or result nodes in a survey decision tree.

Properties

answer_no_node_id string | null
answer_yes_node_id string | null
branches SurveyNodeBranch[] optional
created_at string
id string
is_required boolean optional
max_rating number optional
min_rating number optional
next_node_id string | null optional
options SurveyNodeOption[] optional
parent_id string | null
question string
question_type SurveyQuestionType
result_message string | null
sort_order number
survey_id string
updated_at string
interface

SurveyNodeOption

Survey Node Option

Properties

label string
value string
interface

SurveyResponse

Survey Response

Properties

answers SurveyAnswer[] optional
created_at string
external_user_id string | null
fingerprint string
id string
metadata Record<string, unknown>
survey_id string
interface

SurveySubmitInput

Input for submitting a survey response

Properties

answers object[]
external_user_id string optional
fingerprint string
metadata Record<string, unknown> optional
interface

UseSurveyOptions

Properties

enabled boolean optional

Whether to fetch the survey on mount

Default: true

interface

UseSurveyResult

Properties

error string | null

Error message if any

isLoading boolean

Loading state

nodes SurveyNode[]

Survey question nodes

refetch () => Promise<void>

Manually refetch data

survey Survey | null

The survey data

Properties

onError (error: string) => void optional

Callback when submission fails

onSuccess (response: SurveyResponse) => void optional

Callback when survey is submitted successfully

Properties

error string | null

Error message if submission failed

isSubmitting boolean

Loading state during submission

submitResponse (surveyId: string, data: SurveySubmitInput) => Promise<SurveyResponse | null>

Submit a survey response

Blog Types

interface

BlogCardProps

Properties

isBookmarked boolean optional
onBookmark (post: BlogPost) => void optional
onPress (post: BlogPost) => void optional
post BlogPost
style ViewStyle optional
variant 'default' | 'large' | 'compact' optional
interface

BlogCategory

Blog/Resources Types

Properties

color string | null optional
description string | null optional
id string
name string
post_count number optional
slug string
interface

BlogFilters

Properties

category_slug string optional
is_featured boolean optional
page number optional
per_page number optional
search string optional
tag string optional
interface

BlogListProps

Properties

bookmarkedIds string[] optional
cardVariant 'default' | 'large' | 'compact' optional
description string optional
initialCategory string optional
initialSearch string optional
onBookmark (post: BlogPost) => void optional
onFilterPress () => void optional
onPostPress (post: BlogPost) => void optional
postsPerPage number optional
renderEmpty () => ReactNode optional
renderError (error: string, retry: () => void) => ReactNode optional
renderLoading () => ReactNode optional
showCategories boolean optional
showSearch boolean optional
style ViewStyle optional
title string optional
interface

BlogPost

Properties

author_name string | null optional
category object optional
category_id string | null optional
content string
created_at string
excerpt string | null optional
id string
is_featured boolean
meta_description string | null optional
og_image_url string | null optional
project_id string
published_at string
slug string
tags string[]
title string
updated_at string
view_count number

Properties

isBookmarked boolean optional
onBookmark (post: BlogPost) => void optional
onRelatedPostPress (post: BlogPost) => void optional
post BlogPost optional
postSlug string optional
renderError (error: string, retry: () => void) => ReactNode optional
renderLoading () => ReactNode optional
showRelatedPosts boolean optional
style ViewStyle optional
interface

BlogPostsResponse

Properties

data BlogPost[]
page number
per_page number
total number
total_pages number
interface

BlogProps

Properties

bookmarkedIds string[] optional
cardVariant 'default' | 'large' | 'compact' optional
description string optional
initialCategory string optional
initialSearch string optional
onBackToList () => void optional
onBookmark (post: BlogPost) => void optional
onFilterPress () => void optional
onPostView (post: BlogPost) => void optional
postsPerPage number optional
renderEmpty () => ReactNode optional
renderError (error: string, retry: () => void) => ReactNode optional
renderLoading () => ReactNode optional
showCategories boolean optional
showRelatedPosts boolean optional
showSearch boolean optional
style ViewStyle optional
title string optional

Properties

skip boolean optional

Skip initial fetch

Default: false

Properties

categories BlogCategory[]

List of blog categories

error string | null

Error message if any

isLoading boolean

Loading state

refetch () => Promise<void>

Manually refetch data

interface

UseBlogPostOptions

Properties

skip boolean optional

Skip initial fetch

Default: false

slug string

The blog post slug to fetch

interface

UseBlogPostResult

Properties

error string | null

Error message if any

isLoading boolean

Loading state

post BlogPost | null

The blog post data

refetch () => Promise<void>

Manually refetch data

relatedPosts BlogPost[]

Related posts

Properties

category string optional

Filter by category slug

featured boolean optional

Only featured posts

per_page number optional

Items per page

Default: 10

refreshInterval number optional

Auto-refresh interval in milliseconds

search string optional

Search query

skip boolean optional

Skip initial fetch

Default: false

tag string optional

Filter by tag

interface

UseBlogPostsResult

Properties

error string | null

Error message if any

isLoading boolean

Loading state

page number

Current page number

posts BlogPost[]

List of blog posts

refetch () => Promise<void>

Manually refetch data

setFilters (filters: Partial<UseBlogPostsOptions>) => void

Update filters (resets to page 1)

setPage (page: number) => void

Set the current page

total number

Total number of posts

totalPages number

Total number of pages

Common Types

interface

ApiResponse

API Response wrapper

Properties

data T optional
error object optional
success boolean

Properties

baseUrl string
orgSlug string optional
projectId string
projectSlug string optional
interface

AppgramColors

Hazel Design System Colors for React Native Mobile-optimized color palette based on the Hazel design system.

Properties

accent string
background string
border string
card string
cardForeground string
error string
errorSubtle string
foreground string
info string
infoSubtle string
muted string
mutedForeground string
primary string
secondary string
success string
successSubtle string
warning string
warningSubtle string
interface

AppgramConfig

Appgram SDK configuration

Properties

apiUrl string optional

Custom API URL (defaults to https://api.appgram.dev)

enableFingerprinting boolean optional

Enable device fingerprinting for anonymous voting

Default: true

orgSlug string optional

Organization slug for API routing

projectId string

Your Appgram project ID (required)

projectSlug string optional

Project slug for API routing

theme object optional

Theme configuration

Props for AppgramProvider

Properties

children ReactNode

Child components

config AppgramConfig

SDK configuration

interface

AppgramTheme

Complete theme object with colors, spacing, radius, and typography

Properties

colors AppgramColors

Color palette

isDark boolean

Whether dark mode is active

mode ThemeMode

Current theme mode

radius object

Border radius scale (sm, md, lg, xl, full)

spacing object

Spacing scale (xs, sm, md, lg, xl, 2xl)

typography object

Typography scale (xs, sm, base, lg, xl, 2xl, 3xl)

interface

BadgeProps

Properties

action 'success' | 'error' | 'muted' | 'warning' | 'info' optional
children ReactNode
size 'sm' | 'md' | 'lg' optional
style ViewStyle optional
interface

ButtonProps

Properties

children ReactNode
disabled boolean optional
loading boolean optional
onPress () => void
size 'sm' | 'md' | 'lg' optional
style ViewStyle optional
textStyle TextStyle optional
variant 'solid' | 'outline' | 'ghost' optional
interface

CardProps

Properties

children ReactNode
style ViewStyle optional
variant 'default' | 'elevated' | 'outlined' optional
interface

Category

Properties

color string
description string | null optional
icon string | null optional
id string
name string
slug string
wish_count number optional
interface

ChatScreenProps

Properties

accentColor string optional

Accent color override

agentName string optional

Name of the chat agent

greeting string optional

Initial greeting message

onArticlePress (slug: string, source: ChatSource) => void optional

Callback when an article source is tapped. Provides the article slug and full source data for flexible routing.

onSupportPress () => void optional

Callback when support button is tapped

options QuickOption[] optional

Quick reply options shown initially

placeholder string optional

Input placeholder text

style ViewStyle optional

Custom style for container

subtitle string optional

Subtitle shown below greeting

interface

ChatSource

Properties

article_id string
flow_id string optional
flow_slug string optional
similarity number
slug string
title string
type 'help_article' | 'blog_post' optional

Source type - determines routing behavior

interface

Comment

Properties

author_avatar_url string | null optional
author_name string
author_type 'user' | 'anonymous' | 'team_member'
author_user_id string | null optional
content string
created_at string
id string
is_deleted boolean
is_official boolean
parent_id string | null optional
replies Comment[] optional
reply_count number
updated_at string
wish_id string
interface

CommentAuthor

Comment Types

Properties

avatar_url string | null optional
name string
interface

CommentCreateInput

Properties

author_email string optional
author_name string optional
content string
parent_id string optional
wish_id string
interface

CommentsResponse

Properties

data Comment[]
page number
per_page number
total number
total_pages number
interface

Form

Properties

createdAt string optional
description string optional
emailRecipient string
emailSubject string
enabled boolean
fields FormField[]
id string
integration FormIntegration optional

Integration settings for form submission

name string
submitButtonText string
successMessage string
updatedAt string optional
interface

FormField

Properties

id string
label string
options string[] optional
placeholder string optional
required boolean
type FormFieldType
validation FormFieldValidation optional
interface

FormRendererProps

Properties

description string optional
formId string
onError (error: string) => void optional
onSuccess () => void optional
projectId string optional
style ViewStyle optional
title string optional
interface

FormSubmission

Properties

data Record<string, string | boolean>
form_id string
id string
project_id string
submitted_at string
interface

InputProps

Properties

accessibilityActions unknown optional

Provides an array of custom actions available for accessibility.

accessibilityElementsHidden boolean optional

A Boolean value indicating whether the accessibility elements contained within this accessibility element are hidden to the screen reader.

accessibilityHint string optional

An accessibility hint helps users understand what will happen when they perform an action on the accessibility element when that result is not obvious from the accessibility label.

accessibilityIgnoresInvertColors boolean optional

https://reactnative.dev/docs/accessibility#accessibilityignoresinvertcolorsios

accessibilityLabel string optional

Overrides the text that's read by the screen reader when the user interacts with the element. By default, the label is constructed by traversing all the children and accumulating all the Text nodes separated by space.

accessibilityLabelledBy string | string[] optional

A reference to another element `nativeID` used to build complex forms. The value of `accessibilityLabelledBy` should match the `nativeID` of the related element.

accessibilityLanguage string optional

By using the accessibilityLanguage property, the screen reader will understand which language to use while reading the element's label, value and hint. The provided string value must follow the BCP 47 specification (https://www.rfc-editor.org/info/bcp47). https://reactnative.dev/docs/accessibility#accessibilitylanguage-ios

accessibilityLiveRegion 'none' | 'polite' | 'assertive' optional

Indicates to accessibility services whether the user should be notified when this view changes. Works for Android API >= 19 only. See http://developer.android.com/reference/android/view/View.html#attr_android:accessibilityLiveRegion for references.

accessibilityRole AccessibilityRole optional

Accessibility Role tells a person using either VoiceOver on iOS or TalkBack on Android the type of element that is focused on.

accessibilityState AccessibilityState optional

Accessibility State tells a person using either VoiceOver on iOS or TalkBack on Android the state of the element currently focused on.

accessibilityValue AccessibilityValue optional

Represents the current value of a component. It can be a textual description of a component's value, or for range-based components, such as sliders and progress bars, it contains range information (minimum, current, and maximum).

accessibilityViewIsModal boolean optional

A Boolean value indicating whether VoiceOver should ignore the elements within views that are siblings of the receiver.

accessible boolean optional

When true, indicates that the view is an accessibility element. By default, all the touchable elements are accessible.

allowFontScaling boolean optional

Specifies whether fonts should scale to respect Text Size accessibility settings. The default is `true`.

aria-busy boolean optional

alias for accessibilityState see https://reactnative.dev/docs/accessibility#accessibilitystate

aria-checked boolean | 'mixed' optional
aria-disabled boolean optional
aria-expanded boolean optional
aria-hidden boolean optional

A value indicating whether the accessibility elements contained within this accessibility element are hidden.

aria-label string optional

Alias for accessibilityLabel https://reactnative.dev/docs/view#accessibilitylabel https://github.com/facebook/react-native/issues/34424

aria-labelledby string optional

Represents the nativeID of the associated label text. When the assistive technology focuses on the component with this props, the text is read aloud.

aria-live 'polite' | 'assertive' | 'off' optional
aria-modal boolean optional
aria-selected boolean optional
aria-valuemax number optional
aria-valuemin number optional
aria-valuenow number optional
aria-valuetext string optional
autoCapitalize 'none' | 'sentences' | 'words' | 'characters' optional

Can tell TextInput to automatically capitalize certain characters. characters: all characters, words: first letter of each word sentences: first letter of each sentence (default) none: don't auto capitalize anything https://reactnative.dev/docs/textinput#autocapitalize

autoComplete 'email' | 'name' | 'off' | 'additional-name' | 'address-line1' | 'address-line2' | 'birthdate-day' | 'birthdate-full' | 'birthdate-month' | 'birthdate-year' | 'cc-csc' | 'cc-exp' | 'cc-exp-day' | 'cc-exp-month' | 'cc-exp-year' | 'cc-number' | 'cc-name' | 'cc-given-name' | 'cc-middle-name' | 'cc-family-name' | 'cc-type' | 'country' | 'current-password' | 'family-name' | 'gender' | 'given-name' | 'honorific-prefix' | 'honorific-suffix' | 'name-family' | 'name-given' | 'name-middle' | 'name-middle-initial' | 'name-prefix' | 'name-suffix' | 'new-password' | 'nickname' | 'one-time-code' | 'organization' | 'organization-title' | 'password' | 'password-new' | 'postal-address' | 'postal-address-country' | 'postal-address-extended' | 'postal-address-extended-postal-code' | 'postal-address-locality' | 'postal-address-region' | 'postal-code' | 'street-address' | 'sms-otp' | 'tel' | 'tel-country-code' | 'tel-national' | 'tel-device' | 'url' | 'username' | 'username-new' optional

Specifies autocomplete hints for the system, so it can provide autofill. On Android, the system will always attempt to offer autofill by using heuristics to identify the type of content. To disable autocomplete, set autoComplete to off. The following values work across platforms: - `additional-name` - `address-line1` - `address-line2` - `cc-number` - `country` - `current-password` - `email` - `family-name` - `given-name` - `honorific-prefix` - `honorific-suffix` - `name` - `new-password` - `off` - `one-time-code` - `postal-code` - `street-address` - `tel` - `username` The following values work on iOS only: - `nickname` - `organization` - `organization-title` - `url` The following values work on Android only: - `birthdate-day` - `birthdate-full` - `birthdate-month` - `birthdate-year` - `cc-csc` - `cc-exp` - `cc-exp-day` - `cc-exp-month` - `cc-exp-year` - `gender` - `name-family` - `name-given` - `name-middle` - `name-middle-initial` - `name-prefix` - `name-suffix` - `password` - `password-new` - `postal-address` - `postal-address-country` - `postal-address-extended` - `postal-address-extended-postal-code` - `postal-address-locality` - `postal-address-region` - `sms-otp` - `tel-country-code` - `tel-national` - `tel-device` - `username-new`

autoCorrect boolean optional

If false, disables auto-correct. The default value is true.

autoFocus boolean optional

If true, focuses the input on componentDidMount. The default value is false.

blurOnSubmit boolean optional

If true, the text field will blur when submitted. The default value is true.

caretHidden boolean optional

If true, caret is hidden. The default value is false.

children ReactNode optional
clearButtonMode 'never' | 'while-editing' | 'unless-editing' | 'always' optional

enum('never', 'while-editing', 'unless-editing', 'always') When the clear button should appear on the right side of the text view

clearTextOnFocus boolean optional

If true, clears the text field automatically when editing begins

collapsable boolean optional

Views that are only used to layout their children or otherwise don't draw anything may be automatically removed from the native hierarchy as an optimization. Set this property to false to disable this optimization and ensure that this View exists in the native view hierarchy.

containerStyle ViewStyle optional
contextMenuHidden boolean optional

If true, context menu is hidden. The default value is false.

cursorColor ColorValue | null optional

When provided it will set the color of the cursor (or "caret") in the component. Unlike the behavior of `selectionColor` the cursor color will be set independently from the color of the text selection box.

dataDetectorTypes DataDetectorTypes | DataDetectorTypes[] optional

Determines the types of data converted to clickable URLs in the text input. Only valid if `multiline={true}` and `editable={false}`. By default no data types are detected. You can provide one type or an array of many types. Possible values for `dataDetectorTypes` are: - `'phoneNumber'` - `'link'` - `'address'` - `'calendarEvent'` - `'none'` - `'all'`

defaultValue string optional

Provides an initial value that will change when the user starts typing. Useful for simple use-cases where you don't want to deal with listening to events and updating the value prop to keep the controlled state in sync.

disableFullscreenUI boolean optional

When false, if there is a small amount of space available around a text input (e.g. landscape orientation on a phone), the OS may choose to have the user edit the text inside of a full screen text input mode. When true, this feature is disabled and users will always edit the text directly inside of the text input. Defaults to false.

editable boolean optional

If false, text is not editable. The default value is true.

enablesReturnKeyAutomatically boolean optional

If true, the keyboard disables the return key when there is no text and automatically enables it when there is text. The default value is false.

enterKeyHint EnterKeyHintTypeOptions optional

Determines what text should be shown to the return key on virtual keyboards. Has precedence over the returnKeyType prop.

error string optional
focusable boolean optional

Whether this `View` should be focusable with a non-touch input device, eg. receive focus with a hardware keyboard.

hasTVPreferredFocus boolean optional

*(Apple TV only)* May be set to true to force the Apple TV focus engine to move focus to this view.

hitSlop Insets optional

This defines how far a touch event can start away from the view. Typical interface guidelines recommend touch targets that are at least 30 - 40 points/density-independent pixels. If a Touchable view has a height of 20 the touchable height can be extended to 40 with hitSlop={{top: 10, bottom: 10, left: 0, right: 0}} NOTE The touch area never extends past the parent view bounds and the Z-index of sibling views always takes precedence if a touch hits two overlapping views.

id string optional

Used to reference react managed views from native code.

importantForAccessibility 'auto' | 'yes' | 'no' | 'no-hide-descendants' optional

[Android] Controlling if a view fires accessibility events and if it is reported to accessibility services.

importantForAutofill 'auto' | 'yes' | 'no' | 'noExcludeDescendants' | 'yesExcludeDescendants' optional

Determines whether the individual fields in your app should be included in a view structure for autofill purposes on Android API Level 26+. Defaults to auto. To disable auto complete, use `off`. *Android Only* The following values work on Android only: - `auto` - let Android decide - `no` - not important for autofill - `noExcludeDescendants` - this view and its children aren't important for autofill - `yes` - is important for autofill - `yesExcludeDescendants` - this view is important for autofill but its children aren't

inlineImageLeft string optional

If defined, the provided image resource will be rendered on the left.

inlineImagePadding number optional

Padding between the inline image, if any, and the text input itself.

inputAccessoryViewID string optional

Used to connect to an InputAccessoryView. Not part of react-natives documentation, but present in examples and code. See https://reactnative.dev/docs/inputaccessoryview for more information.

inputMode InputModeOptions optional

Works like the inputmode attribute in HTML, it determines which keyboard to open, e.g. numeric and has precedence over keyboardType.

inputStyle TextStyle optional
isTVSelectable boolean optional

*(Apple TV only)* When set to true, this view will be focusable and navigable using the Apple TV remote.

keyboardAppearance 'light' | 'dark' | 'default' optional

Determines the color of the keyboard.

keyboardType KeyboardTypeOptions optional

enum("default", 'numeric', 'email-address', "ascii-capable", 'numbers-and-punctuation', 'url', 'number-pad', 'phone-pad', 'name-phone-pad', 'decimal-pad', 'twitter', 'web-search', 'visible-password') Determines which keyboard to open, e.g.numeric. The following values work across platforms: - default - numeric - email-address - phone-pad The following values work on iOS: - ascii-capable - numbers-and-punctuation - url - number-pad - name-phone-pad - decimal-pad - twitter - web-search The following values work on Android: - visible-password

label string optional
labelStyle TextStyle optional
lineBreakStrategyIOS 'none' | 'standard' | 'hangul-word' | 'push-out' optional

Set line break strategy on iOS.

maxFontSizeMultiplier number | null optional

Specifies largest possible scale a font can reach when allowFontScaling is enabled. Possible values: - null/undefined (default): inherit from the parent node or the global default (0) - 0: no max, ignore parent/global default - >= 1: sets the maxFontSizeMultiplier of this node to this value

maxLength number optional

Limits the maximum number of characters that can be entered. Use this instead of implementing the logic in JS to avoid flicker.

multiline boolean optional

If true, the text input can be multiple lines. The default value is false.

nativeID string optional

Used to reference react managed views from native code.

needsOffscreenAlphaCompositing boolean optional

Whether this view needs to rendered offscreen and composited with an alpha in order to preserve 100% correct colors and blending behavior. The default (false) falls back to drawing the component and its children with an alpha applied to the paint used to draw each element instead of rendering the full component offscreen and compositing it back with an alpha value. This default may be noticeable and undesired in the case where the View you are setting an opacity on has multiple overlapping elements (e.g. multiple overlapping Views, or text and a background). Rendering offscreen to preserve correct alpha behavior is extremely expensive and hard to debug for non-native developers, which is why it is not turned on by default. If you do need to enable this property for an animation, consider combining it with renderToHardwareTextureAndroid if the view contents are static (i.e. it doesn't need to be redrawn each frame). If that property is enabled, this View will be rendered off-screen once, saved in a hardware texture, and then composited onto the screen with an alpha each frame without having to switch rendering targets on the GPU.

numberOfLines number optional

Sets the number of lines for a TextInput. Use it with multiline set to true to be able to fill the lines.

onAccessibilityAction (event: AccessibilityActionEvent) => void optional

When `accessible` is true, the system will try to invoke this function when the user performs an accessibility custom action.

onAccessibilityEscape () => void optional

When accessible is true, the system will invoke this function when the user performs the escape gesture (scrub with two fingers).

onAccessibilityTap () => void optional

When `accessible` is true, the system will try to invoke this function when the user performs accessibility tap gesture.

onBlur (e: NativeSyntheticEvent<TextInputFocusEventData>) => void optional

Callback that is called when the text input is blurred

onChange (e: NativeSyntheticEvent<TextInputChangeEventData>) => void optional

Callback that is called when the text input's text changes.

onChangeText (text: string) => void optional

Callback that is called when the text input's text changes. Changed text is passed as an argument to the callback handler.

onContentSizeChange (e: NativeSyntheticEvent<TextInputContentSizeChangeEventData>) => void optional

Callback that is called when the text input's content size changes. This will be called with `{ nativeEvent: { contentSize: { width, height } } }`. Only called for multiline text inputs.

onEndEditing (e: NativeSyntheticEvent<TextInputEndEditingEventData>) => void optional

Callback that is called when text input ends.

onFocus (e: NativeSyntheticEvent<TextInputFocusEventData>) => void optional

Callback that is called when the text input is focused

onKeyPress (e: NativeSyntheticEvent<TextInputKeyPressEventData>) => void optional

Callback that is called when a key is pressed. This will be called with `{ nativeEvent: { key: keyValue } }` where keyValue is 'Enter' or 'Backspace' for respective keys and the typed-in character otherwise including ' ' for space. Fires before onChange callbacks. Note: on Android only the inputs from soft keyboard are handled, not the hardware keyboard inputs.

onLayout (event: LayoutChangeEvent) => void optional

Invoked on mount and layout changes with {nativeEvent: { layout: {x, y, width, height}}}.

onMagicTap () => void optional

When accessible is true, the system will invoke this function when the user performs the magic tap gesture.

onMoveShouldSetResponder (event: GestureResponderEvent) => boolean optional

Called for every touch move on the View when it is not the responder: does this view want to "claim" touch responsiveness?

onMoveShouldSetResponderCapture (event: GestureResponderEvent) => boolean optional

onStartShouldSetResponder and onMoveShouldSetResponder are called with a bubbling pattern, where the deepest node is called first. That means that the deepest component will become responder when multiple Views return true for *ShouldSetResponder handlers. This is desirable in most cases, because it makes sure all controls and buttons are usable. However, sometimes a parent will want to make sure that it becomes responder. This can be handled by using the capture phase. Before the responder system bubbles up from the deepest component, it will do a capture phase, firing on*ShouldSetResponderCapture. So if a parent View wants to prevent the child from becoming responder on a touch start, it should have a onStartShouldSetResponderCapture handler which returns true.

onPointerCancel (event: PointerEvent) => void optional
onPointerCancelCapture (event: PointerEvent) => void optional
onPointerDown (event: PointerEvent) => void optional
onPointerDownCapture (event: PointerEvent) => void optional
onPointerEnter (event: PointerEvent) => void optional
onPointerEnterCapture (event: PointerEvent) => void optional
onPointerLeave (event: PointerEvent) => void optional
onPointerLeaveCapture (event: PointerEvent) => void optional
onPointerMove (event: PointerEvent) => void optional
onPointerMoveCapture (event: PointerEvent) => void optional
onPointerUp (event: PointerEvent) => void optional
onPointerUpCapture (event: PointerEvent) => void optional
onPressIn (e: NativeSyntheticEvent<NativeTouchEvent>) => void optional

Callback that is called when a touch is engaged.

onPressOut (e: NativeSyntheticEvent<NativeTouchEvent>) => void optional

Callback that is called when a touch is released.

onResponderEnd (event: GestureResponderEvent) => void optional

If the View returns true and attempts to become the responder, one of the following will happen:

onResponderGrant (event: GestureResponderEvent) => void optional

The View is now responding for touch events. This is the time to highlight and show the user what is happening

onResponderMove (event: GestureResponderEvent) => void optional

The user is moving their finger

onResponderReject (event: GestureResponderEvent) => void optional

Something else is the responder right now and will not release it

onResponderRelease (event: GestureResponderEvent) => void optional

Fired at the end of the touch, ie "touchUp"

onResponderStart (event: GestureResponderEvent) => void optional
onResponderTerminate (event: GestureResponderEvent) => void optional

The responder has been taken from the View. Might be taken by other views after a call to onResponderTerminationRequest, or might be taken by the OS without asking (happens with control center/ notification center on iOS)

onResponderTerminationRequest (event: GestureResponderEvent) => boolean optional

Something else wants to become responder. Should this view release the responder? Returning true allows release

onScroll (e: NativeSyntheticEvent<TextInputScrollEventData>) => void optional

Invoked on content scroll with `{ nativeEvent: { contentOffset: { x, y } } }`. May also contain other properties from ScrollEvent but on Android contentSize is not provided for performance reasons.

onSelectionChange (e: NativeSyntheticEvent<TextInputSelectionChangeEventData>) => void optional

Callback that is called when the text input selection is changed.

onStartShouldSetResponder (event: GestureResponderEvent) => boolean optional

Does this view want to become responder on the start of a touch?

onStartShouldSetResponderCapture (event: GestureResponderEvent) => boolean optional

onStartShouldSetResponder and onMoveShouldSetResponder are called with a bubbling pattern, where the deepest node is called first. That means that the deepest component will become responder when multiple Views return true for *ShouldSetResponder handlers. This is desirable in most cases, because it makes sure all controls and buttons are usable. However, sometimes a parent will want to make sure that it becomes responder. This can be handled by using the capture phase. Before the responder system bubbles up from the deepest component, it will do a capture phase, firing on*ShouldSetResponderCapture. So if a parent View wants to prevent the child from becoming responder on a touch start, it should have a onStartShouldSetResponderCapture handler which returns true.

onSubmitEditing (e: NativeSyntheticEvent<TextInputSubmitEditingEventData>) => void optional

Callback that is called when the text input's submit button is pressed.

onTextInput (e: NativeSyntheticEvent<TextInputTextInputEventData>) => void optional

Callback that is called on new text input with the argument `{ nativeEvent: { text, previousText, range: { start, end } } }`. This prop requires multiline={true} to be set.

onTouchCancel (event: GestureResponderEvent) => void optional
onTouchEnd (event: GestureResponderEvent) => void optional
onTouchEndCapture (event: GestureResponderEvent) => void optional
onTouchMove (event: GestureResponderEvent) => void optional
onTouchStart (event: GestureResponderEvent) => void optional
passwordRules string | null optional

Provide rules for your password. For example, say you want to require a password with at least eight characters consisting of a mix of uppercase and lowercase letters, at least one number, and at most two consecutive characters. "required: upper; required: lower; required: digit; max-consecutive: 2; minlength: 8;"

placeholder string optional

The string that will be rendered before text input has been entered

placeholderTextColor ColorValue optional

The text color of the placeholder string

pointerEvents 'none' | 'auto' | 'box-none' | 'box-only' optional

In the absence of auto property, none is much like CSS's none value. box-none is as if you had applied the CSS class: .box-none { pointer-events: none; } .box-none * { pointer-events: all; } box-only is the equivalent of .box-only { pointer-events: all; } .box-only * { pointer-events: none; } But since pointerEvents does not affect layout/appearance, and we are already deviating from the spec by adding additional modes, we opt to not include pointerEvents on style. On some platforms, we would need to implement it as a className anyways. Using style or not is an implementation detail of the platform.

readOnly boolean optional

If `true`, text is not editable. The default value is `false`.

rejectResponderTermination boolean | null optional

If `true`, allows TextInput to pass touch events to the parent component. This allows components to be swipeable from the TextInput on iOS, as is the case on Android by default. If `false`, TextInput always asks to handle the input (except when disabled).

removeClippedSubviews boolean optional

This is a special performance property exposed by RCTView and is useful for scrolling content when there are many subviews, most of which are offscreen. For this property to be effective, it must be applied to a view that contains many subviews that extend outside its bound. The subviews must also have overflow: hidden, as should the containing view (or one of its superviews).

renderToHardwareTextureAndroid boolean optional

Whether this view should render itself (and all of its children) into a single hardware texture on the GPU. On Android, this is useful for animations and interactions that only modify opacity, rotation, translation, and/or scale: in those cases, the view doesn't have to be redrawn and display lists don't need to be re-executed. The texture can just be re-used and re-composited with different parameters. The downside is that this can use up limited video memory, so this prop should be set back to false at the end of the interaction/animation.

returnKeyLabel string optional

Sets the return key to the label. Use it instead of `returnKeyType`.

returnKeyType ReturnKeyTypeOptions optional

enum('default', 'go', 'google', 'join', 'next', 'route', 'search', 'send', 'yahoo', 'done', 'emergency-call') Determines how the return key should look.

role Role optional

Indicates to accessibility services to treat UI component like a specific role.

scrollEnabled boolean optional

If false, scrolling of the text view will be disabled. The default value is true. Only works with multiline={true}

secureTextEntry boolean optional

If true, the text input obscures the text entered so that sensitive text like passwords stay secure. The default value is false.

selection object optional

The start and end of the text input's selection. Set start and end to the same value to position the cursor.

selectionColor ColorValue optional

The highlight (and cursor on ios) color of the text input

selectionState DocumentSelectionState optional

See DocumentSelectionState.js, some state that is responsible for maintaining selection information for a document

selectTextOnFocus boolean optional

If true, all text will automatically be selected on focus

shouldRasterizeIOS boolean optional

Whether this view should be rendered as a bitmap before compositing. On iOS, this is useful for animations and interactions that do not modify this component's dimensions nor its children; for example, when translating the position of a static view, rasterization allows the renderer to reuse a cached bitmap of a static view and quickly composite it during each frame. Rasterization incurs an off-screen drawing pass and the bitmap consumes memory. Test and measure when using this property.

showSoftInputOnFocus boolean optional

When false, it will prevent the soft keyboard from showing when the field is focused. The default value is true

smartInsertDelete boolean optional

If `false`, the iOS system will not insert an extra space after a paste operation neither delete one or two spaces after a cut or delete operation. The default value is `true`.

spellCheck boolean optional

If false, disables spell-check style (i.e. red underlines). The default value is inherited from autoCorrect

testID string optional

Used to locate this view in end-to-end tests

textAlign 'center' | 'left' | 'right' optional

Align the input text to the left, center, or right sides of the input field.

textAlignVertical 'auto' | 'center' | 'top' | 'bottom' optional

Vertically align text when `multiline` is set to true

textBreakStrategy 'simple' | 'highQuality' | 'balanced' optional

Set text break strategy on Android API Level 23+, possible values are simple, highQuality, balanced The default value is simple.

textContentType 'none' | 'name' | 'nickname' | 'password' | 'username' | 'URL' | 'addressCity' | 'addressCityAndState' | 'addressState' | 'countryName' | 'creditCardNumber' | 'creditCardExpiration' | 'creditCardExpirationMonth' | 'creditCardExpirationYear' | 'creditCardSecurityCode' | 'creditCardType' | 'creditCardName' | 'creditCardGivenName' | 'creditCardMiddleName' | 'creditCardFamilyName' | 'emailAddress' | 'familyName' | 'fullStreetAddress' | 'givenName' | 'jobTitle' | 'location' | 'middleName' | 'namePrefix' | 'nameSuffix' | 'organizationName' | 'postalCode' | 'streetAddressLine1' | 'streetAddressLine2' | 'sublocality' | 'telephoneNumber' | 'newPassword' | 'oneTimeCode' | 'birthdate' | 'birthdateDay' | 'birthdateMonth' | 'birthdateYear' optional

Give the keyboard and the system information about the expected semantic meaning for the content that users enter. To disable autofill, set textContentType to `none`. Possible values for `textContentType` are: - `'none'` - `'URL'` - `'addressCity'` - `'addressCityAndState'` - `'addressState'` - `'countryName'` - `'creditCardNumber'` - `'creditCardExpiration'` (iOS 17+) - `'creditCardExpirationMonth'` (iOS 17+) - `'creditCardExpirationYear'` (iOS 17+) - `'creditCardSecurityCode'` (iOS 17+) - `'creditCardType'` (iOS 17+) - `'creditCardName'` (iOS 17+) - `'creditCardGivenName'` (iOS 17+) - `'creditCardMiddleName'` (iOS 17+) - `'creditCardFamilyName'` (iOS 17+) - `'emailAddress'` - `'familyName'` - `'fullStreetAddress'` - `'givenName'` - `'jobTitle'` - `'location'` - `'middleName'` - `'name'` - `'namePrefix'` - `'nameSuffix'` - `'nickname'` - `'organizationName'` - `'postalCode'` - `'streetAddressLine1'` - `'streetAddressLine2'` - `'sublocality'` - `'telephoneNumber'` - `'username'` - `'password'` - `'newPassword'` - `'oneTimeCode'` - `'birthdate'` (iOS 17+) - `'birthdateDay'` (iOS 17+) - `'birthdateMonth'` (iOS 17+) - `'birthdateYear'` (iOS 17+)

tvParallaxMagnification number optional

*(Apple TV only)* May be used to change the appearance of the Apple TV parallax effect when this view goes in or out of focus. Defaults to 1.0.

tvParallaxProperties TVParallaxProperties optional

*(Apple TV only)* Object with properties to control Apple TV parallax effects.

tvParallaxShiftDistanceX number optional

*(Apple TV only)* May be used to change the appearance of the Apple TV parallax effect when this view goes in or out of focus. Defaults to 2.0.

tvParallaxShiftDistanceY number optional

*(Apple TV only)* May be used to change the appearance of the Apple TV parallax effect when this view goes in or out of focus. Defaults to 2.0.

tvParallaxTiltAngle number optional

*(Apple TV only)* May be used to change the appearance of the Apple TV parallax effect when this view goes in or out of focus. Defaults to 0.05.

underlineColorAndroid ColorValue optional

The color of the textInput underline.

value string optional

The value to show for the text input. TextInput is a controlled component, which means the native value will be forced to match this value prop if provided. For most uses this works great, but in some cases this may cause flickering - one common cause is preventing edits by keeping value the same. In addition to simply setting the same value, either set editable={false}, or set/update maxLength to prevent unwanted edits without flicker.

verticalAlign 'auto' | 'top' | 'bottom' | 'middle' optional

Vertically align text when `multiline` is set to true

interface

PaginatedResponse

Paginated response wrapper

Properties

data T[]
page number
per_page number
total number
total_pages number
interface

UseCommentsOptions

Properties

autoFetch boolean optional

Whether to fetch comments automatically on mount

Default: true

wishId string | null

The wish ID to fetch comments for

interface

UseCommentsResult

Properties

addComment (content: string, authorName: string, authorEmail: string) => Promise<boolean>

Add a new comment

comments Comment[]

List of comments

error string | null

Error message if any

isLoading boolean

Loading state for initial fetch

isSubmitting boolean

Loading state while submitting a comment

refetch () => Promise<void>

Manually refetch comments

Properties

skip boolean optional

Skip initial fetch

Default: false

Properties

error string | null

Error message if any

isLoading boolean

Loading state

posts BlogPost[]

List of featured blog posts

refetch () => Promise<void>

Manually refetch data

interface

UseFormOptions

Properties

enabled boolean optional

Whether to fetch the form on mount

Default: true

interface

UseFormResult

Properties

error string | null

Error message if any

form Form | null

The form configuration

isLoading boolean

Loading state

refetch () => Promise<void>

Manually refetch the form

Properties

onError (error: string) => void optional

Callback when submission fails

onSuccess (submission: FormSubmission) => void optional

Callback when form is submitted successfully

rateLimitMs number optional

Minimum time between submissions in milliseconds

Default: 5000

Properties

clearMessages () => void

Clear error and success messages

error string | null

Error message if submission failed

isRateLimited boolean

Whether the user is rate-limited from submitting

isSubmitting boolean

Loading state during submission

submitForm (projectId: string, formId: string, data: Record<string, string | boolean>) => Promise<FormSubmission | null>

Submit the form

successMessage string | null

Success message after submission

Enums

Help Center Types

Values

guidefaqtutorial

Values

listaccordiondecision_treewizard

Form Types Configurable forms for collecting user submissions.

Values

textemailtextareaselectradiocheckbox

Values

activeresolved
type

StatusType

Status Page Types Types for status page API responses.

Values

operationalmaintenancedegraded_performancepartial_outagemajor_outageincident

Values

bug_reportfeature_requestgeneral_inquirybillingaccount

Values

lowmediumhighcritical

Support Types

Values

newopenin_progressresolvedclosed

Survey Question Types

Values

yes_noshort_answerparagraphmultiple_choicecheckboxesrating
type

ThemeMode

Theme mode options

Values

lightdarksystem
type

WishStatus

Wish (Feature Request) Types

Values

pendingunder_reviewplannedin_progresscompleteddeclined

Utilities

function

getErrorMessage

Extract error message from various error types

Parameters

error unknown
fallback string

Returns

string
function

getFingerprint

Get device fingerprint for React Native Uses platform info, screen dimensions, and a random component

Returns

string