PettyUI/.firecrawl/search-moltar-bench.json
2026-03-30 12:08:51 +07:00

1 line
67 KiB
JSON
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"success":true,"data":{"web":[{"url":"https://github.com/moltar/typescript-runtime-type-benchmarks","title":"moltar/typescript-runtime-type-benchmarks: Benchmark Comparison ...","description":"Benchmark Comparison of Packages with Runtime Validation and TypeScript Support. Benchmark results have changed after switching to isolated node processes.","position":1,"category":"github","markdown":"[Skip to content](https://github.com/moltar/typescript-runtime-type-benchmarks#start-of-content)\n\nYou signed in with another tab or window. [Reload](https://github.com/moltar/typescript-runtime-type-benchmarks) to refresh your session.You signed out in another tab or window. [Reload](https://github.com/moltar/typescript-runtime-type-benchmarks) to refresh your session.You switched accounts on another tab or window. [Reload](https://github.com/moltar/typescript-runtime-type-benchmarks) to refresh your session.Dismiss alert\n\n{{ message }}\n\n[moltar](https://github.com/moltar)/ **[typescript-runtime-type-benchmarks](https://github.com/moltar/typescript-runtime-type-benchmarks)** Public\n\n- [Notifications](https://github.com/login?return_to=%2Fmoltar%2Ftypescript-runtime-type-benchmarks) You must be signed in to change notification settings\n- [Fork\\\\\n87](https://github.com/login?return_to=%2Fmoltar%2Ftypescript-runtime-type-benchmarks)\n- [Star\\\\\n817](https://github.com/login?return_to=%2Fmoltar%2Ftypescript-runtime-type-benchmarks)\n\n\nmaster\n\n[**26** Branches](https://github.com/moltar/typescript-runtime-type-benchmarks/branches) [**0** Tags](https://github.com/moltar/typescript-runtime-type-benchmarks/tags)\n\n[Go to Branches page](https://github.com/moltar/typescript-runtime-type-benchmarks/branches)[Go to Tags page](https://github.com/moltar/typescript-runtime-type-benchmarks/tags)\n\nGo to file\n\nCode\n\nOpen more actions menu\n\n## Folders and files\n\n| Name | Name | Last commit message | Last commit date |\n| --- | --- | --- | --- |\n| ## Latest commit<br>[![renovate[bot]](https://avatars.githubusercontent.com/in/2740?v=4&size=40)](https://github.com/apps/renovate)[renovate\\[bot\\]](https://github.com/moltar/typescript-runtime-type-benchmarks/commits?author=renovate%5Bbot%5D)<br>[feat: 24.x adds auto-generated benchmarks and bar graph](https://github.com/moltar/typescript-runtime-type-benchmarks/commit/326a3b72768b16656a98fd9a3232455c5ba11425)<br>yesterdayMar 27, 2026<br>[326a3b7](https://github.com/moltar/typescript-runtime-type-benchmarks/commit/326a3b72768b16656a98fd9a3232455c5ba11425) · yesterdayMar 27, 2026<br>## History<br>[11,436 Commits](https://github.com/moltar/typescript-runtime-type-benchmarks/commits/master/) <br>Open commit details<br>[View commit history for this file.](https://github.com/moltar/typescript-runtime-type-benchmarks/commits/master/) 11,436 Commits |\n| [.github](https://github.com/moltar/typescript-runtime-type-benchmarks/tree/master/.github \".github\") | [.github](https://github.com/moltar/typescript-runtime-type-benchmarks/tree/master/.github \".github\") | [Merge pull request](https://github.com/moltar/typescript-runtime-type-benchmarks/commit/ad17122625a81047d347babb4ec8c36a06b90d96 \"Merge pull request #1874 from DarkGL/chore/cleanup-nodejs-setup chore: update Node.js versions in CI workflows\") [#1874](https://github.com/moltar/typescript-runtime-type-benchmarks/pull/1874) [from DarkGL/chore/cleanup-nodejs-setup](https://github.com/moltar/typescript-runtime-type-benchmarks/commit/ad17122625a81047d347babb4ec8c36a06b90d96 \"Merge pull request #1874 from DarkGL/chore/cleanup-nodejs-setup chore: update Node.js versions in CI workflows\") | 10 months agoMay 31, 2025 |\n| [.vscode](https://github.com/moltar/typescript-runtime-type-benchmarks/tree/master/.vscode \".vscode\") | [.vscode](https://github.com/moltar/typescript-runtime-type-benchmarks/tree/master/.vscode \".vscode\") | [add skipLibCheck to tsconfig](https://github.com/moltar/typescript-runtime-type-benchmarks/commit/320c9f47b231322a322f93f58c7cf5a1a71b3023 \"add skipLibCheck to tsconfig\") | 2 years agoMay 15, 2024 |\n| [benchmarks](https://github.com/moltar/typescript-runtime-type-benchmarks/tree/master/benchmarks \"benchmarks\") | [benchmarks](https://github.com/moltar/typescript-runtime-type-benchmarks/tree/master/benchmarks \"benchmarks\") | [fix: lint errors](https://github.com/moltar/typescript-runtime-type-benchmarks/commit/266b7ad4ba9716ec7478074a7d49313217955903 \"fix: lint errors\") | last yearFeb 14, 2025 |\n| [cases](https://github.com/moltar/typescript-runtime-type-benchmarks/tree/master/cases \"cases\") | [cases](https://github.com/moltar/typescript-runtime-type-benchmarks/tree/master/cases \"cases\") | [fix(zod4): replace deprecated z.interface with z.object (](https://github.com/moltar/typescript-runtime-type-benchmarks/commit/397f6bcce132ac48011dd1424b61a3b398ed3151 \"fix(zod4): replace deprecated z.interface with z.object (#2214) Zod v4 dropped z.interface, z.looseInterface, and z.strictInterface. Updated to use z.object with appropriate modifiers: - z.interface -> z.object - z.looseInterface -> z.object().passthrough() - z.strictInterface -> z.object().strict() Fixes #2213\") [#2214](https://github.com/moltar/typescript-runtime-type-benchmarks/pull/2214) [)](https://github.com/moltar/typescript-runtime-type-benchmarks/commit/397f6bcce132ac48011dd1424b61a3b398ed3151 \"fix(zod4): replace deprecated z.interface with z.object (#2214) Zod v4 dropped z.interface, z.looseInterface, and z.strictInterface. Updated to use z.object with appropriate modifiers: - z.interface -> z.object - z.looseInterface -> z.object().passthrough() - z.strictInterface -> z.object().strict() Fixes #2213\") | 2 months agoJan 3, 2026 |\n| [docs](https://github.com/moltar/typescript-runtime-type-benchmarks/tree/master/docs \"docs\") | [docs](https://github.com/moltar/typescript-runtime-type-benchmarks/tree/master/docs \"docs\") | [feat: 24.x adds auto-generated benchmarks and bar graph](https://github.com/moltar/typescript-runtime-type-benchmarks/commit/326a3b72768b16656a98fd9a3232455c5ba11425 \"feat: 24.x adds auto-generated benchmarks and bar graph\") | yesterdayMar 27, 2026 |\n| [test](https://github.com/moltar/typescript-runtime-type-benchmarks/tree/master/test \"test\") | [test](https://github.com/moltar/typescript-runtime-type-benchmarks/tree/master/test \"test\") | [Add Sury to the benchmark (](https://github.com/moltar/typescript-runtime-type-benchmarks/commit/ffe01844212a5c029c8be9a48b346b2b9c82125a \"Add Sury to the benchmark (#1896)\") [#1896](https://github.com/moltar/typescript-runtime-type-benchmarks/pull/1896) [)](https://github.com/moltar/typescript-runtime-type-benchmarks/commit/ffe01844212a5c029c8be9a48b346b2b9c82125a \"Add Sury to the benchmark (#1896)\") | 10 months agoMay 21, 2025 |\n| [.eslintignore](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/.eslintignore \".eslintignore\") | [.eslintignore](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/.eslintignore \".eslintignore\") | [feat: Add Paseri to benchmarks](https://github.com/moltar/typescript-runtime-type-benchmarks/commit/4f76e031b895929239a3e831a988809087b07c79 \"feat: Add Paseri to benchmarks\") | last yearJan 17, 2025 |\n| [.eslintrc.json](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/.eslintrc.json \".eslintrc.json\") | [.eslintrc.json](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/.eslintrc.json \".eslintrc.json\") | [disable benchmark eslint on viewer app](https://github.com/moltar/typescript-runtime-type-benchmarks/commit/0aa70c4e411cd1bde0e054179bca178608aeb1f0 \"disable benchmark eslint on viewer app This app is separated from the benchmark script stuff so it should have its own eslint and rules.\") | 11 months agoApr 27, 2025 |\n| [.gitignore](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/.gitignore \".gitignore\") | [.gitignore](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/.gitignore \".gitignore\") | [static viewer app build and deploy](https://github.com/moltar/typescript-runtime-type-benchmarks/commit/819b72cd53d5cab7119376328763e78943c95d61 \"static viewer app build and deploy Results and the popularity json file stay at their current place. So if someone wanted to gather all the historical benchmark data, one wont have to deal with too many files moving around.\") | 11 months agoApr 27, 2025 |\n| [.npmrc](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/.npmrc \".npmrc\") | [.npmrc](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/.npmrc \".npmrc\") | [feat: Add Paseri to benchmarks](https://github.com/moltar/typescript-runtime-type-benchmarks/commit/4f76e031b895929239a3e831a988809087b07c79 \"feat: Add Paseri to benchmarks\") | last yearJan 17, 2025 |\n| [.prettierrc.js](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/.prettierrc.js \".prettierrc.js\") | [.prettierrc.js](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/.prettierrc.js \".prettierrc.js\") | [chore: fixes gts 2.0 issues](https://github.com/moltar/typescript-runtime-type-benchmarks/commit/5b325e7e06663b334a41890f6afa41585b8a25eb \"chore: fixes gts 2.0 issues\") | 6 years agoApr 13, 2020 |\n| [README.md](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/README.md \"README.md\") | [README.md](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/README.md \"README.md\") | [add dhi to readme](https://github.com/moltar/typescript-runtime-type-benchmarks/commit/37029e27389dd8da64790e9e932da25080b8f590 \"add dhi to readme Also fix formatting of the joi link\") | 5 months agoOct 22, 2025 |\n| [bun.lock](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/bun.lock \"bun.lock\") | [bun.lock](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/bun.lock \"bun.lock\") | [feat: 1.2.12 adds auto-generated benchmarks and bar graph](https://github.com/moltar/typescript-runtime-type-benchmarks/commit/5ea7513d21da240e06c693f70d00b04497faad9b \"feat: 1.2.12 adds auto-generated benchmarks and bar graph\") | yesterdayMar 27, 2026 |\n| [bunfig.toml](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/bunfig.toml \"bunfig.toml\") | [bunfig.toml](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/bunfig.toml \"bunfig.toml\") | [chore: add run configuration for bun](https://github.com/moltar/typescript-runtime-type-benchmarks/commit/1e106f9f99b0ff2677c4dcc1a9af5fe08728d7dc \"chore: add run configuration for bun\") | last yearJan 17, 2025 |\n| [deno.jsonc](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/deno.jsonc \"deno.jsonc\") | [deno.jsonc](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/deno.jsonc \"deno.jsonc\") | [fix: make it run on Deno](https://github.com/moltar/typescript-runtime-type-benchmarks/commit/67e555a830fe959f89607888780e49ec652176e4 \"fix: make it run on Deno\") | last yearFeb 2, 2025 |\n| [download-packages-popularity.ts](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/download-packages-popularity.ts \"download-packages-popularity.ts\") | [download-packages-popularity.ts](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/download-packages-popularity.ts \"download-packages-popularity.ts\") | [Add Sury to the benchmark (](https://github.com/moltar/typescript-runtime-type-benchmarks/commit/ffe01844212a5c029c8be9a48b346b2b9c82125a \"Add Sury to the benchmark (#1896)\") [#1896](https://github.com/moltar/typescript-runtime-type-benchmarks/pull/1896) [)](https://github.com/moltar/typescript-runtime-type-benchmarks/commit/ffe01844212a5c029c8be9a48b346b2b9c82125a \"Add Sury to the benchmark (#1896)\") | 10 months agoMay 21, 2025 |\n| [index.ts](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/index.ts \"index.ts\") | [index.ts](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/index.ts \"index.ts\") | [fix: skip failing benchmarks](https://github.com/moltar/typescript-runtime-type-benchmarks/commit/fd0e4ba6d0e64ea3a31d507228dc3ac291c614f1 \"fix: skip failing benchmarks skip when deno has compatibility issues with packages: https://github.com/denoland/deno/issues/27894\") | last yearFeb 2, 2025 |\n| [package-lock.json](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/package-lock.json \"package-lock.json\") | [package-lock.json](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/package-lock.json \"package-lock.json\") | [fix(deps): update dependency @sinclair/typebox to v0.34.48 (](https://github.com/moltar/typescript-runtime-type-benchmarks/commit/6d6898e47765fa77bb94b4a992d24e06f3a7a673 \"fix(deps): update dependency @sinclair/typebox to v0.34.48 (#2236) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>\") [#2236](https://github.com/moltar/typescript-runtime-type-benchmarks/pull/2236) [)](https://github.com/moltar/typescript-runtime-type-benchmarks/commit/6d6898e47765fa77bb94b4a992d24e06f3a7a673 \"fix(deps): update dependency @sinclair/typebox to v0.34.48 (#2236) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>\") | yesterdayMar 27, 2026 |\n| [package.json](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/package.json \"package.json\") | [package.json](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/package.json \"package.json\") | [fix(deps): update dependency @sinclair/typebox to v0.34.48 (](https://github.com/moltar/typescript-runtime-type-benchmarks/commit/6d6898e47765fa77bb94b4a992d24e06f3a7a673 \"fix(deps): update dependency @sinclair/typebox to v0.34.48 (#2236) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>\") [#2236](https://github.com/moltar/typescript-runtime-type-benchmarks/pull/2236) [)](https://github.com/moltar/typescript-runtime-type-benchmarks/commit/6d6898e47765fa77bb94b4a992d24e06f3a7a673 \"fix(deps): update dependency @sinclair/typebox to v0.34.48 (#2236) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>\") | yesterdayMar 27, 2026 |\n| [renovate.json](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/renovate.json \"renovate.json\") | [renovate.json](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/renovate.json \"renovate.json\") | [ci: run renovate all the time](https://github.com/moltar/typescript-runtime-type-benchmarks/commit/3d7008a39a35f76d67638fb0b445323776da748a \"ci: run renovate all the time\") | 6 years agoMar 14, 2020 |\n| [start.sh](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/start.sh \"start.sh\") | [start.sh](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/start.sh \"start.sh\") | [fix: make it run on Deno](https://github.com/moltar/typescript-runtime-type-benchmarks/commit/67e555a830fe959f89607888780e49ec652176e4 \"fix: make it run on Deno\") | last yearFeb 2, 2025 |\n| [tsconfig.json](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/tsconfig.json \"tsconfig.json\") | [tsconfig.json](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/tsconfig.json \"tsconfig.json\") | [fix benchmark tsconfig](https://github.com/moltar/typescript-runtime-type-benchmarks/commit/6a746cc9ddc91e19b6569b41ee00caf399de9840 \"fix benchmark tsconfig It did include the docs app.\") | 11 months agoApr 27, 2025 |\n| View all files |\n\n## Repository files navigation\n\n# 📊 Benchmark Comparison of Packages with Runtime Validation and TypeScript Support\n\n[Permalink: 📊 Benchmark Comparison of Packages with Runtime Validation and TypeScript Support](https://github.com/moltar/typescript-runtime-type-benchmarks#-benchmark-comparison-of-packages-with-runtime-validation-and-typescript-support)\n\n* * *\n\n**⚡⚠ Benchmark results have changed after switching to isolated node processes for each benchmarked package, see [#864](https://github.com/moltar/typescript-runtime-type-benchmarks/issues/864) ⚠⚡**\n\n* * *\n\n## Benchmark Results\n\n[Permalink: Benchmark Results](https://github.com/moltar/typescript-runtime-type-benchmarks#benchmark-results)\n\n[![Fastest Packages - click to view details](https://github.com/moltar/typescript-runtime-type-benchmarks/raw/master/docs/results/preview.svg)](https://moltar.github.io/typescript-runtime-type-benchmarks)\n\n[click here for result details](https://moltar.github.io/typescript-runtime-type-benchmarks)\n\n## Packages Compared\n\n[Permalink: Packages Compared](https://github.com/moltar/typescript-runtime-type-benchmarks#packages-compared)\n\n- [aeria](https://github.com/aeria-org/aeria)\n- [ajv](https://ajv.js.org/)\n- [ArkType](https://github.com/arktypeio/arktype)\n- [banditypes](https://github.com/thoughtspile/banditypes)\n- [bueno](https://github.com/philipnilsson/bueno)\n- [caketype](https://github.com/justinyaodu/caketype)\n- [class-validator](https://github.com/typestack/class-validator) \\+ [class-transformer](https://github.com/typestack/class-transformer)\n- [cleaners](https://cleaners.js.org/)\n- [computed-types](https://github.com/neuledge/computed-types)\n- [decoders](https://github.com/nvie/decoders)\n- [deepkit](https://deepkit.io/)\n- [dhi](https://github.com/justrach/dhi-zig/tree/main/js-bindings)\n- [@effect/schema](https://github.com/Effect-TS/effect/blob/main/packages/schema/README.md)\n- [io-ts](https://github.com/gcanti/io-ts)\n- [jet-validators](https://github.com/seanpmaxwell/jet-validators)\n- [joi](https://github.com/hapijs/joi)\n- [jointz](https://github.com/moodysalem/jointz)\n- [json-decoder](https://github.com/venil7/json-decoder)\n- [@mojotech/json-type-validaton](https://github.com/mojotech/json-type-validation)\n- [$mol\\_data](https://github.com/hyoo-ru/mam_mol/blob/master/data/README.md)\n- [@mondrian-framework/model](https://mondrianframework.com/)\n- [myzod](https://github.com/davidmdm/myzod)\n- [ok-computer](https://github.com/richardscarrott/ok-computer)\n- [pure-parse](https://github.com/johannes-lindgren/pure-parse)\n- [purify-ts](https://github.com/gigobyte/purify)\n- [parse-dont-validate](https://github.com/Packer-Man/parse-dont-validate)\n- [Paseri](https://github.com/vbudovski/paseri)\n- [r-assign](https://github.com/micnic/r-assign)\n- [rescript-schema](https://github.com/DZakh/rescript-schema)\n- [rulr](https://github.com/ryansmith94/rulr)\n- [runtypes](https://github.com/pelotom/runtypes)\n- [@sapphire/shapeshift](https://github.com/sapphiredev/shapeshift)\n- [@sinclair/typebox](https://github.com/sinclairzx81/typebox)\n- [@sinclair/typemap](https://github.com/sinclairzx81/typemap)\n- [simple-runtypes](https://github.com/hoeck/simple-runtypes)\n- [spectypes](https://github.com/iyegoroff/spectypes)\n- [stnl](https://github.com/re-utils/stnl)\n- [succulent](https://github.com/aslilac/succulent)\n- [superstruct](https://github.com/ianstormtaylor/superstruct)\n- [suretype](https://github.com/grantila/suretype)\n- [sury](https://github.com/DZakh/sury)\n- [tiny-schema-validator](https://github.com/5alidz/tiny-schema-validator)\n- [to-typed](https://github.com/jsoldi/to-typed)\n- [toi](https://github.com/hf/toi)\n- [ts-auto-guard](https://github.com/rhys-vdw/ts-auto-guard)\n- [ts-interface-checker](https://github.com/gristlabs/ts-interface-checker)\n- [ts-json-validator](https://github.com/ostrowr/ts-json-validator)\n- [ts-runtime-checks](https://github.com/GoogleFeud/ts-runtime-checks)\n- [tson](https://github.com/skarab42/tson)\n- [ts-utils](https://github.com/ai-labs-team/ts-utils)\n- [type-predicate-generator](https://github.com/peter-leonov/typescript-predicate-generator)\n- [typia](https://github.com/samchon/typia)\n- [@typeofweb/schema](https://github.com/typeofweb/schema)\n- [unknownutil](https://github.com/lambdalisue/deno-unknownutil)\n- [valibot](https://github.com/fabian-hiller/valibot)\n- [valita](https://github.com/badrap/valita)\n- [Vality](https://github.com/jeengbe/vality)\n- [yup](https://github.com/jquense/yup)\n- [zod](https://github.com/colinhacks/zod)\n- [zod (v4)](https://github.com/colinhacks/zod/tree/v4)\n\n## Criteria\n\n[Permalink: Criteria](https://github.com/moltar/typescript-runtime-type-benchmarks#criteria)\n\n### Validation\n\n[Permalink: Validation](https://github.com/moltar/typescript-runtime-type-benchmarks#validation)\n\nThese packages are capable of validating the data for type correctness.\n\nE.g. if `string` was expected, but a `number` was provided, the validator should fail.\n\n### Interface\n\n[Permalink: Interface](https://github.com/moltar/typescript-runtime-type-benchmarks#interface)\n\nIt has a validator function or method that returns a valid type casted value or throws.\n\n```\nconst data: any = {}\n\n// `res` is now type casted to the right type\nconst res = isValid(data)\n```\n\nOr it has a type guard function that in a truthy block type casts the value.\n\n```\nconst data: any = {}\n\nfunction isMyDataValid(data: any) {\n // isValidGuard is the type guard function provided by the package\n if (isValidGuard(data)) {\n // data here is \"guarded\" and therefore inferred to be of the right type\n return data\n }\n\n throw new Error('Invalid!')\n}\n\n// `res` is now type casted to the right type\nconst res = isMyDataValid(data)\n```\n\n## Local Development\n\n[Permalink: Local Development](https://github.com/moltar/typescript-runtime-type-benchmarks#local-development)\n\n### Commands\n\n[Permalink: Commands](https://github.com/moltar/typescript-runtime-type-benchmarks#commands)\n\n#### Benchmarks\n\n[Permalink: Benchmarks](https://github.com/moltar/typescript-runtime-type-benchmarks#benchmarks)\n\n- `npm run start` \\- run benchmarks for all modules using Node.js\n- `npm run start:bun` \\- run benchmarks for all modules using bun\n- `npm run start run zod myzod valita` \\- run benchmarks only for a few selected modules\n\n#### Tests\n\n[Permalink: Tests](https://github.com/moltar/typescript-runtime-type-benchmarks#tests)\n\n- `npm run test` \\- run build process and tests for all modules\n- `npm run test:build` \\- run build process for all modules\n\n#### Benchmark Viewer\n\n[Permalink: Benchmark Viewer](https://github.com/moltar/typescript-runtime-type-benchmarks#benchmark-viewer)\n\nA basic preact+vite app lives in [`/docs`](https://github.com/moltar/typescript-runtime-type-benchmarks/blob/master/docs).\nIt is deployed via github pages whenever something has been pushed to the main branch.\n\n```\ncd docs\n\nnpm run dev # develop / view results\nnpm run build # build\nnpm run preview # preview the build\n```\n\nWhen viewing results locally, you will need to restart the app whenever the\nresults are updated.\n\n#### Linting\n\n[Permalink: Linting](https://github.com/moltar/typescript-runtime-type-benchmarks#linting)\n\n- `npm run lint` \\- lint all files\n- `npm run lint:fix` \\- lint all files and fix errors\n\n#### Misc\n\n[Permalink: Misc](https://github.com/moltar/typescript-runtime-type-benchmarks#misc)\n\n- `npm run download-packages-popularity` \\- download popularity data from npmjs.com\n\n### Debugging\n\n[Permalink: Debugging](https://github.com/moltar/typescript-runtime-type-benchmarks#debugging)\n\n#### Node.js\n\n[Permalink: Node.js](https://github.com/moltar/typescript-runtime-type-benchmarks#nodejs)\n\n- Use [nvm](https://github.com/nvm-sh/nvm) to switch to a specific Node.js version\n- `nvm use x` \\- switch to Node.js x.x\n- `nvm use 18` \\- switch to Node.js 18.x\n- `nvm use 20` \\- switch to Node.js 20.x\n\n#### Bun\n\n[Permalink: Bun](https://github.com/moltar/typescript-runtime-type-benchmarks#bun)\n\n- Use `curl -fsSl https://bun.sh/install | bash -s \"bun-v1.0.x\"` to switch to a specific bun version\n- `curl -fsSl https://bun.sh/install | bash -s \"bun-v1.1.43\"` \\- switch to bun 1.1.43\n\n#### Deno\n\n[Permalink: Deno](https://github.com/moltar/typescript-runtime-type-benchmarks#deno)\n\n- Use `deno upgrade x.x.x` to switch to a specific Deno version\n- `deno upgrade stable` \\- switch to Deno x.x.x\n\n## Adding new runtime version\n\n[Permalink: Adding new runtime version](https://github.com/moltar/typescript-runtime-type-benchmarks#adding-new-runtime-version)\n\n### Node.js runtime\n\n[Permalink: Node.js runtime](https://github.com/moltar/typescript-runtime-type-benchmarks#nodejs-runtime)\n\n- update Node.js version matrix in `.github/workflows/pr.yml` and `.github/workflows/release.yml`\n- update `NODE_VERSIONS` in `docs/src/App.tsx`\n- optionally set `NODE_VERSION_FOR_PREVIEW` in `benchmarks/helpers/main.ts`\n\n### Bun runtime\n\n[Permalink: Bun runtime](https://github.com/moltar/typescript-runtime-type-benchmarks#bun-runtime)\n\n- update bun version matrix in `.github/workflows/pr.yml` and `.github/workflows/release.yml`\n- update `BUN_VERSIONS` in `docs/src/App.tsx`\n\n### Deno runtime\n\n[Permalink: Deno runtime](https://github.com/moltar/typescript-runtime-type-benchmarks#deno-runtime)\n\n- update Deno version matrix in `.github/workflows/pr.yml` and `.github/workflows/release.yml`\n- update `DENO_VERSIONS` in `docs/src/App.tsx`\n\n## Test cases\n\n[Permalink: Test cases](https://github.com/moltar/typescript-runtime-type-benchmarks#test-cases)\n\n- **Safe Parsing**\n - Checks the input object against a schema and returns it.\n - Raises an error if the input object does not conform to the schema (e.g., a type mismatch or missing attribute).\n - Removes any extra keys in the input object that are not defined in the schema.\n- **Strict Parsing**\n - Checks the input object against a schema and returns it.\n - Raises an error if the input object does not conform to the schema (e.g., a type mismatch or missing attribute).\n - Raises an error if the input object contains extra keys.\n- **Loose Assertion**\n - Checks the input object against a schema.\n - Raises an exception if the input object does not match the schema.\n - Allows extra keys without raising errors.\n - Returns true if data is valid.\n- **Strict Assertion**\n - Checks the input object against a schema.\n - Raises an exception if the input object does not match the schema.\n - Raises an error if the input object or any nested input objects contain extra keys.\n - Returns true if data is valid.\n\n## Contributors\n\n[Permalink: Contributors](https://github.com/moltar/typescript-runtime-type-benchmarks#contributors)\n\n[![](https://camo.githubusercontent.com/481d69e11aad0d65ebf36ba875525ea63cfd0f9287017abdb1ee1125b60b2c4f/68747470733a2f2f636f6e747269622e726f636b732f696d6167653f7265706f3d6d6f6c7461722f747970657363726970742d72756e74696d652d747970652d62656e63686d61726b73)](https://github.com/moltar/typescript-runtime-type-benchmarks/graphs/contributors)\n\n## About\n\n📊 Benchmark Comparison of Packages with Runtime Validation and TypeScript Support\n\n\n[moltar.github.io/typescript-runtime-type-benchmarks/](https://moltar.github.io/typescript-runtime-type-benchmarks/ \"https://moltar.github.io/typescript-runtime-type-benchmarks/\")\n\n### Topics\n\n[json](https://github.com/topics/json \"Topic: json\") [benchmark](https://github.com/topics/benchmark \"Topic: benchmark\") [typescript](https://github.com/topics/typescript \"Topic: typescript\") [validation](https://github.com/topics/validation \"Topic: validation\") [types](https://github.com/topics/types \"Topic: types\") [benchmarks](https://github.com/topics/benchmarks \"Topic: benchmarks\") [validation-library](https://github.com/topics/validation-library \"Topic: validation-library\") [decoders](https://github.com/topics/decoders \"Topic: decoders\") [typescript-support](https://github.com/topics/typescript-support \"Topic: typescript-support\") [runtypes](https://github.com/topics/runtypes \"Topic: runtypes\")\n\n### Resources\n\n[Readme](https://github.com/moltar/typescript-runtime-type-benchmarks#readme-ov-file)\n\n### Uh oh!\n\nThere was an error while loading. [Please reload this page](https://github.com/moltar/typescript-runtime-type-benchmarks).\n\n[Activity](https://github.com/moltar/typescript-runtime-type-benchmarks/activity)\n\n### Stars\n\n[**817**\\\\\nstars](https://github.com/moltar/typescript-runtime-type-benchmarks/stargazers)\n\n### Watchers\n\n[**9**\\\\\nwatching](https://github.com/moltar/typescript-runtime-type-benchmarks/watchers)\n\n### Forks\n\n[**87**\\\\\nforks](https://github.com/moltar/typescript-runtime-type-benchmarks/forks)\n\n[Report repository](https://github.com/contact/report-content?content_url=https%3A%2F%2Fgithub.com%2Fmoltar%2Ftypescript-runtime-type-benchmarks&report=moltar+%28user%29)\n\n## [Releases](https://github.com/moltar/typescript-runtime-type-benchmarks/releases)\n\nNo releases published\n\n## [Packages\\ 0](https://github.com/users/moltar/packages?repo_name=typescript-runtime-type-benchmarks)\n\nNo packages published\n\n### Uh oh!\n\nThere was an error while loading. [Please reload this page](https://github.com/moltar/typescript-runtime-type-benchmarks).\n\n## [Contributors\\ 54](https://github.com/moltar/typescript-runtime-type-benchmarks/graphs/contributors)\n\n- [![@renovate[bot]](https://avatars.githubusercontent.com/in/2740?s=64&v=4)](https://github.com/apps/renovate)\n- [![@renovate-bot](https://avatars.githubusercontent.com/u/25180681?s=64&v=4)](https://github.com/renovate-bot)\n- [![@DarkGL](https://avatars.githubusercontent.com/u/5832765?s=64&v=4)](https://github.com/DarkGL)\n- [![@moltar](https://avatars.githubusercontent.com/u/491247?s=64&v=4)](https://github.com/moltar)\n- [![@hoeck](https://avatars.githubusercontent.com/u/40309?s=64&v=4)](https://github.com/hoeck)\n- [![@dependabot-preview[bot]](https://avatars.githubusercontent.com/in/2141?s=64&v=4)](https://github.com/apps/dependabot-preview)\n- [![@samchon](https://avatars.githubusercontent.com/u/13158709?s=64&v=4)](https://github.com/samchon)\n- [![@DZakh](https://avatars.githubusercontent.com/u/49292466?s=64&v=4)](https://github.com/DZakh)\n- [![@ryasmi](https://avatars.githubusercontent.com/u/3045513?s=64&v=4)](https://github.com/ryasmi)\n- [![@naruaway](https://avatars.githubusercontent.com/u/2931577?s=64&v=4)](https://github.com/naruaway)\n- [![@seanpmaxwell](https://avatars.githubusercontent.com/u/10490175?s=64&v=4)](https://github.com/seanpmaxwell)\n- [![@iyegoroff](https://avatars.githubusercontent.com/u/4447438?s=64&v=4)](https://github.com/iyegoroff)\n- [![@skarab42](https://avatars.githubusercontent.com/u/62928763?s=64&v=4)](https://github.com/skarab42)\n- [![@sinclairzx81](https://avatars.githubusercontent.com/u/3048342?s=64&v=4)](https://github.com/sinclairzx81)\n\n[\\+ 40 contributors](https://github.com/moltar/typescript-runtime-type-benchmarks/graphs/contributors)\n\n## Languages\n\n- [TypeScript98.7%](https://github.com/moltar/typescript-runtime-type-benchmarks/search?l=typescript)\n- [Shell1.2%](https://github.com/moltar/typescript-runtime-type-benchmarks/search?l=shell)\n- [JavaScript0.1%](https://github.com/moltar/typescript-runtime-type-benchmarks/search?l=javascript)\n\nYou cant perform that action at this time.","metadata":{"octolytics-dimension-repository_public":"true","og:site_name":"GitHub","description":"📊 Benchmark Comparison of Packages with Runtime Validation and TypeScript Support - moltar/typescript-runtime-type-benchmarks","request-id":"9FDB:281B41:2FAA250:3CDBCBA:69C8CE4F","twitter:title":"GitHub - moltar/typescript-runtime-type-benchmarks: 📊 Benchmark Comparison of Packages with Runtime Validation and TypeScript Support","expected-hostname":"github.com","color-scheme":"light dark","language":"en","hostname":"github.com","og:image:width":"1200","og:image:height":"600","octolytics-dimension-user_login":"moltar","user-login":"","analytics-location":"/<user-name>/<repo-name>","og:description":"📊 Benchmark Comparison of Packages with Runtime Validation and TypeScript Support - moltar/typescript-runtime-type-benchmarks","octolytics-dimension-user_id":"491247","octolytics-dimension-repository_network_root_nwo":"moltar/typescript-runtime-type-benchmarks","ogSiteName":"GitHub","twitter:site":"@github","og:url":"https://github.com/moltar/typescript-runtime-type-benchmarks","octolytics-dimension-repository_is_fork":"false","fetch-nonce":"v2:ba3c8c83-3e74-e99c-56b1-7ef05ac88b09","theme-color":"#1e2327","og:title":"GitHub - moltar/typescript-runtime-type-benchmarks: 📊 Benchmark Comparison of Packages with Runtime Validation and TypeScript Support","turbo-cache-control":["no-preview","no-cache"],"html-safe-nonce":"ca62a8eed3e0c474523bac49a83d646101721cb94ca1aa0ff11bdf09e5f7ee40","twitter:description":"📊 Benchmark Comparison of Packages with Runtime Validation and TypeScript Support - moltar/typescript-runtime-type-benchmarks","disable-turbo":"false","visitor-payload":"eyJyZWZlcnJlciI6Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vIiwicmVxdWVzdF9pZCI6IjlGREI6MjgxQjQxOjJGQUEyNTA6M0NEQkNCQTo2OUM4Q0U0RiIsInZpc2l0b3JfaWQiOiI4MTg1Mjc0NTY5MTI1ODQyNTExIiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0=","octolytics-dimension-repository_nwo":"moltar/typescript-runtime-type-benchmarks","ui-target":"full","github-keyboard-shortcuts":"repository,copilot","ogTitle":"GitHub - moltar/typescript-runtime-type-benchmarks: 📊 Benchmark Comparison of Packages with Runtime Validation and TypeScript Support","visitor-hmac":"145d33acddda6c736cbdcf7eb053c807b3638b5cd4ed5c9dd4798662d225c79e","octolytics-url":"https://collector.github.com/github/collect","og:image":"https://opengraph.githubassets.com/8c6a034323a4c82aa8ac6e98902ada2edf67a4b79e2b3bc5921126df72f682bc/moltar/typescript-runtime-type-benchmarks","twitter:image":"https://opengraph.githubassets.com/8c6a034323a4c82aa8ac6e98902ada2edf67a4b79e2b3bc5921126df72f682bc/moltar/typescript-runtime-type-benchmarks","twitter:card":"summary_large_image","title":"GitHub - moltar/typescript-runtime-type-benchmarks: 📊 Benchmark Comparison of Packages with Runtime Validation and TypeScript Support · GitHub","og:type":"object","browser-errors-url":"https://api.github.com/_private/browser/errors","viewport":"width=device-width","fb:app_id":"1401488693436528","apple-itunes-app":"app-id=1477376905, app-argument=https://github.com/moltar/typescript-runtime-type-benchmarks","ogDescription":"📊 Benchmark Comparison of Packages with Runtime Validation and TypeScript Support - moltar/typescript-runtime-type-benchmarks","octolytics-dimension-repository_network_root_id":"210419229","ogUrl":"https://github.com/moltar/typescript-runtime-type-benchmarks","google-site-verification":"Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I","go-import":"github.com/moltar/typescript-runtime-type-benchmarks git https://github.com/moltar/typescript-runtime-type-benchmarks.git","ogImage":"https://opengraph.githubassets.com/8c6a034323a4c82aa8ac6e98902ada2edf67a4b79e2b3bc5921126df72f682bc/moltar/typescript-runtime-type-benchmarks","current-catalog-service-hash":"f3abb0cc802f3d7b95fc8762b94bdcb13bf39634c40c357301c4aa1d67a256fb","release":"51d2e33e3d1e4839c3ced5f8e35c7a47d3a60f32","og:image:alt":"📊 Benchmark Comparison of Packages with Runtime Validation and TypeScript Support - moltar/typescript-runtime-type-benchmarks","octolytics-dimension-repository_id":"210419229","route-controller":"files","hovercard-subject-tag":"repository:210419229","route-pattern":"/:user_id/:repository","route-action":"disambiguate","browser-stats-url":"https://api.github.com/_private/browser/stats","turbo-body-classes":"logged-out env-production page-responsive","favicon":"https://github.githubassets.com/favicons/favicon.svg","scrapeId":"019d3957-f100-70b9-9870-1e6547107b73","sourceURL":"https://github.com/moltar/typescript-runtime-type-benchmarks","url":"https://github.com/moltar/typescript-runtime-type-benchmarks","statusCode":200,"contentType":"text/html; charset=utf-8","proxyUsed":"basic","cacheState":"hit","cachedAt":"2026-03-29T07:01:37.187Z","creditsUsed":1}},{"url":"https://moltar.github.io/typescript-runtime-type-benchmarks/","title":"Runtype Benchmarks","description":"Benchmark Comparison of Packages with Runtime Validation and TypeScript Support. Benchmarks: Safe Parsing, Strict Parsing, Loose Assertion, Strict Assertion.","position":2,"markdown":"# Runtype Benchmarks\n\n[Star](https://github.com/moltar/typescript-runtime-type-benchmarks) [Fork](https://github.com/moltar/typescript-runtime-type-benchmarks/fork)\n\nBenchmark Comparison of Packages with Runtime Validation and TypeScript Support\n\nBenchmarks:\n\nSafe Parsing\n\nStrict Parsing\n\nLoose Assertion\n\nStrict Assertion\n\nNode.js Versions:\n\nv24.14.0\n\nv23.11.1\n\nv22.22.1\n\nv21.7.3\n\nv20.20.1\n\nBun Versions:\n\n1.2.12\n\nDeno Versions:\n\n2.1.9\n\nSort:FastestAlphabeticallyPopularity\n\nts-runtime-checks@sinclair/typebox-(ahead-of-time)ts-auto-guardtypiaspectypestype-predicate-generatorstnl (just-in-time)@sinclair/typebox-(just-in-time)rescript-schema@sinclair/typemap/zod@sinclair/typemap/valibotsuryarktypepure-parse (JIT compiled)suretypets-json-validatorajvdeepkitjet-validatorszod4valitaunknownutilpaserito-typedts-interface-checkerpure-parsesimple-runtypes$mol\\_dataio-tsmyzodbanditypescleaners@mojotech/json-type-validation@sinclair/typebox-(dynamic)parse-dont-validate (named parameters)purify-tstiny-schema-validatorr-assign@typeofweb/schemaeffect-schemajson-decodercomputed-typesvalibotrulrtoiaeriasucculenttsonzodjointzparse-dont-validate (chained function)mondrian-frameworkbuenodecodersts-utils@sapphire/shapeshiftjoivalitycaketypeok-computersuperstructruntypesclass-transformer-validator-syncyup05,000,00010,000,00015,000,00020,000,00025,000,00030,000,00035,000,00040,000,00045,000,00050,000,00055,000,00060,000,00065,000,00070,000,00075,000,00080,000,00085,000,00090,000,000operations / sec(better ▶)29,613,64728,814,07384,117,119082,576,94733,116,1970082,080,26000078,569,98932,851,06231,115,86179,590,06834,761,13926,816,71077,879,22024,922,55576,509,00600072,951,54100070,275,28229,685,2140060,969,09424,686,43062,664,92522,719,08062,459,59129,872,3100062,059,53529,267,4630061,522,93924,432,87860,672,72124,097,01053,503,52200025,529,7338,314,69050,543,853045,103,86600044,914,59000036,025,38619,754,033004,686,49327,512,5820014,415,9545,884,8045,879,7785,861,7146,911,0953,682,9273,686,0353,143,0776,160,1146,076,6126,359,6155,284,4313,981,9304,025,8025,825,14305,686,5725,603,4565,668,9835,666,6684,663,2793,632,487135,9863,273,7674,116,1320003,054,3712,378,7593,856,36402,952,9563,426,8543,357,21003,268,4993,288,711003,013,4831,327,559002,464,6442,876,9572,902,46102,798,4082,826,674002,680,9650002,505,4220002,339,6561,951,933002,253,6150001,981,7370001,890,3181,892,033001,801,7721,568,5221,824,2671,559,5201,703,5191,715,628001,692,122357,8761,512,068341,4651,660,1120001,629,8771,257,9371,254,61601,426,2591,080,9181,424,4831,080,3391,415,4510001,151,8531,163,958001,050,6111,071,3141,040,1101,073,234546,918981,256549,8650909,145945,197970,773967,159842,570751,390760,054759,536679,983674,076839,3480709,119000596,598544,799617,648543,582319,662322,818514,788521,866397,412245,091244,6440320,115000314,970301,580282,340303,713263,328265,476264,663244,047250,953236,555248,184236,260188,972247,412187,6830212,056226,96100177,102222,964178,1220174,58800098,63900092,74390,15100\n\n#### Safe Parsing\n\nCheck the input object against a schema and return it.\n\nRaise an error if the input object does not conform to the schema, e.g. an attribute is a number instead of a string or an attribute is missing completely.\n\nAny extra keys in the input object that are not defined in the schema must be removed.\n\n#### Strict Parsing\n\nLike safe parsing but raise an error if input objects contain extra keys.\n\n#### Loose Assertion\n\nCheck the input object against a schema and raise an exception if it does not match.\n\nNo errors are raised when encountering extra keys.\n\n#### Strict Assertion\n\nLike loose assertion but raise an error if input objects or nested input objects contain extra keys.","metadata":{"title":"Runtype Benchmarks","color-scheme":"dark light","viewport":"width=device-width, initial-scale=1.0","description":"Benchmark Comparison of Packages with Runtime Validation and TypeScript Support.","language":"en","scrapeId":"019d3957-f100-70b9-9870-20e4d739ea17","sourceURL":"https://moltar.github.io/typescript-runtime-type-benchmarks/","url":"https://moltar.github.io/typescript-runtime-type-benchmarks/","statusCode":200,"contentType":"text/html; charset=utf-8","timezone":"America/New_York","proxyUsed":"basic","cacheState":"miss","indexId":"0a28c8ab-850b-4de8-bfd0-7bcbd8749b2e","creditsUsed":1}},{"url":"https://medium.com/@mernstackdevbykevin/typescript-vs-javascript-in-2026-is-plain-js-still-enough-58adf989740f","title":"TypeScript vs JavaScript in 2026 — Is Plain JS Still Enough? - Medium","description":"TypeScript or JavaScript in 2026? We break down what's changed, what it actually costs to stay on plain JS, and when TypeScript is no longer ...","position":3,"markdown":"[Sitemap](https://medium.com/sitemap/sitemap.xml)\n\n[Open in app](https://play.google.com/store/apps/details?id=com.medium.reader&referrer=utm_source%3DmobileNavBar&source=post_page---top_nav_layout_nav-----------------------------------------)\n\nSign up\n\n[Sign in](https://medium.com/m/signin?operation=login&redirect=https%3A%2F%2Fmedium.com%2F%40mernstackdevbykevin%2Ftypescript-vs-javascript-in-2026-is-plain-js-still-enough-58adf989740f&source=post_page---top_nav_layout_nav-----------------------global_nav------------------)\n\n[Medium Logo](https://medium.com/?source=post_page---top_nav_layout_nav-----------------------------------------)\n\nGet app\n\n[Write](https://medium.com/m/signin?operation=register&redirect=https%3A%2F%2Fmedium.com%2Fnew-story&source=---top_nav_layout_nav-----------------------new_post_topnav------------------)\n\n[Search](https://medium.com/search?source=post_page---top_nav_layout_nav-----------------------------------------)\n\nSign up\n\n[Sign in](https://medium.com/m/signin?operation=login&redirect=https%3A%2F%2Fmedium.com%2F%40mernstackdevbykevin%2Ftypescript-vs-javascript-in-2026-is-plain-js-still-enough-58adf989740f&source=post_page---top_nav_layout_nav-----------------------global_nav------------------)\n\n![](https://miro.medium.com/v2/resize:fill:32:32/1*dmbNkD5D-u45r44go_cf0g.png)\n\nMember-only story\n\n# TypeScript vs JavaScript in 2026 — Is Plain JS Still Enough?\n\n[![Kevin - MERN Stack Developer](https://miro.medium.com/v2/resize:fill:32:32/1*aUGBohBB1VAnsoGAdjEZoQ.png)](https://medium.com/@mernstackdevbykevin?source=post_page---byline--58adf989740f---------------------------------------)\n\n[Kevin - MERN Stack Developer](https://medium.com/@mernstackdevbykevin?source=post_page---byline--58adf989740f---------------------------------------)\n\nFollow\n\n4 min read\n\n·\n\n5 days ago\n\n50\n\n[Listen](https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2Fplans%3Fdimension%3Dpost_audio_button%26postId%3D58adf989740f&operation=register&redirect=https%3A%2F%2Fmedium.com%2F%40mernstackdevbykevin%2Ftypescript-vs-javascript-in-2026-is-plain-js-still-enough-58adf989740f&source=---header_actions--58adf989740f---------------------post_audio_button------------------)\n\nShare\n\n**_The web ecosystem has voted. But the real question isnt which one is better — its whether you can still afford to ignore TypeScript._**\n\n**JavaScript built the modern web. And TypeScript is gradually stealing it.** If you were still unreliable to switch in 2026, the ecosystem has begun making the decision for you.\n\nThis is not a post on the language war An uncompromising view of what this looks like on both sides and what it really costs to keep stuck on plain JS in 2019.\n\nPress enter or click to view image in full size\n\n![A cinematic 3D hero image featuring the JavaScript and TypeScript logos rendered in realistic metallic 3D side by side, against a gradient background blending JS yellow into TypeScript deep blue. React, Next.js, and Tailwind CSS logos float subtly in the background. Bold text overlay reads “TS 5.x vs JS.” Soft cinematic shadows and premium lens flare create a polished, publication-ready composition with no desk or workspace.](https://miro.medium.com/v2/resize:fit:700/1*ZLA9OtU4v4Tzr1nw6YIdiQ.png)\n\n## The Numbers Dont Lie\n\nTypeScript placed third overall in the programming languages used last year in the 2024 Stack Overflow Developer Survey — ahead of Java, but behind Python and JavaScript. Even more telling, it continues to be one of the most loved languages from year-to-year.\n\nMore importantly, in 2026, most new React, Next. js, and for full-stack Node projects its created scaffolded with TypeScript out of the box. So you are asked upfront when you create your app using `create-next-app`. The ecosystem has moved.\n\n## So What Does TypeScript Actually Bring… Apart From “Types”?\n\nThe majority of JS developers fight against TypeScript because to them, it probably sounds like just…\n\nWhat youre actually getting:\n\n- **Editor Autocomplete that works** — your editor knows the shape of every object, every prop, every API response.\n- **Confidence in Refactoring** — Change a function name and TypeScript will immediately report every location that breaks.\n- **Self-documenting Code** — a comment will never be more descriptive than a typed function signature\n- **Eliminate write-time** — not run-time — bugs: the class of “cannot read property of undefined” errors shrinks dramatically\n\n```\n// Before — JS version, looks fine until it isn't\nfunction UserCard({ user }) {\n return <div>{user.profile.displayName}</div> // runtime crash if profile is null\n}\n\n// After — TS version, problem caught before it ships\ninterface User {\n id: string\n profile: {\n displayName: string\n avatarUrl?: string //…\n```\n\n## Create an account to read the full story.\n\nThe author made this story available to Medium members only.\n\nIf youre new to Medium, create a new account to read this story on us.\n\n[Continue in app](https://play.google.com/store/apps/details?id=com.medium.reader&referrer=utm_source%3Dregwall&source=-----58adf989740f---------------------post_regwall------------------)\n\nOr, continue in mobile web\n\n[Sign up with Google](https://medium.com/m/connect/google?state=google-%7Chttps%3A%2F%2Fmedium.com%2F%40mernstackdevbykevin%2Ftypescript-vs-javascript-in-2026-is-plain-js-still-enough-58adf989740f%3Fsource%3D-----58adf989740f---------------------post_regwall------------------%26skipOnboarding%3D1%7Cregister%7Cremember_me&source=-----58adf989740f---------------------post_regwall------------------)\n\n[Sign up with Facebook](https://medium.com/m/connect/facebook?state=facebook-%7Chttps%3A%2F%2Fmedium.com%2F%40mernstackdevbykevin%2Ftypescript-vs-javascript-in-2026-is-plain-js-still-enough-58adf989740f%3Fsource%3D-----58adf989740f---------------------post_regwall------------------%26skipOnboarding%3D1%7Cregister%7Cremember_me&source=-----58adf989740f---------------------post_regwall------------------)\n\nSign up with email\n\nAlready have an account? [Sign in](https://medium.com/m/signin?operation=login&redirect=https%3A%2F%2Fmedium.com%2F%40mernstackdevbykevin%2Ftypescript-vs-javascript-in-2026-is-plain-js-still-enough-58adf989740f&source=-----58adf989740f---------------------post_regwall------------------)\n\n[![Kevin - MERN Stack Developer](https://miro.medium.com/v2/resize:fill:48:48/1*aUGBohBB1VAnsoGAdjEZoQ.png)](https://medium.com/@mernstackdevbykevin?source=post_page---post_author_info--58adf989740f---------------------------------------)\n\n[![Kevin - MERN Stack Developer](https://miro.medium.com/v2/resize:fill:64:64/1*aUGBohBB1VAnsoGAdjEZoQ.png)](https://medium.com/@mernstackdevbykevin?source=post_page---post_author_info--58adf989740f---------------------------------------)\n\nFollow\n\n[**Written by Kevin - MERN Stack Developer**](https://medium.com/@mernstackdevbykevin?source=post_page---post_author_info--58adf989740f---------------------------------------)\n\n[955 followers](https://medium.com/@mernstackdevbykevin/followers?source=post_page---post_author_info--58adf989740f---------------------------------------)\n\n· [5 following](https://medium.com/@mernstackdevbykevin/following?source=post_page---post_author_info--58adf989740f---------------------------------------)\n\nMERN Stack Developer \\| MongoDB • Express • React • Node.js \\| Writing about full-stack JavaScript, clean code & scalable app development.\n\nFollow\n\n## No responses yet\n\n![](https://miro.medium.com/v2/resize:fill:32:32/1*dmbNkD5D-u45r44go_cf0g.png)\n\nWrite a response\n\n[What are your thoughts?](https://medium.com/m/signin?operation=register&redirect=https%3A%2F%2Fmedium.com%2F%40mernstackdevbykevin%2Ftypescript-vs-javascript-in-2026-is-plain-js-still-enough-58adf989740f&source=---post_responses--58adf989740f---------------------respond_sidebar------------------)\n\nCancel\n\nRespond\n\n## More from Kevin - MERN Stack Developer\n\n![React and TypeScript logos on gradient background with modern code snippets showing 2026 best practices for web development](https://miro.medium.com/v2/resize:fit:679/format:webp/1*CBDPJMtEDW3n4A3qpc5Pcg.png)\n\n[![Kevin - MERN Stack Developer](https://miro.medium.com/v2/resize:fill:20:20/1*aUGBohBB1VAnsoGAdjEZoQ.png)](https://medium.com/@mernstackdevbykevin?source=post_page---author_recirc--58adf989740f----0---------------------deb04458_41ca_4281_bf5a_596cf9d406ea--------------)\n\n[Kevin - MERN Stack Developer](https://medium.com/@mernstackdevbykevin?source=post_page---author_recirc--58adf989740f----0---------------------deb04458_41ca_4281_bf5a_596cf9d406ea--------------)\n\n[**TypeScript with React: Best practices \\| 2026**\\\\\n\\\\\n**Put your React apps on steroids with the only TypeScript patterns that matter today**](https://medium.com/@mernstackdevbykevin/typescript-with-react-best-practices-2026-78ce4546210b?source=post_page---author_recirc--58adf989740f----0---------------------deb04458_41ca_4281_bf5a_596cf9d406ea--------------)\n\nFeb 6\n\n[A clap icon69\\\\\n\\\\\nA response icon1](https://medium.com/@mernstackdevbykevin/typescript-with-react-best-practices-2026-78ce4546210b?source=post_page---author_recirc--58adf989740f----0---------------------deb04458_41ca_4281_bf5a_596cf9d406ea--------------)\n\n![An Ultimate TypeScript Project Structure (2026 Edition)](https://miro.medium.com/v2/resize:fit:679/format:webp/1*ps6UqcR1JVZ2Z-qBT1R7vA.png)\n\n[![Kevin - MERN Stack Developer](https://miro.medium.com/v2/resize:fill:20:20/1*aUGBohBB1VAnsoGAdjEZoQ.png)](https://medium.com/@mernstackdevbykevin?source=post_page---author_recirc--58adf989740f----1---------------------deb04458_41ca_4281_bf5a_596cf9d406ea--------------)\n\n[Kevin - MERN Stack Developer](https://medium.com/@mernstackdevbykevin?source=post_page---author_recirc--58adf989740f----1---------------------deb04458_41ca_4281_bf5a_596cf9d406ea--------------)\n\n[**An Ultimate TypeScript Project Structure (2026 Edition)**\\\\\n\\\\\n**Pretty simple, stop reorganizing your code base every 6 months. The Battle-tested TypeScript Folder Structure That Actually Scales**](https://medium.com/@mernstackdevbykevin/an-ultimate-typescript-project-structure-2026-edition-4a2d02faf2e0?source=post_page---author_recirc--58adf989740f----1---------------------deb04458_41ca_4281_bf5a_596cf9d406ea--------------)\n\nJan 16\n\n[A clap icon83\\\\\n\\\\\nA response icon2](https://medium.com/@mernstackdevbykevin/an-ultimate-typescript-project-structure-2026-edition-4a2d02faf2e0?source=post_page---author_recirc--58adf989740f----1---------------------deb04458_41ca_4281_bf5a_596cf9d406ea--------------)\n\n![Centered TypeScript 6.0 logo with React, Next.js, and JavaScript icons on blue-to-purple gradient, showing ecosystem connections and modern web development architecture](https://miro.medium.com/v2/resize:fit:679/format:webp/1*Yo5Qszm4-1PTN_YSX8tkkA.png)\n\n[![Kevin - MERN Stack Developer](https://miro.medium.com/v2/resize:fill:20:20/1*aUGBohBB1VAnsoGAdjEZoQ.png)](https://medium.com/@mernstackdevbykevin?source=post_page---author_recirc--58adf989740f----2---------------------deb04458_41ca_4281_bf5a_596cf9d406ea--------------)\n\n[Kevin - MERN Stack Developer](https://medium.com/@mernstackdevbykevin?source=post_page---author_recirc--58adf989740f----2---------------------deb04458_41ca_4281_bf5a_596cf9d406ea--------------)\n\n[**TypeScript 6.0: Game-Changing Features You Need to Know**\\\\\n\\\\\n**The breakthrough features of TypeScript 6.0 that are reshaping full-stack JavaScript developmentfrom enhanced type inference to…**](https://medium.com/@mernstackdevbykevin/typescript-6-0-game-changing-features-you-need-to-know-b2e3ddad0cf5?source=post_page---author_recirc--58adf989740f----2---------------------deb04458_41ca_4281_bf5a_596cf9d406ea--------------)\n\nNov 1, 2025\n\n[A clap icon186\\\\\n\\\\\nA response icon6](https://medium.com/@mernstackdevbykevin/typescript-6-0-game-changing-features-you-need-to-know-b2e3ddad0cf5?source=post_page---author_recirc--58adf989740f----2---------------------deb04458_41ca_4281_bf5a_596cf9d406ea--------------)\n\n![Code editor with ES2025 JavaScript badge and colorful syntax highlighting on dark futuristic background](https://miro.medium.com/v2/resize:fit:679/format:webp/1*aCsYt1uVnD4cUrb38hvD2w.png)\n\n[![Kevin - MERN Stack Developer](https://miro.medium.com/v2/resize:fill:20:20/1*aUGBohBB1VAnsoGAdjEZoQ.png)](https://medium.com/@mernstackdevbykevin?source=post_page---author_recirc--58adf989740f----3---------------------deb04458_41ca_4281_bf5a_596cf9d406ea--------------)\n\n[Kevin - MERN Stack Developer](https://medium.com/@mernstackdevbykevin?source=post_page---author_recirc--58adf989740f----3---------------------deb04458_41ca_4281_bf5a_596cf9d406ea--------------)\n\n[**ES2025 JavaScript Features You Can Start Using Right Now**\\\\\n\\\\\n**The TC39 proposals that graduated to Stage 4 are already shipping in browsersheres what changes how you write JavaScript today.**](https://medium.com/@mernstackdevbykevin/es2025-javascript-features-you-can-start-using-right-now-fed3784298b4?source=post_page---author_recirc--58adf989740f----3---------------------deb04458_41ca_4281_bf5a_596cf9d406ea--------------)\n\nOct 4, 2025\n\n[A clap icon33](https://medium.com/@mernstackdevbykevin/es2025-javascript-features-you-can-start-using-right-now-fed3784298b4?source=post_page---author_recirc--58adf989740f----3---------------------deb04458_41ca_4281_bf5a_596cf9d406ea--------------)\n\n[See all from Kevin - MERN Stack Developer](https://medium.com/@mernstackdevbykevin?source=post_page---author_recirc--58adf989740f---------------------------------------)\n\n## Recommended from Medium\n\n![10 ReactJS conceptual interview MCQs](https://miro.medium.com/v2/resize:fit:679/format:webp/1*At9RLtU2H7iXeIRsDA_OFA.png)\n\n[![Abdul Basit](https://miro.medium.com/v2/resize:fill:20:20/1*Zir5s7NdiFlUQydsmAUatw.jpeg)](https://medium.com/@basit.miyanjee?source=post_page---read_next_recirc--58adf989740f----0---------------------46478a3f_42d2_44a5_9f56_b0f8242c8687--------------)\n\n[Abdul Basit](https://medium.com/@basit.miyanjee?source=post_page---read_next_recirc--58adf989740f----0---------------------46478a3f_42d2_44a5_9f56_b0f8242c8687--------------)\n\n[**If You Can Answer These 10 React Questions: You are Above Average**\\\\\n\\\\\n**Only a small percentage of developers get all of them right**](https://medium.com/@basit.miyanjee/10-reactjs-conceptual-interview-quiz-questions-690c7b19a387?source=post_page---read_next_recirc--58adf989740f----0---------------------46478a3f_42d2_44a5_9f56_b0f8242c8687--------------)\n\nJan 17\n\n[A clap icon108](https://medium.com/@basit.miyanjee/10-reactjs-conceptual-interview-quiz-questions-690c7b19a387?source=post_page---read_next_recirc--58adf989740f----0---------------------46478a3f_42d2_44a5_9f56_b0f8242c8687--------------)\n\n![Frontend Weekly Digest #458 (1622 March 2026)](https://miro.medium.com/v2/resize:fit:679/format:webp/1*BgG2CilqBssye2YGkeAYkA.jpeg)\n\n[![Fresh Frontend Links](https://miro.medium.com/v2/resize:fill:20:20/1*MRZGOZivjSsC7uEdo7-_Eg.png)](https://medium.com/@frontender-ua?source=post_page---read_next_recirc--58adf989740f----1---------------------46478a3f_42d2_44a5_9f56_b0f8242c8687--------------)\n\n[Fresh Frontend Links](https://medium.com/@frontender-ua?source=post_page---read_next_recirc--58adf989740f----1---------------------46478a3f_42d2_44a5_9f56_b0f8242c8687--------------)\n\n[**Frontend Weekly Digest \\#458 (1622 March 2026)**\\\\\n\\\\\n**Web Dev**](https://medium.com/@frontender-ua/frontend-weekly-digest-458-16-22-march-2026-6cb349c3772a?source=post_page---read_next_recirc--58adf989740f----1---------------------46478a3f_42d2_44a5_9f56_b0f8242c8687--------------)\n\n6d ago\n\n[A clap icon56](https://medium.com/@frontender-ua/frontend-weekly-digest-458-16-22-march-2026-6cb349c3772a?source=post_page---read_next_recirc--58adf989740f----1---------------------46478a3f_42d2_44a5_9f56_b0f8242c8687--------------)\n\n![Beyond the hype: 7 React libraries youll actually need in 2026](https://miro.medium.com/v2/resize:fit:679/format:webp/1*8g1Rt_beHoHjwJfHJXrWqA.png)\n\n[![Filippo Biasiolo](https://miro.medium.com/v2/resize:fill:20:20/1*HUFBcM3DsouiFS2Whm6jXA.jpeg)](https://medium.com/@biasiolo.filippo?source=post_page---read_next_recirc--58adf989740f----0---------------------46478a3f_42d2_44a5_9f56_b0f8242c8687--------------)\n\n[Filippo Biasiolo](https://medium.com/@biasiolo.filippo?source=post_page---read_next_recirc--58adf989740f----0---------------------46478a3f_42d2_44a5_9f56_b0f8242c8687--------------)\n\n[**Beyond the hype: 7 React libraries youll actually need in 2026**\\\\\n\\\\\n**In one of my recent articles, I talked about killing your JavaScript debt by leaning on modern CSS.**](https://medium.com/@biasiolo.filippo/beyond-the-hype-7-react-libraries-youll-actually-need-in-2026-20f44fffc3a8?source=post_page---read_next_recirc--58adf989740f----0---------------------46478a3f_42d2_44a5_9f56_b0f8242c8687--------------)\n\nMar 16\n\n[A clap icon4](https://medium.com/@biasiolo.filippo/beyond-the-hype-7-react-libraries-youll-actually-need-in-2026-20f44fffc3a8?source=post_page---read_next_recirc--58adf989740f----0---------------------46478a3f_42d2_44a5_9f56_b0f8242c8687--------------)\n\n![JavaScripts New Features Made Lodash Obsolete (Heres What Changed)](https://miro.medium.com/v2/resize:fit:679/format:webp/1*uIwwez0FXi6AYWr13bGzfw.png)\n\n[![Ignatius Sani](https://miro.medium.com/v2/resize:fill:20:20/1*vfJuP8Hu5o8CXDGYP-U5oQ.jpeg)](https://medium.com/@Iggy01?source=post_page---read_next_recirc--58adf989740f----1---------------------46478a3f_42d2_44a5_9f56_b0f8242c8687--------------)\n\n[Ignatius Sani](https://medium.com/@Iggy01?source=post_page---read_next_recirc--58adf989740f----1---------------------46478a3f_42d2_44a5_9f56_b0f8242c8687--------------)\n\n[**JavaScripts New Features Made Lodash Obsolete (Heres What Changed)**\\\\\n\\\\\n**Five native features shipped since 2022 that replace 80% of Lodash — and most developers dont know they exist**](https://medium.com/@Iggy01/javascripts-new-features-made-lodash-obsolete-here-s-what-changed-2aa737ab683b?source=post_page---read_next_recirc--58adf989740f----1---------------------46478a3f_42d2_44a5_9f56_b0f8242c8687--------------)\n\nFeb 26\n\n[A clap icon87\\\\\n\\\\\nA response icon2](https://medium.com/@Iggy01/javascripts-new-features-made-lodash-obsolete-here-s-what-changed-2aa737ab683b?source=post_page---read_next_recirc--58adf989740f----1---------------------46478a3f_42d2_44a5_9f56_b0f8242c8687--------------)\n\n![How I Made My JavaScript 2x Faster with One Change](https://miro.medium.com/v2/resize:fit:679/format:webp/1*R-xpbJjxzSuIUmldHow8uQ.png)\n\n[![JavaScript in Plain English](https://miro.medium.com/v2/resize:fill:20:20/1*yUNfohs9jA6GCDmyCYJTvA@2x.png)](https://medium.com/javascript-in-plain-english?source=post_page---read_next_recirc--58adf989740f----2---------------------46478a3f_42d2_44a5_9f56_b0f8242c8687--------------)\n\nIn\n\n[JavaScript in Plain English](https://medium.com/javascript-in-plain-english?source=post_page---read_next_recirc--58adf989740f----2---------------------46478a3f_42d2_44a5_9f56_b0f8242c8687--------------)\n\nby\n\n[Julia S](https://medium.com/@julias3?source=post_page---read_next_recirc--58adf989740f----2---------------------46478a3f_42d2_44a5_9f56_b0f8242c8687--------------)\n\n[**How I Made My JavaScript 2x Faster with One Change**\\\\\n\\\\\n**The one tweak that finally stopped my app from feeling like it was running through molasses**](https://medium.com/javascript-in-plain-english/how-i-made-my-javascript-2x-faster-with-one-change-d31a4a68ef67?source=post_page---read_next_recirc--58adf989740f----2---------------------46478a3f_42d2_44a5_9f56_b0f8242c8687--------------)\n\nOct 11, 2025\n\n[A clap icon86\\\\\n\\\\\nA response icon4](https://medium.com/javascript-in-plain-english/how-i-made-my-javascript-2x-faster-with-one-change-d31a4a68ef67?source=post_page---read_next_recirc--58adf989740f----2---------------------46478a3f_42d2_44a5_9f56_b0f8242c8687--------------)\n\n![Everyday Coding Tasks You Should Automate with AI](https://miro.medium.com/v2/resize:fit:679/format:webp/1*igK2w0eKT4q33e1ds7MKpw.jpeg)\n\n[![Onix React](https://miro.medium.com/v2/resize:fill:20:20/1*gycg-awNlImQY7SDmC1gFA.png)](https://medium.com/@onix_react?source=post_page---read_next_recirc--58adf989740f----3---------------------46478a3f_42d2_44a5_9f56_b0f8242c8687--------------)\n\n[Onix React](https://medium.com/@onix_react?source=post_page---read_next_recirc--58adf989740f----3---------------------46478a3f_42d2_44a5_9f56_b0f8242c8687--------------)\n\n[**Everyday Coding Tasks You Should Automate with AI**\\\\\n\\\\\n**AI can automate many repetitive coding tasks, allowing developers to focus on problem-solving, architecture, and creative work. It can help…**](https://medium.com/@onix_react/everyday-coding-tasks-you-should-automate-with-ai-73e64173ab05?source=post_page---read_next_recirc--58adf989740f----3---------------------46478a3f_42d2_44a5_9f56_b0f8242c8687--------------)\n\nMar 18\n\n[A clap icon51](https://medium.com/@onix_react/everyday-coding-tasks-you-should-automate-with-ai-73e64173ab05?source=post_page---read_next_recirc--58adf989740f----3---------------------46478a3f_42d2_44a5_9f56_b0f8242c8687--------------)\n\n[See more recommendations](https://medium.com/?source=post_page---read_next_recirc--58adf989740f---------------------------------------)\n\n[Help](https://help.medium.com/hc/en-us?source=post_page-----58adf989740f---------------------------------------)\n\n[Status](https://status.medium.com/?source=post_page-----58adf989740f---------------------------------------)\n\n[About](https://medium.com/about?autoplay=1&source=post_page-----58adf989740f---------------------------------------)\n\n[Careers](https://medium.com/jobs-at-medium/work-at-medium-959d1a85284e?source=post_page-----58adf989740f---------------------------------------)\n\n[Press](mailto:pressinquiries@medium.com)\n\n[Blog](https://blog.medium.com/?source=post_page-----58adf989740f---------------------------------------)\n\n[Privacy](https://policy.medium.com/medium-privacy-policy-f03bf92035c9?source=post_page-----58adf989740f---------------------------------------)\n\n[Rules](https://policy.medium.com/medium-rules-30e5502c4eb4?source=post_page-----58adf989740f---------------------------------------)\n\n[Terms](https://policy.medium.com/medium-terms-of-service-9db0094a1e0f?source=post_page-----58adf989740f---------------------------------------)\n\n[Text to speech](https://speechify.com/medium?source=post_page-----58adf989740f---------------------------------------)\n\nreCAPTCHA\n\nRecaptcha requires verification.\n\n[Privacy](https://www.google.com/intl/en/policies/privacy/) \\- [Terms](https://www.google.com/intl/en/policies/terms/)\n\nprotected by **reCAPTCHA**\n\n[Privacy](https://www.google.com/intl/en/policies/privacy/) \\- [Terms](https://www.google.com/intl/en/policies/terms/)","metadata":{"description":"TypeScript or JavaScript in 2026? We break down what's changed, what it actually costs to stay on plain JS, and when TypeScript is no longer optional.","author":"Kevin - MERN Stack Developer","ogUrl":"https://medium.com/@mernstackdevbykevin/typescript-vs-javascript-in-2026-is-plain-js-still-enough-58adf989740f","al:ios:url":"medium://p/58adf989740f","og:url":"https://medium.com/@mernstackdevbykevin/typescript-vs-javascript-in-2026-is-plain-js-still-enough-58adf989740f","al:ios:app_name":"Medium","viewport":"width=device-width,minimum-scale=1,initial-scale=1,maximum-scale=1","publishedTime":"2026-03-23T12:47:39.075Z","og:image":"https://miro.medium.com/v2/resize:fit:1200/1*ZLA9OtU4v4Tzr1nw6YIdiQ.png","title":"TypeScript vs JavaScript in 2026 — Is Plain JS Still Enough for Production? | Medium","twitter:image:src":"https://miro.medium.com/v2/resize:fit:1200/1*ZLA9OtU4v4Tzr1nw6YIdiQ.png","fb:app_id":"542599432471018","al:web:url":"https://medium.com/@mernstackdevbykevin/typescript-vs-javascript-in-2026-is-plain-js-still-enough-58adf989740f","article:published_time":"2026-03-23T12:47:39.075Z","al:ios:app_store_id":"828256236","twitter:title":"TypeScript vs JavaScript in 2026 — Is Plain JS Still Enough?","twitter:card":"summary_large_image","og:site_name":"Medium","twitter:app:name:iphone":"Medium","ogTitle":"TypeScript vs JavaScript in 2026 — Is Plain JS Still Enough?","og:title":"TypeScript vs JavaScript in 2026 — Is Plain JS Still Enough?","ogDescription":"The web ecosystem has voted. But the real question isnt which one is better — its whether you can still afford to ignore TypeScript.","al:android:package":"com.medium.reader","twitter:description":"The web ecosystem has voted. But the real question isnt which one is better — its whether you can still afford to ignore TypeScript.","theme-color":"#000000","apple-itunes-app":"app-id=828256236, app-argument=/@mernstackdevbykevin/typescript-vs-javascript-in-2026-is-plain-js-still-enough-58adf989740f, affiliate-data=pt=698524&ct=smart_app_banner&mt=8","robots":"index,noarchive,follow,max-image-preview:large","twitter:image:alt":"A cinematic 3D hero image featuring the JavaScript and TypeScript logos rendered in realistic metallic 3D side by side, against a gradient background blending JS yellow into TypeScript deep blue. React, Next.js, and Tailwind CSS logos float subtly in the background. Bold text overlay reads “TS 5.x vs JS.” Soft cinematic shadows and premium lens flare create a polished, publication-ready composition with no desk or workspace.","referrer":"unsafe-url","twitter:app:id:iphone":"828256236","language":"en","ogImage":"https://miro.medium.com/v2/resize:fit:1200/1*ZLA9OtU4v4Tzr1nw6YIdiQ.png","og:type":"article","og:image:alt":"A cinematic 3D hero image featuring the JavaScript and TypeScript logos rendered in realistic metallic 3D side by side, against a gradient background blending JS yellow into TypeScript deep blue. React, Next.js, and Tailwind CSS logos float subtly in the background. Bold text overlay reads “TS 5.x vs JS.” Soft cinematic shadows and premium lens flare create a polished, publication-ready composition with no desk or workspace.","twitter:data1":"4 min read","al:android:app_name":"Medium","al:android:url":"medium://p/58adf989740f","twitter:label1":"Reading time","twitter:site":"@Medium","twitter:app:url:iphone":"medium://p/58adf989740f","og:description":"The web ecosystem has voted. But the real question isnt which one is better — its whether you can still afford to ignore TypeScript.","article:author":"https://medium.com/@mernstackdevbykevin","ogSiteName":"Medium","favicon":"https://miro.medium.com/v2/5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19","scrapeId":"019d3957-f101-77ae-8c2f-f977471b155f","sourceURL":"https://medium.com/@mernstackdevbykevin/typescript-vs-javascript-in-2026-is-plain-js-still-enough-58adf989740f","url":"https://medium.com/@mernstackdevbykevin/typescript-vs-javascript-in-2026-is-plain-js-still-enough-58adf989740f","statusCode":200,"contentType":"text/html; charset=utf-8","timezone":"America/New_York","proxyUsed":"basic","cacheState":"miss","indexId":"bfab18ac-3b21-4888-b92e-139be538a21a","creditsUsed":1}}]}}