v1.0.1

On-device AI on iOS.Edge-to-edge, done right.

useAI runs on-device on iOS through LiteRT-LM or Apple Foundation Models, and Android edge-to-edge draws under transparent bars with insets in CSS pixels.

The model runs on the iPhone itself, through LiteRT-LM or Apple Foundation Models.

Insets arrive in CSS pixels. Drop the devicePixelRatio maths.

No breaking API changes. If your app divided safe-area insets by devicePixelRatio, read the goodbye below.

01 / Try it

One flag and one hook.

config/config.jsonThen install catalyst-ai
{
"WEBVIEW_CONFIG": {
"ai": { "enabled": true },
"edgeToEdge": {
"enabled": true,
"statusBarStyle": "auto"
}
}
}
Ask.jsRuns on the iPhone
import { useAI } from "catalyst-core/hooks"
const { generate, output } = useAI({
provider: "native",
})
generate({
messages: [{ role: "user", content: "Hi" }],
})

Full setup: useAI and edge-to-edge.

02 / What's new

Fresh in 1.0.1.

On-device AI, now on iOS

useNativeAI and useAI({ provider: "native" }) run on the iPhone. Set ai.enabled: true, install catalyst-ai, and build the iOS app as usual. Without ai.enabled, catalyst-ai adds nothing to the iOS build.

It picks the engine

LiteRT-LM runs Gemma 4 E2B after a one-time download of about 2.6 GB. Apple Foundation Models needs no download on iOS 26 Apple Intelligence devices. The default uses whichever is ready, and litert or foundation-models pins one.

Edge-to-edge, done right

The Android WebView draws under transparent system bars instead of opaque ones. The new statusBarStyle sets the bar icon colour, and the bottom inset holds steady while the keyboard is open.

03 / Goodbye, hello

Goodbye inset / devicePixelRatio, hello inset.

useSafeArea() and the X-Safe-Area-* headers now report insets in CSS pixels, and 0 when edge-to-edge is disabled. Apps that divided the insets by devicePixelRatio should remove that.

04 / Also fixed

Smaller things, sorted.

  • The bottom safe-area inset no longer shrinks the viewport a second time while the keyboard is open.
  • Dependency updates clear security advisories in compression, proxy-addr and source-map-js.
  • catalyst-core can be installed from a git branch. Its prepare script no longer reads files outside the package.
  • The 0.3 to 1.0 upgrade guide and the MCP server's upgrade context are corrected.

Thank you.

Catalyst 1.0.1 was built by these people.

Questions or ideas? Find us on Discord, X and GitHub Discussions.

Full release notes

This release fixes Android edge-to-edge and brings on-device AI to iOS through catalyst-ai 1.0.1. There are no breaking API changes, but apps that converted safe-area insets from device pixels should read the edge-to-edge section.

On-device AI on iOS

useNativeAI and useAI({ provider: "native" }) now run on-device on iOS. Set ai.enabled: true in WEBVIEW_CONFIG, install catalyst-ai, and build the iOS app as usual. Two engines sit behind the same hook. LiteRT-LM runs Gemma 4 E2B by default and downloads the model, about 2.6 GB, once. Apple Foundation Models needs no download and runs on iOS 26 or later on Apple Intelligence devices. The default engine: "auto" uses LiteRT-LM if its model is already downloaded, then Foundation Models if it is available, and otherwise LiteRT-LM with a download. The providers litert and foundation-models pin one engine. Installing catalyst-ai without ai.enabled adds nothing to the iOS build. Device requirements are in the catalyst-ai README.

Android edge-to-edge

With WEBVIEW_CONFIG.edgeToEdge.enabled, the WebView now draws under transparent system bars instead of opaque ones, and the bottom inset stays stable while the keyboard is open. useSafeArea() and the X-Safe-Area-* headers report insets in CSS pixels, and 0 when edge-to-edge is disabled. Apps that divided the insets by devicePixelRatio should remove that. The new edgeToEdge.statusBarStyle option (auto, dark-content, light-content) sets the system bar icon colour.

Fixes

  • Dependency updates clear security advisories in compression, proxy-addr (through express) and source-map-js.
  • catalyst-core can be installed from a git branch. Its prepare script no longer reads files outside the package.
  • The 0.3 to 1.0 upgrade guide and the MCP server's upgrade context are corrected.