Release Notes v3
info
As of version 3.x, all frameworks now use the new scoped packages: @getnuvo/importer-react, @getnuvo/importer-angular, @getnuvo/importer-vue, and @getnuvo/importer-vanilla-js. These packages replace the older nuvo-* packages used in versions 1.x and 2.x.
While you can continue using the previous versions, we recommend migrating to the new @getnuvo/importer-* packages to benefit from the latest features, performance improvements, and ongoing support.
08.12.2025
3.6.2
Added
- Added Angular 20 & 21 support.
- Added ISO date support to conditional rendering. Conditions can now reference the same timestamp, or check whether a value is before or after a given date.
Fixed
- Fixed an issue where the hover animation of the dropdown menu was misaligned when an option name was too long.
- Fixed an issue where conditional rendering did not work when referencing the value of a hidden column.
- Fixed an issue where int and float options were provided as strings inside cleaning functions and step handlers.
Note
- These changes will also be applied to Vue, Angular, and Vanilla JS in version 3.6.3.
04.12.2025
3.6.1
Fixed
- Fixed an issue where the importer failed to load when embedded behind a proxy server using a path prefix.
17.11.2025
3.6.0
Added
- Introduced
transposesetting to enable data transposition in the header step, allowing users to swap rows and columns before proceeding with mapping (link). - Introduced
additionalInfosetting to display contextual help buttons across import steps, providing users with guidance through customizable info modals (link). - Introduced
mappingViewModesetting to control the mapping step layout. When set to"targetColumns", the mapping interface displays one card per target data model column instead of per input column, ideal for scenarios with many input columns but few target columns (link). - Introduced
mappingValidationproperty for target data model columns to define mapping-level requirements independently from data-level validations. This allows you to specify which columns must be mapped before proceeding, with support for conditional logic based on other mapped columns (link).
Changed
- The
requiredvalidation rule in thevalidationsarray no longer affects mapping step behavior. UsemappingValidationinstead to control whether a column must be mapped before proceeding to the review step.
14.11.2025
3.5.6
Fixed
- Fixed an issue where cells containing formula results of 0 in Excel files were displayed as empty instead of showing the expected value 0.
03.11.2025
3.5.5
Fixed
- Fixed an issue causing React 19 builds to fail due to outdated render references by ensuring correct dependency resolution and cache cleanup.
29.10.2025
3.5.4
Updated
- Updated
axiosto version1.12.0to address a security vulnerability.
Fixed
- Fixed an issue where, in certain cases, the American date format was detected but not correctly transformed into the corresponding output format.
- Fixed an issue where the timezone of timestamps was not preserved and always defaulted to “+0:00”.
20.10.2025
3.5.3
Fixed
- Fixed an issue where parsing XLSX files with a high number of defined names took longer than expected.
06.10.2025
3.5.2
Changed
- Added i18n support for XLSX template text elements (e.g., REQUIRED, UNIQUE, DESCRIPTION).
- Added style customization support for the automatic mapping info box in the review step.
- Updated importer behavior for empty cells: empty strings and
undefinedare now treated asnull.
Fixed
- Fixed an issue where the footer in the mapping step displayed "Show more" while already expanded.
- Fixed automatic conversion for
MMM d, yyyyandMMMM d yyyydate formats into the defined output format. - Fixed an issue where remember option mapping did not work for currency and country columns.
- Fixed an issue where phone number columns did not accept inputs starting with a single-character country code or containing blanks.
- Fixed an error where
importerSession.parse()returned error code 1002.
18.09.2025
3.5.1
Changed
- Improved the AI Prompts feature to provide more accurate transformations
Fixed
- Fixed an issue where automatic mapping took longer than expected for TDMs with over 1.000 dropdown options.
- Fixed an issue where leading zeros were stripped during date parsing.
- Fixed an issue where input values were not matched case-sensitively when starting the importer in the review step via importerSession.
- Fixed an issue where the Find & Replace button incorrectly switched to Find while using the AI Prompts feature.
21.08.2025
3.5.0
Changed
- Updated branding from nuvo to Ingestro
info
Changes to the npm package name and the component name are planned for the future.
Fixed
- Fixed an issue where sheets with the same
fileNamereturned viastepHandler.uploadStep.updateData()were displayed as separate files.
08.08.2025
3.4.1
Fixed
- Fixed an issue where XLS and XLSX files exported using a third-party library were not supported.
05.08.2025
3.4.0
Added
- Introduced
ImporterSession.verify()method to check if an importer instance is fully verified and ready for interaction, preventing race conditions in dynamic rendering environments (link). - Added
ImporterSession.reload()method to programmatically reload and remount importer components with a new session ID (link). - Added new
style.buttons.selectstyling key to control the appearance of "Select file(s)" buttons independently from "Import data" buttons (link).
Improved/Changed
- Breaking Change: Renamed
nuvoSessiontoImporterSessionfor improved clarity and consistency. - Breaking Change: Updated
ImporterSession.parse()to accept an object parameter structure. - Breaking Change: Updated
ImporterSession.upload()to accept an object parameter structure and made it async. - Breaking Change: Updated
ImporterSession.start()to accept an object parameter structure. - Refined
style.buttons.importto only affect "Import data" buttons whenmodal === true, providing better styling control.
Fixed
- Fixed an issue where
stepHandler.headerStep()was not triggered when using dynamic import starting at the sheet selection step. - Fixed a UI issue where multi-sheet Excel files displayed each sheet as a separate file in the sidebar when using
updateDatatheuploadStephandler. - Fixed a bug that made the last column dropdown menu invisible in the mapping step.
- Fixed a bug where the uniqueness identification score in the join sheets step was off.
Migration Notes
- Replace all instances of
nuvoSessionwithImporterSessionin your code. - Update method calls to use the new object parameter structure:
ImporterSession.parse({data: files, identifier: "importer_identifier"})await ImporterSession.upload({step: "review", data: yourData, identifier: "importer_identifier"})ImporterSession.start({identifier: "importer_identifier"})
- Add
awaitbeforeImporterSession.upload()calls as they are now async.
16.07.2025
3.3.1
Added
- Added "Export error rows" functionality to the review step, allowing users to download all rows containing at least one error.
Fixed
- Fixed an issue where the importer’s session ID was not regenerated when leaving or completing the import process without re-rendering the component.
- Fixed a bug that caused the review step to appear empty when using Contextual Engine results with
onlyMappedColumnsenabled. - Fixed multiple UI issues related to the Ingestro AI Prompt feature and made the Prompt modal draggable.
- Fixed an issue where
automaticHeaderDetection: falsein combination withContextual Engine: "prompt"caused the importer to incorrectly skip the contextual step and proceed to the mapping step. - Fixed a TypeScript definition issue where block was not defined in the
onResultsclass. - Fixed a compatibility issue with the vanilla JS version when used in React-based environments.
- Fixed a compile error in Angular and Vue projects, where
stepHandlercould not be resolved. - Fixed an issue where spacebar input was blocked in dropdown search fields.
27.06.2025
3.3.0
Added
- Introduced the new
stepHandlerfeature, which replaces and extends the previousdataHandlerfunctionality, providing more granular and consistent control throughout the import process.- Added the following
stepHandlersteps:uploadStep()– Triggered after file upload and parsing, allowing access to the original file(s) and direct modification of the uploaded data before sheet/header selection. Learn moreheaderStep()– Triggered after header selection is confirmed, enabling pre-mapping data modification. Learn moremappingStep()– Triggered after mapping is confirmed, prior to review, providing access to mapped data and mapping logs, and enabling data modification and validation. Learn morereviewStep()– Triggered before completing the import, allowing final data validation or blocking the import. Learn more
- Each step supports
alert()andblock()methods to trigger the corresponding warning or error modals.
- Added the following
- Added a new
AI Promptsfeature, unlocking powerful bulk editing using natural language in the review step. Learn more
Improved/Changed
- Improved the design and functionality of the "Ready to submit?" modal in the review step:
- Added the configurable setting
submitModalConfigurationto optionally hide the modal, show an import summary, and/or export only error rows. - In combination with
stepHandler.reviewStep(), you can now execute pre-submission validations, add cell-specific error/warning/info messages, and block the user from progressing if needed.
- Added the configurable setting
- Adjusted the
onResultscallback. Learn more- Now supports
block()for consistent error handling, similar to otherstepHandlersteps. - Unified success modal behavior and configuration via
successModalConfiguration. - Updated default loading animation and modal interactions.
- Deprecated
PassSubmitResult()andRejectSubmitResult()in favor ofcomplete({importedRows, failedRows})andblock().
- Now supports
- Unified all loading animation texts for consistency and enhanced UX.
- Adjusted
columnHooksandonEntryInitso that all TDM keys, including unmapped keys, are present in the data object withnullas value. This ensures data consistency for hooks and review logic (exception: whenonlyMappedColumns === true, only mapped keys are present).
Deprecated
- Deprecated the
dataHandler. All previousdataHandlerhooks are now replaced by the correspondingstepHandlerhooks (uploadStep,headerStep,mappingStep,reviewStep). Please migrate tostepHandlerfor future compatibility.
Migration Notes
- All previous
dataHandlerfunctions (headerStep,reviewStep,onEntryInit, etc.) must be replaced with the newstepHandlerequivalents. - The structure and available arguments for the hooks have changed. Review the updated syntax and sample usage in the stepHandler documentation.
- For a guided migration, use our Migration GPT or contact support at [email protected].
- Code using
PassSubmitResult()andRejectSubmitResult()should be updated to usecomplete({importedRows, failedRows})/complete()andblock()respectively insideonResults.
30.05.2025
3.2.0
Added
- Added React 19 support.
Improved
- Adjusted our Angular, Vue and vanilla JS version to properly destroy the importer component on close. This resolves an issue where the "Screen width is too small" modal would persist in the DOM and remain responsive to screen size changes, even after navigating away.
- Ensured consistent row index display in the review step. Applying filters or sorting no longer causes discrepancies between the technical and displayed
rowIndexvalues. For example, a row with technical index0will always display as index1within the review step UI, regardless of sorting.
Fixed
- Fixed a crash occurring when using Angular, and the user tried to delete rows within the Error tab.
- Fixed a localization issue in the French version of the UI where the upload button incorrectly displayed “Choisir le dossier” (Choose the folder). It now correctly displays “Choisir le fichier” (Choose the file).
- Fixed an issue where
columnHookswere not executed for columns marked asdisabled. - The
onCancelcallback is now also triggered when users close alert modals ("Invalid license key" modal, "Screen width too small" modal, etc.).
13.05.2025
3.1.0
Added
- Added Angular 19 support.
Updated
- Updated
axiosto version1.8.4to address a security vulnerability.
Fixed
- Fixed a workflow issue where selecting the manual importer flow while using the Contextual Engine in combination with
automaticHeaderDetectionled to the wrong step.
22.04.2025
3.0.1
Added
- Added a new
contextualEnginesetting to enable our Contextual Engine feature. This option enables for automatic end-to-end import handling, including mapping, transforming, and cleaning data (link).- When set to
"enabled", the engine runs automatically after uploading the input file. - When set to
"prompt", users can choose between the Contextual Engine and the manual flow.
- When set to
- Introduced a new
baseUrlkey to support using Ingestro's self-hosted backend and mapping module (link). - Made major improvements to the mapping module to boost accuracy and performance speed, while giving you finer control over mapping behavior through configurable layers, processing modes, and thresholds.
- Introduced two new configuration objects:
columnMappingConfiguration– Allows defining where column mapping should run ("browser"or"node"), which matching layers to apply ("exact","historic","smart","fuzzy"), and the confidence threshold for accepting matches (link).optionMappingConfiguration– Offers the same level of control for the option mapping of each category column, with default processing in the browser (link).
- Introduced two new configuration objects:
Improved
- Improved sticky footer behavior for embedded use: when
modal === false, the footer is now fixed to the bottom of the importer component instead of the full page. This prevents overlap with the host application and ensures smoother integration.
Deprecated
- Deprecated the
optionMappingModeandprocessingEnginesettings. UseoptionMappingConfigurationinstead for more granular control over option mapping behavior.
Fixed
- Fixed an issue where hidden keys were not included in the row object within
errorsreturned byonResults. - Fixed an issue where imports without confirmed mappings led to an empty review step.
- Fixed an issue where 2D JSON arrays were incorrectly parsed, adding an extra top row containing index values.