What SDK 58 shipped
Expo SDK 58 entered beta in mid-September 2026, built for iOS 27 and bundling the React Native 0.88 release candidate (RN 0.88 stable is scheduled for around 12 October 2026). Alongside faster Android builds, Android home-screen widgets and a new CLI aimed at coding agents, the headline for iOS teams is expo-app-intents: a first-class way to define Apple App Intents from JavaScript, plus an Expo Device Hub integration for testing with Xcode 27.
expo-app-intents API may change before stable. The code below shows the shape of the integration (config plugin + JS-defined intents) so you can plan around it; verify exact names and signatures against the SDK 58 changelog before you ship.Why App Intents matter now
An App Intent is a declaration that says “my app can do this specific thing, with these parameters.” Once declared, the systemcan invoke it: Siri and Shortcuts can run it, Spotlight can surface it, and, the reason this is suddenly interesting, Apple Intelligence can discover and chain it. It turns your app from something a user has to open into a set of capabilities the OS can call on the user's behalf.
Until now, doing this in a React Native app meant dropping into Swift, defining AppIntent structs natively, and bridging back to your JS. expo-app-intents collapses that into the JS layer where your app logic already lives, which is what makes it worth a serious look rather than a “maybe next year.”
How the pieces fit
Three parts, in the order you set them up:
- The config plugin in
app.jsonenables the module and its iOS entitlements at prebuild. - Intent definitions in JS/TS: a title, a description the system (and Apple Intelligence) reads, typed parameters, and a handler.
- Donation / registration: telling the system the intent exists so it shows up in Shortcuts and Spotlight.
{
"expo": {
"name": "My App",
"ios": { "bundleIdentifier": "com.mycompany.myapp", "deploymentTarget": "27.0" },
"plugins": [
"expo-app-intents"
]
}
}import { defineAppIntent, StringParameter } from "expo-app-intents";
// "Log a run" — the kind of action Siri / Spotlight / Apple Intelligence
// can invoke without the user opening the app.
export const logRun = defineAppIntent({
name: "LogRun",
// Titles/descriptions are what the system and Apple Intelligence read to
// decide when to surface and run this — treat them as product copy.
title: "Log a run",
description: "Record a completed run with an optional note.",
parameters: {
note: StringParameter({ title: "Note", optional: true }),
},
async handler({ note }) {
const run = await api.runs.create({ note, at: Date.now() });
return {
value: run.id,
// What Siri speaks / Apple Intelligence shows back to the user.
dialog: note ? `Logged your run: ${note}` : "Logged your run.",
};
},
});import { registerAppIntents } from "expo-app-intents";
import { logRun } from "@/intents/logRun";
// Make the intents discoverable to Shortcuts / Spotlight / Siri.
registerAppIntents([logRun]);The important design point is not the syntax, it is the metadata. Apple Intelligence decides whether to surface and run an intent from its title, description and parameter names. Vague copy (“Do thing”) gets ignored; precise, action-shaped copy (“Log a run”, parameter “Note”) gets picked up. Writing intents is as much product writing as engineering.
Where it actually earns its place
Not every app needs this. The ones that benefit most share a shape:
- Frequent, atomic actions — log a habit, start a timer, add an item, mark done. Anything a user does often and quickly is a candidate to lift out of the app entirely.
- Lookups— “what's my balance”, “next delivery”, “today's summary” — read-only intents that Spotlight and Siri can answer without a launch.
- Multi-step flows Apple Intelligence can chain — where your action is one node in a larger task the OS assembles.
The apps that should not rush: anything where the action is destructive, irreversible or money-moving. An OS-invoked action needs the same care as any other privileged entry point — clear confirmation, scoped effect, and no surprises. We wrote the general version of that discipline for agents in giving an AI agent safe write access, and the instinct carries over: a system that can run your action unattended is a system you design defensively.
Gotchas before you commit
- iOS-only.This is Apple's framework. Budget Android's App Actions separately; do not promise “works with your assistant” cross-platform from one integration.
- Toolchain floor. SDK 58 targets iOS 27 and pairs with Xcode 27 / the Device Hub for testing. Older CI images will not build it, factor that into your pipeline.
- It is beta. RN 0.88 is a release candidate inside SDK 58. Pin your versions, keep intents behind a flag, and expect the API to move before stable.
- App Review. Intents that touch sensitive data or perform actions get scrutiny; document them the way you would any new capability. Our App Store rejection data covers the patterns that trip submissions.
The one-day version
If you want to try it this week: upgrade a branch to SDK 58, add the expo-app-intents plugin, define one read-only lookup intent (lowest risk, immediate “wow” in Spotlight), and test it through the Device Hub in Xcode 27. One good intent that answers a question without a launch tells you more about the fit than a spec doc. If it lands, expand to your two or three highest-frequency actions, that is where the retention and Apple Intelligence surface actually comes from.
This is the kind of platform capability we fold into builds as it stabilises through our React Native app development engagement, and validate against review through app store launch.
Three companions from the same mobile cluster:
Field guide
Expo Push Notifications with FCM + APNs: The 2026 Setup That Actually Delivers
The other OS-integration surface every serious RN app needs, wired to actually deliver.
Research
41 React Native App Submissions, Three Rejection War Stories
The App Store review patterns to know before you ship a new capability like App Intents.
Research
OTA Updates in Production: EAS vs CodePush vs Manual
How to ship iterative changes to intents and the rest of your app after launch.
The engagements that build and ship this:
Service
React Native App Development
The end-to-end mobile build that adopts platform features like App Intents as they stabilise.
Service
App Store Launch
The submission discipline that gets new capabilities through review the first time.
Service
Maintenance & Support
The retainer that keeps you current across SDK upgrades like 57 to 58.
Frequently asked questions
- What is expo-app-intents?
- expo-app-intents is a module introduced in Expo SDK 58 that lets you define Apple App Intents from JavaScript/TypeScript, so your React Native app's actions become available to Siri, Shortcuts, Spotlight and Apple Intelligence without writing Swift. It wires the JS handlers to the native App Intents framework through an Expo config plugin.
- Does expo-app-intents work on Android?
- No. App Intents is an Apple framework, so expo-app-intents targets iOS (and requires a recent iOS/Xcode toolchain). Android's equivalent is App Actions / App Shortcuts, a separate system with its own model. Plan the two per platform; the JS action layer can be shared, but the OS integration differs.
- Which Expo SDK and iOS version do I need?
- expo-app-intents ships in Expo SDK 58, which is built for iOS 27 and bundles the React Native 0.88 release candidate, and Expo lists a Device Hub integration for Xcode 27 for testing. SDK 58 was in beta from mid-September 2026 with a three-to-four-week beta window before stable, so pin versions and check the SDK 58 changelog before you rely on the exact API.
- Does this make my app work with Apple Intelligence?
- It is the mechanism by which it can. App Intents are how the system, including Apple Intelligence and Siri, discovers and invokes actions your app exposes. Defining well-described intents with clear parameters is what lets Apple Intelligence surface and run them; the quality of your titles, descriptions and parameter metadata is what determines whether it works well.
- Is Expo SDK 58 stable yet?
- As of late September 2026 SDK 58 is in beta, built for iOS 27 with React Native 0.88 as a release candidate; React Native 0.88 stable is scheduled for around 12 October 2026. Treat SDK 58 APIs, including expo-app-intents, as beta: usable for prototyping and early integration, but verify against the changelog before shipping to production.














































