Cross.Platform
made by https://0x3d.site
GitHub - sebhildebrandt/systeminformation: System Information Library for Node.JSSystem Information Library for Node.JS. Contribute to sebhildebrandt/systeminformation development by creating an account on GitHub.
Visit Site
GitHub - sebhildebrandt/systeminformation: System Information Library for Node.JS
The Systeminformation Project
This is amazing. Started as a small project just for myself, it now has > 15,000 lines of code, > 600 versions published, up to 8 mio downloads per month, > 300 mio downloads overall. #1 NPM ranking for backend packages. Thank you to all who contributed to this project!
Please support this project ... ☕️
Over the past few years I spent more than 2.000 hours working on this project and invested in hardware to be able to test on different platforms. Currently I am working very hard on the next new version 6.0 completely rewritten in TypeScript and with a lot of new features. Any support is highly appreciated - Buy me a coffee.
Your contribution make it possible for me to keep working on this project, add new features and support more platforms. Thank you in advance!
New Version 5.0
The new Version 5 is here - this next major version release 5.0 comes with new functionality and several improvements and changes (some of them are breaking changes!):
- added audio: get detailed audio device information
- added bluetooth: get detailed bluetooth device information
- added dockerImages, dockerVolumes: get detailed information about docker images and volumes
- added printer: get information from detected printers
- added usb: get detailed usb controller and device information
- added wifi interfaces and connections: extended wifi information
- better uuid function to get unique hardware and OS UUIDs
- better/extended cpu info detection
- better/extended system info detection
- Apple Silicon M1/M2/M3 support
- better Raspberry-PI detection
- systeminformation website updated and extended with full documentation and examples systeminformation.io
- lot of minor improvements
Breaking Changes in version 5: you will see several breaking changes for the sake of a more consistent API interface and to be future proof. Read the detailed version 5 changes.
I did a lot of testing on different platforms and machines but of course there might be some issues that I am not aware of. I would be happy if you inform me when you discover any issues. Issues can be opened here.
Quick Start
Lightweight collection of 50+ functions to retrieve detailed hardware, system and OS information.
- simple to use
- get detailed information about system, cpu, baseboard, battery, memory, disks/filesystem, network, docker, software, services and processes
- supports Linux, macOS, partial Windows, FreeBSD, OpenBSD, NetBSD, SunOS and Android support
- no npm dependencies
Attention: this is a node.js
library. It is supposed to be used as a backend/server-side library and will definitely not work within a browser.
Installation
npm install systeminformation --save
or simpler
npm i systeminformation
Give it a try with npx
?
You just want to give it a try - right from your command line without installing it? Here is how you can call it with npx
:
# get basic system info (System, OS, CPU)
npx systeminformation info
# obtain all static data - may take up to 30 seconds
npx systeminformation
Still need Version 4?
If you need version 4 (for compatibility reasons), you can install version 4 (latest release) like this
npm install systeminformation@4 —save
or simpler
npm install systeminformation@4
Usage
All functions (except version
and time
) are implemented as asynchronous functions. Here a small example how to use them:
const si = require('systeminformation');
// promises style - new since version 3
si.cpu()
.then(data => console.log(data))
.catch(error => console.error(error));
News and Changes
Latest Activity
(last 7 major and minor version releases)
- Version 5.23.0:
usb()
added serial number (linux) - Version 5.22.0:
wifiConnections()
added signal quality - Version 5.21.0:
graphics()
added subVendor (linux) - Version 5.20.0:
mem()
added writeback and dirty (linux) - Version 5.19.0:
currentLoad()
added steal and guest time (linux) - Version 5.18.0:
fsSize()
added optional drive parameter - Version 5.17.0:
graphics()
added positionX, positionY (macOS) - Version 5.16.0:
fsSize()
added rw property - Version 5.15.0:
blockDevices()
added device - Version 5.14.0:
blockDevices()
added raid group member (linux) - Version 5.13.0:
networkConnections()
added process name (macOS) - Version 5.12.0:
cpu()
added performance and efficiency cores - Version 5.11.0:
networkInterfaces()
added default property and default parameter - Version 5.10.0: basic
android
support - Version 5.9.0:
graphics()
added properties (macOS) - Version 5.8.0:
disksIO()
added waitTime, waitPercent (linux) - Version 5.7.0:
diskLayout()
added S.M.A.R.T for Windows (if installed) - Version 5.6.0:
cpuTemperature()
added socket and chipset temp (linux) - Version 5.5.0:
dockerVolumes()
added - Version 5.4.0:
dockerImages()
added - Version 5.3.0:
osInfo()
added remoteSession (win only) - Version 5.2.0:
wifiInterfaces()
andwifiConnections()
added - Version 5.1.0:
memLayout()
added ECC flag,bios()
added language, features (linux) - Version 5.0.0: new version 5 - attention there are some breaking changes. See detailed version 5 changes here.
- ...
You can find all changes here: detailed changelog
Core concept
Node.js comes with some basic OS information, but I always wanted a little more. So I came up to write this little library. This library is still a work in progress. It is supposed to be used as a backend/server-side library (it will definitely not work within a browser). It requires node.js version 4.0 and above.
I was able to test it on several Debian, Raspbian, Ubuntu distributions as well as macOS (Mavericks, Yosemite, El Captain, Sierra, High Sierra, Mojave, Catalina, Big Sur) and some Windows 7, Windows 8, Windows 10, FreeBSD, OpenBSD, NetBSD and SunOS machines. Not all functions are supported on all operating systems. Have a look at the function reference in the docs to get further details.
If you have comments, suggestions & reports, please feel free to contact me!
I also created a nice little command line tool called mmon (micro-monitor) for Linux and macOS, also available via github and npm
Reference
Function Reference and OS Support
Full function reference with examples can be found at https://systeminformation.io.
1. General
Function | Result object | Linux | BSD | Mac | Win | Sun | Comments |
---|---|---|---|---|---|---|---|
si.version() | : string | X | X | X | X | X | lib version (no callback/promise) |
si.time() | {...} | X | X | X | X | X | (no callback/promise) |
current | X | X | X | X | X | local (server) time | |
uptime | X | X | X | X | X | uptime in number of seconds | |
timezone | X | X | X | X | X | e.g. GMT+0200 | |
timezoneName | X | X | X | X | X | e.g. CEST |
2. System (HW)
Function | Result object | Linux | BSD | Mac | Win | Sun | Comments |
---|---|---|---|---|---|---|---|
si.system(cb) | {...} | X | X | X | X | hardware information | |
manufacturer | X | X | X | X | e.g. 'MSI' | ||
model | X | X | X | X | model/product e.g. 'MS-7823' | ||
version | X | X | X | X | version e.g. '1.0' | ||
serial | X | X | X | X | serial number | ||
uuid | X | X | X | X | UUID | ||
sku | X | X | X | X | SKU number | ||
virtual | X | X | X | is virtual machine | |||
virtualHost | X | X | X | virtual host (if virtual) | |||
raspberry | X | optional raspberry revision data | |||||
si.bios(cb) | {...} | X | X | X | X | bios information | |
vendor | X | X | X | X | e.g. 'AMI' | ||
version | X | X | X | X | version | ||
releaseDate | X | X | X | release date | |||
revision | X | X | X | revision | |||
serial | X | X | serial | ||||
si.baseboard(cb) | {...} | X | X | X | X | baseboard information | |
manufacturer | X | X | X | X | e.g. 'ASUS' | ||
model | X | X | X | X | model / product name | ||
version | X | X | X | X | version | ||
serial | X | X | X | X | serial number | ||
assetTag | X | X | X | X | asset tag | ||
memMax | X | X | X | max memory in bytes | |||
memSlots | X | X | X | memory slots on baseboard | |||
si.chassis(cb) | {...} | X | X | X | X | chassis information | |
manufacturer | X | X | X | X | e.g. 'MSI' | ||
model | X | X | X | X | model / product name | ||
type | X | X | X | X | model / product name | ||
version | X | X | X | X | version | ||
serial | X | X | X | X | serial number | ||
assetTag | X | X | X | X | asset tag | ||
sku | X | SKU number |
3. CPU
Function | Result object | Linux | BSD | Mac | Win | Sun | Comments |
---|---|---|---|---|---|---|---|
si.cpu(cb) | {...} | X | X | X | X | CPU information | |
manufacturer | X | X | X | X | e.g. 'Intel(R)' | ||
brand | X | X | X | X | e.g. 'Core(TM)2 Duo' | ||
speed | X | X | X | X | in GHz e.g. '3.40' | ||
speedMin | X | X | X | in GHz e.g. '0.80' | |||
speedMax | X | X | X | X | in GHz e.g. '3.90' | ||
governor | X | e.g. 'powersave' | |||||
cores | X | X | X | X | # cores | ||
physicalCores | X | X | X | X | # physical cores | ||
efficiencyCores | X | X | # efficiency cores | ||||
performanceCores | X | X | # performance cores | ||||
processors | X | X | X | X | # processors | ||
socket | X | X | X | socket type e.g. "LGA1356" | |||
vendor | X | X | X | X | vendor ID | ||
family | X | X | X | X | processor family | ||
model | X | X | X | X | processor model | ||
stepping | X | X | X | X | processor stepping | ||
revision | X | X | X | revision | |||
voltage | X | voltage | |||||
flags | X | X | X | X | CPU flags | ||
virtualization | X | X | X | X | virtualization supported | ||
cache | X | X | X | X | cache in bytes (object) | ||
cache.l1d | X | X | X | X | L1D (data) size | ||
cache.l1i | X | X | X | X | L1I (instruction) size | ||
cache.l2 | X | X | X | X | L2 size | ||
cache.l3 | X | X | X | X | L3 size | ||
si.cpuFlags(cb) | : string | X | X | X | X | CPU flags | |
si.cpuCache(cb) | {...} | X | X | X | X | CPU cache sizes | |
l1d | X | X | X | X | L1D size | ||
l1i | X | X | X | X | L1I size | ||
l2 | X | X | X | X | L2 size | ||
l3 | X | X | X | X | L3 size | ||
si.cpuCurrentSpeed(cb) | {...} | X | X | X | X | X | current CPU speed (in GHz) |
avg | X | X | X | X | X | avg CPU speed (all cores) | |
min | X | X | X | X | X | min CPU speed (all cores) | |
max | X | X | X | X | X | max CPU speed (all cores) | |
cores | X | X | X | X | X | CPU speed per core (array) | |
si.cpuTemperature(cb) | {...} | X | X | X* | X | CPU temperature in C (if supported) | |
main | X | X | X | X | main temperature (avg) | ||
cores | X | X | X | X | array of temperatures | ||
max | X | X | X | X | max temperature | ||
socket | X | array socket temperatures | |||||
chipset | X | chipset temperature |
4. Memory
Function | Result object | Linux | BSD | Mac | Win | Sun | Comments |
---|---|---|---|---|---|---|---|
si.mem(cb) | {...} | X | X | X | X | X | Memory information (in bytes) |
total | X | X | X | X | X | total memory in bytes | |
free | X | X | X | X | X | not used in bytes | |
used | X | X | X | X | X | used (incl. buffers/cache) | |
active | X | X | X | X | X | used actively (excl. buffers/cache) | |
buffcache | X | X | X | X | used by buffers+cache | ||
buffers | X | used by buffers | |||||
cached | X | used by cache | |||||
slab | X | used by slab | |||||
available | X | X | X | X | X | potentially available (total - active) | |
swaptotal | X | X | X | X | X | ||
swapused | X | X | X | X | X | ||
swapfree | X | X | X | X | X | ||
writeback | X | ||||||
dirty | X | ||||||
si.memLayout(cb) | [{...}] | X | X | X | X | Memory Layout (array) | |
[0].size | X | X | X | X | size in bytes | ||
[0].bank | X | X | X | memory bank | |||
[0].type | X | X | X | X | memory type | ||
[0].clockSpeed | X | X | X | X | clock speed | ||
[0].formFactor | X | X | X | form factor | |||
[0].manufacturer | X | X | X | X | manufacturer | ||
[0].partNum | X | X | X | X | part number | ||
[0].serialNum | X | X | X | X | serial number | ||
[0].voltageConfigured | X | X | X | voltage conf. | |||
[0].voltageMin | X | X | X | voltage min | |||
[0].voltageMax | X | X | X | voltage max |
5. Battery
Function | Result object | Linux | BSD | Mac | Win | Sun | Comments |
---|---|---|---|---|---|---|---|
si.battery(cb) | {...} | X | X | X | X | battery information | |
hasBattery | X | X | X | X | indicates presence of battery | ||
cycleCount | X | X | numbers of recharges | ||||
isCharging | X | X | X | X | indicates if battery is charging | ||
designedCapacity | X | X | X | max capacity of battery (mWh) | |||
maxCapacity | X | X | X | max capacity of battery (mWh) | |||
currentCapacity | X | X | X | current capacity of battery (mWh) | |||
capacityUnit | X | X | X | capacity unit (mWh) | |||
voltage | X | X | X | current voltage of battery (V) | |||
percent | X | X | X | X | charging level in percent | ||
timeRemaining | X | X | minutes left (if discharging) | ||||
acConnected | X | X | X | X | AC connected | ||
type | X | X | battery type | ||||
model | X | X | model | ||||
manufacturer | X | X | manufacturer | ||||
serial | X | X | battery serial |
- See known issues if you have a problem with macOS temperature or windows temperature
6. Graphics
Function | Result object | Linux | BSD | Mac | Win | Sun | Comments |
---|---|---|---|---|---|---|---|
si.graphics(cb) | {...} | X | X | X | arrays of graphics controllers and displays | ||
controllers[] | X | X | X | graphics controllers array | |||
...[0].vendor | X | X | X | e.g. NVIDIA | |||
...[0].subVendor | X | e.g. Gigabyte | |||||
...[0].vendorId | X | vendor ID | |||||
...[0].model | X | X | X | graphics controller model | |||
...[0].deviceId | X | device ID | |||||
...[0].bus | X | X | X | on which bus (e.g. PCIe) | |||
...[0].vram | X | X | X | VRAM size (in MB) | |||
...[0].vramDynamic | X | X | X | true if dynamically allocated ram | |||
...[0].external | X | is external GPU | |||||
...[0].cores | X | Apple silicon only | |||||
...[0].metalVersion | X | Apple Metal Version | |||||
displays[] | X | X | X | monitor/display array | |||
...[0].vendor | X | monitor/display vendor | |||||
...[0].vendorId | X | vendor ID | |||||
...[0].deviceName | X | e.g. \\.\DISPLAY1 | |||||
...[0].model | X | X | X | monitor/display model | |||
...[0].productionYear | X | production year | |||||
...[0].serial | X | serial number | |||||
...[0].displayId | X | display ID | |||||
...[0].main | X | X | X | true if main monitor | |||
...[0].builtin | X | X | true if built-in monitor | ||||
...[0].connection | X | X | X | e.g. DisplayPort or HDMI | |||
...[0].sizeX | X | X | size in mm horizontal | ||||
...[0].sizeY | X | X | size in mm vertical | ||||
...[0].pixelDepth | X | X | X | color depth in bits | |||
...[0].resolutionX | X | X | X | pixel horizontal | |||
...[0].resolutionY | X | X | X | pixel vertical | |||
...[0].currentResX | X | X | X | current pixel horizontal | |||
...[0].currentResY | X | X | X | current pixel vertical | |||
...[0].positionX | X | X | display position X | ||||
...[0].positionY | X | X | display position Y | ||||
...[0].currentRefreshRate | X | X | X | current screen refresh rate |
7. Operating System
Function | Result object | Linux | BSD | Mac | Win | Sun | Comments |
---|---|---|---|---|---|---|---|
si.osInfo(cb) | {...} | X | X | X | X | X | OS information |
platform | X | X | X | X | X | 'linux', 'darwin', 'Windows', ... | |
distro | X | X | X | X | X | ||
release | X | X | X | X | X | ||
codename | X | X | |||||
kernel | X | X | X | X | X | kernel release - same as os.release() | |
arch | X | X | X | X | X | same as os.arch() | |
hostname | X | X | X | X | X | same as os.hostname() | |
fqdn | X | X | X | X | X | FQDN fully qualified domain name | |
codepage | X | X | X | X | OS build version | ||
logofile | X | X | X | X | X | e.g. 'apple', 'debian', 'fedora', ... | |
serial | X | X | X | X | OS/Host serial number | ||
build | X | X | X | OS build version | |||
servicepack | X | service pack version | |||||
uefi | X | X | X | X | OS started via UEFI | ||
hypervisor | X | hyper-v enabled? (win only) | |||||
remoteSession | X | runs in remote session (win only) | |||||
si.uuid(cb) | {...} | X | X | X | X | X | object of several UUIDs |
os | X | X | X | X | os specific UUID | ||
hardware | X | X | X | X | hardware specific UUID | ||
macs | X | X | X | X | MAC addresses | ||
si.versions(apps, cb) | {...} | X | X | X | X | X | version information (kernel, ssl, node, ...)apps param is optional for detectingonly specific apps/libs(string, comma separated) |
si.shell(cb) | : string | X | X | X | X | standard shell | |
si.users(cb) | [{...}] | X | X | X | X | X | array of users online |
[0].user | X | X | X | X | X | user name | |
[0].tty | X | X | X | X | X | terminal | |
[0].date | X | X | X | X | X | login date | |
[0].time | X | X | X | X | X | login time | |
[0].ip | X | X | X | X | ip address (remote login) | ||
[0].command | X | X | X | X | last command or shell |
8. Current Load, Processes & Services
Function | Result object | Linux | BSD | Mac | Win | Sun | Comments |
---|---|---|---|---|---|---|---|
si.currentLoad(cb) | {...} | X | X | X | X | CPU-Load | |
avgLoad | X | X | X | average load | |||
currentLoad | X | X | X | X | CPU load in % | ||
currentLoadUser | X | X | X | X | CPU load user in % | ||
currentLoadSystem | X | X | X | X | CPU load system in % | ||
currentLoadNice | X | X | X | X | CPU load nice in % | ||
currentLoadIdle | X | X | X | X | CPU load idle in % | ||
currentLoadIrq | X | X | X | X | CPU load system in % | ||
rawCurrentLoad... | X | X | X | X | CPU load raw values (ticks) | ||
cpus[] | X | X | X | X | current loads per CPU in % + raw ticks | ||
si.fullLoad(cb) | : integer | X | X | X | CPU full load since bootup in % | ||
si.processes(cb) | {...} | X | X | X | X | X | # running processes |
all | X | X | X | X | X | # of all processes | |
running | X | X | X | X | # of all processes running | ||
blocked | X | X | X | X | # of all processes blocked | ||
sleeping | X | X | X | X | # of all processes sleeping | ||
unknown | X | # of all processes unknown status | |||||
list[] | X | X | X | X | X | list of all processes incl. details | |
...[0].pid | X | X | X | X | X | process PID | |
...[0].parentPid | X | X | X | X | X | parent process PID | |
...[0].name | X | X | X | X | X | process name | |
...[0].cpu | X | X | X | X | X | process % CPU usage | |
...[0].cpuu | X | X | X | process % CPU usage (user) | |||
...[0].cpus | X | X | X | process % CPU usage (system) | |||
...[0].mem | X | X | X | X | X | process memory % | |
...[0].priority | X | X | X | X | X | process priority | |
...[0].memVsz | X | X | X | X | X | process virtual memory size | |
...[0].memRss | X | X | X | X | X | process mem resident set size | |
...[0].nice | X | X | X | X | process nice value | ||
...[0].started | X | X | X | X | X | process start time | |
...[0].state | X | X | X | X | X | process state (e.g. sleeping) | |
...[0].tty | X | X | X | X | tty from which process was started | ||
...[0].user | X | X | X | X | user who started process | ||
...[0].command | X | X | X | X | X | process starting command | |
...[0].params | X | X | X | X | process params | ||
...[0].path | X | X | X | X | X | process path | |
proc | X | X | X | X | process name | ||
pid | X | X | X | X | PID | ||
pids | X | X | X | X | additional pids | ||
cpu | X | X | X | X | process % CPU | ||
mem | X | X | X | X | process % MEM | ||
si.services('mysql, apache2', cb) | [{...}] | X | X | X | X | pass comma separated string of servicespass "*" for ALL services (linux/win only) | |
[0].name | X | X | X | X | name of service | ||
[0].running | X | X | X | X | true / false | ||
[0].startmode | X | manual, automatic, ... | |||||
[0].pids | X | X | X | X | pids | ||
[0].cpu | X | X | X | process % CPU | |||
[0].mem | X | X | X | process % MEM | |||
si.processLoad('mysql, apache2', cb) | [{...}] | X | X | X | X | pass comma separated string of processespass "*" for ALL processes (linux/win only) | |
[0].proc | X | X | X | X | name of process | ||
[0].pids | X | X | X | X | pids | ||
[0].cpu | X | X | X | process % CPU | |||
[0].mem | X | X | X | process % MEM |
9. File System
Function | Result object | Linux | BSD | Mac | Win | Sun | Comments |
---|---|---|---|---|---|---|---|
si.diskLayout(cb) | [{...}] | X | X | X | physical disk layout (array) | ||
[0].device | X | X | e.g. /dev/sda | ||||
[0].type | X | X | X | HD, SSD, NVMe | |||
[0].name | X | X | X | disk name | |||
[0].vendor | X | X | vendor/producer | ||||
[0].size | X | X | X | size in bytes | |||
[0].bytesPerSector | X | bytes per sector | |||||
[0].totalCylinders | X | total cylinders | |||||
[0].totalHeads | X | total heads | |||||
[0].totalSectors | X | total sectors | |||||
[0].totalTracks | X | total tracks | |||||
[0].tracksPerCylinder | X | tracks per cylinder | |||||
[0].sectorsPerTrack | X | sectors per track | |||||
[0].firmwareRevision | X | X | X | firmware revision | |||
[0].serialNum | X | X | X | serial number | |||
[0].interfaceType | X | X | X | SATA, PCIe, ... | |||
[0].smartStatus | X | X | X | S.M.A.R.T Status (see Known Issues) | |||
[0].temperature | X | S.M.A.R.T temperature | |||||
[0].smartData | X | X | full S.M.A.R.T data from smartctlrequires at least smartmontools 7.0 | ||||
si.blockDevices(cb) | [{...}] | X | X | X | returns array of disks, partitions,raids and roms | ||
[0].name | X | X | X | name | |||
[0].type | X | X | X | type | |||
[0].fstype | X | X | X | file system type (e.g. ext4) | |||
[0].mount | X | X | X | mount point | |||
[0].size | X | X | X | size in bytes | |||
[0].physical | X | X | X | physical type (HDD, SSD, CD/DVD) | |||
[0].uuid | X | X | X | UUID | |||
[0].label | X | X | X | label | |||
[0].model | X | X | model | ||||
[0].serial | X | X | serial | ||||
[0].removable | X | X | X | serial | |||
[0].protocol | X | X | protocol (SATA, PCI-Express, ...) | ||||
[0].group | X | Raid group member (e.g. md1) | |||||
[0].device | X | X | X | physical device mapped to (e.g. /dev/sda) | |||
si.disksIO(cb) | {...} | X | X | current transfer stats | |||
rIO | X | X | read IOs on all mounted drives | ||||
wIO | X | X | write IOs on all mounted drives | ||||
tIO | X | X | write IOs on all mounted drives | ||||
rIO_sec | X | X | read IO per sec (* see notes) | ||||
wIO_sec | X | X | write IO per sec (* see notes) | ||||
tIO_sec | X | X | total IO per sec (* see notes) | ||||
rWaitTime | X | read IO request time (* see notes) | |||||
wWaitTime | X | write IO request time (* see notes) | |||||
tWaitTime | X | total IO request time (* see notes) | |||||
rWaitPercent | X | read IO request time percent (* see notes) | |||||
wWaitPercent | X | write IO request time percent (* see notes) | |||||
tWaitPercent | X | total IO request time percent (* see notes) | |||||
ms | X | X | interval length (for per second values) | ||||
si.fsSize(drive, cb) | [{...}] | X | X | X | X | returns array of mounted file systemsdrive param is optional | |
[0].fs | X | X | X | X | name of file system | ||
[0].type | X | X | X | X | type of file system | ||
[0].size | X | X | X | X | sizes in bytes | ||
[0].used | X | X | X | X | used in bytes | ||
[0].available | X | X | X | X | used in bytes | ||
[0].use | X | X | X | X | used in % | ||
[0].mount | X | X | X | X | mount point | ||
[0].rw | X | X | X | X | read and write (false if read only) | ||
si.fsOpenFiles(cb) | {...} | X | X | X | count max/allocated file descriptors | ||
max | X | X | X | max file descriptors | |||
allocated | X | X | X | current open files count | |||
available | X | X | X | count available | |||
si.fsStats(cb) | {...} | X | X | current transfer stats | |||
rx | X | X | bytes read since startup | ||||
wx | X | X | bytes written since startup | ||||
tx | X | X | total bytes read + written since startup | ||||
rx_sec | X | X | bytes read / second (* see notes) | ||||
wx_sec | X | X | bytes written / second (* see notes) | ||||
tx_sec | X | X | total bytes reads + written / second | ||||
ms | X | X | interval length (for per second values) |
10. USB
Function | Result object | Linux | BSD | Mac | Win | Sun | Comments |
---|---|---|---|---|---|---|---|
si.usb(cb) | [{...}] | X | X | X | X | get detected USB devices | |
[0].bus | X | USB bus | |||||
[0].deviceId | X | bus device id | |||||
[0].id | X | X | X | internal id | |||
[0].name | X | X | X | name | |||
[0].type | X | X | X | name | |||
[0].removable | X | is removable | |||||
[0].vendor | X | X | vendor | ||||
[0].manufacturer | X | X | X | manufacturer | |||
[0].maxPower | X | max power | |||||
[0].default | X | X | X | is default printer | |||
[0].serialNumber | X | X | serial number |
11. Printer
Function | Result object | Linux | BSD | Mac | Win | Sun | Comments |
---|---|---|---|---|---|---|---|
si.printer(cb) | [{...}] | X | X | X | X | get printer information | |
[0].id | X | X | X | internal id | |||
[0].name | X | X | X | name | |||
[0].model | X | X | X | model | |||
[0].uri | X | X | printer URI | ||||
[0].uuid | X | printer UUID | |||||
[0].status | X | X | X | printer status (e.g. idle) | |||
[0].local | X | X | X | is local printer | |||
[0].default | X | X | is default printer | ||||
[0].shared | X | X | X | is shared printer |
12. Audio
Function | Result object | Linux | BSD | Mac | Win | Sun | Comments |
---|---|---|---|---|---|---|---|
si.audio(cb) | [{...}] | X | X | X | X | get printer information | |
[0].id | X | X | X | internal id | |||
[0].name | X | X | X | name | |||
[0].manufacturer | X | X | X | manufacturer | |||
[0].revision | X | revision | |||||
[0].driver | X | driver | |||||
[0].default | X | X | is default | ||||
[0].channel | X | X | channel e.g. USB, HDMI, ... | ||||
[0].type | X | X | X | type e.g. Speaker | |||
[0].in | X | X | is input channel | ||||
[0].out | X | X | is output channel | ||||
[0].interfaceType | X | X | X | interface type (PCIe, USB, HDMI, ...) | |||
[0].status | X | X | X | printer status (e.g. idle) |
13. Network related functions
Function | Result object | Linux | BSD | Mac | Win | Sun | Comments |
---|---|---|---|---|---|---|---|
si.networkInterfaces(cb) | [{...}] | X | X | X | X | X | array of network interfacesWith the 'default' parameter it returnsonly the default interface |
[0].iface | X | X | X | X | X | interface | |
[0].ifaceName | X | X | X | X | X | interface name (differs on Windows) | |
[0].default | X | X | X | X | X | true if this is the default interface | |
[0].ip4 | X | X | X | X | X | ip4 address | |
[0].ip4subnet | X | X | X | X | X | ip4 subnet mask | |
[0].ip6 | X | X | X | X | X | ip6 address | |
[0].ip6subnet | X | X | X | X | X | ip6 subnet mask | |
[0].mac | X | X | X | X | X | MAC address | |
[0].internal | X | X | X | X | X | true if internal interface | |
[0].virtual | X | X | X | X | X | true if virtual interface | |
[0].operstate | X | X | X | up / down | |||
[0].type | X | X | X | wireless / wired | |||
[0].duplex | X | X | duplex | ||||
[0].mtu | X | X | maximum transmission unit | ||||
[0].speed | X | X | X | speed in MBit / s | |||
[0].dhcp | X | X | X | IP address obtained by DHCP | |||
[0].dnsSuffix | X | X | DNS suffix | ||||
[0].ieee8021xAuth | X | X | IEEE 802.1x auth | ||||
[0].ieee8021xState | X | X | IEEE 802.1x state | ||||
[0].carrierChanges | X | # changes up/down | |||||
si.networkInterfaceDefault(cb) | : string | X | X | X | X | X | get name of default network interface |
si.networkGatewayDefault(cb) | : string | X | X | X | X | X | get default network gateway |
si.networkStats(ifaces,cb) | [{...}] | X | X | X | X | current network stats of given interfacesiface list: space or comma separatediface parameter is optionaldefaults to first external network interface,Pass '*' for all interfaces | |
[0].iface | X | X | X | X | interface | ||
[0].operstate | X | X | X | X | up / down | ||
[0].rx_bytes | X | X | X | X | received bytes overall | ||
[0].rx_dropped | X | X | X | X | received dropped overall | ||
[0].rx_errors | X | X | X | X | received errors overall | ||
[0].tx_bytes | X | X | X | X | transferred bytes overall | ||
[0].tx_dropped | X | X | X | X | transferred dropped overall | ||
[0].tx_errors | X | X | X | X | transferred errors overall | ||
[0].rx_sec | X | X | X | X | received bytes / second (* see notes) | ||
[0].tx_sec | X | X | X | X | transferred bytes per second (* see notes) | ||
[0].ms | X | X | X | X | interval length (for per second values) | ||
si.networkConnections(cb) | [{...}] | X | X | X | X | current network network connectionsreturns an array of all connections | |
[0].protocol | X | X | X | X | tcp or udp | ||
[0].localAddress | X | X | X | X | local address | ||
[0].localPort | X | X | X | X | local port | ||
[0].peerAddress | X | X | X | X | peer address | ||
[0].peerPort | X | X | X | X | peer port | ||
[0].state | X | X | X | X | like ESTABLISHED, TIME_WAIT, ... | ||
[0].pid | X | X | X | X | process ID | ||
[0].process | X | X | X | process name | |||
si.inetChecksite(url, cb) | {...} | X | X | X | X | X | response-time (ms) to fetch given URL |
url | X | X | X | X | X | given url | |
ok | X | X | X | X | X | status code OK (2xx, 3xx) | |
status | X | X | X | X | X | status code | |
ms | X | X | X | X | X | response time in ms | |
si.inetLatency(host, cb) | : number | X | X | X | X | X | response-time (ms) to external resourcehost parameter is optional (default 8.8.8.8) |
14. Wifi
Function | Result object | Linux | BSD | Mac | Win | Sun | Comments |
---|---|---|---|---|---|---|---|
si.wifiNetworks(cb) | [{...}] | X | X | X | array of available wifi networks | ||
[0].ssid | X | X | X | Wifi network SSID | |||
[0].bssid | X | X | X | BSSID (mac) | |||
[0].mode | X | mode | |||||
[0].channel | X | X | X | channel | |||
[0].frequency | X | X | X | frequency in MHz | |||
[0].signalLevel | X | X | X | signal level in dB | |||
[0].quality | X | X | X | quality in % | |||
[0].security | X | X | X | array e.g. WPA, WPA-2 | |||
[0].wpaFlags | X | X | X | array of WPA flags | |||
[0].rsnFlags | X | array of RDN flags | |||||
si.wifiInterfaces(cb) | [{...}] | X | X | X | array of detected wifi interfaces | ||
[0].id | X | X | X | ID | |||
[0].iface | X | X | X | interface | |||
[0].model | X | X | X | model | |||
[0].vendor | X | X | X | vendor | |||
[0].mac | X | X | X | MAC address | |||
si.wifiConnections(cb) | [{...}] | X | X | X | array of active wifi connections | ||
[0].id | X | X | X | ID | |||
[0].iface | X | X | X | interface | |||
[0].model | X | X | X | model | |||
[0].ssid | X | X | X | SSID | |||
[0].bssid | X | (X) | X | BSSID (mac) - macOS only on older os versions | |||
[0].channel | X | X | X | channel | |||
[0].frequency | X | X | X | frequency in MHz | |||
[0].type | X | X | X | e.g. 802.11 | |||
[0].security | X | X | X | array e.g. WPA, WPA-2 | |||
[0].signalLevel | X | X | X | signal level in dB | |||
[0].quality | X | X | X | quality in % | |||
[0].txRate | X | X | X | transfer rate MBit/s |
15. Bluetooth
Function | Result object | Linux | BSD | Mac | Win | Sun | Comments |
---|---|---|---|---|---|---|---|
si.bluetoothDevices(cb) | [{...}] | X | X | X | ... | ||
[0].device | X | device name | |||||
[0].name | X | X | X | name | |||
[0].macDevice | X | X | MAC address device | ||||
[0].macHost | X | X | MAC address host | ||||
[0].batteryPercent | X | battery level percent | |||||
[0].manufacturer | X | X | manufacturer | ||||
[0].type | X | X | X | type of bluetooth device | |||
[0].connected | X | X | is connected |
16. Docker
Function | Result object | Linux | BSD | Mac | Win | Sun | Comments |
---|---|---|---|---|---|---|---|
si.dockerInfo(cb) | {...} | X | X | X | X | X | returns general docker info |
id | X | X | X | X | X | Docker ID | |
containers | X | X | X | X | X | number of containers | |
containersRunning | X | X | X | X | X | number of running containers | |
containersPaused | X | X | X | X | X | number of paused containers | |
containersStopped | X | X | X | X | X | number of stopped containers | |
images | X | X | X | X | X | number of images | |
driver | X | X | X | X | X | driver (e.g. 'devicemapper', 'overlay2') | |
memoryLimit | X | X | X | X | X | has memory limit | |
swapLimit | X | X | X | X | X | has swap limit | |
kernelMemory | X | X | X | X | X | has kernel memory | |
cpuCfsPeriod | X | X | X | X | X | has CpuCfsPeriod | |
cpuCfsQuota | X | X | X | X | X | has CpuCfsQuota | |
cpuShares | X | X | X | X | X | has CPUShares | |
cpuSet | X | X | X | X | X | has CPUShares | |
ipv4Forwarding | X | X | X | X | X | has IPv4Forwarding | |
bridgeNfIptables | X | X | X | X | X | has BridgeNfIptables | |
bridgeNfIp6tables | X | X | X | X | X | has BridgeNfIp6tables | |
debug | X | X | X | X | X | Debug on | |
nfd | X | X | X | X | X | named data networking forwarding daemon | |
oomKillDisable | X | X | X | X | X | out-of-memory kill disabled | |
ngoroutines | X | X | X | X | X | number NGoroutines | |
systemTime | X | X | X | X | X | docker SystemTime | |
loggingDriver | X | X | X | X | X | logging driver e.g. 'json-file' | |
cgroupDriver | X | X | X | X | X | cgroup driver e.g. 'cgroupfs' | |
nEventsListener | X | X | X | X | X | number NEventsListeners | |
kernelVersion | X | X | X | X | X | docker kernel version | |
operatingSystem | X | X | X | X | X | docker OS e.g. 'Docker for Mac' | |
osType | X | X | X | X | X | OSType e.g. 'linux' | |
architecture | X | X | X | X | X | architecture e.g. x86_64 | |
ncpu | X | X | X | X | X | number of CPUs | |
memTotal | X | X | X | X | X | memory total | |
dockerRootDir | X | X | X | X | X | docker root directory | |
httpProxy | X | X | X | X | X | http proxy | |
httpsProxy | X | X | X | X | X | https proxy | |
noProxy | X | X | X | X | X | NoProxy | |
name | X | X | X | X | X | Name | |
labels | X | X | X | X | X | array of labels | |
experimentalBuild | X | X | X | X | X | is experimental build | |
serverVersion | X | X | X | X | X | server version | |
clusterStore | X | X | X | X | X | cluster store | |
clusterAdvertise | X | X | X | X | X | cluster advertise | |
defaultRuntime | X | X | X | X | X | default runtime e.g. 'runc' | |
liveRestoreEnabled | X | X | X | X | X | live store enabled | |
isolation | X | X | X | X | X | isolation | |
initBinary | X | X | X | X | X | init binary | |
productLicense | X | X | X | X | X | product license | |
si.dockerImages(all, cb) | [{...}] | X | X | X | X | X | returns array of top level/all docker images |
[0].id | X | X | X | X | X | image ID | |
[0].container | X | X | X | X | X | container ID | |
[0].comment | X | X | X | X | X | comment | |
[0].os | X | X | X | X | X | OS | |
[0].architecture | X | X | X | X | X | architecture | |
[0].parent | X | X | X | X | X | parent ID | |
[0].dockerVersion | X | X | X | X | X | docker version | |
[0].size | X | X | X | X | X | image size | |
[0].sharedSize | X | X | X | X | X | shared size | |
[0].virtualSize | X | X | X | X | X | virtual size | |
[0].author | X | X | X | X | X | author | |
[0].created | X | X | X | X | X | created date / time | |
[0].containerConfig | X | X | X | X | X | container config object | |
[0].graphDriver | X | X | X | X | X | graph driver object | |
[0].repoDigests | X | X | X | X | X | repo digests array | |
[0].repoTags | X | X | X | X | X | repo tags array | |
[0].config | X | X | X | X | X | config object | |
[0].rootFS | X | X | X | X | X | root fs object | |
si.dockerContainers(all, cb) | [{...}] | X | X | X | X | X | returns array of active/all docker containers |
[0].id | X | X | X | X | X | ID of container | |
[0].name | X | X | X | X | X | name of container | |
[0].image | X | X | X | X | X | name of image | |
[0].imageID | X | X | X | X | X | ID of image | |
[0].command | X | X | X | X | X | command | |
[0].created | X | X | X | X | X | creation time (unix) | |
[0].started | X | X | X | X | X | creation time (unix) | |
[0].finished | X | X | X | X | X | creation time (unix) | |
[0].createdAt | X | X | X | X | X | creation date time string | |
[0].startedAt | X | X | X | X | X | creation date time string | |
[0].finishedAt | X | X | X | X | X | creation date time string | |
[0].state | X | X | X | X | X | created, running, exited | |
[0].ports | X | X | X | X | X | array of ports | |
[0].mounts | X | X | X | X | X | array of mounts | |
si.dockerContainerStats(ids, cb) | [{...}] | X | X | X | X | X | statistics for specific containerscontainer IDs: space or comma separated,pass '*' for all containers |
[0].id | X | X | X | X | X | Container ID | |
[0].memUsage | X | X | X | X | X | memory usage in bytes | |
[0].memLimit | X | X | X | X | X | memory limit (max mem) in bytes | |
[0].memPercent | X | X | X | X | X | memory usage in percent | |
[0].cpuPercent | X | X | X | X | X | cpu usage in percent | |
[0].pids | X | X | X | X | X | number of processes | |
[0].netIO.rx | X | X | X | X | X | received bytes via network | |
[0].netIO.wx | X | X | X | X | X | sent bytes via network | |
[0].blockIO.r | X | X | X | X | X | bytes read from BlockIO | |
[0].blockIO.w | X | X | X | X | X | bytes written to BlockIO | |
[0].cpuStats | X | X | X | X | X | detailed cpu stats | |
[0].percpuStats | X | X | X | X | X | detailed per cpu stats | |
[0].memoryStats | X | X | X | X | X | detailed memory stats | |
[0].networks | X | X | X | X | X | detailed network stats per interface | |
si.dockerContainerProcesses(id, cb) | [{...}] | X | X | X | X | X | array of processes inside a container |
[0].pidHost | X | X | X | X | X | process ID (host) | |
[0].ppid | X | X | X | X | X | parent process ID | |
[0].pgid | X | X | X | X | X | process group ID | |
[0].user | X | X | X | X | X | effective user name | |
[0].ruser | X | X | X | X | X | real user name | |
[0].group | X | X | X | X | X | effective group name | |
[0].rgroup | X | X | X | X | X | real group name | |
[0].stat | X | X | X | X | X | process state | |
[0].time | X | X | X | X | X | accumulated CPU time | |
[0].elapsed | X | X | X | X | X | elapsed running time | |
[0].nice | X | X | X | X | X | nice value | |
[0].rss | X | X | X | X | X | resident set size | |
[0].vsz | X | X | X | X | X | virtual size in Kbytes | |
[0].command | X | X | X | X | X | command and arguments | |
si.dockerVolumes(cb) | [{...}] | returns array of all docker volumes | |||||
[0].name | X | X | X | X | X | volume name | |
[0].driver | X | X | X | X | X | driver | |
[0].labels | X | X | X | X | X | labels object | |
[0].mountpoint | X | X | X | X | X | mountpoint | |
[0].options | X | X | X | X | X | options | |
[0].scope | X | X | X | X | X | scope | |
[0].created | X | X | X | X | X | created at | |
si.dockerAll(cb) | {...} | X | X | X | X | X | list of all containers including their statsand processes in one single array |
17. Virtual Box
Function | Result object | Linux | BSD | Mac | Win | Sun | Comments |
---|---|---|---|---|---|---|---|
si.vboxInfo(cb) | [{...}] | X | X | X | X | X | returns array general virtual box info |
[0].id | X | X | X | X | X | virtual box ID | |
[0].name | X | X | X | X | X | name | |
[0].running | X | X | X | X | X | vbox is running | |
[0].started | X | X | X | X | X | started date time | |
[0].runningSince | X | X | X | X | X | running since (secs) | |
[0].stopped | X | X | X | X | X | stopped date time | |
[0].stoppedSince | X | X | X | X | X | stopped since (secs) | |
[0].guestOS | X | X | X | X | X | Guest OS | |
[0].hardwareUUID | X | X | X | X | X | Hardware UUID | |
[0].memory | X | X | X | X | X | Memory in MB | |
[0].vram | X | X | X | X | X | VRAM in MB | |
[0].cpus | X | X | X | X | X | CPUs | |
[0].cpuExepCap | X | X | X | X | X | CPU exec cap | |
[0].cpuProfile | X | X | X | X | X | CPU profile | |
[0].chipset | X | X | X | X | X | chipset | |
[0].firmware | X | X | X | X | X | firmware | |
[0].pageFusion | X | X | X | X | X | page fusion | |
[0].configFile | X | X | X | X | X | config file | |
[0].snapshotFolder | X | X | X | X | X | snapshot folder | |
[0].logFolder | X | X | X | X | X | log folder path | |
[0].hpet | X | X | X | X | X | HPET | |
[0].pae | X | X | X | X | X | PAE | |
[0].longMode | X | X | X | X | X | long mode | |
[0].tripleFaultReset | X | X | X | X | X | triple fault reset | |
[0].apic | X | X | X | X | X | APIC | |
[0].x2Apic | X | X | X | X | X | X2APIC | |
[0].acpi | X | X | X | X | X | ACPI | |
[0].ioApic | X | X | X | X | X | IOAPIC | |
[0].biosApicMode | X | X | X | X | X | BIOS APIC mode | |
[0].bootMenuMode | X | X | X | X | X | boot menu Mode | |
[0].bootDevice1 | X | X | X | X | X | bootDevice1 | |
[0].bootDevice2 | X | X | X | X | X | bootDevice2 | |
[0].bootDevice3 | X | X | X | X | X | bootDevice3 | |
[0].bootDevice4 | X | X | X | X | X | bootDevice4 | |
[0].timeOffset | X | X | X | X | X | time Offset | |
[0].rtc | X | X | X | X | X | RTC |
16. "Get All / Observe" - functions
Function | Result object | Linux | BSD | Mac | Win | Sun | Comments |
---|---|---|---|---|---|---|---|
si.getStaticData(cb) | {...} | X | X | X | X | X | all static data at once |
si.getDynamicData(srv,iface,cb) | {...} | X | X | X | X | X | all dynamic data at onceSpecify services and interfaces to monitorDefaults to first external network interfacePass "" for ALL services (linux/win only)Pass "" for ALL network interfaces |
si.getAllData(srv,iface,cb) | {...} | X | X | X | X | X | all data at onceSpecify services and interfaces to monitorDefaults to first external network interfacePass "" for ALL services (linux/win only)Pass "" for ALL network interfaces |
si.get(valueObject,cb) | {...} | X | X | X | X | X | get partial system info data at onceIn valueObject you can defineall values, you want to get back (see documentation for details) |
si.observe(valueObject,interval,cb) | - | X | X | X | X | X | Observe a defined value objectcall callback on changespolling interval in milliseconds |
cb: Asynchronous Function Calls (callback)
Remember: all functions (except version
and time
) are implemented as asynchronous functions! There are now three ways to consume them:
Callback Style
const si = require('systeminformation');
si.cpu(function(data) {
console.log('CPU Information:');
console.log('- manufacturer: ' + data.manufacturer);
console.log('- brand: ' + data.brand);
console.log('- speed: ' + data.speed);
console.log('- cores: ' + data.cores);
console.log('- physical cores: ' + data.physicalCores);
console.log('...');
})
Promises
Promises Style is new in version 3.0.
When omitting callback parameter (cb), then you can use all function in a promise oriented way. All functions (except of version
and time
) are returning a promise, that you can consume:
const si = require('systeminformation');
si.cpu()
.then(data => {
console.log('CPU Information:');
console.log('- manufacturer: ' + data.manufacturer);
console.log('- brand: ' + data.brand);
console.log('- speed: ' + data.speed);
console.log('- cores: ' + data.cores);
console.log('- physical cores: ' + data.physicalCores);
console.log('...');
})
.catch(error => console.error(error));
Async / Await
Using async / await (available since node v7.6)
Since node v7.6 you can also use the async
/ await
pattern. The above example would then look like this:
const si = require('systeminformation');
async function cpuData() {
try {
const data = await si.cpu();
console.log('CPU Information:');
console.log('- manufacturer: ' + data.manufacturer);
console.log('- brand: ' + data.brand);
console.log('- speed: ' + data.speed);
console.log('- cores: ' + data.cores);
console.log('- physical cores: ' + data.physicalCores);
console.log('...');
} catch (e) {
console.log(e)
}
}
Known Issues
macOS - Temperature Sensor
To be able to measure temperature on macOS I created a little additional package. Due to some difficulties
in NPM with optionalDependencies
I unfortunately was getting unexpected warnings on other platforms.
So I decided to drop this optional dependency for macOS - so by default, you will not get correct values.
This additional package is now also supporting Apple Silicon M1/M2/M3 machines.
But if you need to detect macOS temperature just run the following additional installation command:
$ npm install osx-temperature-sensor --save
systeminformation
will then detect this additional library and return the temperature when calling systeminformations standard function cpuTemperature()
Windows Temperature, Battery, ...
get-WmiObject
- which is used to determine temperature and battery sometimes needs to be run with admin
privileges. So if you do not get any values, try to run it again with according
privileges. If you still do not get any values, your system might not support this feature.
In some cases we also discovered that get-WmiObject
returned incorrect temperature values.
Linux Temperature
In some cases you need to install the Linux sensors
package to be able to measure temperature
e.g. on DEBIAN based systems by running sudo apt-get install lm-sensors
Linux S.M.A.R.T. Status
To be able to detect S.M.A.R.T. status on Linux you need to install smartmontools
. On DEBIAN based Linux distributions you can install it by running sudo apt-get install smartmontools
Windows Encoding Issues
I now reimplemented all windows functions to avoid encoding problems (special chacarters). And as Windows 11 now dropped wmic
support, I had to move completely to powershell
. Be sure that powershell version 5+ is installed on your machine. On older Windows versions (7, 8) you might still see encoding problems due to the old powershell version.
*: Additional Notes
In fsStats()
, disksIO()
and networkStats()
the results / sec. values (rx_sec, IOPS, ...) are calculated correctly beginning
with the second call of the function. It is determined by calculating the difference of transferred bytes / IOs
divided by the time between two calls of the function.
The first time you are calling one of these functions, you will get null
for transfer rates. The second time, you should then get statistics based on the time between the two calls ...
So basically, if you e.g. need a value for network stats every second, your code should look like this:
const si = require('systeminformation');
setInterval(function() {
si.networkStats().then(data => {
console.log(data);
})
}, 1000)
Beginning with the second call, you get network transfer values per second.
Finding new issues
I am happy to discuss any comments and suggestions. Please feel free to contact me if you see any possibility of improvement!
Comments
If you have ideas or comments, please do not hesitate to contact me.
Happy monitoring!
Sincerely,
Sebastian Hildebrandt, +innovations
Credits
Written by Sebastian Hildebrandt sebhildebrandt
Contributors
- Guillaume Legrain glegrain
- Riccardo Novaglia richy24
- Quentin Busuttil Buzut
- lapsio lapsio
- csy csy
- Tiago Roldão tiagoroldao
- dragonjet dragonjet
- Adam Reis adamreisnz
- Jimi M ItsJimi
- Git² GitSquared
- weiyin weiyin
- Jorai Rijsdijk Erackron
- Rasmus Porsager porsager
- Nathan Patten nrpatten
- Juan Campuzano juancampuzano
- Ricardo Polo ricardopolo
- Miłosz Dźwigała mily20001
- cconley717 cconley717
- Maria Camila Cubides MariaCamilaCubides
- Aleksander Krasnicki plakak
- Alexis Tyler OmgImAlexis
- Simon Smith si458
OSX Temperature: credits here are going to:
- Frank Stock pcafstockf - for his work on smc-code
Copyright Information
Linux is a registered trademark of Linus Torvalds. Apple, macOS, OS X are registered trademarks of Apple Inc., Windows is a registered trademark of Microsoft Corporation. Node.js is a trademark of Joyent Inc., Intel is a trademark of Intel Corporation, AMD is a trademark of Advanced Micro Devices Inc., Raspberry Pi is a trademark of the Raspberry Pi Foundation, Debian is a trademark owned by Software in the Public Interest, Inc., Ubuntu is a trademark of Canonical Ltd., FreeBSD is a registered trademark of The FreeBSD Foundation, NetBSD is a registered trademark of The NetBSD Foundation, Docker is a trademark of Docker, Inc., Sun, Solaris, OpenSolaris and registered trademarks of Sun Microsystems, VMware is a trademark of VMware Inc, Virtual Box is a trademark of Oracle Corporation, Xen is a registered trademark of Xen Project, QEMU is a trademark of Fabrice Bellard, bochs is a trademark of The Bochs Project, USB and USB Logo are trademarks of USB Implementation Forum, Bluetooth and Bluetooth Logo are trademarks of Bluetooth SIG, Android is a trademark of Google LLC, Parallels is a trademarks of Parallels International GmbH.
All other trademarks are the property of their respective owners.
License
The
MIT
License (MIT)Copyright © 2014-2024 Sebastian Hildebrandt, +innovations.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Further details see LICENSE file.
Articlesto learn more about the cross-platform concepts.
- 1Introduction to Cross-Platform Development: What You Need to Know
- 2Top Cross-Platform Development Frameworks: A Comparative Analysis
- 3React Native vs. Flutter: Which Framework is Right for You?
- 4Cross-Platform Development with Node.js: A Complete Guide
- 5Cross-Platform App Development with Kotlin Multiplatform: A Complete Guide
- 6Using Electron for Cross-Platform Desktop Applications: A Complete Guide
- 7Cross-Platform Mobile Apps vs. Native Apps: Pros and Cons
- 8Cross-Platform App Development for IoT: A New Frontier
- 9Using Progressive Web Apps (PWAs) for Cross-Platform Development
- 10Monetizing Cross-Platform Apps: Strategies for Success
Resourceswhich are currently available to browse on.
mail [email protected] to add your project or resources here 🔥.
- 1Accelerated Container Application Development
https://www.docker.com/
Docker is a platform designed to help developers build, share, and run container applications. We handle the tedious setup, so you can focus on the code.
- 2Get running processes
https://github.com/sindresorhus/ps-list
Get running processes. Contribute to sindresorhus/ps-list development by creating an account on GitHub.
- 3Get the path to the user home directory
https://github.com/sindresorhus/user-home
Get the path to the user home directory. Contribute to sindresorhus/user-home development by creating an account on GitHub.
- 4Recursive version of fs.readdir with streaming api.
https://github.com/paulmillr/readdirp
Recursive version of fs.readdir with streaming api. - paulmillr/readdirp
- 5Tips, tricks, and resources for working with Node.js, and the start of an ongoing conversation on how we can improve the Node.js experience on Microsoft platforms.
https://github.com/Microsoft/nodejs-guidelines
Tips, tricks, and resources for working with Node.js, and the start of an ongoing conversation on how we can improve the Node.js experience on Microsoft platforms. - microsoft/nodejs-guidelines
- 6fs with incremental backoff on EMFILE
https://github.com/isaacs/node-graceful-fs
fs with incremental backoff on EMFILE. Contribute to isaacs/node-graceful-fs development by creating an account on GitHub.
- 7:rocket: Upgrade npm on Windows
https://github.com/felixrieseberg/npm-windows-upgrade
:rocket: Upgrade npm on Windows. Contribute to felixrieseberg/npm-windows-upgrade development by creating an account on GitHub.
- 8Features • GitHub Actions
https://github.com/features/actions
Easily build, package, release, update, and deploy your project in any language—on GitHub or any external system—without having to run code yourself.
- 9Native port of Redis for Windows. Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes, Streams, HyperLogLogs. This repository contains unofficial port of Redis to Windows.
https://github.com/tporadowski/redis
Native port of Redis for Windows. Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Se...
- 10:rage2: make the keys on an object path.sep agnostic.
https://github.com/bcoe/any-path
:rage2: make the keys on an object path.sep agnostic. - bcoe/any-path
- 11Cross-platform `/dev/null`
https://github.com/sindresorhus/dev-null-cli
Cross-platform `/dev/null`. Contribute to sindresorhus/dev-null-cli development by creating an account on GitHub.
- 12Creates a readable stream producing cryptographically strong pseudo-random data using `crypto.randomBytes()`
https://github.com/sindresorhus/random-bytes-readable-stream
Creates a readable stream producing cryptographically strong pseudo-random data using `crypto.randomBytes()` - sindresorhus/random-bytes-readable-stream
- 13Check if the process is running with elevated privileges
https://github.com/sindresorhus/is-elevated
Check if the process is running with elevated privileges - sindresorhus/is-elevated
- 14Create a readable Node.js stream that produces no data (or optionally blank data) or a writable stream that discards data
https://github.com/sindresorhus/noop-stream
Create a readable Node.js stream that produces no data (or optionally blank data) or a writable stream that discards data - sindresorhus/noop-stream
- 15Returns true if the platform is Windows (and Cygwin or MSYS/MinGW for unit tests)
https://github.com/jonschlinkert/is-windows
Returns true if the platform is Windows (and Cygwin or MSYS/MinGW for unit tests) - jonschlinkert/is-windows
- 16Access the system clipboard (copy/paste)
https://github.com/sindresorhus/clipboard-cli
Access the system clipboard (copy/paste). Contribute to sindresorhus/clipboard-cli development by creating an account on GitHub.
- 17Check if the process is running inside Windows Subsystem for Linux (Bash on Windows)
https://github.com/sindresorhus/is-wsl
Check if the process is running inside Windows Subsystem for Linux (Bash on Windows) - sindresorhus/is-wsl
- 18Like which(1) unix command. Find the first instance of an executable in the PATH.
https://github.com/npm/node-which
Like which(1) unix command. Find the first instance of an executable in the PATH. - npm/node-which
- 19Colored symbols for various log levels
https://github.com/sindresorhus/log-symbols
Colored symbols for various log levels. Contribute to sindresorhus/log-symbols development by creating an account on GitHub.
- 20Read and Write to the Windows registry in-process from Node.js. Easily set application file associations and other goodies.
https://github.com/CatalystCode/windows-registry-node
Read and Write to the Windows registry in-process from Node.js. Easily set application file associations and other goodies. - CatalystCode/windows-registry-node
- 21Open stuff like URLs, files, executables. Cross-platform.
https://github.com/sindresorhus/open
Open stuff like URLs, files, executables. Cross-platform. - sindresorhus/open
- 22Fabulously kill processes. Cross-platform.
https://github.com/sindresorhus/fkill
Fabulously kill processes. Cross-platform. Contribute to sindresorhus/fkill development by creating an account on GitHub.
- 23:package: Install C++ Build Tools for Windows using npm
https://github.com/felixrieseberg/windows-build-tools
:package: Install C++ Build Tools for Windows using npm - felixrieseberg/windows-build-tools
- 24Install WSL
https://docs.microsoft.com/en-us/windows/wsl/install-win10
Install Windows Subsystem for Linux with the command, wsl --install. Use a Bash terminal on your Windows machine run by your preferred Linux distribution - Ubuntu, Debian, SUSE, Kali, Fedora, Pengwin, Alpine, and more are available.
- 25Unicode stdout on Windows command prompt · Issue #7940 · nodejs/node-v0.x-archive
https://github.com/nodejs/node-v0.x-archive/issues/7940
With Node.js 0.10.28 running the following: node -e "process.stdout.write('✔');" Outputs ✔ on OS X, but only shows the following on Windows 8.1 command prompt: It would be very useful if Unicode ch...
- 26Copy files
https://github.com/sindresorhus/cpy
Copy files. Contribute to sindresorhus/cpy development by creating an account on GitHub.
- 27Look up environment settings specific to different operating systems.
https://github.com/npm/osenv
Look up environment settings specific to different operating systems. - npm/osenv
- 28Unicode symbols with fallbacks for older terminals
https://github.com/sindresorhus/figures
Unicode symbols with fallbacks for older terminals - sindresorhus/figures
- 29Node.js — Download Node.js®
https://nodejs.org/en/download/
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
- 30Get the username of the current user
https://github.com/sindresorhus/username
Get the username of the current user. Contribute to sindresorhus/username development by creating an account on GitHub.
- 31Check if a process is running
https://github.com/sindresorhus/process-exists
Check if a process is running. Contribute to sindresorhus/process-exists development by creating an account on GitHub.
- 32when you want to fire an event no matter how a process exits.
https://github.com/tapjs/signal-exit
when you want to fire an event no matter how a process exits. - tapjs/signal-exit
- 33Make a directory and its parents if needed - Think `mkdir -p`
https://github.com/sindresorhus/make-dir
Make a directory and its parents if needed - Think `mkdir -p` - sindresorhus/make-dir
- 34Get the name of the current operating system. Example: macOS Sierra
https://github.com/sindresorhus/os-name
Get the name of the current operating system. Example: macOS Sierra - sindresorhus/os-name
- 35node module that provides access to the Windows Registry through the REG commandline tool
https://github.com/fresc81/node-winreg
node module that provides access to the Windows Registry through the REG commandline tool - fresc81/node-winreg
- 36Automated installation of the Microsoft IE App Compat virtual machines
https://github.com/amichaelparker/ievms
Automated installation of the Microsoft IE App Compat virtual machines - amichaelparker/ievms
- 37Human-friendly process signals
https://github.com/ehmicky/human-signals
Human-friendly process signals. Contribute to ehmicky/human-signals development by creating an account on GitHub.
- 38Gulp.js command execution for humans
https://github.com/ehmicky/gulp-execa
Gulp.js command execution for humans. Contribute to ehmicky/gulp-execa development by creating an account on GitHub.
- 39Get the global cache directory
https://github.com/ehmicky/global-cache-dir
Get the global cache directory. Contribute to ehmicky/global-cache-dir development by creating an account on GitHub.
- 40📗 How to write cross-platform Node.js code
https://github.com/ehmicky/cross-platform-node-guide
📗 How to write cross-platform Node.js code. Contribute to ehmicky/cross-platform-node-guide development by creating an account on GitHub.
- 41A `rm -rf` util for nodejs
https://github.com/isaacs/rimraf
A `rm -rf` util for nodejs. Contribute to isaacs/rimraf development by creating an account on GitHub.
- 42Delete files and directories
https://github.com/sindresorhus/del
Delete files and directories. Contribute to sindresorhus/del development by creating an account on GitHub.
- 43🔀 Cross platform setting of environment scripts
https://github.com/kentcdodds/cross-env
🔀 Cross platform setting of environment scripts. Contribute to kentcdodds/cross-env development by creating an account on GitHub.
- 44Node version management
https://github.com/tj/n
Node version management. Contribute to tj/n development by creating an account on GitHub.
- 45Access the system clipboard (copy/paste)
https://github.com/sindresorhus/clipboardy
Access the system clipboard (copy/paste). Contribute to sindresorhus/clipboardy development by creating an account on GitHub.
- 46All the characters that work on most terminals
https://github.com/ehmicky/cross-platform-terminal-characters
All the characters that work on most terminals. Contribute to ehmicky/cross-platform-terminal-characters development by creating an account on GitHub.
- 47Minimal and efficient cross-platform file watching library
https://github.com/paulmillr/chokidar
Minimal and efficient cross-platform file watching library - paulmillr/chokidar
- 48A Node.js module for sending notifications on native Mac, Windows and Linux (or Growl as fallback)
https://github.com/mikaelbr/node-notifier
A Node.js module for sending notifications on native Mac, Windows and Linux (or Growl as fallback) - mikaelbr/node-notifier
- 49Process execution for humans
https://github.com/sindresorhus/execa
Process execution for humans. Contribute to sindresorhus/execa development by creating an account on GitHub.
- 50A node.js version management utility for Windows. Ironically written in Go.
https://github.com/coreybutler/nvm-windows
A node.js version management utility for Windows. Ironically written in Go. - coreybutler/nvm-windows
- 51A Node.js module that returns the OS/Distribution name of the environment you are working on
https://github.com/retrohacker/getos
A Node.js module that returns the OS/Distribution name of the environment you are working on - retrohacker/getos
- 52🗃 Simple access to, and manipulation of, the Windows Registry. With promises. Without rage.
https://github.com/MikeKovarik/rage-edit
🗃 Simple access to, and manipulation of, the Windows Registry. With promises. Without rage. - MikeKovarik/rage-edit
- 53Windows support for Node.JS scripts (daemons, eventlog, UAC, etc).
https://github.com/coreybutler/node-windows
Windows support for Node.JS scripts (daemons, eventlog, UAC, etc). - coreybutler/node-windows
- 54:shell: Portable Unix shell commands for Node.js
https://github.com/shelljs/shelljs
:shell: Portable Unix shell commands for Node.js. Contribute to shelljs/shelljs development by creating an account on GitHub.
- 55Node.js: extra methods for the fs object like copy(), remove(), mkdirs()
https://github.com/jprichardson/node-fs-extra
Node.js: extra methods for the fs object like copy(), remove(), mkdirs() - jprichardson/node-fs-extra
- 56🖥️ A list of awesome packages and frameworks for implementing javascript applications on the desktop
https://github.com/styfle/awesome-desktop-js
🖥️ A list of awesome packages and frameworks for implementing javascript applications on the desktop - styfle/awesome-desktop-js
- 57A cross platform solution to node's spawn and spawnSync
https://github.com/IndigoUnited/node-cross-spawn
A cross platform solution to node's spawn and spawnSync - moxystudio/node-cross-spawn
- 58Wrap all spawned Node.js child processes by adding environs and arguments ahead of the main JavaScript file argument.
https://github.com/isaacs/spawn-wrap#contracts-and-caveats
Wrap all spawned Node.js child processes by adding environs and arguments ahead of the main JavaScript file argument. - istanbuljs/spawn-wrap
- 59System Information Library for Node.JS
https://github.com/sebhildebrandt/systeminformation
System Information Library for Node.JS. Contribute to sebhildebrandt/systeminformation development by creating an account on GitHub.
- 60child_process.spawn ignores PATHEXT on Windows · Issue #2318 · nodejs/node-v0.x-archive
https://github.com/nodejs/node-v0.x-archive/issues/2318
For example require('child.process').spawn('mycmd') won't find C:\util\mycmd.bat when PATH contains C:\util and PATHEXT contains .BAT. Ye olde code (https://github.com/joyent/node/blob/v0.4/src/nod...
- 61Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions
https://github.com/creationix/nvm
Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions - nvm-sh/nvm
FAQ'sto know more about the topic.
mail [email protected] to add your project or resources here 🔥.
- 1What should I do if my app crashes on one platform but not on others?
- 2How can I fix performance issues in my cross-platform app?
- 3What can I do if my app's UI looks different on various platforms?
- 4How do I handle API differences in cross-platform development?
- 5What steps should I take if my cross-platform app has inconsistent data storage?
- 6How can I troubleshoot build errors when developing cross-platform apps?
- 7What should I do if my app does not respond on a specific platform?
- 8How do I address user permissions issues in cross-platform apps?
- 9What steps should I take if my app's functionality is limited on certain platforms?
- 10How do I troubleshoot cross-platform compatibility issues?
- 11What can I do if my app's build time is excessively long?
- 12How do I handle feature parity in cross-platform development?
- 13What steps should I take if my app has localization issues?
- 14How can I manage user sessions in a cross-platform app?
- 15What should I do if my cross-platform app has network connectivity issues?
- 16How do I implement testing strategies for cross-platform apps?
- 17What can I do if users report unexpected behavior in my app?
- 18How do I implement push notifications in cross-platform apps?
- 19How do I troubleshoot performance issues in cross-platform apps?
- 20What should I do if my app crashes on a specific platform?
- 21How do I fix broken UI elements in my cross-platform app?
- 22How do I handle permissions in cross-platform apps?
- 23What steps should I take to ensure proper debugging across platforms?
- 24How can I manage API responses effectively in a cross-platform app?
- 25What should I do if my app's features are not syncing correctly across devices?
- 26How do I optimize images for cross-platform applications?
- 27How do I handle inconsistent user experience across platforms?
- 28What can I do if the app's loading speed varies across platforms?
- 29How do I troubleshoot network-related issues in my cross-platform app?
- 30What should I do if my app behaves differently in different environments?
- 31How do I debug API integration issues in my cross-platform app?
- 32What can I do if my app doesn't support certain device features?
- 33How do I fix localization issues in cross-platform apps?
- 34What should I do if users are experiencing connectivity issues in my app?
- 35How do I resolve issues with third-party libraries in my cross-platform app?
- 36What steps should I take to improve cross-platform app security?
- 37How can I optimize the app's performance across different devices?
- 38How do I manage updates in my cross-platform application effectively?
- 39What should I do if I encounter compatibility issues with older devices?
- 40How can I handle user feedback effectively in my cross-platform app?
- 41What steps should I take to ensure proper app testing across platforms?
- 42How can I resolve build errors in cross-platform development?
- 43What should I do if my app is crashing on specific devices?
- 44How do I handle localization in my cross-platform app?
- 45What steps should I take to improve my app's user experience (UX)?
- 46How can I manage different screen sizes and orientations effectively?
- 47What should I do if my app's performance is slow?
- 48How do I effectively manage app dependencies?
- 49What steps can I take to enhance accessibility in my cross-platform app?
- 50How can I troubleshoot issues with push notifications?
- 51What steps should I follow to ensure data synchronization across platforms?
- 52How do I fix layout issues on different devices?
- 53What should I do if my app is consuming too much battery?
- 54How can I effectively test my cross-platform app?
- 55What steps can I take to manage user authentication effectively?
- 56How can I troubleshoot issues with third-party libraries?
- 57How can I fix issues with app permissions on mobile devices?
- 58What steps should I take if my app crashes on startup?
- 59How can I resolve conflicts during version control?
- 60What steps can I take to handle memory leaks in my application?
- 61How do I troubleshoot API response issues?
- 62What should I do if my app's UI elements are not rendering correctly?
- 63How can I improve the responsiveness of my application?
- 64What steps should I take to handle user feedback effectively?
- 65How can I troubleshoot a slow application?
- 66What should I do if my app's localization is not working?
- 67How do I handle user authentication issues?
- 68What steps can I take to resolve database connection errors?
- 69How do I fix broken links in my application?
- 70What steps should I take if my app's push notifications aren't working?
- 71How can I troubleshoot issues with responsive design?
- 72What should I do if my app's animations are lagging?
- 73How do I handle CORS errors in my application?
- 74How can I resolve issues with file uploads in my application?
- 75What steps should I take if my app is experiencing crashes?
- 76How do I troubleshoot API response issues?
- 77What should I do if my app is not displaying correctly in certain browsers?
- 78How can I fix issues with custom fonts in my web application?
- 79What steps should I take if my application is showing outdated content?
- 80How do I troubleshoot issues with state management in my application?
- 81What should I check if my application is loading slowly?
- 82How can I troubleshoot issues with third-party API integrations?
- 83What should I do if my application is not responding?
- 84How do I resolve problems with user authentication in my application?
- 85What steps should I take if my application has broken links?
- 86How can I resolve issues with payment processing in my application?
- 87What should I check if my application is displaying incorrect data?
- 88How can I troubleshoot issues with mobile responsiveness?
- 89What steps should I take if my application is crashing frequently?
- 90How can I fix issues with outdated content in my application?
- 91How can I resolve issues with cross-browser compatibility?
- 92What should I do if my application is loading slowly?
- 93How can I fix issues with user notifications in my application?
- 94What steps should I take if my application crashes on specific devices?
- 95How can I troubleshoot issues with form validation?
- 96What should I check if my application is not connecting to the database?
- 97How can I fix issues with third-party libraries in my application?
- 98What steps should I take to ensure application security?
- 99How can I troubleshoot issues with user authentication?
- 100What steps should I take to resolve API integration issues?
- 101How can I fix issues with responsive design?
- 102How can I troubleshoot build errors in my project?
- 103What steps can I take to resolve database connection issues?
- 104How do I fix issues with third-party integrations?
- 105What steps should I take to resolve frontend performance issues?
- 106How can I troubleshoot cross-browser compatibility issues?
- 107What steps should I take to resolve API rate limiting issues?
- 108How can I troubleshoot mobile app performance issues?
- 109What steps can I take to resolve issues with code dependencies?
- 110How can I troubleshoot data serialization issues?
- 111What steps should I take to resolve issues with user authentication?
- 112How can I troubleshoot issues with file uploads?
- 113What steps should I take to troubleshoot issues with SSL certificates?
- 114How can I resolve issues with API versioning?
- 115What steps can I take to troubleshoot web socket connections?
- 116How can I resolve issues with mobile app testing?
- 117What steps can I take to resolve issues with build failures?
- 118How can I troubleshoot API call failures?
- 119What steps can I take to fix errors in my application’s deployment?
- 120How can I resolve issues with caching in my application?
- 121What steps can I take to troubleshoot SSL certificate problems?
- 122How can I resolve issues with API versioning?
- 123What steps can I take to troubleshoot web socket connections?
- 124How can I resolve issues with mobile app testing?
- 125How can I troubleshoot errors in my web application?
- 126What steps should I take to optimize my application’s performance?
- 127How can I fix common issues with responsive web design?
- 128What are the steps to secure my web application?
- 129How can I resolve issues with version control?
- 130What are the best practices for API development?
- 131How can I manage dependencies in my Node.js application?
- 132What steps should I follow for effective project management in software development?
- 133How do I handle user feedback effectively?
- 134How can I streamline the deployment process for my application?
- 135What are the steps to effectively onboard new team members?
- 136How can I ensure code quality in my projects?
- 137What steps should I take to improve my team's collaboration?
- 138How can I track my application's performance?
- 139What are the best practices for maintaining a clean codebase?
- 140How can I enhance user experience in my application?
- 141How do I effectively manage remote teams?
- 142What strategies can I use for effective time management?
- 143How do I effectively onboard new team members?
- 144How can I resolve build errors in my cross-platform app?
- 145What should I do if my app crashes on startup?
- 146How do I fix network connectivity issues in my app?
- 147How can I troubleshoot performance issues in my cross-platform app?
- 148How can I handle user input validation errors?
- 149How can I fix issues with third-party API integrations?
- 150What steps should I take if my mobile app is not responding?
- 151How can I manage version control conflicts in Git?
- 152What should I do if my app's UI is not displaying correctly?
- 153How can I troubleshoot database connection issues?
- 154How can I troubleshoot slow performance in my web app?
- 155What should I do if my app doesn't load in a browser?
- 156How do I handle authentication errors in my application?
- 157What should I do if my API requests are failing?
- 158How can I recover from a failed software deployment?
- 159What steps should I take if my app is experiencing memory leaks?
- 160How can I fix cross-browser compatibility issues in my web app?
- 161What should I do if my app crashes unexpectedly?
- 162How can I manage API versioning in my application?
- 163How can I resolve dependency conflicts in my project?
- 164What should I do if my app's API rate limit is exceeded?
- 165How can I improve my app's performance on mobile devices?
- 166What should I do if my web app is slow?
- 167How can I ensure my web app is accessible to all users?
- 168What should I do if my app is experiencing security vulnerabilities?
- 169How can I manage user sessions securely?
- 170What should I do if my app is not scaling well?
- 171How can I fix broken links in my web app?
- 172What steps should I take to optimize my web app for search engines?
- 173How can I handle CORS issues in my web app?
- 174What should I do if my web app has memory leaks?
- 175How can I improve the security of my web app?
- 176What should I do if my API is returning errors?
- 177How can I implement user authentication in my web app?
- 178What should I do if my web app is slow?
- 179How can I manage state in my web app effectively?
- 180What should I do if my web app's deployment fails?
- 181How can I implement logging in my web app?
- 182How can I test my web app for performance issues?
- 183How do I fix a broken deployment in my web app?
- 184What steps should I take to optimize my web app's loading speed?
- 185How do I troubleshoot API connection issues in my web app?
- 186What should I do if my web app's performance degrades over time?
- 187How do I manage user authentication and authorization in my web app?
- 188What steps should I take to recover a lost database connection?
- 189How can I debug JavaScript errors in my web application?
- 190What should I do if my web app keeps crashing?
- 191How do I resolve version conflicts in dependencies?
- 192How can I improve error handling in my web application?
- 193How do I handle CORS issues in my web app?
Queriesor most google FAQ's about Cross-Platform.
mail [email protected] to add more queries here 🔍.
- 1
cross platform app development 2024
- 2
flutter cross platform app development
- 3
multi platform development
- 4
cross platform mobile app development full course
- 5
cross platform mobile app development شرح
- 6
cross platform or native mobile development
- 7
visual studio cross platform app development
- 8
cross platform game development
- 9
cross platform development
- 10
cross-platform mobile development
- 11
cross platform desktop application development
- 12
cross platform vs native development
- 13
cross platform mobile app development roadmap
- 14
cross platform web development
- 15
cross platform app development tutorial
- 16
cross platform mobile development
- 17
xamarin cross platform app development tutorial
- 18
cross platform desktop application development c#
- 19
cross platform mobile app development
- 20
front end and cross platform mobile development
- 21
best cross platform mobile app development framework
- 22
python cross platform app development
- 23
what is cross platform app development
- 24
best cross platform app development frameworks 2023
- 25
best cross platform app development frameworks 2024
- 26
what is cross platform development
- 27
java cross platform app development
- 28
cross platform mobile app development in tamil
- 29
native vs cross platform mobile app development
- 30
cross platform app development roadmap
- 31
mobile cross platform development
- 32
cross platform app development full course
- 33
best programming language for cross platform app development
- 34
cross platform app development react native
- 35
cross platform app development
- 36
c++ cross platform development
- 37
cross platform software development
- 38
cross platform application development
- 39
lyra cross-platform ui development
- 40
android os cross platform app development
- 41
cross platform desktop app development
- 42
best cross platform development framework
- 43
ionic cross platform development
- 44
cross platform vs hybrid app development
- 45
cross platform mobile app development course
- 46
cross platform mobile app development tutorial
- 47
cross platform app development course
- 48
cross platform development for ios and android
- 49
cross platform mobile app development 2024
- 50
cross platform mobile game development
- 51
cross platform development frameworks
- 52
native or cross platform mobile development
- 53
what is cross platform app development in tamil
- 54
kotlin cross platform development
More Sitesto check out once you're finished browsing here.
https://www.0x3d.site/
0x3d is designed for aggregating information.
https://nodejs.0x3d.site/
NodeJS Online Directory
https://cross-platform.0x3d.site/
Cross Platform Online Directory
https://open-source.0x3d.site/
Open Source Online Directory
https://analytics.0x3d.site/
Analytics Online Directory
https://javascript.0x3d.site/
JavaScript Online Directory
https://golang.0x3d.site/
GoLang Online Directory
https://python.0x3d.site/
Python Online Directory
https://swift.0x3d.site/
Swift Online Directory
https://rust.0x3d.site/
Rust Online Directory
https://scala.0x3d.site/
Scala Online Directory
https://ruby.0x3d.site/
Ruby Online Directory
https://clojure.0x3d.site/
Clojure Online Directory
https://elixir.0x3d.site/
Elixir Online Directory
https://elm.0x3d.site/
Elm Online Directory
https://lua.0x3d.site/
Lua Online Directory
https://c-programming.0x3d.site/
C Programming Online Directory
https://cpp-programming.0x3d.site/
C++ Programming Online Directory
https://r-programming.0x3d.site/
R Programming Online Directory
https://perl.0x3d.site/
Perl Online Directory
https://java.0x3d.site/
Java Online Directory
https://kotlin.0x3d.site/
Kotlin Online Directory
https://php.0x3d.site/
PHP Online Directory
https://react.0x3d.site/
React JS Online Directory
https://angular.0x3d.site/
Angular JS Online Directory