What's Changed
- fix(one): stop React 19.3 script warnings on client-rendered documents (2fadcc7)
- fix(one): refetch native loader data from the server (f96edbe)
- feat(one): launch screen cover and app icon options (#947) (9ed69cb)
- fix(vxrn): enable worklets when reanimated resolves from the app root (#950) (fe5a54a)
- feat(one): Form takes swiftStyle for scrollContentBackground and form modifiers (8ed1c13)
- feat(one): every iOS view takes swiftStyle through a shared container style (cd30513)
- docs(one): swiftStyle on every iOS view (7365657)
- feat(one): TimelineView with native schedules and a context closure (1d5227a)
- fix(one): apply the swiftStyle chain unconditionally except on GridRow and Group (546aa78)
- feat(one): OutlineGroup over a data tree with React row content (9591633)
- fix(one): an outline row never changes node once set (9860505)
- feat(one): Table with React cells and a controlled column sort (a66c1e2)
- feat(one): Canvas with a recorded GraphicsContext, Path and Shading; gate Table on iOS 17.4 (258b47c)
- fix(one): Canvas docs and fixture give the canvas its height with style (6232725)
- docs(native): navigation bar modifiers and Peach tab bar minimize (ce678a3)
- fix(one): row modifier check no longer captures a non-escaping parameter in an escaping closure (d8575ad)
- fix(one): ScrollViewReader carries swiftStyle and its SDK event in the spec, updateProps in the implementation (8ebbfac)
- chore: prepare One 2.9.0 (a69625a)
- docs(one): Table example gives the table a height (640bf63)
- feat(one): Grid reports the height SwiftUI measured (447fce1)
- Fix Windows prebuild template paths (f65b5cd)
- feat(one): Overlay and ViewSlot report the height SwiftUI measured (f32fbd8)
- fix(one): Tabs names a page's React Native scroll view as the tab bar's content scroll view (e064e3e)
- Fix DevTools host URLs and Expo plist patch target (f65f50d)
- feat(one): measure how much of the iOS SDK crosses to TypeScript (3a5773c)
- feat(one): inventory every public UIKit view and controller for the SDK generator (80a755a)
- feat(one): SDK bridge specializes generics, maps pointers and class metatypes (9f35cb6)
- feat(one): generate Swift bindings for SDK frameworks (9b2994e)
- feat(one): SDK inventory reads cross-import overlays from a shared graph cache (75f30d8)
- feat(one): OneSDK Nitro object runs the generated SDK tables (4118b32)
- fix(one): SDK generator imports implementation detail modules through their public parent (d7da134)
- fix(one): SDK emitter spells implicitly unwrapped types as optionals and records every uncovered symbol (c6dce87)
- feat(one): SDK bindings return values written through out parameters (6f73535)
- feat(one): SDK bindings compile as their own module against One (060a559)
- fix(create-vxrn): accept any target path and print the detected runner in --info (#957) (e904e76)
- feat(one): specialize generated SDK generics (c8de22d)
- add generated iOS API reference (1ddd429)
- preserve generated theme formatting (cdb12f7)
- remove iOS reference sidebar label (23c8f00)
- keep reference notes technical (cbf96bf)
- fix(vxrn): register native HMR patch factories for modules that have not run (#958) (23dde52)
- feat(one): bridge SDK callbacks and mutable arguments (f151185)
- feat(one): prebuild writes the iOS SDK bindings an app imports (ef6d890)
- Bridge JavaScript SDK protocol implementations (0ffb0df)
- Add typed iOS SDK facades (5ae2caf)
- fix(one): retain native weak delegate implementations (f3a79d6)
- feat(one): SDK tables name their arguments and carry their generation (f8e1a27)
- feat(one): resolve one/ios/ to the facade prebuild writes (d467437)
- feat(one): SDK calls leave defaulted parameters to swift (0ce5f9b)
- test(native-features): iOS SDK spike route calling four frameworks (4faacb6)
- fix ios sdk facade typechecking (cb5a5aa)
- feat(one): SDK classes get the init() they inherit from NSObject (eb26c41)
- test(native-features): spike constructs HKHealthStore and reads step authorization (e3c3ae2)
- ship ios sdk declarations (45dbc49)
- docs(onestack): regenerate iOS reference from current bindings (94f1f78)
- fix(one): native stacks carry testID and accessibility props (#960) (f89cf97)
- fix(one): sdk handles wrap private subclasses, omitted args take defaults, bindings pod builds with c++ interop (9b76eee)
- feat(one): sdk members of generic types serve every specialization (1a5819e)
- Discover unified iOS framework dependencies (157efd0)
- Pass SDK calls as Nitro values (dc39fb8)
- wip: prepare generated iOS module backends (856726b)
- feat(one): sdk methods generic over a caller-named type take it by name (511c1b2)
- feat(one): standard values answer caller-named generics over stdlib protocols (e3d5963)
- Add SDK benchmark and observation fixture (db8ec52)
- Observe SDK state from React (9449569)
- Document SDK values and React subscriptions (380f902)
- wip: migrate unified iOS modules to generated bindings (ecb228f)
- Ship SDK observation runtime declarations (0ad4e9d)
- Set generated SDK pod deployment floor (4bf58bc)
- Expose Nitro AnyMap alias to native headers (8d36a97)
- fix(compiler): strip Flow before the native worklets transform (5a00bae)
- fix(vxrn): keep function and class names in unminified native bundles (6ac9e57)
- fix native mixed module exports (b72a68c)
- Lower mixed native modules without Babel (c87781f)
- Expose SDK value types through the One module (5ae7f1c)
- Preserve native export writes across scopes and loops (a8a18d5)
- Typecheck SDK bindings with explicit modules and give the pod One's module policy (db61ab0)
- fix(compiler): keep class names through esbuild async lowering in unminified native bundles (43130e9)
- chore(vxrn): sync hermesCompatSWCPlugin declaration with keepNames (c840929)
- Prove caller-chosen generic types in the iOS SDK spike (d0578b2)
- Prove generated iOS unified modules (75efd65)
- wip: switch app identity and brightness to SDK bindings (372666b)
- Add brightness migration runtime control (a9f7cef)
- Remove migrated app identity and brightness Swift backends (ee85c2f)
- wip: route iOS store reviews through generated bindings (99b267d)
- Generate container view hosts from the SwiftUI SDK (8cea052)
- wip: one generic host for SDK-built UIKit views (86f8c60)
- Add Maestro flows for generated iOS view hosts (89260cf)
- Prove SDK values and React subscriptions on iOS (80b8931)
- Remove migrated store review Swift backend (0a2e69b)
- wip: implement iOS network state on generated bindings (b5efdf3)
- Generate LabeledContent, Form and DisclosureGroup hosts from the SDK (48a058e)
- Treat SDK pointer typealiases such as NSErrorPointer as out-parameters (4c632c3)
- wip: migrate biometric policy to generated SDK bindings (016b6f6)
- Unify SDK observable getter registration (fc9a360)
- Stabilize SDK hook identity and accept Nitro numbers (48ea7e3)
- wip: share SDK sequence state by native handle (247ad27)
- Record SDK stream remount proof on iOS (6f73be1)
- Regenerate iOS SDK declarations (af5d15f)
- feat(devtools): add panel plugins and Rozenite support (#965) (305e98e)
- Record SDK singleton screen and current benchmark proof (42cb3ea)
- Generate the List host from the SDK (8731840)
- Remove migrated biometric authentication Swift backend (5d23f8c)
- Remove migrated network Swift backend (b84cd18)
- wip: implement iOS clipboard on generated SDK bindings (4ff2439)
- Generate reader, outline and Table hosts from the SDK; wrap SDK closure property setters (fdeede9)
- Check SDK bindings through SIL so C function pointer captures are rejected (a622710)
- Decode clipboard images through base64 bytes (32b3b70)
- Show clipboard image failures in the fixture (7415339)
- Return declared SDK class results as objects (99476f4)
- Name colliding SDK facade overloads from their declaration, not their table id (fa6348d)
- Remove migrated clipboard Swift backend (80368bb)
- wip: route device attestation through generated bindings (7903b90)
- Generate the Popover host from the SDK popover modifier (f5c2d35)
- Remove migrated device attestation Swift backend (3566b7c)
- wip: implement generated iOS share backend (8fa2bb0)
- Use generated raw activity strings in share results (52b5639)
- Bridge imported raw-value structs as open string or number values (886fd3c)
- Claim share completion before dismissing the sheet (845c7b7)
- Draw the Glass surface behind its children and return raw values from raw-value structs (a885fff)
- Bridge ObjCBool and DarwinBoolean as booleans (b9d386b)
- Remove migrated share Swift backend (c9aa0bc)
- wip: implement document picker over generated bindings (ec526c5)
- Generate React state hooks for observable SDK objects and streams (eb36b2d)
- feat(one): pass ios sdk call arguments and results as direct nitro values (e56c855)
- Generate the Glass host from the SDK glassEffect modifier (2d71710)
- Preserve document picker failure causes in fixtures (3ed6cbf)
- Merge a framework's extension wrappers into the class its home framework registers (a75c7ce)
- Generate the Button host from the SDK Button and build its label in React (8ed4865)
- Remove migrated document picker Swift backend (c6c6d78)
- wip: route iOS printing through generated bindings (10e6a40)
- Remove migrated print Swift backend (6aec203)
- wip: implement Calendar over generated EventKit bindings (a503840)
- Update tests for the generated Button and Glass hosts, prebuild beforeInstall, UIKitView gap (9c911e9)
- Rebuild packages/one types (b2ee7fb)
- Generate HStack and VStack from SwiftUI and remove One.iOS.Host (aa80072)
- Read dialog probe block arguments by name (ecff550)
- Rebuild types and coverage for the generated stacks (8150007)
- Remove migrated Calendar Swift backend (0e0c41e)
- Move modifier-shaped One.iOS props into swiftStyle (a0746e7)
- Stand in empty iOS facades for the Metro compiler test (15516ea)
- wip: generate iOS SDK bindings in vxrn/expo-plugin (2f59883)
- fix(vxrn): parse native bundle before normalizing CJS interop (#967) (d2210f3)
- Defer iOS SDK lookup until compilation (c3a954d)
- Cover Expo prebuild without Xcode (1ae87d5)
- Include SDK version in binding table identity (a6ee192)
- Exercise replacing a generated UIKit view (2728c01)
- Keep calendar selection assertions stable (417fec5)
- Remove Button subtitle and disclosureIndicator props (2f00b08)
- Remove Button subtitle and disclosureIndicator from docs (040ad55)
- Expose calendar replacement readiness (a3550df)
- Bridge C error out-parameters as written values (aba16bc)
- Take retained C errors in generated Swift (4067c01)
- Facade written C errors as CFError (258d569)
- Regenerate SDK declarations with C error out-parameters (73e453b)
- Replace composed UIKit hosts by object identity (ed3b6f8)
- wip: implement iOS Device and Localization on generated SDK bindings (536f089)
- Migrate Tamagui and sheet fixture to SwiftUI fitted sizing (731bc13)
- Remove Sheet fitToContents and onDidDismiss (9d886e2)
- Update Sheet presentations docs for the removal (e2220b9)
- Remove Button subtitle claims from platform README (be35a4e)
- Rebuild packages/one types for Button and Sheet removals (e50097b)
- fix: match old Swift calendarIdentifier describing strings (1ef9b80)
- Map One.UI.Icon roles to foregroundStyle on iOS (80f0eb1)
- Transfer Unmanaged return ownership before crossing (1795c03)
- Regenerate declarations with precise Unmanaged returns (86b67b3)
- types: regenerate device map declaration with describingCalendar (a58e87e)
- Remove Image colorRole from One.iOS (a940a83)
- Rebuild packages/one types for Image colorRole removal (8dffa32)
- wip: implement iOS Battery on generated SDK bindings (e6a4b1a)
- Give fitted sheets the measured content height as ideal size (346c224)
- Forward accessibility into composed UIKit views (2778473)
- Report Sheet onDismiss on physical completion (f7fdb9e)
- Keep One.UI.Icon accent dynamic through foregroundColor (b6f3cc5)
- Preserve class handles in outs results (920c9f1)
- fix: serialize battery reads and tokenize duplicate listeners (d5e6d47)
- Add fitted sheet heights and completion docs (2d3881c)
- Keep Objective-C generic parameters open with named witnesses (07ca514)
- Emit Objective-C generics via erasure and witness switch (388b59b)
- Keep Objective-C values generic in facades (469dce1)
- Regenerate Contacts with CNLabeledValue members (116ad95)
- wip: implement iOS Fonts on generated SDK bindings (68f00d2)
- Refresh sheet completion ownership on reopen and revision (c2e7d71)
- Add Button variants and Icon role proof cases to fixtures (25247ac)
- fix(vxrn): reject bundle request when post-processing throws (#968) (05adef4)
- Measure presented slot content size for ideal sizing (b874ae7)
- fix: download fonts over async URLSession instead of blocking Data read (2cb6f87)
- Size Popover from measured content instead of explicit props (98c1e64)
- Rebuild packages/one types for Popover removal (25e3e11)
- Fix fitted sheet proof heights and Popover README (e876904)
- Refresh native coverage for Icon and Button fixtures (dd82996)
- Keep generic SDK factory types faithful to native copies (1ab2ade)
- fix: reject unsuccessful font http and decode native name handles (9987497)
- Rename Tab id and title to value and titleKey (34c8d62)
- Rebuild packages/one types for Tab renames (06282f4)
- Omit unprovable synthesized inits via Clang checker (b759b27)
- Test inherited-init checker policy and Clang mapping (c84bb36)
- Cover batched init error mapping (c84a46a)
- Identify SDK calls by stable signatures (b10fb8e)
- Encode SDK tuple returns as typed wire values (281fded)
- Add SDK generator ABI fingerprint and bundle build (c2bb168)
- Test fingerprint determinism and bundle equality (5b9ee3c)
- wip: Ship portable SDK facade plumbing (e18cc30)
- Fix stale multiline Tab id/title senders to value/titleKey (35f9543)
- Omit unexposed init names as cannot-probe (c1b2e5e)
- Preserve imported SDK class bounds (2cee662)
- Convert five control ranges to readonly in tuples (e65c2da)
- Convert control fixtures to in range tuples (3f7290d)
- Document in range tuples for five controls (d25ed82)
- Rebuild public types for in range tuples (170077f)
- Include ObjectiveC in SDK module discovery (a3f3796)
- Rename One.iOS.Tabs to One.iOS.TabView across API, spec and hosts (f8f61d6)
- Update TabView senders, fixtures and docs (52081a6)
- Contacts iOS backend on generated SDK bindings (148df65)
- Restore Contacts production route to Nitro, preserve SDK backend (d0b4ecb)
- Contacts SDK backend classifies off native error metadata (f62c07d)
- Regenerate SDK bindings and types for 290 frameworks (28348d9)
- Strip SDK type declarations before React Native transforms (81c14d4)
- Take Picker options as tagged Text children (3e69d02)
- Convert Picker senders and docs to option children (8ed528f)
- Use the generated EventKit constructors (64d4f7a)
- Contacts SDK backend uses legal CNLabeledValue.init sender (3fe420d)
- LightSensor iOS bridge elimination behind platform backends (c3b848f)
- fix(vxrn): use image-size 2.0.3 with buffer input for native assets (#969) (fe273a1)
- Add dynamic-options case to Picker controls fixture (578d1f5)
- Disambiguate imported C record construction (9654407)
- Preserve SDK errors and support background method calls (3f75445)
- Share one Metro server across packed dev/prod consumer bundles (7fd4f21)
- Type the unregistered SDK method regression case (e3a3a54)
- Refresh SDK artifacts for background calls and error metadata (b255b3e)
- Publish the typed background SDK helper declaration (c3b98f7)
- Exclude the non-object CoreFoundation allocator sentinel (08e78ce)
- Refresh SDK artifacts without the allocator sentinel (4e30b81)
- Keep the sentinel fixture test independent of Xcode (8978d57)
- Add marker and ViewSlot recipes to the container host generator (8e10001)
- Generate Overlay hosts from the SDK overlay modifier, retire hand host (04d56dd)
- Add keyed markers and label ownership to the host generator (808d398)
- Generate SwipeActions hosts from the SDK, retire hand host (37b3663)
- Add Overlay lifecycle proof controls (ea6d88f)
- Run one:test isolated after other CI test tasks (11db0ba)
- Refresh coverage for composed Overlay fixture (b155727)
- Generate SwiftPager hosts from the SDK, retire hand host (7a820f7)
- Retire hand SwiftPager host files (4f6bca5)
- Fail CI when the test deadline expires (08511e5)
- fix(one): read Android bundle assets via AssetManager (#970) (abb4d1a)
- Refuse pager composition so windowless pages cannot drop frame updates (4b2d305)
- Use the asserted text in the Sheet driver (98f6213)
- Generate Sheet hosts from the SDK mapping, retire hand host (1f2257a)
- Use software keys for Sheet text entry (3580b06)
- Reject sheet configure type drift with exact spec types (615f2ef)
- Keep Sheet content measurements within fitted sizing (0c6130a)
- Generate Menu hosts from the SDK mapping, retire hand host (b0b73d0)
- Generate NavigationStack and Toolbar hosts from the SDK mapping, retire hand hosts (455c028)
- Inherit MainActor isolation through SDK superclass chains (034652a)
- Run Calendar iOS store I/O off JS behind a serial chain (48f1c7b)
- Separate the Sheet fixture proof controls (ce0529a)
- Restore public one/ios specifiers in Calendar backend, test-local harness (a83e52f)
- Generate NavigationSplitView hosts from the SDK mapping, retire hand hosts (55bc133)
- Read Sheet close state through its exact value IDs (c775db7)
- Generate TabView hosts from the SDK mapping, retire hand hosts (ac68498)
- Refresh SDK bindings for inherited MainActor isolation (56e4da1)
- Add a same-slot Sheet interruption control (c0e2897)
- Keep Sheet interruption and Close controls separate (23b08c4)
- Reject unavailable TabViewCustomization members before emitting (28abd35)
- Keep main-isolated SDK getters observable (8c783ff)
- fix(vxrn): reclaim cache-clean lock from dead owners (#971) (b5af92f)
- Size presented Popover and Sheet content from the shadow tree (21ae0f1)
- Regenerate SDK observation bindings (c235cb5)
- Clear presented content measurement on an empty layout (1ff9808)
- Apply measured size changes that cross zero (b6b5cca)
- Expand closure aliases nested in generic types (176d60a)
- Include LayoutContext for the presented slot layout override (1087c45)
- Keep owner arguments of nested generic types for alias expansion (a025e8e)
- Fix generated Menu payload include (ce9df28)
- Add UIKitContent and native cell sources for React content in UIKit (ad16059)
- Let only the cell showing UIKitContent track its height (acd76c1)
- Settle UIKitContent view reads rejected after unmount (0591564)
- Add UIKit React content fixture (0ff009a)
- Retire unmounted UIKitContent to zero height and claim sources by native identity (b8bdb2f)
- Remeasure UIKitContent cells through their list (4177b28)
- Add clear, hide and restore controls to popover fixture (1e222c6)
- Type the popover root tracker as an element ref (70d4730)
- Remeasure UIKitContent collection cells through the layout's self-sizing contract (39cca92)
- Regenerate SDK bindings for generic aliases (1207db5)
- Include UIKitContent native component declaration (100c2a1)
- Resolve platform fixture variants in native coverage (8919b74)
- Drive UIKitContent cells in a bounded conformance suite (7d3234b)
- Record UIKit content conformance fixture references (41c48ac)
- Scroll uikit-content targets on screen before checking or tapping them (0f7a89e)
- Document React content in UIKit containers (80ec9b6)
- Note UIKitContent duplicate mounts and in-place resizing in the SDK guide (015559a)
- Announce UIKitContent arriving or leaving a visible cell to accessibility (035503d)
- Check Sheet sizing against presented layout state (579550c)
- Drop the unproven UIKitContent accessibility announcement (519043c)
- Treat only reachable UIKitContent elements as retained after unmount (f92902f)
- Count value, title and help as retained UIKitContent accessibility content (22e1f4d)
- Clear a UIKitContent cell's accessibility children when its content changes (23f9089)
- Match an icon button through its native symbol (a9ba2e9)
- fix(one): a full-screen Form keeps the screen insets under a transparent bar (#973) (40dc218)
- Tap split view rows within their visible column (2616002)
- Preserve Form screen insets in generated hosts (d01bbad)
- Generate SDK value factories and chained methods as records (cdefa75)
- Support configured animation values in native transactions (a9cedb7)
- Exercise configured values in the phase animation integration (89ad70b)
- Validate SDK value records as their serialized JSON (5e97fd4)
- Expose Pager page indicator modes (6b69ece)
- Send SDK values serializing to a case name as the bare name (d841432)
- Align animation and Pager references with generated types (3d9a4c7)
- Report SwiftUI gesture changes, computed values and initializer options (7330c35)
- Make the whole SwiftUI drag fixture frame hit-testable (94e1dbf)
- Keep the runtime font samples visible (17e784f)
- Exercise generated SwiftUI drag events on iOS (a4b92e8)
- Record the SwiftUI drag conformance fixture (01cbbc3)
- Refresh iOS options and gesture declarations (ad5609a)
- Bind SwiftUI drags and continuous style numbers to native state (d0cd781)
- Reject drag snap targets outside the bind range natively (15a7474)
- Generate numeric ranges and optional view slot arguments (0b11612)
- Key bound drag starts to the drag's start location (58ab41e)
- Hold bound drag starts in each view's gesture state (82c4333)
- Prewarm the Android native Metro graph (ced5ad8)
- Settle iOS share on presentation completion instead of a 1s attach check (1ae46d3)
- Limit share presentation comment to what was observed (0995143)
- Locate system share controls within their native sheet (2e87410)
- Document the One 2.9 release scope (ad56ebb)
- Refresh the native SDK smoke calls (a20af14)
- Refresh the iOS reference from the shipped SDK artifacts (6a6afde)
- Filter iOS reference calls to facade-published entries (921187b)
- Bind owner-generic members in opened scope, answer async-throws requirements, export facade publication keys (48dd9c1)
- Bind async-throws callback inputs through awaited replies (6cb4198)
- Carry any P with associated types as native handles (ea7760e)
- Await JavaScript replies for native async callbacks (908f4e6)
- Use facade publication keys in the iOS reference (5f35efe)
- Generate delegates inheriting Swift concurrency markers (8ee66d5)
- Escape spa route paths in the server entry globs (8ddce38)
- Escape spa route paths in the server entry globs (4adc07a)
- Refresh expanded iOS SDK bindings (92ccd94)
- Refresh the iOS reference from published SDK calls (49fa68d)
- Skip RubyGems startup in the WebGPU Podfile test (8293e75)
Full Changelog: v2.8.1...v2.9.0