Repository navigation
Releases: paqu-io/form0-react-native
Releases · paqu-io/form0-react-native
Release list
v0.12.0
What's Changed
🚀 New Features
- Photo and Video Fields: Added built-in
PhotoFieldandVideoFieldrenderers with captions, limit display, and camera and library buttons. Capture goes through a newmediaPickerprop onFormRenderer. Without one, the fields show a placeholder, andrenderersoverrides still take precedence (ac5bfad) - Media Picker Integration: Added the
mediaPickeroption, whosepickfunction 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, withupload_status: 'local', so uploading stays with the app (ac5bfad)
📚 Documentation
- Photo and Video Guide: Added a README section with an
expo-image-pickerexample ofmediaPicker, and removed the old note saying these fields only had placeholder defaults (ac5bfad) - Parity Tracker: Updated
FORM0_REACT_PARITY.mdto listPhotoFieldandVideoFieldas 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
What's Changed
🚀 New Features
- Hidden-Value Recovery: Added an
onResolveHiddenValueprop 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-corefrom^0.10.0to^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
What's Changed
🚀 New Features
- Hidden Value Validation: Added a
validateHiddenValuesoption tosubmissionOptionsin theFormRendererPropstypes (3f87dfc) - Hidden Value Retention: Fields with
visible_preserve_value: falseare 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
Ttime 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
:00seconds (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-corefrom^0.9.0to^0.10.0(2401ff5) - Profiling Script: Made the submission summary anchor in
prepare-device-phase-profile.mjstolerant of an optionaloptionsargument 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
What's Changed
🚀 New Features
- Event Failure Reporting: Added reporting of managed event failures to
console.errorby default, including rejectedSETVALUE()operations and rejectedonOperationspromises (626264e) eventDiagnosticsProp: AddedFormRendererpropeventDiagnostics={{ 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
submissionDiagnosticsandSETVALUE()value types for numeric and choice fields (626264e) - README Example: Minor quote style fix in an existing
engineOptionsexample (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
What's Changed
🚀 New Features
- Save Failure Reporting: Save failures from
onSubmitandonSaveare now reported toconsole.errorwith 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
submissionDiagnosticsprop toFormRendererwithsaveFailures(on by default) andvalidationBlocks(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
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
SETVALUEoperation 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-coreto 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
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: falseto keep the legacy root load/edit/change behavior, orfieldInteractions: []to opt out of interactions (be9b8ae) recordKindrequired: Hosts must now supplyengineOptions.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-core0.8.1 or later, and repeatable view/edit modes need the coordinated core release with engine mode control (be9b8ae) - Automatic click reserved: Automatic
clickevents 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
repeatableEntryModeoption ('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.jsonandpackage-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
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
onEventControllercallback exposing a controller with promise-baseddispatch()andprepareSave()methods (0b88039) - Save Preparation: Added
prepareSaveto 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 invalidate-recordhandlers, plussave-recordandsave-repeatablepre-save hooks (0b88039) - Field Interactions: Added optional
focus,blurand 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.lifecycleis enabled (0b88039)
🔧 Maintenance
- Core Dependency: Updated
form0-corefrom^0.4.1to^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
What's Changed
🚀 New Features
- Calculation Diagnostics: Added scoped calculation diagnostics, delivered through a new
onDiagnostics(snapshot, meta)callback inengineOptions, for the root form and repeatable-row editors (c776baf) - Diagnostic Metadata: Added
scopeId,instancePath,evaluationIdandkindto every diagnostic callback, with row paths that useidorrecord_idand fall back to position (c776baf) - Scope Retirement: Added a
scope-endednotification 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
engineOptionsso it forwards helpers, security,onWarning,onUpdate,onOperationsand 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
onOperationsdelegation (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
What's Changed
💥 Breaking Changes
- Repeatable Row Events: Repeatable-row editors no longer automatically dispatch
load-record,edit-record, orchangeon 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
bracesadvisory GHSA-vfj7-8cjw-p6xm, expiring 7 November 2026 (52a791b)
🔧 Maintenance
- Core Upgrade: Updated
form0-corefrom^0.3.0to^0.4.1(762a840) - Dependency Patch: Updated
shell-quotefrom 1.10.0 to 1.12.0 to address a security advisory (a4fd91f) - Audit Script: Added
scripts/audit-dependencies.mjs, now used bysecurity: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