_.isSymbol is a Lodash Lang helper since 4.0.0. It runs anywhere Lodash runs on an ES2015+ engine with Symbol — modern browsers (CDN or bundle) and Node.js / Bun / Deno with npm install lodash.
✓ Stable · Lodash 4.0.0+
_.isSymbol()
Available in [email protected] full builds and the lodash/isSymbol modular import. Requires a runtime that provides the Symbol built-in (all modern engines).
100%With Lodash 4.x + Symbol
Google ChromeSupported · Desktop & Mobile
Full support
Mozilla FirefoxSupported · Desktop & Mobile
Full support
Apple SafariSupported · macOS & iOS
Full support
Microsoft EdgeSupported · Chromium
Full support
Internet ExplorerNo native support · Use a polyfill
Polyfill
OperaSupported · Modern versions
Full support
Samsung InternetSupported · Android
Full support
BunSupported · JavaScript runtime
Supported
DenoSupported · JavaScript runtime
Supported
Node.jsSupported · Server runtime
Supported
Android WebViewSupported · Modern WebView
Full support
_.isSymbolLodash 4.0.0+
Bottom line: Safe for production once Lodash is loaded on an ES2015+ runtime. Prefer import isSymbol from "lodash/isSymbol" for smaller bundles. For primitives only, typeof value === "symbol" is enough.
Frequently Asked Questions
_.isSymbol(value) returns true if value is a Symbol primitive or a boxed Symbol object. Strings, numbers, null, and plain objects return false.
Yes. Well-known symbols like Symbol.iterator are real Symbol primitives — _.isSymbol(Symbol.iterator) is true.
Yes. Lodash also accepts boxed Symbol objects. typeof alone reports "object" for those wrappers.
typeof only catches primitives. _.isSymbol also accepts rare Object(sym) wrappers via the [object Symbol] brand.
No. Symbol('x') !== Symbol('x'). Each call creates a new unique Symbol; the description is only for debugging.
Use import isSymbol from "lodash/isSymbol" or require("lodash/isSymbol"). Full build: import _ from "lodash" then _.isSymbol.