Expokit
AboutDocsComponentsChartsBlocksPricing
Sign inGet started
All components

Inputs

CalendarNewDate PickerNewFloating InputOTP InputPassword InputSearch BarSelectSliderStepperTextareaTime PickerNew

Selection

CheckboxChip GroupRadio GroupRatingProSegmented ControlSwitch

Buttons

ButtonFloating Action ButtonProMorphing Button GroupProQR Code ButtonProSlide to ConfirmProStateful Button

Feedback

AlertProgressSkeletonSpinnerToast

Overlays

Action SheetNewBottom SheetDialogDrawerNew

Display

AccordionAvatarBadgeCardCarouselProGrain GradientNewList ItemNewSwipeable RowProTimelineNew

Navigation

Bottom NavNewProgress StepsNewTabs

Motion

Number TickerProOrb RevealProText Animation
QR Code Button
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 11
  • CalendarNew
  • Date PickerNew
  • Floating Input
  • OTP Input
  • Password Input
  • +6 more
Selection 6
  • Checkbox
  • Chip Group
  • Radio Group
  • RatingPro
  • Segmented Control
  • +1 more
Buttons 6
  • Button
  • Floating Action ButtonPro
  • Morphing Button GroupPro
  • QR Code ButtonPro
  • Slide to ConfirmPro
  • +1 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 3
  • Number TickerPro
  • Orb RevealPro
  • Text Animation
68 components · 329 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 screenDonut ShopProA dessert shop screen where the products rollInboxProA 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

App templates

  • AI assistant appPro
  • Business banking appPro
  • Food ordering appPro
10 complete screens — drop one in, wire your dataSee them on devices All templates All blocks
Pricing
DocsComponentsButtonsQR Code Button

QR Code Button

A pill that morphs into a card with a real, scannable QR code.

Pro<QrCodeButton />3 variantsiOS · Android · Expo Go
9:41

Default

QR Code Button

Installation#

One command copies the source into your app — you own the code and can change anything.

Usage#

Colours, radius and light / dark come from useKit(). Wrap your app in <KitProvider accent="#6366f1" radius={14}> to re-skin every component at once.

Props#

PropTypeDefault
value

What the code encodes: a URL, a payment link, a ticket id.

string—
label

Text on the pill.

string'Show QR Code'
copyLabel

Copy button text.

string'Copy'
copiedLabel

Shown after Copy is pressed.

string'Copied'
onCopy

Wire your clipboard here (expo-clipboard).

(value: string) => void—
open

Controlled state.

boolean—
defaultOpen

Uncontrolled initial state.

booleanfalse
onOpenChange

Opened or closed.

(open: boolean) => void—
size

Pill height 36 / 44 / 52.

"sm" | "md" | "lg""md"
codeSize

Side of the code in points; the card wraps it.

number168
color

Pill colour. The card stays white so the code scans.

stringwhite (dark) / primary (light)
accessibilityLabel

Screen reader label for the pill.

stringlabel
style

Root style.

StyleProp<ViewStyle>—

Behaviour & accessibility#

Motion
Press swells the pill; it glides into the card while its label fades out and the code fades and scales in. Close glides it back.
Layout
Reserves the open card's size up front, so nothing around it moves and every control stays inside its own bounds (taps work on Android).
Code
Encoded in the component: UTF-8 bytes, error correction M, smallest version that fits, mask chosen by the spec's penalty rules. Always dark on white so it scans in dark mode too.
Copy
Calls onCopy with the value and flips to a tick and "Copied" for 1.5 s.
Haptics
A light impact on open, a success tap on Copy, a tick on close.
Reduced motion
Opens and closes with a short fade.
Screen readers
A button with an expanded state; the code reads as "QR code for …".

Source#

PreviousMorphing Button GroupNextSlide to Confirm

Did you like the content?

9:41

Sunday 18 October

9:41

Pro component 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 usage example 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