Skip to content

Repository files navigation

Escalated for React Native

TestsReact NativeTypeScriptLicense: MIT

A full-featured, embeddable support ticket UI for React Native apps. Drop it into any React Native project — get a complete customer-facing helpdesk with ticket management, knowledge base, guest access, and SLA tracking. Connects to the Escalated REST API.

escalated.dev — Learn more, view demos, and compare Cloud vs Self-Hosted options.

One provider, full support experience. Wrap your app with EscalatedProvider, point it at your API, and every screen is ready — login, tickets, knowledge base, guest access. Customize colors, auth behavior, and locale with a single config object. TypeScript throughout.

Features

  • Ticket management — Create, view, filter, and reply to support tickets with file attachments
  • Knowledge base — Searchable article list for self-service support
  • Guest tickets — Anonymous ticket submission without requiring authentication
  • SLA tracking — Real-time SLA countdown timers on ticket detail views
  • Satisfaction ratings — Post-resolution CSAT ratings with star display
  • Auth hooks — Override login, logout, register, and token retrieval to integrate with your existing auth
  • React Query — Data fetching, caching, and synchronization out of the box
  • Navigation helpers — Pre-built tab, auth, and guest navigation stacks for React Navigation
  • Dark mode — Full dark and light theme support with ThemeProvider and useTheme hook
  • i18n — Localized in 4 languages (English, Spanish, French, German)
  • TypeScript — Full type definitions for every screen, component, hook, and config option
  • Configurable — API base URL, auth hooks, primary color, border radius, dark mode, default locale

Requirements

  • React Native 0.72+
  • React 18+
  • Node.js 18+
  • A running Escalated backend (Laravel, Rails, Django, AdonisJS, or WordPress)

Quick Start

Install the package:

npm install @escalated-dev/escalated-react-native

Install peer dependencies:

npm install @react-navigation/native @react-navigation/native-stack @react-navigation/bottom-tabs react-native-screens react-native-safe-area-context

Wrap your app with EscalatedProvider:

import{EscalatedProvider,TicketListScreen}from'@escalated-dev/escalated-react-native';<EscalatedProviderconfig={{apiBaseUrl: 'https://yourapp.com/support/api/v1'}}><NavigationContainer>{/* Wire screens into your navigation */}</NavigationContainer></EscalatedProvider>

That's it — your app now has a full support ticket UI.

Configuration

The EscalatedProvider config prop accepts the following options:

<EscalatedProviderconfig={{apiBaseUrl: 'https://yourapp.com/support/api/v1',authHooks: myAuthHooks,primaryColor: '#4F46E5',borderRadius: 12,darkMode: false,defaultLocale: 'en',}}>{children}</EscalatedProvider>
OptionTypeDefaultDescription
apiBaseUrlstringrequiredBase URL for the Escalated REST API
authHooksEscalatedAuthHooksundefinedCustom auth hook overrides
primaryColorstring'#4F46E5'Primary action color for buttons and accents
borderRadiusnumber8Border radius for cards, inputs, and buttons
darkModebooleanfalseEnable dark theme
defaultLocalestring'en'Default locale code (en, es, fr, de)

Available Screens

ScreenDescription
LoginScreenEmail/password login form
RegisterScreenNew account registration
TicketListScreenPaginated ticket list with status filters
TicketCardScreenIndividual ticket card view
TicketFilterScreenAdvanced ticket filter controls
CreateTicketScreenNew ticket form with file attachments
TicketDetailScreenFull ticket thread with replies and metadata
KBListScreenKnowledge base article listing
KBArticleScreenSingle article view
GuestCreateScreenAnonymous ticket submission
GuestTicketScreenGuest ticket view via token
SettingsScreenUser preferences and locale selection

Available Components

ComponentDescription
StatusBadgeTicket status indicator
PriorityBadgePriority level indicator
SlaTimerSLA countdown display
AttachmentListFile attachment display
FilePickerFile selection for attachments
SatisfactionRatingStar rating display and input
ReplyThreadChronological message thread
ReplyComposerReply text input with attachments
EmptyStatePlaceholder for empty lists
LoadingSkeletonSkeleton loading placeholder

Navigation Helpers

Escalated provides pre-built navigation stacks for React Navigation:

import{createEscalatedTabs,createAuthStack,createGuestStack,}from'@escalated-dev/escalated-react-native';// Full tabbed experience (Tickets, Knowledge Base, Settings)constEscalatedTabs=createEscalatedTabs();// Auth screens only (Login, Register)constAuthStack=createAuthStack();// Guest screens only (GuestCreate, GuestTicket)constGuestStack=createGuestStack();

Wire them into your existing navigation tree:

<NavigationContainer><Stack.Navigator><Stack.Screenname="Support"component={EscalatedTabs}/><Stack.Screenname="Auth"component={AuthStack}/><Stack.Screenname="Guest"component={GuestStack}/></Stack.Navigator></NavigationContainer>

Auth Hooks

Auth hooks let you override default authentication behavior to integrate with your app's existing auth system:

<EscalatedProviderconfig={{apiBaseUrl: 'https://yourapp.com/support/api/v1',authHooks: {onLogin: async(email,password)=>{// Your custom login logicreturnyourAuthToken;},onLogout: async()=>{// Your custom logout logic},onRegister: async(name,email,password)=>{// Your custom registration logicreturnyourAuthToken;},getToken: async()=>{// Return the current auth tokenreturnawaitAsyncStorage.getItem('token');},},}}>{children}</EscalatedProvider>

When no auth hooks are provided, Escalated uses its built-in Axios HTTP client for token management.

Theme

Escalated includes a ThemeProvider and useTheme hook for dark/light mode support:

import{useTheme}from'@escalated-dev/escalated-react-native';functionMyComponent(){const{ colors, darkMode, toggleDarkMode }=useTheme();return(<Viewstyle={{backgroundColor: colors.background}}><Textstyle={{color: colors.text}}>Themed content</Text></View>);}

Theme values (primary color, border radius, dark mode) are set via the EscalatedProvider config and accessible anywhere via useTheme.

Internationalization

Escalated ships with translations for four languages:

CodeLanguage
enEnglish
esSpanish
frFrench
deGerman

Set the default locale via config.defaultLocale or let users switch in the Settings screen.

Peer Dependencies

PackagePurpose
reactReact core
react-nativeReact Native core
@react-navigation/nativeNavigation container
@react-navigation/native-stackStack navigator
@react-navigation/bottom-tabsTab navigator
react-native-screensNative screen primitives
react-native-safe-area-contextSafe area insets

Also Available For

FrameworkPackageRepository
Laravelescalated-dev/escalated-laravelGitHub
Ruby on Railsescalated (gem)GitHub
Djangoescalated-djangoGitHub
AdonisJS@escalated-dev/escalated-adonisGitHub
WordPressescalated-wordpressGitHub
Vue UI@escalated-dev/escalatedGitHub
Flutterescalated (Flutter)GitHub
React Native@escalated-dev/escalated-react-nativeGitHub

Same architecture, same REST API, same support experience — for every major framework.

License

MIT

About

The React Native extension for Escalated

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages