Skip to content

Releases: paqu-io/form0-react-native

v0.12.0

Choose a tag to compare

@github-actions github-actions released this 02 Nov 11:47

What's Changed

🚀 New Features

  • Photo and Video Fields: Added built-in PhotoField and VideoField renderers with captions, limit display, and camera and library buttons. Capture goes through a new mediaPicker prop on FormRenderer. Without one, the fields show a placeholder, and renderers overrides still take precedence (ac5bfad)
  • Media Picker Integration: Added the mediaPicker option, whose pick function returns the picked items (or an empty array on cancel) and whose errors are shown under the field. The package adds no camera or photo-library dependency (ac5bfad)
  • Media Values: Photo and video values use the same entries as form0-react, with upload_status: 'local', so uploading stays with the app (ac5bfad)

📚 Documentation

  • Photo and Video Guide: Added a README section with an expo-image-picker example of mediaPicker, and removed the old note saying these fields only had placeholder defaults (ac5bfad)
  • Parity Tracker: Updated FORM0_REACT_PARITY.md to list PhotoField and VideoField as built-in (ac5bfad)

🔧 Maintenance

  • Version Bump: Bumped the package version to 0.12.0 (d71e658)
  • Tests: Added tests for the media fields and media value helpers (ac5bfad)

Full Changelog: v0.11.0...v0.12.0

v0.11.0

Choose a tag to compare

@github-actions github-actions released this 01 Nov 19:11

What's Changed

🚀 New Features

  • Hidden-Value Recovery: Added an onResolveHiddenValue prop so the application can recover values for validation findings on hidden fields. In edit mode, these findings appear in the navigation issues list and can be tapped to resolve them (a701e5b)

🐛 Bug Fixes

  • Live Validation Findings: Preserved live validation findings and paginated the issues list in the navigation sheet (cc0a170)
  • Navigation Visibility: Kept the navigation panel available only after validation findings appear (60fa8d6)
  • Navigation After Correction: Kept validation navigation available after the user corrects an issue (d2df30d)

🔧 Maintenance

  • Dependencies: Updated form0-core from ^0.10.0 to ^0.11.0 (d478e58)
  • Version Bump: Bumped the package version to 0.11.0 (bb31c1e)
  • Dev Tooling: Updated the device phase profiling script to handle the new hidden-value code (a701e5b)

Full Changelog: v0.10.0...v0.11.0

v0.10.0

Choose a tag to compare

@github-actions github-actions released this 30 Oct 19:27

What's Changed

🚀 New Features

  • Hidden Value Validation: Added a validateHiddenValues option to submissionOptions in the FormRendererProps types (3f87dfc)
  • Hidden Value Retention: Fields with visible_preserve_value: false are now handled by the record coordinator, and cleared values are synced back into the repeatable data tree (3f87dfc)

🐛 Bug Fixes

  • Date Field Display: Date inputs now show the stored string as-is instead of trimming a T time suffix, so invalid loaded values are no longer hidden (3f87dfc)
  • Time Field Input: Time inputs now keep partial or invalid typed values visible and no longer auto-append :00 seconds (3f87dfc)
  • Stale Evaluations: Record evaluations that clear fields are now ignored if the repeatable data changed in the meantime (3f87dfc)

🔧 Maintenance

  • Core Dependency: Updated form0-core from ^0.9.0 to ^0.10.0 (2401ff5)
  • Profiling Script: Made the submission summary anchor in prepare-device-phase-profile.mjs tolerant of an optional options argument and added an error if the anchor changes (3f87dfc)
  • Tests: Added and updated retention tests and the record renderer fixture (3f87dfc)
  • Version Bump: Bumped package version to 0.10.0 (797b865)

Full Changelog: v0.9.0...v0.10.0

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 30 Oct 16:28

What's Changed

🚀 New Features

  • Event Failure Reporting: Added reporting of managed event failures to console.error by default, including rejected SETVALUE() operations and rejected onOperations promises (626264e)
  • eventDiagnostics Prop: Added FormRenderer prop eventDiagnostics={{ failures: false }} to turn off event failure reporting, with updated TypeScript types (626264e)

📚 Documentation

  • Event Reporting Guide: Added a "Managed event failure reporting" README section covering report contents, interaction with submissionDiagnostics and SETVALUE() value types for numeric and choice fields (626264e)
  • README Example: Minor quote style fix in an existing engineOptions example (626264e)

🔧 Maintenance

  • Version Bump: Bumped package version to 0.9.0 (dd45a7d)
  • Test Coverage: Added tests and fixtures for event failure reporting (626264e)

Full Changelog: v0.8.0...v0.9.0

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 30 Oct 13:25

What's Changed

🚀 New Features

  • Save Failure Reporting: Save failures from onSubmit and onSave are now reported to console.error with the failure stage and original error; failed saves keep edits available for retry and are not acknowledged as successful (3fcafbe)
  • Submission Diagnostics Prop: Added a submissionDiagnostics prop to FormRenderer with saveFailures (on by default) and validationBlocks (opt-in) settings to control logging of failed saves and blocked Submit or repeatable-row Save attempts (3fcafbe)
  • Async Callback Handling: Submit and draft save callbacks are now awaited in the non-managed path, so rejected callbacks are caught and reported instead of going unhandled (3fcafbe)

