konsta-ui

Guide to using Konsta UI for pixel-perfect iOS and Material Design components in Capacitor apps. Works with React, Vue, and Svelte. Use this skill when users want native-looking UI without Ionic, or prefer a lighter framework.

By cap-go · 714 installs

npx skills add cap-go/capgo-skills --skill konsta-ui

Source repository · Upstream listing

Konsta UI for Capacitor When to Use TRIGGER when: Adding Konsta UI to a Capacitor app or choosing it over Ionic Upgrading Konsta v3/v4 (Tailwind v3 konstaConfig ) to v5 (Tailwind v4) Components unstyled, colors ignored, ios: / material: classes do nothing Navbar / Tabbar under the status bar or gesture bar Theme should follow platform ( ios on iPhone, material on Android) Do not use: Ionic Framework components or theming: ionic design Tailwind install/config without Konsta: tailwind capacitor Android SystemBars / edge to edge native config: safe area handling Keyboard overlap in forms: capacitor keyboard Versions (October 2026) Konsta Tailwind Frameworks Config style 5.x ( latest , 5.5.0) v4 React 19 ( ref as prop), Vue 3, Svelte 5 (runes, snippets) CSS: @import 'konsta/<fw /theme.css' + @theme 4.x v3 adds Svelte 5 types JS: konstaConfig() in tailwind.config.js 3.x and below v3 JS konstaConfig() Check first: npm ls konsta tailwindcss react vue svelte . Never mix v5 CSS setup with a tailwind.config.js konstaConfig wrapper. Workflow 1. Inspect versions, main CSS file, tailwind.config. , postcss.config. , vite.config. , index.html viewport meta, whether Ionic is also present. 2. Install / upgrade (below). For an existing Tailwind v3 project, migrate Tailwind first ( tailwind capacitor ). 3. Wrap the app in App (or KonstaProvider with Ionic/Framework7). 4. Build screens with components: [references/components.md](references/components.md). 5. Verify (below). Only load a reference when its topic is in play. Setup (v5, React shown; Vue/Svelte use konsta/vue/theme.css / konsta/svelte/theme.css ) App props: theme ( 'ios' 'material' 'parent' , default material ), safeAreas (default true ), dark , iosHoverHighlight , materialTouchRipple (global switches added in v5). Only one App per app. Material Roboto font: add it yourself (Google Fonts link or self hosted for offline). iOS uses the system font. Migrating v4 v5 v4 v5 tailwind.config.js : module.exports = konstaConfig({...}) Delete wrapper; @import 'konsta/react/theme.css' in CSS konstaConfig.colors.primary @theme { color brand primary: ... } Per component ripple config Prefer the global App materialTouchRipple ; check component types in your installed version SegmentedButton strong rounded Removed; use Segmented theme specific style props Link navbar/toolbar/tabbar props Removed; context driven React forwardRef usage / innerRef patterns ref prop (React 19) Svelte slots { snippet ...} Then run the Tailwind v4 upgrade ( npx @tailwindcss/upgrade ) if Tailwind itself is still v3; see tailwind capacitor . Traps With Ionic in the same app, use KonstaProvider (not App ) and pick one owner for safe areas (Ionic's ion safe area or Konsta's safe areas ), not both. Dark mode in Konsta v5 is class based ( @custom variant dark (&:where(.dark, .dark )) in its CSS): toggle dark on <html , set App dark , and match native bars with SystemBars.setStyle . Konsta's own docs show user scalable=no, maximum scale=1 ; prefer allowing zoom for accessibility and fix iOS input zoom with 16px inputs instead. Modals/side panels that are not full screen need no safe areas (or no safe areas top etc.) to avoid extra padding. Konsta is UI only: no router, no page transitions. Pair with React Router / Vue Router / SvelteKit and handle Android back button with @capacitor/app backButton . Verification 1. npm run build && npx cap sync , run on iOS and Android. 2. Inspect <html /root: .k ios or .k material class present; ios: / material: utilities apply. 3. Navbar clears the Dynamic Island; Tabbar clears the home indicator and Android gesture bar (Android 15+ edge to edge). 4. Toggle dark mode; components and status bar icons switch together. 5. Leftover check: grep rn "konstaConfig\ konsta/config" . returns nothing on v5. Error Handling Error / symptom Cause Fix Cannot find module 'konsta/config' v5 removed JS config Use CSS @import 'konsta/react/theme.css' Components render unstyled Theme CSS not imported, or Tailwind not scanning (no @tailwindcss/vite / @tailwindcss/postcss ) Import theme after @import 'tailwindcss' ; add the Tailwind plugin [postcss] It looks like you're trying to use tailwindcss directly as a PostCSS plugin Tailwind v4 PostCSS plugin moved Use @tailwindcss/postcss or @tailwindcss/vite Brand color ignored Variable not named color brand , or defined outside @theme Rename inside @theme ios: classes have no effect App / KonstaProvider missing, so no .k ios ancestor Wrap app React warning about ref / forwardRef after upgrade React 18 with Konsta 5 Upgrade to React 19 or stay on Konsta 4 Double top padding Konsta safeAreas + Ionic or custom env() padding Keep one owner Resources Konsta UI: https://konstaui.com React installation: https://konstaui.com/react/installation Safe areas: https://konstaui.com/react/safe areas Colors: https://konstaui.com/react/colors Changelog: https://github.com/konstaui/konsta/blob/master/CHANGELOG.md