Settings > Workspace: enable/disable unique internal PNs
Productioncolumn are displayed vertically
[fix]Purchase List table crashing on a locked PL (Cell not returning anything)
Manufacturer PNbut different
Manufacturer) before proceeding so the user can confirm it's not a duplicate
on-orderwhen an purchase order is imported on
[fix]Sort by on
Stock On-hand, and
Value(only in BOMs) fields
By default BOMIST uses thumbnails and a default datasheet from data it gets through Octopart. From now on, you can also override or set those through Documents added to a Part.
For several reasons you might end up with unallocated inventory (i.e. inventory without a storage location assigned). Through the table on
Storage > Parts, you could select multiple inventory items and move them in bulk to another single location. However, it might be also useful to individually pick a location for each one of the selected inventories. This way you can tell where you want each of these items to be moved to, whether to a storage location where it already exists or to a new one.
BOMIST checks for parts equality through their own
Manufacturer PN and
Manufacturer. However, sometimes the Manufacturer name can have some variants (e.g. "Analog Devices", or "Analog Devices Inc."). For this reason, whenever manually adding Parts, the app will check for similar parts (i.e. parts with the same part number but different manufacturer) and, in case it finds some, it will ask you to confirm if you still want to add it, thus preventing a duplicate.
[new feature]Generic parts
ordered/received oncan now be edited
Stock- for combined on-order and on-hand,
[fix]Barcode scanning when caps-lock is active
[fix]API not starting
You can now create and use generic parts.
A generic part is not a physical part but it represents, or groups, parts that can be used interchangeably - this is specially useful for resistors and capacitors for which you might not be concerned about their manufacturer as long as they have the same or equivalent specs.
They can also be used to postpone the decision of which part to use. For example, you might assign a generic part to a BOM item but decide which real part to use later on during production.
The parts that can be used in place of a generic part are listed through
In project builds, when picking inventory to reserve/assemble, the
Sources column will display which parts were used:
Ωcharacter from the value (if present)
[fix]Export BOM into PDF
The inventory value report can now be generated for specific storage locations. Similarly to inventory restrictions on Projects, the inventory to be included in the inventory value report can also be restricted.
[fix]Assigning a Part when the BOM item's value has no unit (e.g.
⌘key instead of
Manufacturer PNon every table (except the main one) show additional info about that part
Multiplefield deprecated (a new PL should be created whenever necessary)
[fix]Purchase Orders: sorting/grouping by Supplier
[fix]Purchase Lists: show multiple issues for the same row
To avoid going back and forth in between different tabs, you can now see additional info about a part and to easily access its datasheet simply by hovering its
Manufacturer PN. As with every tooltip, wait around a second while hovering the field until the tooltip finally shows up.
[fix]CSV export (empty values being filtered out)
Through the Inventory Restrictions menu you can now also allow or disallow unallocated inventory to be used and also to set storage locations restrictions as
exclusive. Inclusive restrictions meaning you can only pick inventory from selected storage locations and exclusive meaning you can pick inventory from all storage locations except from the selected ones.
[new feature]Inventory restrictions
[fix]Filter out expired lots when selecting inventory sources
You can now define inventory restrictions. This allows you to tell that for a given project you are only allowed to source inventory from selected storage locations or that only inventory that as a Lot assigned can be used. This setting applies to the whole Project. Errors and warnings reflecting "insufficient inventory" will take these restrictions into consideration. Also, on project builds, inventory that has been previously assigned (reserved or picked for assembly) without inventory restrictions will ignore them (i.e. you won't get any errors or warnings for those).
This feature is available on professional plans.
When selecting inventory sources on a project build (to reserve or assemble), you can now set a default sorting order. This setting applies to the whole workspace. There are 5 sorting options available:
Smallest Quantity: inventory with the smallest quantity shows up first
Largest Quantity: inventory with the largest quantity shows up first
FIFO: inventory created first shows up first
LIFO: inventory created most recently shows up first
Recently Used: most recently used (created/updated) inventory shows up first
trial plans onlyUnable to sign-in (cannot read plan of undefined)
[fix]Export BOM table into CSV (invalid column's data)
TEAMShow sync spinner also for pushed changes
This goes a bit beyond the scope of the app, but it wouldn't make sense to use another software to keep track of assets that aren't necessarily electronic parts or items for which you don't necessarily want to assign a
Manufacturer PN and
Manufacturer pair. For this reason you can now create
Asset parts. These can be keyboards, chairs or whatever items it might make sense for your use-case.
Something worth mentioning is the current lack of
Units of Measure, which would be useful for Assets too. This way you could keep track of fractional quantities such as length (for cables) or volume (for liquids), for example. This will be implemented later on.
[fix]Allow to edit name of in-house Part
[fix]Supply chain: prevent caching empty or invalid results (e.g. quotes)
[fix]Revert inventory with lot
macOS-onlySelect all rows in a table using
Until now, the
Available Quotes would filter out all invalid quotes. A quote would be considered invalid if the minimum order quantity would be greater that the order quantity or if the supplier didn't have enough stock (i.e. no availability). From now on, and depending on the case, the MOQ and availability can be ignored so those quotes are still shown and might be selected.
When using the Projects > Pricing & Availability to estimate the production costs of a project, both MOQ and availability are ignored and all quotes can be selected. This makes it easier to ensure all items in a BOM have a quote assigned so an estimate of production costs (even if a rough one) can be calculated.
On the other hand, when viewing a Purchase List, quotes with insufficient stock (i.e. available stock on supplier is lower than order quantity) will still be filtered out but the ones with MOQ, even if invalid, are shown. Also, even though you can see quotes with MOQ greater than the order quantity, in order to create a Purchase Order all selected quotes must be valid. This means in order to create a PO you might have to increase the order quantity so it meets the MOQ. Invalid quotes can be easily identified by their dark grey background (instead of purple).
From now one you can define Equivalent parts. Two parts are considered equivalent when both are alternates of each other. An alternate part is not necessarily equivalent to another one (e.g. a "100nF 20V 0603" capacitor might be used in place of a "100nF 6.3V 0603" one, but not the other way around).
An info column was also added to the Alternate and Similar Parts tables so additional info about each part can be easily accessed making it easier to decide which parts should be considered as alternates and/or equivalent.
[fix]BOM Part Matching: show suggestions when value and package are defined even though additional data is not available
[fix]Inventory sources picker: filter out sources with qty = 0
[fix]Suppliers: add offer
[fix]Barcode settings: set default printer name on combo-box
macOS-onlyDon't maximize window when activating the app through the dock
[fix]Crash "cannot read prefix of undefined"
You can now create custom fields (through
Settings > Workspace > Part custom fields) representing SI values (i.e. values that have a SI prefix). Why is this important? Let's say you want to create a new field called "Rated Voltage" where you'd use values represented in Volts. If you'd use a custom field of type
String you'd lose searching capabilities as a string can contain any kind of text. With an
SI Value the app will parse the values and is then able to tell that
200mV are the same as
[fix]API: not starting
[fix]Lots table exported data
[fix]Select project after creation
[new feature]Lot control
[fix]CSV import: clear column mapping
[fix]Parts import: import part stock only if mapped
[fix]Sort by storage names
This new feature brings increased traceability to BOMIST. With it you can assign a lot to items you receive from a Purchase Order or to inventory resulting from Project Builds. This way, whenever you use inventory belonging to a lot you can track its origin.
You can now pick multiple inventory sources when reserving inventory or assembling items on a project build. This way, if you need 100 units but you have 50 in one storage location and 60 in another one, you could use specify both locations in the desired order. You can easily reorder selected inventory sources by drag and drop them.
When assembling items, if inventory was previously reserved you'll have to use that one. In case you'd want to use other inventory sources you'll have to unreserve inventory and then reserve/assemble the items.
Reserving inventory is particularly useful to generate pick lists (e.g. by exporting the table into PDF), so you know where to get inventory from, and to prevent other project builds or manual inventory adjustments from using stock that is meant to be used in a specific project build.
So far, to see active project builds (i.e.
in-progress) you'd have to click through a given project and its own revisions. You can now have an overview of active project builds through the main Projects table. The tags under the
Production column will tell you how many builds you have in each state, and by hovering these tags you'll see the corresponding project build codes which you can click to immediately look them up.
You can now filter inventory in the Storage tab, pretty much the same way you filter parts in the Parts tab. An important difference here is that on top of being able to filter by global stock of a given part, you can also filter by its quantity on a given storage location, for example.
Previously, items on a purchase list could be added either manually, through the purchase list itself, or by creating a purchase list through
Projects > Pricing & Availability. You can now add parts to purchase lists directly from tables available on the Parts, Storage and Suppliers tab. This is useful because sometimes these tables give you the right view over your inventory from which you'll decide whether to purchase or not these parts. This way, you can for example filter inventory in a specific storage location in the Storage tab and select the parts that don't have any stock or have low stock to be purchased.
A single purchase list can originate several purchase orders. That's the case when you order parts from several Suppliers. You can now track those purchase orders through the purchase list itself. This list shows you all purchase orders in which the selected purchase list is being referenced on.
enforce quote selectionand
only use preferred suppliersis now checked by default
Item #column removed
Usagefor in-house Parts (previously only on outsourced Parts)
[fix]Sorting parts by value
[fix]Attrition quantity formula
[fix]Table header scrollbar padding (failed to detect scrolling)
[fix]Table minimum width when visible columns change
[fix]Issues table jumping selection
When importing a BOM along with additional data so Parts can be matched, you'll get a warning when no parts were matched and suggestions of parts to be assigned if more than one were matched.
You can also double check the data used for parts data matching and even edit it.
Previously, the estimated cost presented on the
Projects > Pricing & Availability table considered only the Purchasing costs. This way, if purchasing criteria was set to
if needed, the estimated cost would represent only the units that needed to be purchased which makes it hard to estimate the overall production cost.
From now on, the production cost is calculated taking into account each part's
Unit Cost, in case those parts don't need to be purchased (i.e. they exist in your inventory already) or the price of the selected Quote, and corresponding quantities. When looking up the
Unit Cost, if it's not available, the
Order Price will be used instead if available, and vice-versa. The production cost is the sum of the purchasing cost and your inventory cost (the
Unit Cost of each part available in your inventory multiplied by the required quantity)
Assembledialogs fill in one option by default. Options are also sorted by
last time used(most recent to oldest). Rendering improved.
[fix]Printing (Windows only)
You can now partially mark items as received on a purchase order. This is useful for backordered items, when let's say you order 5000 units but only 2500 are initially available to be shipped. When receiving items, if quantity is not passed the whole quantity is assumed to be received. To mark an item as partially received, enter the quantity received. To set a partial quantity, items must be received individually (i.e.
Storage method should be set to
Individual instead of
When aggregating data on rows with grouped fields, the app attempts to display a unique value by default but if that's not possible an asterisk will be displayed instead. This doesn't apply to fields that have their own aggregation formula (e.g. sum, average), such as is the case of prices and quantities.
C1, C2, C3)
Account; by default uses BOMIST's logo)
Typecan now be grouped
[fix]PDF export: sorting order and grouping, break page after row
Prefixcolumn on project's build table
[fix]Printing: printer name with whitespaces (Windows only)
[fix]ComboBox: prevent overflow (ensure it's visible on the screen)
[fix]Move inventory (MAKER plan only)
Item #column added to BOMs
Manufacturer PNcan be disabled/enabled
Unit Priceis now displayed with 3 decimal places
Settings > General(affects how prices are displayed)
[fix]Insufficient stock warnings
[fix]Sorting of prices
Stock(in-house and on-order inventory) and
On-handcolumns added to project tables
[fix]Quotes with MOQ > 1 not showing up on
[fix]Adjust inventory when quantity surpass plan's limit (FREE plan only)
[fix]Prevent moving a storage location to itself
[fix]Clearable combo boxes
[fix]Assembling items when some items without inventory were selected too
[fix]Project BOM: manually assign parts
[fix]Purchase orders: receive items with the same
Manufacturerbut with different
[fix]Project builds: when assembling items with reserved inventory, set default inventory on the ComboBox
[fix]Go-to and scroll to table row
[fix]Memory leak related with prices displayed on tables making the app slower
[fix]Parts filters: Value filter missing
[fix]Parts: set storage location when creating a new part
[fix]Price columns with paywall tag on professional plans
received) can now be defined when importing purchase orders
[fix]Some rows missing when grouping some columns
[fix]Aggregated data on some grouped columns
Openstate can be merged
[fix]CSV and JSON table export: arrays and internal ids
You can now copy a project revision's BOM from another project revisions's BOM. This is especially useful for Models/Variants: different projects that have a very similar BOM, ofen the difference being on the parts that are (not) to be populated (DNP).
A purchase order always keeps track of purchase lists that originated them. When merging two purchase orders, the resulting purchase order might contain duplicate parts, each one coming from a different purchase list. By grouping the table by
Supplier PN you get to see not only the rows corresponding to each purchase list but also the aggregated value on top. If, for example, you want to export into a CSV file only the aggregated values, you simply collapse the grouped row.
To merge purchase orders, they have to have the same supplier and to be in the
Auto-assign quotesnow works with selected items (instead of all items in the table)
Unassign quotesnow have its own button
[fix]Custom quotes not found
[fix]Chance of intermittent read-only mode in team workspaces
[fix]Part finder: filter parts
[fix]Ensure workspace has a name upon its creation
You can now easily check how much is your inventory worth. This is accomplished through a new field in Parts:
Unit Cost. This value can be manually set or imported along with new Parts. But the best thing is that it's also automatically updated whenever you use Purchasing, so whenever a Purchase Order is received, or imported, the unit cost for each part will be updated.
The inventory value report can be exported into CSV, PDF or HTML and is available on professional plans.
[fix]Import parts without storage assigned: not listed as unallocated
[fix]Table columns re-ordering (drag and drop)
[fix]Custom fields: respect fuzzy search option
[fix]Extra re-render after workspace initialization
[fix]API: swagger documentation
[fix]Import purchase order: purchase orders are set as "received"
[fix]Storage: tree node is updated after editing storage
[fix]Unselect project build when current project revision changes
[fix]Barcode reader buffer flush timeout increased
[fix]Project revision finder dialog
When importing a BOM, parts would be automatically assigned to each BOM entry if a part on your workspace would match the
Man. Part Number and
Manufacturer or simply the
Man. Part Number. From now on, you can set which fields should be matched. Custom fields can be leveraged to match parts to a custom ID for example or any other value you might find useful. Multiple matching fields can be set.
If more than a part is found for a given match, the part won't be automatically assigned.
[fix]Printing issues (file not found), open printer preferences (windows-only)
[fix]Error dialog at startup
[fix]Import purchase orders: fetching the wrong parts when the Supplier Part Name contains dots
[fix]Multiple row selection when Issues table is open
[fix]Available quotes: filter out quotes with stock < order qty
[fix]Alphanumeric sorting for Label and Storage columns
[fix]Projects > Pricing & Availability: order qty updated according to batch size
[fix]Import purchase orders: wrong column mapping when using pre-defined CSV parser
[fix]Prevent race conditions on the database
[fix]filter part by value with Ohm unit
[fix]Part dialog, ensure inventory location ComboBox is visible
[fix]reset page index when new data is set on table
[fix]table resizers over tab selection's ComboBox (UI-only)
[fix]import Parts with storage field empty
sourceincluded on project build items
[fix]reserved inventory source shows up on the Project Builds table (after restarting the app)
[fix]save table's current page index
[fix]import workspace (too many files; notifications added)
You can now easily see inventory changes for any given Storage location. The history table will list the history for all parts that are in the selected storage location.
[fix]on Projects > Pricing & Availability, when purchase criteria is set as "if needed", estimated costs are updated accordingly
[fix]when assigning a part to a BOM entry, value and package fields are updated accordingly
[fix]trees are now sorted alphanumerically (e.g. Storage)
Custom fields allow you do extend fields available on Parts and can be defined through Settings > Workspace > Parts custom fields.
A custom field can be a
boolean or an
option. Custom fields show up on parts Filters, on the Parts dialog when creating a new part and also on the Parts Group Edit dialog when editing multiple parts at a time.
Columns on all tables can now be reordered. All you need to do is to drag-and-drop them into the desired location.
NRFND parts can't be assigned to project BOMs. This is useful when a part becomes obsolete.
On the other hand, non-stocking parts can be used normally but low stock and out of stock warnings won't be displayed. Non-stocking parts have a "NS" suffix on the stock column.
[fix]offline/read-only notifications incorrectly showing up on the FREE plan
BOMIST can now automatically backup your workspaces. You can define a backup interval (daily, weekly, monthly - or never, in case you want to disable it), the folder the backups should be stored at and how many you want to keep. This can be configured through Settings > Backups.
As these backups are kept on your file-system, we recommend you to put them in a folder that can sync with some cloud storage service (e.g. Dropbox). This way, if for some reason you stop being able to access the computer you have the app installed on, you can still access your backup files on the cloud.
Each backup file consists of a Workspace dump file (.bomist_dump) which includes all the data available on your workspace.
To automate the creation of Workspace dump files you can also use the API.
[fix]read-only mode incorrectly showing up on TEAM workspaces
[fix]unreserve reserved inventory
[fix]missing Octopart offers on Parts Supply Chain
[fix]BOM table displays not only the grouped designator prefix but also the designators for each BOM row
[fix]create purchase lists for BOMs that include in-house parts (do not add the part itself to the list)
Previously, in order to create a purchase order (PO) the user was required to pick up a quote from an available supplier. This can be inconvenient as available quotes might be outdated, showing as "not available" when the part is in fact available on a given supplier, or it would require the user to setup custom quotes in the supplier tab.
Selecting quotes is now optional and can be disabled/enabled through Settings > Workspace > Enforce quote selection. When disabled, all it takes to create a PO is to have a supplier defined, which will be picked from the Part's data or from the global preferred suppliers. In this case, the user is responsible for making sure the part is available on the given supplier.
[fix]unable to select hidden workspace file in macOS
[fix]custom supplier not showing up on available quotes
[fix]Storage column refreshed after being changed through the inventory table
You can now import purchase orders and parts directly from purchase orders placed on your favourite distributor. All you need is a CSV file that you can normally generate through the online distributor.
By importing a purchase order, if the parts included in it are not yet available on the app they will be created as well. Not all part fields need to be defined and BOMIST will try to autocomplete most of them for your convenience.
The importer includes a CSV template for purchase orders generated from Digi-Key and Mouser, meaning appropriate CSV settings and field/column mappings will be set by default.
[fix]preserve sortBy and groupBy table properties
[fix]hidden rows when grouped columns get hidden
[fix]scroll row into view when selecting adjacent rows through keyboard arrow keys
To make sure the most important table get the most space on the screen, some tables can now be collapsed.
You can now adjust the font size used in tables and trees through
Settings > General.
[fix]data importer column index starts from 0
BOMIST can now launch a local web server that exposes a REST API. Through this API you can then retrieve and process your data the way you want by creating your own scripts. This feature is available on all plans.
Once the server is running, you can test it by simply opening your web browser at
http://localhost:3333 (or on any other
port you started the server at).
Documentation is provided at
Endpoints to retrieve data and to interact with the UI are available.
This is a major version update and, as the app was re-written from scratch, it brings a lot of UI and UX improvements. Legacy app will no longer be distributed nor supported.
You might want to read this blog post too.
For more info about each feature please visit the Learn section.
Legacy workspaces are not compatible with the new version but can be partially converted using this tool: pypi.org/project/bomist-utils/. If you need help converting your workspace, please get in touch