Skip to main content
RapidDev - Software Development Agency
retool-tutorial

How to Use Retool on Mobile Devices

Retool Mobile is a separate builder for iOS and Android native apps — it uses React Native components including Camera, Barcode Scanner, NFC, Signature Pad, and Geolocation that aren't available in the web editor. Download the Retool Mobile app from the App Store or Google Play to test and use your apps. Retool Mobile is distinct from making a Retool web app 'responsive.'

What you'll learn

  • Understand the difference between Retool Mobile and responsive web apps in Retool
  • Access the Retool Mobile builder and select mobile-specific components
  • Configure the mobile layout canvas and test on a real device using the Retool Mobile app
  • Use mobile-native components: Camera, Barcode Scanner, Geolocation, and NFC
  • Publish a mobile app and distribute it to team members via the Retool Mobile app
Book a free consultation
4.9Clutch rating
600+Happy partners
17+Countries served
190+Team members
Beginner7 min read20-30 minRetool Cloud and Self-hosted (mobile requires Business plan)Last updated March 2026RapidDev Engineering Team
TL;DR

Retool Mobile is a separate builder for iOS and Android native apps — it uses React Native components including Camera, Barcode Scanner, NFC, Signature Pad, and Geolocation that aren't available in the web editor. Download the Retool Mobile app from the App Store or Google Play to test and use your apps. Retool Mobile is distinct from making a Retool web app 'responsive.'

Quick facts about this guide
FactValue
ToolRetool
DifficultyBeginner
Time required20-30 min
CompatibilityRetool Cloud and Self-hosted (mobile requires Business plan)
Last updatedMarch 2026

Retool Mobile vs Responsive Web: What's the Difference

Retool has two distinct paths for mobile usage: (1) Retool Mobile, which is a dedicated mobile app builder that generates native iOS/Android experiences using React Native components, and (2) responsive web apps, which are regular Retool apps that can be viewed in a mobile browser.

Retool Mobile provides components that only make sense on physical devices: Camera (photo capture), Barcode/QR Scanner (with hardware scanner support for Zebra and Proglove devices), NFC Reader, Signature Pad, and Geolocation. These components do not exist in the web builder. Retool Mobile also supports OTA (over-the-air) updates and offline mode on Business plans.

This tutorial covers Retool Mobile specifically — how to access the builder, build a simple mobile app, and deploy it to your team's devices.

Prerequisites

  • A Retool organization on the Business plan (Retool Mobile requires Business+)
  • An iOS or Android device with the Retool Mobile app installed (search 'Retool Mobile' in the App Store or Google Play)
  • A connected resource (database or REST API) with data for your mobile app
  • Admin or Editor access in your Retool org

Step-by-step guide

1

Access the Retool Mobile builder

From the Retool home page, click '+ New' and select 'Mobile App' (not 'App'). Alternatively, if you're in a regular app, you cannot switch it to a mobile app — you must create a new Mobile App from scratch. The mobile builder looks similar to the web editor but uses a phone-sized canvas (375px wide by default). The component panel on the left shows only mobile-compatible components, and many web-only components (like the Retool HTML component) are not available.

Expected result: Mobile builder opens with a phone-sized canvas. Component panel shows mobile-specific components.

2

Add components to the mobile canvas

The mobile canvas uses a vertical stack layout by default — components stack vertically from top to bottom. Drag components from the panel onto the canvas. Key mobile components: List View (scrollable item list), Scanner (camera-based barcode/QR reader), Signature Pad, Native Camera (capture photos), Location (get GPS coordinates), Text Input, Button, and Select. Mobile components snap to the full width of the canvas by default, which is appropriate for touch targets.

Expected result: Mobile app canvas shows stacked components in a vertical phone layout.

3

Connect mobile components to queries

