Expokit
AboutDocsComponentsChartsBlocksPricing
Sign inGet started
All blocksChatProCheckoutProDashboardProInboxProOnboardingProProfileProSearch ResultsProSettingsProSign InPro
Chat
Sponsor ExpoKit

Free stays free. Tip once — keep shipping.

Support
About
Docs
IntroductionWhat ExpoKit is and how it worksInstallationAdd ExpoKit to an Expo appThemingColours, radius and dark modeCLIinit, add, login and updateAI assistants (MCP)Cursor, Claude, Antigravity and moreRun on your phoneTry components in Expo GoChangelogWhat shipped recently
npx @expokit/cli@latest initQuick start
Components
Liquid Glass8 iOS 26 glass pieces3DNew14 tilt, flip and stack
Inputs 12
  • CalendarNew
  • Date PickerNew
  • Floating Input
  • OTP Input
  • Password Input
  • +7 more
Selection 7
  • Checkbox
  • Chip Group
  • Color SwatchPro
  • Radio Group
  • RatingPro
  • +2 more
Buttons 7
  • Button
  • Floating Action ButtonPro
  • Like ButtonPro
  • Morph ButtonPro
  • Shimmer ButtonPro
  • +2 more
Feedback 5
  • Alert
  • Progress
  • Skeleton
  • Spinner
  • Toast
Overlays 4
  • Action SheetNew
  • Bottom Sheet
  • Dialog
  • DrawerNew
Display 9
  • Accordion
  • Avatar
  • Badge
  • Card
  • CarouselPro
  • +4 more
Navigation 3
  • Bottom NavNew
  • Progress StepsNew
  • Tabs
Motion 2
  • Number TickerPro
  • Text Animation
70 components · 347 live variantsAll components
Charts

Cartesian

  • Area Chart
  • Bar Chart
  • Line Chart
  • Combo Chart

Circular

  • Pie & Donut
  • Radial Chart
  • Radar Chart
  • Polar AreaPro

3D & Pixel

  • Isometric BarsPro
  • Pixel BarsPro

Specialty

  • TreemapPro
  • WaterfallPro
  • BulletPro
  • TimelinePro
  • Gauge
  • Candlestick
  • Heatmap
  • Funnel

Classic

  • Sparkline
  • Progress Rings
  • MultiLine (classic)
  • StackedBar (classic)
  • Ranking Bars (classic)

Guides

  • Usage & config
  • Patterns & effects
  • Show / hide anything
  • Chart theming
  • Interactions
23 charts, built on the open-source expo-charts engineAll charts
Blocks

Screens

ChatProAn AI assistant chat screenCheckoutProA premium checkoutDashboardProA finance / analytics home screenInboxProA messaging inboxOnboardingProA minimal swipeable welcome flowProfileProAccount profile for any appSearch ResultsProA clean, monochrome search screenSettingsProAn iOS-style grouped settings screenSign InProOne configurable sign-in flow modelled on top mobile apps
9 complete screens — drop one in, wire your dataSee them on devices All blocks
Pricing
DocsBlocksChat

Chat

An AI assistant chat screen: replies stream in word by word with a soft fade and a blinking caret, a shimmering “Thinking…” waits for the first token, and the send button morphs into Stop. Light markdown (bold, inline code, lists, scrollable code blocks), suggestion chips, copy / regenerate / thumbs actions and a prompt field that grows to five lines and stays above the keyboard.

Pro
9:41

Sunday 18 October

9:41

Installation#

Copies the screen into src/components/blocks along with every component it uses.

Props#

PropTypeDefault
messages

The conversation. Controlled when onSend is set; otherwise the starting messages for the built-in simulation.

{ id, role: 'user' | 'assistant', text, streaming?, feedback? }[][]
onSend

The user sent a prompt (trimmed). Append it and the reply to messages yourself. Without it, replies are simulated from a canned list so the screen works as-is.

(text: string) => void—
streaming

A reply is in flight: “Thinking…” until the last message is an assistant one with text, a caret while it grows, and Send becomes Stop.

booleanfalse
onStop

Stop pressed while streaming.

() => void—
suggestions

Chips above the input until the user sends something; tapping one sends it. [] hides them.

string[]4 prompts
assistantName

Used in the header, the placeholder and screen reader labels.

string'Assistant'
title / subtitle

Header text. The subtitle shows “Thinking…” / “Typing…” while streaming.

stringassistantName / 'Ask me anything'
header

Replace the header; null hides it.

ReactNode | nullbuilt-in
avatar

Replace the assistant mark beside replies, in the header and the empty state.

ReactNodesparkle mark
emptyTitle / emptySubtitle

Empty state copy.

string'How can I help today?'
placeholder

Prompt placeholder and accessibility label.

string`Message ${assistantName}`
variant

plain: assistant text sits on the page. bubbles: assistant replies in muted bubbles too (support bots).

'plain' | 'bubbles''plain'
thinkingIndicator

What shows before the first token.

'shimmer' | 'dots''shimmer'
onAttach

Shows a + button left of the input.

() => void—
onCopy

Copy pressed or a message long-pressed — write message.text to the clipboard here. The icon turns into a check.

(message) => void—
onRegenerate

Regenerate pressed on the latest reply.

(message) => void—
onFeedback

Thumbs toggled; null when cleared. Initial state comes from message.feedback.

(message, 'up' | 'down' | null) => void—
onNewChat

Shows a new-chat button in the header (the simulation also clears itself).

() => void—
bottomInset

Extra padding under the input, e.g. useSafeAreaInsets().bottom. Ignored while the keyboard is open.

number0
keyboardVerticalOffset

Height above the screen (navigator header) so the input clears the keyboard exactly.

number0
haptics

Light haptics on send, stop, copy and feedback.

booleantrue
accent

User bubbles, send button, focus ring and the assistant mark.

stringtheme accent
style

Root style.

StyleProp<ViewStyle>—

Source#

NextCheckout

Did you like the content?

9:41

Sunday 18 October

9:41

Pro screen Pro

Sign in with a Pro account to try it live, copy the source and install it with the CLI.

Sign in See pricing

The install command is part of ExpoKit Pro Pro

Sign in with a Pro account to try it live, see the source and install it with the CLI.

See pricingSign in

The source is part of ExpoKit Pro Pro

Sign in with a Pro account to try it live, see the source and install it with the CLI.

See pricingSign in