Omlet vs. React Scanner
Before Omlet was around, the most common way developers would analyze component usage was to use React Scanner. Let's look at how is Omlet different.
Component detection
In React Scanner, components with zero usages and Components used out of JSX expressions are not detected
For example, the usage of UserProfile
and CompanyProfile
components in the Profile
are not detected by react-scanner. Instead, it reports the usage of a component called Component
, which is the intermediary variable used for selecting the right profile component in this component.
Dependencies among components defined in the same module are not detected
Dependency between NamedComponentWrapped
and ComponentUsingNamedWrappedComponent
is missing in react-scanner results.
Usages are reported at the file level, so dependencies of components defined in the same module are not visible
If you use use the below code as an example:
react-scanner's usage detection result will be:
Button in components/navigation.jsx
Input in components/navigation.jsx
whereas Omlet will report the following:
Footer uses Button
Header uses Input
Import resolution
react-scanner does not follow exports to find the source component for imports.
Instead, it detects names imported from modules. This causes duplicate components and incorrect usage numbers. For example if we use the below example…This results in 4 separate button components in react-scanner data since each of them has distinct import name and import path combinations:
Button from components/Button
Button from components/Button/Button
SameButton from components/Button
TheButton from components/Button
In react-scanners report, each combination has their separate usage counts where Omlet detects that they’re actually the same component and gives the total (correct) number of usages.
Alias resolution
Aliased imports appear as separate components in react-scanner reports. Similar to the case mentioned under the Import resolution section, this causes fragmented usage counts and duplicate entries.
Missing in Omlet
HTML tags in JSX are not detected: Omlet doesn’t detect React element equivalent of HTML tags such as div, img, etc.
Instance counts: Omlet doesn't count component instances. Instead, it reports unique parent components for each component. react-scanner reports each instance separately.
Last updated