Mobile queries work the same as web queries — create SQL or REST API queries in the Query panel and reference them in component properties. The key difference is that mobile apps often run offline or on poor connections, so design queries to be lightweight. A List View component bound to {{ getItems.data }} will display each item with configurable title and subtitle fields. Reference query columns in the List View Inspector: Title: {{ item.name }}, Subtitle: {{ item.status }}.

typescript
1-- Mobile-optimized query: limit columns and rows
2SELECT id, name, status, created_at
3FROM work_orders
4WHERE assigned_to = {{ retoolContext.currentUser.email }}
5 AND status IN ('pending', 'in_progress')
6ORDER BY created_at DESC
7LIMIT 100;

Expected result: List View shows work orders with names and statuses from the query.

4

Configure the Camera or Barcode Scanner

Drag a Scanner component onto the canvas. The Scanner supports both camera-based QR/barcode scanning and USB/Bluetooth hardware scanners (Zebra, Honeywell, Proglove). In the Inspector, set the Scanner type: 'Camera' for device camera, or 'Keyboard wedge' for hardware scanners that simulate keyboard input. Set an event handler on 'On scan' to trigger a query using {{ scanner1.value }} — the scanned barcode value. For example, a SELECT query: WHERE barcode = {{ scanner1.value }}.

typescript
1// On scan event handler — JS Query
2// Triggered when scanner1 reads a barcode
3await getItemByBarcode.trigger({
4 additionalScope: { barcode: scanner1.value }
5});
6
7// If item not found, show notification
8if (!getItemByBarcode.data.length) {
9 utils.showNotification({
10 title: 'Not found',
11 description: `No item found for barcode: ${scanner1.value}`,
12 notificationType: 'warning',
13 });
14}

Expected result: Scanning a barcode triggers the query and displays the matching item details.

5

Test your app on a real device

Save your mobile app. On your iOS or Android device, open the Retool Mobile app and log in with your Retool credentials. Your app will appear in the list of available apps. Tap it to open it. Changes you make in the mobile builder are reflected immediately in the device app when you save — no rebuild or deployment step needed during development. This live preview makes mobile development fast.

Expected result: Your mobile app appears in the Retool Mobile app and runs on the device with live data.

6

Use Geolocation in a mobile app

Drag a Location component onto the canvas (not visible to users — it runs in the background). In its Inspector, configure 'Detect location on page load' to ON. Reference the current location in queries or other components using {{ location1.coords.latitude }} and {{ location1.coords.longitude }}. For example, use these in a SQL query to find nearby items: WHERE ST_Distance(coordinates, ST_MakePoint({{ location1.coords.longitude }}, {{ location1.coords.latitude }})) < 1000.

Expected result: App captures device GPS coordinates. Queries can use the coordinates to filter or display location-aware data.

7

Publish and distribute the mobile app

When ready to deploy to your team, click 'Publish' in the mobile builder (same as web apps). Team members who have the Retool Mobile app installed and belong to your Retool org will automatically see the published app in their app list. To control which users see which apps, use Retool's standard permission system: Settings → Groups → assign the app to specific groups.

Expected result: Published app is visible to team members in the Retool Mobile app on their devices.

Complete working example

JS Query: processBarcodeScan
1// JS Query: processBarcodeScan
2// Triggered by scanner1's 'On scan' event
3// Looks up scanned item and handles not-found case
4
5const barcode = scanner1.value;
6
7if (!barcode || barcode.trim() === '') {
8 utils.showNotification({
9 title: 'Scan error',
10 description: 'No barcode detected. Try again.',
11 notificationType: 'error',
12 });
13 return;
14}
15
16// Fetch item details for scanned barcode
17await lookupItem.trigger({
18 additionalScope: { scannedBarcode: barcode },
19});
20
21const results = lookupItem.data;
22
23if (!results || results.length === 0) {
24 utils.showNotification({
25 title: 'Item not found',
26 description: `Barcode '${barcode}' is not in the system.`,
27 notificationType: 'warning',
28 duration: 5,
29 });
30 return;
31}
32
33// Store found item in temporary state for display
34// Note: setValue is async — do not read immediately after
35await foundItem.setValue(results[0]);
36
37utils.showNotification({
38 title: 'Item found',
39 description: results[0].name,
40 notificationType: 'success',
41});