📚 Documentation

  • Submission Logging Guide: Added a README section on save failures and submission logging, including usage example and scope notes for prepareSave() (3fcafbe)

🔧 Maintenance

  • Tests and Types: Added diagnostics tests, a reporting fixture and TypeScript definition updates for the new prop (3fcafbe)
  • Version Bump: Bumped package version from 0.7.0 to 0.8.0 (f2b876d)

Full Changelog: v0.7.0...v0.8.0

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 30 Oct 08:54

What's Changed

💥 Breaking Changes

  • Removed Input Aliases: Programmatic value updates no longer support input aliases or numeric/boolean choice-ID coercion; use string choice IDs, { choice, other } for SingleChoice/Boolean, or an array of string IDs / { choices, other } for MultiChoice (15f0eaa)
  • Stricter Setter Validation: Malformed calls now reject before a value batch is applied, and writes to calculated, display or container targets, cross-scope writes, and setter/event writes in record readonly mode are rejected (15f0eaa)

🚀 New Features

  • Shared Value Normalization: Aligned the official setters and default SETVALUE operation application with core normalization; full live objects preserve labels and metadata, and schema choices and submitted record formats are unchanged (15f0eaa)

📚 Documentation

  • Value Updates Guide: Added a "Programmatic value updates" section to the README describing accepted formats and rejection rules (15f0eaa)
  • Acceptance Walkthrough: Added an Issue 101 Pixel / Hermes acceptance guide under analyses/ (15f0eaa)

🔧 Maintenance

  • Core Dependency: Updated form0-core to version 0.9.0 (af45cb9)
  • Version Bump: Bumped package version to 0.7.0 (03ff932)
  • Development Merge: Merged pull request #54 from development (98c6715)

Full Changelog: v0.6.0...v0.7.0

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 28 Oct 10:56

What's Changed

💥 Breaking Changes

  • Lifecycle events on by default: Managed lifecycle events and field interaction subscriptions are now enabled by default; set engineOptions.events.lifecycle: false to keep the legacy root load/edit/change behavior, or fieldInteractions: [] to opt out of interactions (be9b8ae)
  • recordKind required: Hosts must now supply engineOptions.events.recordKind ('new' or 'existing'), as a missing value is treated as a configuration error; the README examples were updated accordingly (be9b8ae)
  • Core minimum raised: Managed events now require form0-core 0.8.1 or later, and repeatable view/edit modes need the coordinated core release with engine mode control (be9b8ae)
  • Automatic click reserved: Automatic click events are now reserved for supported activation fields, and no built-in control emits click automatically; use explicit controller dispatch if you relied on it (67a51d5)

🚀 New Features

  • Repeatable Entry Mode: Added the repeatableEntryMode option ('readonly' by default, or 'edit') so existing rows open in view mode with an Edit action when the parent allows editing (73e9fa1)
  • Accepted Native Views: Preserved accepted calculated values in view mode until the user starts editing (73e9fa1)
  • Repeatable Controls: Aligned the view and edit controls for repeatable entries (d33ff7f)
  • Event Mode: Handlers now receive event.mode ('readonly' or 'edit') for their executing scope (73e9fa1)
  • Submission Freshness: Integrated record freshness and persistence acknowledgement into submission (48f50d1)

🐛 Bug Fixes

  • Failed Drafts: Released failed drafts on submission failure and switched to current controllers (5b0c83d)
  • Choice Operations: Normalized root and repeatable choice operations (758bb91)
  • Empty Other Input: Kept the "Other" option selected while its input is empty (3f3a455)
  • Review Buttons: Aligned review buttons and the repeatable edit icon (d284fb1)
  • Native Submission Work: Bounded Native submission work and reused owned tree signatures (f2bced7)

⚡ Performance

  • Idle Task Evaluation: Yielded record evaluation through host idle tasks on Native (e7a7e7c)
  • Submission Throughput: Reduced Native submission cost by bounding work and reusing tree signatures (f2bced7)

📚 Documentation

  • README Updates: Documented managed events defaults, recordKind, interaction behavior and the new repeatable entry mode (be9b8ae, 73e9fa1)
  • Android Acceptance Plan: Added and maintained a Pixel 8a / Expo Go Android acceptance and performance investigation record (4779527, 7cd44d5, ea42c34, 63d2611)
  • Device Harness: Clarified JavaScript device harness startup (9b2ece9)
  • Metro and Profiling Notes: Recorded Metro proxy reproduction, production asset caching and profiler launch verification steps (c7687ac, db6f4d6, f50422b)

