◉RORK LABJP
●GPT-6.1 SOL — Added to Rork's model menu (09-29) with Low, Medium and High effort; included on Pro and Max●SONNET 5.5 — Claude Sonnet 5.5 is selectable: strong at UI design and faster than Sonnet 5 (09-28)●SDK 58 — Beta since 09/15 with no stable date yet; running projects in Expo Go has required login since 09/03●WIDGET — A write-up traces an iOS widget that renders black only in production builds●OBSERVE — EAS Observe now records native crashes too (SDK 57.0.21 or later, 10/07)●NEW — My App Open Ad Only Showed When the App…●GPT-6.1 SOL — Added to Rork's model menu (09-29) with Low, Medium and High effort; included on Pro and Max●SONNET 5.5 — Claude Sonnet 5.5 is selectable: strong at UI design and faster than Sonnet 5 (09-28)●SDK 58 — Beta since 09/15 with no stable date yet; running projects in Expo Go has required login since 09/03●WIDGET — A write-up traces an iOS widget that renders black only in production builds●OBSERVE — EAS Observe now records native crashes too (SDK 57.0.21 or later, 10/07)●NEW — My App Open Ad Only Showed When the App…
Articles/Dev Tools
⬡ Dev Tools/2026-04-23Advanced

Integrating Siri and Shortcuts into Rork Apps: App Intents with Expo, Without the Pitfalls

A production-grade guide to adding Siri Shortcuts and App Intents to a React Native app generated by Rork. Bridge native Swift via an Expo Config Plugin, model AppShortcut / AppEntity / EntityQuery correctly, and ship Donations and Control Center widgets without breaking Apple's conventions.

Rork585App Intents6Siri3Shortcuts3Expo219iOS116SwiftUI66Config Plugin3

✦ Premium Article

When a Rork-built app has good reviews but flat retention, one of the most cost-effective improvements you can try is Siri and Shortcuts support. In the two apps where I shipped App Intents, return visits picked up noticeably — not because the app itself changed, but because iOS started surfacing the right action at the right moment on the user's behalf.

The catch: Rork generates Expo-flavored React Native code, and App Intents is a pure Swift API introduced in iOS 16. You cannot reach it from React Native out of the box. In this guide I'll walk through exactly how to bridge into App Intents from a Rork project using an Expo Config Plugin, then design AppShortcut, AppEntity, and AppIntent properly so your shortcuts feel native instead of bolted on. More space goes to why a given file belongs in a given target than to the keystrokes themselves, because that is where this integration actually breaks.

What you need before you start

Everything here works with both Rork (React Native / Expo output) and Rork Max (SwiftUI output). The dividing line is not which one generated your code — it's whether you can currently reach into the native iOS project.

Three prerequisites, and only three:

PrerequisiteHow to checkIf you don't have it
A native iOS project on diskIs there an ios/ directory at the project root?Run npx expo prebuild -p ios to generate one
Builds that run Config PluginsCan you edit the plugins array in app.json / app.config.js?Move your builds local or onto EAS Build
A physical device to test onAre you enrolled in the Apple Developer Program?There's no way around this one — Donations never train in the Simulator

Adding a Config Plugin with no ios/ directory present does nothing at all, silently, because there is nothing for it to modify. That trips up more people than any other step here, so run prebuild first.

App Intents pay off on the second launch, not the first

Apple's documentation describes App Intents as "a way to expose your app's functionality to Siri, Spotlight, and Shortcuts." That framing undersells it. In my experience, the real value of App Intents is reducing friction on the return visit.

Between first launch and the second time a user opens your app, iOS offers dozens of possible entry points: Siri suggestions, Spotlight, Home Screen widgets, the Lock Screen, Control Center, and the Shortcuts app. Once you adopt App Intents, every one of those surfaces can invoke specific app functions directly. The morning weather readout, the post-workout weight logging, the lunchtime water reminder — habitual actions can now complete in a single tap (or spoken phrase) without the user ever opening the app UI.

The metrics that moved for me were:

  • D7 retention: plus 8 to 12 points after Siri suggestions started surfacing
  • Average session length: went down, which looks like a regression but is actually healthy because Shortcuts completes the interaction
  • Lock Screen widget launches: iOS 17 lets widgets invoke App Intents inline, and Lock Screen launches eventually surpassed Home Screen taps for me

Rork is strong at generating useful features quickly, but it does not give you a retention loop for free. App Intents is the most direct investment you can make to turn a single-use download into a habit.

✦

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
✦If you were stuck trying to add Siri Shortcuts to the React Native code Rork generates, you'll now have a concrete Expo Config Plugin bridge that actually registers AppShortcuts on iOS
✦You'll learn the three pillars — AppShortcut, AppEntity, and EntityQuery — well enough to design shortcuts that operate on real user data rather than canned phrases
✦You'll be able to ship Donations and an iOS 18 Control Center control so Siri proactively surfaces your app instead of waiting to be opened
Secure payment via Stripe · Cancel anytime
✦

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Rork Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • ✦Copy-paste ready implementation code
  • ✦New advanced guides published daily
  • ✦$5/mo or $10 for lifetime access
View Membership →

Related Articles

⬡ Dev Tools2026-09-21
A build that stops with exit code 0 — the flag that silenced the log, and the check that let an empty file through
Two reports landed in the same week: eas build --local stopping with exit code 0 but produced no further output, and a zero-byte stub that never got embedded. Both came down to settings that reduce output. Here is how to audit your own scripts.
⬡ Dev Tools2026-09-05
Your Widget Extension Can Submit a BGTaskScheduler Request. It Just Cannot Register the Handler
Calling BGTaskScheduler from a widget extension compiles, submits, and returns true — and then nothing runs. Here is why registration belongs to the host app only, and how I moved refresh ownership back where it belongs across my wallpaper apps.
⬡ Dev Tools2026-07-27
When to Raise Your Minimum iOS Version — Count Leftover Branches, Not User Percentages
Judging a minimum OS bump by usage share produces the same answer every year, so the decision never happens. Here is the annotation convention, the sweep script that counts how many iOS and Android branches each candidate floor would retire, and what to watch for 30 days after.