Common mistakes

Why it's a problem: Trying to make a Retool web app 'work on mobile' by resizing it instead of building a proper Mobile App

How to avoid: Retool web apps can be made responsive with a 12-column layout and 'Show on mobile' component settings, but they lack native mobile components. For field workers needing Camera or Scanner, build a dedicated Mobile App.

Why it's a problem: Using desktop-oriented components (Table, Module) in the mobile builder

How to avoid: The mobile builder has its own component set. Use List View instead of Table, and avoid embedding web-only Modules. Stick to the components in the mobile builder's component panel.

Why it's a problem: Forgetting to handle location permission denial in geolocation-dependent apps

How to avoid: Check {{ location1.coords.latitude !== null }} before using coordinates. Show a graceful message if location is unavailable, and provide a manual fallback input for the user to type their location.

Best practices

  • Design mobile queries to return fewer columns and rows than web queries — mobile devices have less memory and slower connections
  • Place action buttons at the bottom of the screen within thumb reach, following native mobile UX conventions
  • Use the List View component for scrollable lists rather than the Table component — Table is designed for desktop
  • Test on both iOS and Android devices as layout and permission flows can differ between platforms
  • Design for offline scenarios: show a 'Last synced' timestamp and handle query failures gracefully with utils.showNotification()
  • Use the Retool Mobile 'Groups' permission system to control which team roles see which mobile apps

Still stuck?

Copy one of these prompts to get a personalized, step-by-step explanation.

ChatGPT Prompt

I'm building a Retool Mobile app for warehouse workers who need to scan barcodes to track item locations. I need: (1) a Scanner component configured for camera-based barcode scanning, (2) an 'On scan' event handler that triggers a SQL query 'lookupItem' with WHERE barcode = {{ scanner1.value }}, (3) a List View showing scan history from a temporary state array, (4) a button to mark an item as 'received' by running an UPDATE query. Write the JS Query for the scan handler including error notification and temporary state update.

Retool Prompt

Configure a Retool Mobile app with: a Scanner component with 'On scan' event triggering lookupItem query, a Text component showing {{ lookupItem.data[0].name ?? 'Scan a barcode' }}, a Location component capturing {{ location1.coords.latitude }} and {{ location1.coords.longitude }} for a nearby-items filter. Show the layout configuration for a bottom-anchored action button.

Frequently asked questions

Do I need to submit a Retool Mobile app to the App Store or Google Play?

No — you distribute Retool Mobile apps through the Retool Mobile container app, which is already on the App Store and Google Play. Your apps run inside the Retool Mobile container and are downloaded directly from your Retool org. This means no app store review process and instant OTA updates.

Is Retool Mobile included in my Retool plan?

Retool Mobile requires the Business plan or higher. The Free and Pro plans do not include mobile app building. Check your plan at Settings → Billing in your Retool org.

Can Retool Mobile apps work without an internet connection?

Offline mode for Retool Mobile is available on Business plans. When enabled, apps cache data locally and sync when connectivity is restored. Configure offline sync in the mobile app settings. Without offline mode, the app requires an active connection to load data.

RapidDev

Talk to an Expert

Our team has built 600+ apps. Get personalized help with your project.

Book a free consultation

Learning is great. Shipping is faster with help.

Our engineers have built 600+ apps on Retool and the tools around it. If your project needs to be live sooner than your learning curve allows — book a free consultation.

Book a free consultation

We put the rapid in RapidDev

Need a dedicated strategic tech and growth partner? Discover what RapidDev can do for your business! Book a call with our team to schedule a free, no-obligation consultation. We'll discuss your project and provide a custom quote at no cost.