🔧 Maintenance

  • Node.js Pinning: Pinned CI to Node.js 22.23.4 and 24.22.1 and the publish workflow to 24.22.1 (8c66362)
  • Funding Info: Added funding information to package.json and package-lock.json (cd3a965)
  • SDK 58 Testing: Prepared and clarified Android acceptance for Expo SDK 58 (3cd3326, 2655275)
  • Device Test Harness: Added production-mode preparation profiling, Metro proxy-chain normalization and diagnostic launch bundle fixes (7ec54e8, b351db7, aece150, 14026c2, acea3ba)
  • Test Coverage: Added tests for live calculations across cached evaluations, schema replacement code refresh and escaped generated event literals (43df287, 6eba534, 793c275)
  • Android Profiling Tests: Added tests isolating preparation timing costs and identifying throughput and registration candidates (e264f5a, 15ac0a1, d6a53e5, 2be500e)
  • Version Bump: Released 0.6.0 (18314f4)

Full Changelog: v0.5.0...v0.6.0

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 21 Oct 10:51

What's Changed

🚀 New Features

  • Managed Events: Added opt-in lifecycle integration via engineOptions.events (lifecycle, recordKind, fieldInteractions) covering load, new/edit, change, change-status, cancel and unload events for the main record and repeatable rows (0b88039)
  • Event Controller: Added onEventController callback exposing a controller with promise-based dispatch() and prepareSave() methods (0b88039)
  • Save Preparation: Added prepareSave to validate, run the pre-save hook, await delegated operations and return an eligible payload without persisting or closing the editor (0b88039)
  • Custom Validation: Added INVALID(message) for validation-only findings in validate-record handlers, plus save-record and save-repeatable pre-save hooks (0b88039)
  • Field Interactions: Added optional focus, blur and click events supported by the built-in text and numeric inputs (0b88039)

📚 Documentation

  • README Update: Added a "Managed events and save preparation" section and clarified the repeatable-row event note, which stays application-owned unless events.lifecycle is enabled (0b88039)

🔧 Maintenance

  • Core Dependency: Updated form0-core from ^0.4.1 to ^0.5.1, now the minimum for managed events (da45907)
  • Version Bump: Bumped package version to 0.5.0 (0050ccc)

Full Changelog: v0.4.0...v0.5.0

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 15:42

What's Changed

🚀 New Features

  • Calculation Diagnostics: Added scoped calculation diagnostics, delivered through a new onDiagnostics(snapshot, meta) callback in engineOptions, for the root form and repeatable-row editors (c776baf)
  • Diagnostic Metadata: Added scopeId, instancePath, evaluationId and kind to every diagnostic callback, with row paths that use id or record_id and fall back to position (c776baf)
  • Scope Retirement: Added a scope-ended notification when an editor is closed or deleted, its engine or schema is replaced, or the form unmounts (c776baf)
  • Console Reporting: Added console reporting of diagnostics that is on by default, skips identical repeats, and can be turned off with diagnostics: { console: false } (c776baf)
  • Engine Options Forwarding: Extended engineOptions so it forwards helpers, security, onWarning, onUpdate, onOperations and diagnostic controls to root and repeatable-row engines (c776baf)

📚 Documentation

  • Diagnostics Guide: Added a README section on engine options and calculation diagnostics, covering the callback, metadata, console behavior and onOperations delegation (c776baf)
  • README Examples: Minor formatting update to the quick example, switching to single quotes (c776baf)

🔧 Maintenance

  • Tests: Added diagnostics tests and a conformance fixture, and updated the field registry tests (c776baf)
  • Version Bump: Bumped the package version from 0.3.0 to 0.4.0 (484c3a9)
  • Release Merge: Merged PR #48 from development (92e0c06)

Full Changelog: v0.3.0...v0.4.0

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 08 Oct 16:45

What's Changed

💥 Breaking Changes

  • Repeatable Row Events: Repeatable-row editors no longer automatically dispatch load-record, edit-record, or change on their row engine. Root-record dispatch is unchanged. If your app relied on the old row-engine dispatch, review its handlers before upgrading (cd1835c)

🐛 Bug Fixes

  • Historical Dates: Fixed historical Gregorian dates on Android so their year, month and day are preserved (6e24cac)
  • Early-Year Dates: Fixed display of dates in early years (0001–0099) (38c0faf)
  • Calculated Dates: Fixed calculated date fields so they show on their correct calendar day (ad3174d)

📚 Documentation

  • Compatibility Note: Added a 0.3.0 compatibility note to the README about repeatable-row event dispatch (cd1835c)
  • Native Compatibility: Documented native date compatibility (38c0faf)
  • Security Exception: Documented a temporary, time-boxed audit exception for the braces advisory GHSA-vfj7-8cjw-p6xm, expiring 7 November 2026 (52a791b)

🔧 Maintenance

  • Core Upgrade: Updated form0-core from ^0.3.0 to ^0.4.1 (762a840)
  • Dependency Patch: Updated shell-quote from 1.10.0 to 1.12.0 to address a security advisory (a4fd91f)
  • Audit Script: Added scripts/audit-dependencies.mjs, now used by security:audit:all, with a narrow expiring exception and fail-closed handling (52a791b)
  • Issue Automation: Added a GitHub Actions workflow that adds new issues to the form0 project (bc90704)
  • Workflow Hardening: Improved the security of the issue automation workflow (01e9f3b)
  • Version Bump: Bumped version to 0.3.0 (dc7b6a0)

Full Changelog: v0.2.1...v0.3.0