Current limitations
What each part of Satin does today, and where it stops. Limits that come from iOS itself are in Known issues.
App structure
- Navigation, lists and forms. Typed routes, navigation stacks, tabs that keep their state, and split views on iPad.
- Content and layout. Lazy stacks and grids keep every row mounted, and pinned section headers and
Sectionoutside aListaren't available. - Geometry.
GeometryReaderneeds a definite size on a scrolling axis, andViewThatFitskeeps unused children mounted, so their effects keep running. - Tasks. Task cancellation is cooperative.
Controls and input
- Date, color and progress.
DatePickerhas the compact style only, andColorPickerreturns sRGB hex, converting Display P3 choices. See controls. - Editing and keyboard. Fields keep themselves visible above the keyboard. On iPad, the first keyboard after launch won't open from a tap near the screen edge.
- Workaround: tap further in. Later edge taps work.
- Pull to refresh and scrolling.
refreshableadds pull to refresh to a scroll view.- Workaround: for threads that stream new content, follow messaging scroll.
Glass
- Glass needs WebGPU. Lumen draws glass with WebGPU. Without it, released apps use a lighter material and development builds report the error.
- Some content is hidden from glass. Glass can't show content the browser keeps private. See Glass limitations.
Data, notifications and updates
- Local data. iOS can evict web storage, an app closed by the system can lose its newest unsaved changes, and presentations start closed after a launch.
- Workaround: keep important records in collections, offer backups, and save drafts yourself.
- Notifications. Permission, subscription, badge and tap-routing APIs are available. Notifications arrive by push from a server, and the push sender sends immediately.
- Workaround: schedule reminders on your own server. See server-scheduled reminders.
- Installation and updates. A deployment check runs before install. Release builds never reload while in use; preview builds may.
- Status bar. Apps use iOS's opaque status bar strip. iOS can dim it under system overlays. Satin
SheetandAlertcan leave the strip bright while the page dims; see Known issues. Satin doesn't offer the translucent style because iOS 27 blurs app content beneath it. - Acknowledgements. An Acknowledgements screen with your app's open-source notices is on by default. Remove it with
acknowledgements: false.
Not available yet
- Video player. There's no general video player control.
- Full search tab.
searchablegives a search field and results, but not the full search tab.
@satinhq/kit/unstable exports are experimental and may change. The API reference lists every export.