{"componentChunkName":"component---src-core-pages-page-template-tsx","path":"/en-US/libraries/meta-frameworks/","result":{"pageContext":{"id":"meta_frameworks","blocks":[{"id":"meta_frameworks_introduction","variants":[{"id":"meta_frameworks_introduction","blockType":"PageIntroductionBlock","wrapBlock":false,"disableExport":true,"name":"page_introduction","template":"page_introduction","isMainBlock":true,"path":"/libraries/meta-frameworks/meta_frameworks_introduction/","sectionId":"meta_frameworks"}]},{"id":"highlight_meta_frameworks","variants":[{"blockType":"HighlightBlock","wrapBlock":false,"showInNav":false,"dataPath":"dataAPI.highlight_astro","query":"highlight_astro: entity(id: \"astro\") {\n    id\n    name\n    nameHtml\n    nameClean\n    alias\n    description\n    descriptionHtml\n    descriptionClean\n    id\n    parentId\n    entityType\n    example {\n      label\n      language\n      code\n      codeHighlighted\n    }\n    avatar {\n      url\n    }\n    homepage {\n      url\n    }\n    youtube {\n      url\n    }\n    twitter {\n      url\n    }\n    bluesky {\n      url\n    }\n    threads {\n      url\n    }\n    twitch {\n      url\n    }\n    rss {\n      url\n    }\n    blog {\n        url\n    }\n    mastodon {\n        url\n    }\n    github {\n        url\n    }\n    npm {\n        url\n    }\n    mdn {\n        url\n    }\n    caniuse {\n        url\n    }\n    resources {\n        url\n        title\n    }\n    webFeature {\n        id\n        description_html\n        group\n        name\n        spec\n        url\n        status {\n            baseline\n            baseline_low_date\n            support {\n            chrome\n            chrome_android\n            edge\n            firefox\n            firefox_android\n            safari\n            safari_ios\n            }\n        }\n    }\n}\n","name":"highlight","id":"highlight_meta_frameworks","template":"highlight","variables":{"type":"library","itemId":"astro"},"isMainBlock":true,"path":"/libraries/meta-frameworks/highlight_meta_frameworks/","sectionId":"meta_frameworks"}]},{"id":"meta_frameworks_ratios","variants":[{"id":"meta_frameworks_ratios","blockType":"RatiosByEdition","hasSponsor":true,"customizationModes":["filters"],"queryOptions":{"questionId":"_items","addBuckets":false,"addRatios":true,"addQuestionEntity":true,"allEditions":true,"addQuestionComments":false},"parameters":{"cutoffPercent":0,"facetCutoffPercent":0,"limit":0},"query":"surveys {\n  state_of_js {\n    js2025 {\n      meta_frameworks {\n        meta_frameworks_ratios: _items {\n          id\n          entity {\n            name\n            nameClean\n            nameHtml\n            alias\n            entityType\n            description\n            descriptionClean\n            descriptionHtml\n            homepage {\n              url\n            }\n            caniuse {\n              name\n              url\n            }\n            mdn {\n              locale\n              url\n              title\n              summary\n            }\n            example {\n              label\n              language\n              code\n              codeHighlighted\n            }\n          }\n          responses(facet: _sentiment) {\n            allEditions {\n              year\n              editionId\n              ratios {\n                awareness\n                interest\n                usage\n                retention\n                positivity\n                positivityRelative\n                appreciation\n              }\n              completion {\n                count\n                percentageSurvey\n                total\n              }\n              buckets {\n                id\n                count\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}\n","name":"multi_items_ratios","template":"multi_items_ratios","i18nNamespace":"tools","isMainBlock":true,"path":"/libraries/meta-frameworks/meta_frameworks_ratios/","sectionId":"meta_frameworks"}]},{"id":"meta_frameworks_others","variants":[{"id":"meta_frameworks_others","blockType":"HorizontalBarBlock2","defaultUnits":"count","hasSponsor":true,"hasData":true,"i18nNamespace":"tools","customizationModes":["filters","facets"],"parameters":{"limit":10},"queryOptions":{"addBucketsEntities":true,"subField":"prenormalized"},"name":"section_prenormalized_tools","template":"section_prenormalized_tools","isMainBlock":true,"path":"/libraries/meta-frameworks/meta_frameworks_others/","sectionId":"meta_frameworks"}]},{"id":"declan_chidlow","variants":[{"blockType":"PicksBlock","i18nNamespace":"picks","wrapBlock":false,"disableExport":true,"dataPath":"dataAPI.entity_declan_chidlow","query":"entity_declan_chidlow: entity(id: \"declan_chidlow\") {\n  id\n  homepage {\n    name\n    url\n  }\n  name\n  nameClean\n  twitter {\n    name\n    url\n  }\n}\n","name":"picks","id":"declan_chidlow","template":"picks","variables":{"url":"https://weborigami.org/"},"isMainBlock":true,"path":"/libraries/meta-frameworks/declan_chidlow/","sectionId":"meta_frameworks"}]},{"id":"meta_frameworks_cardinalities","variants":[{"id":"meta_frameworks_cardinalities","titleId":"tools.cardinalities","descriptionKey":"tools.cardinalities.description","blockType":"CardinalitiesBlock","defaultView":"percentageSurvey","hasData":true,"customizationModes":["filters"],"queryOptions":{"questionId":"_cardinalities","addQuestionComments":false,"addBucketsEntities":false,"editionsCount":1,"subField":"responses","addCorrelations":false},"parameters":{"cutoff":1,"sort":{"order":"asc","property":"id"}},"name":"cardinalities","template":"cardinalities","isMainBlock":true,"path":"/libraries/meta-frameworks/meta_frameworks_cardinalities/","sectionId":"meta_frameworks"}]},{"id":"meta_frameworks_happiness","variants":[{"id":"meta_frameworks_happiness","blockType":"VerticalBarBlock2","showDescription":false,"i18nNamespace":"tools","hasSponsor":true,"parameters":{"showNoAnswer":true},"customizationModes":["filters"],"hasData":true,"queryOptions":{"allEditions":true},"name":"happiness2","template":"happiness2","isMainBlock":true,"path":"/libraries/meta-frameworks/meta_frameworks_happiness/","sectionId":"meta_frameworks"}]},{"id":"meta_frameworks_pain_points","variants":[{"blockType":"HorizontalBarBlock2","fieldId":"meta_frameworks_pain_points","hasSponsor":true,"hasData":true,"queryOptions":{"addBucketsEntities":true,"subField":"freeform","addGroupedBuckets":false,"addNestedBuckets":true,"sectionId":"meta_frameworks","addCardinalities":true},"hideOtherAnswersBucket":true,"customizationModes":["filters","facets"],"parameters":{"showNoAnswer":true,"cutoff":5,"limit":25,"mergeOtherBuckets":true},"tabId":"tabs.all_pain_points","descriptionId":"features.pain_points.default","filtersState":{"bucketsFilter":{"nin":["limitations"]}},"name":"nested_pain_points","id":"meta_frameworks_pain_points","template":"nested_pain_points","i18nNamespace":"tools","isMainBlock":true,"path":"/libraries/meta-frameworks/meta_frameworks_pain_points/","sectionId":"meta_frameworks"}]},{"id":"meta_frameworks_resources","variants":[{"id":"meta_frameworks_resources","titleId":"blocks.recommended_resources","blockType":"RecommendedResourcesBlock","showDescription":false,"disableExport":true,"name":"recommended_resources","items":["fm-nextjs-v4","fm-react-state-management"],"template":"recommended_resources","isMainBlock":true,"path":"/libraries/meta-frameworks/meta_frameworks_resources/","sectionId":"meta_frameworks"}]}],"parent":{"id":"libraries","path":"/libraries","blocks":[{"id":"librariesIntroduction","template":"page_introduction"},{"id":"all_tools_experience","template":"multi_items_experience","i18nNamespace":"tools","queryOptions":{"sectionId":"_all_libraries"},"chartOptions":{"limit":10,"categories":["front_end_frameworks","back_end_frameworks","meta_frameworks","testing","build_tools"]}},{"id":"tools_arrows","template":"tools_arrows","i18nNamespace":"tools","queryOptions":{"sectionId":"_all_libraries"},"chartOptions":{"categories":["front_end_frameworks","back_end_frameworks","meta_frameworks","testing","build_tools"]}},{"id":"shaundai_person","template":"picks","variables":{"url":"https://www.bytesofbree.com/"}},{"id":"tier_list","template":"tier_list"},{"id":"tools_ratios_over_time","template":"multi_items_ratios","i18nNamespace":"tools","queryOptions":{"sectionId":"_all_libraries"},"variables":{"enableMultiSection":true}},{"id":"scatterplot_overview","i18nNamespace":"tools","queryOptions":{"sectionId":"_all_libraries"},"template":"scatterplot_overview"},{"id":"libraries_resources","items":["fm-react-v8","fm-typescript-fundamentals"],"template":"recommended_resources"}]},"is_hidden":false,"pageIndex":5,"defaultBlockType":"default","previous":{"id":"front_end_frameworks","path":"/libraries/front-end-frameworks/","parent":{"id":"libraries","path":"/libraries","blocks":[{"id":"librariesIntroduction","template":"page_introduction"},{"id":"all_tools_experience","template":"multi_items_experience","i18nNamespace":"tools","queryOptions":{"sectionId":"_all_libraries"},"chartOptions":{"limit":10,"categories":["front_end_frameworks","back_end_frameworks","meta_frameworks","testing","build_tools"]}},{"id":"tools_arrows","template":"tools_arrows","i18nNamespace":"tools","queryOptions":{"sectionId":"_all_libraries"},"chartOptions":{"categories":["front_end_frameworks","back_end_frameworks","meta_frameworks","testing","build_tools"]}},{"id":"shaundai_person","template":"picks","variables":{"url":"https://www.bytesofbree.com/"}},{"id":"tier_list","template":"tier_list"},{"id":"tools_ratios_over_time","template":"multi_items_ratios","i18nNamespace":"tools","queryOptions":{"sectionId":"_all_libraries"},"variables":{"enableMultiSection":true}},{"id":"scatterplot_overview","i18nNamespace":"tools","queryOptions":{"sectionId":"_all_libraries"},"template":"scatterplot_overview"},{"id":"libraries_resources","items":["fm-react-v8","fm-typescript-fundamentals"],"template":"recommended_resources"}]},"pageIndex":4,"defaultBlockType":"default"},"next":{"id":"back_end_frameworks","path":"/libraries/back-end-frameworks/","parent":{"id":"libraries","path":"/libraries","blocks":[{"id":"librariesIntroduction","template":"page_introduction"},{"id":"all_tools_experience","template":"multi_items_experience","i18nNamespace":"tools","queryOptions":{"sectionId":"_all_libraries"},"chartOptions":{"limit":10,"categories":["front_end_frameworks","back_end_frameworks","meta_frameworks","testing","build_tools"]}},{"id":"tools_arrows","template":"tools_arrows","i18nNamespace":"tools","queryOptions":{"sectionId":"_all_libraries"},"chartOptions":{"categories":["front_end_frameworks","back_end_frameworks","meta_frameworks","testing","build_tools"]}},{"id":"shaundai_person","template":"picks","variables":{"url":"https://www.bytesofbree.com/"}},{"id":"tier_list","template":"tier_list"},{"id":"tools_ratios_over_time","template":"multi_items_ratios","i18nNamespace":"tools","queryOptions":{"sectionId":"_all_libraries"},"variables":{"enableMultiSection":true}},{"id":"scatterplot_overview","i18nNamespace":"tools","queryOptions":{"sectionId":"_all_libraries"},"template":"scatterplot_overview"},{"id":"libraries_resources","items":["fm-react-v8","fm-typescript-fundamentals"],"template":"recommended_resources"}]},"pageIndex":6,"defaultBlockType":"default"},"basePath":"/libraries/meta-frameworks/","metadata":[],"locales":[{"path":"/en-US","completion":100,"id":"en-US","label":"English","active":true},{"path":"/es-ES","completion":20,"id":"es-ES","label":"Español","active":true,"translators":["timbergus","ezakto","fransyrcc"]},{"path":"/fr-FR","completion":76,"id":"fr-FR","label":"Français","active":true,"translators":["arnauddrain","AvocadoVenom","dragonis41","AugustinMauroy","keltroth","dlapointegilbert","benoit-dumont"]},{"path":"/gl-ES","completion":30,"id":"gl-ES","label":"Galego","active":true,"translators":["nunhes","oscarotero"]},{"path":"/id-ID","completion":37,"id":"id-ID","label":"Indonesia","active":true,"translators":["ervinismu","algustionesa","KingSit3","Klrfl"]},{"path":"/ja-JP","completion":30,"id":"ja-JP","label":"日本語","active":true,"translators":["myakura","Spice-Z"]},{"path":"/ko-KR","completion":21,"id":"ko-KR","label":"한국어","active":true,"translators":["eterv","icepeng","Jcurver","firepunch","plrs9816","Heunsig","makepado","gunhoflash","suu3","zwonkim"]},{"path":"/ro-RO","completion":34,"id":"ro-RO","label":"Română","active":true,"translators":["magdaavram"]},{"path":"/ru-RU","completion":22,"id":"ru-RU","label":"Русский","active":true,"translators":["lex111","Omhet","shramkoweb"]},{"path":"/tr-TR","completion":20,"id":"tr-TR","label":"Türkçe","active":true,"translators":["berkayyildiz","muhammedogz","oguzhantufenk"]},{"path":"/ua-UA","completion":79,"id":"ua-UA","label":"Українська","active":true,"translators":["alinkedd","shramkoweb","lutsykvad"]},{"path":"/zh-Hans","completion":75,"id":"zh-Hans","label":"简体中文","active":true,"translators":["TIOvOIT","scarsu","shadowings-zy","littleee","donaldxdonald"]},{"path":"/hu-HU","completion":38,"id":"hu-HU","label":"Magyar","active":true,"translators":["punkah","b3nk3"]},{"path":"/pt-BR","completion":29,"id":"pt-BR","label":"Português (Brasil)","active":true,"translators":["the-physicist","thiagoloal","willmustafa","andreseichi","HakaCode","romulo1984","rodrigoant","vilaboim","ericknathan","taiporto"]},{"path":"/el-GR","completion":13,"id":"el-GR","label":"Ελληνικά","active":true,"translators":["kormic","ipapoutsidis","static037"]},{"path":"/vi-VN","completion":23,"id":"vi-VN","label":"Tiếng Việt","active":true,"translators":["ducdongmg"]},{"path":"/th-TH","completion":23,"id":"th-TH","label":"ภาษาไทย","active":true,"translators":["naralc"]},{"path":"/so-SO","completion":7,"id":"so-SO","label":"𐒈𐒝𐒑𐒛𐒐𐒘","active":true},{"path":"/nb-NO","completion":39,"id":"nb-NO","label":"Norsk","active":true,"translators":["JNKristiansen"]},{"path":"/he-HE","completion":6,"id":"he-HE","label":"עִבְרִית חֲדָשָׁה","active":true}],"localeContexts":["homepage","common","results","countries","state_of_js","js2024"],"chartSponsors":[],"surveyId":"state_of_js","config":{"translationContexts":["homepage","common","results","countries","state_of_js","js2024"],"baseUrl":"http://localhost:8001","sitemap":"../../../.logs/flat_sitemap.yml","editionId":"js2025"},"allSurveys":[{"id":"state_of_ai","name":"State of AI","homepageUrl":"https://stateofai.dev/","status":1,"imageUrl":"https://assets.devographics.com/surveys/state_of_js.png"},{"id":"state_of_css","name":"State of CSS","homepageUrl":"https://stateofcss.com/","status":1,"imageUrl":"https://assets.devographics.com/surveys/state_of_css.png"},{"id":"state_of_devs","name":"State of Devs","homepageUrl":"https://stateofdevs.com/","status":1,"imageUrl":"https://assets.devographics.com/surveys/state_of_js.png"},{"id":"state_of_graphql","name":"State of GraphQL","homepageUrl":"https://stateofgraphql.com/","status":2,"imageUrl":"https://assets.devographics.com/surveys/state_of_graphql.png"},{"id":"state_of_html","name":"State of HTML","homepageUrl":"https://stateofhtml.com/","status":1,"imageUrl":"https://assets.devographics.com/surveys/state_of_html.png"},{"id":"state_of_js","name":"State of JavaScript","homepageUrl":"https://stateofjs.com/","status":1,"imageUrl":"https://assets.devographics.com/surveys/state_of_js.png"},{"id":"state_of_react","name":"State of React","homepageUrl":"https://stateofreact.com/","status":1,"imageUrl":"https://assets.devographics.com/surveys/state_of_react.png"}],"currentSurvey":{"domain":"stateofjs.com","id":"state_of_js","name":"State of JavaScript","homepageUrl":"https://stateofjs.com/","imageUrl":"https://assets.devographics.com/surveys/state_of_js.png","emailOctopus":{"listId":"463dc2a9-b2ff-11e8-a3c9-06b79b628af2","submitUrl":"https://eomail3.com/form/75eba896-47ef-11ef-b09f-cbebfc926a4c"},"partners":[{"name":"Google Chrome","url":"https://google.com","imageUrl":"https://assets.devographics.com/sponsors/google.png"},{"name":"TokyoDev","url":"https://www.tokyodev.com/","imageUrl":"https://assets.devographics.com/sponsors/tokyodev.svg"},{"name":"Frontend Masters","url":"https://frontendmasters.com/?utm_source=stateofjs&utm_medium=website&utm_campaign=stateofjs2023","imageUrl":"https://devographics.github.io/surveys/state_of_css/css2023/images/sponsors/frontend-masters-dark.png"},{"name":"GitNation","url":"https://gitnation.com/?utm_source=Influencer&utm_medium=stateofjs","imageUrl":"https://assets.devographics.com/sponsors/GitNation-orange.svg"}],"editions":[{"year":2016,"id":"js2016","resultsUrl":"https://2016.stateofjs.com/","imageUrl":"https://static.devographics.com/stateofjs/2016/images/javascript9.svg"},{"year":2017,"id":"js2017","resultsUrl":"https://2017.stateofjs.com/","imageUrl":"https://static.devographics.com/stateofjs/2017/images/javascript2017.svg"},{"year":2018,"id":"js2018","resultsUrl":"https://2018.stateofjs.com/","imageUrl":"https://static.devographics.com/stateofjs/2018/images/stateofjs2018.png"},{"year":2019,"id":"js2019","resultsUrl":"https://2019.stateofjs.com/","imageUrl":"https://static.devographics.com/stateofjs/2019/images/stateofjs2019.png"},{"year":2020,"id":"js2020","resultsUrl":"https://2020.stateofjs.com/","imageUrl":"https://static.devographics.com/stateofjs/2020/images/stateofjs2020.png"},{"year":2021,"id":"js2021","resultsUrl":"https://2021.stateofjs.com/","imageUrl":"https://devographics.github.io/surveys/state_of_js/js2021/images/js2021.png"},{"year":2022,"id":"js2022","resultsUrl":"https://2022.stateofjs.com/","imageUrl":"https://devographics.github.io/surveys/state_of_js/js2022/images/js2022.png"},{"year":2023,"id":"js2023","resultsUrl":"https://2023.stateofjs.com/"},{"year":2024,"id":"js2024","resultsUrl":"https://2024.stateofjs.com/"},{"year":2025,"id":"js2025","resultsUrl":"https://2025.stateofjs.com/"},{"year":2026,"id":"js2026","resultsUrl":"https://2026.stateofjs.com/"}]},"currentEdition":{"id":"js2025","year":2025,"status":3,"startedAt":"September 24, 2025","endedAt":"November 11, 2025","questionsUrl":"https://survey.devographics.com/survey/state-of-js/2025","resultsUrl":"https://2025.stateofjs.com/","tshirt":{"images":["js2021-tshirt.jpg"],"url":"https://cottonbureau.com/products/javascript-retro-vhs","price":32,"designerUrl":"https://chriskirknielsen.com/"},"sponsors":[{"id":"google_chrome","name":"Google Chrome","url":"https://www.google.com/chrome/?utm_source=stateofjs&utm_medium=website&utm_campaign=js2025","imageUrl":"https://assets.devographics.com/sponsors/google.png"},{"id":"tokyodev","name":"TokyoDev","url":"https://www.tokyodev.com/?utm_source=stateofjs&utm_medium=website&utm_campaign=js2025","imageUrl":"https://assets.devographics.com/sponsors/tokyodev.svg"},{"id":"frontendmasters","name":"Frontend Masters","url":"https://frontendmasters.com/?utm_source=stateofjs&utm_medium=website&utm_campaign=js2025","imageUrl":"https://devographics.github.io/surveys/state_of_css/css2023/images/sponsors/frontend-masters-dark.png"},{"id":"algolia","name":"Algolia","url":"https://www.algolia.com/?utm_source=stateofjs&utm_medium=website&utm_campaign=js2025","imageUrl":"https://assets.devographics.com/sponsors/algolia-logo-white.svg"},{"id":"storyblok","name":"Storyblok","url":"https://www.storyblok.com/?utm_source=stateofjs&utm_medium=website&utm_campaign=js2025","imageUrl":"https://assets.devographics.com/sponsors/storyblok-light.svg"},{"id":"webstorm","name":"WebStorm","url":"https://www.jetbrains.com/webstorm/?utm_source=stateofjs&utm_medium=website&utm_campaign=js2025","imageUrl":"https://assets.devographics.com/sponsors/webstorm.svg"}],"sections":[{"id":"features","questions":[{"id":"syntax_features","template":"multiple","allowMultiple":true,"options":[{"entity":{"name":"Dynamic Import","nameHtml":"Dynamic Import","nameClean":"Dynamic Import","description":"Load a module asynchronously and dynamically.","descriptionHtml":"Load a module asynchronously and dynamically.","descriptionClean":"Load a module asynchronously and dynamically.","id":"dynamic_import","tags":["entities","features","js_features","js_other","meta_frameworks_pain_points","build_tools_pain_points"],"example":{"language":"js","code":"await import('/modules/my-module.js')\n","codeHighlighted":"<span class=\"hljs-keyword\">await</span> <span class=\"hljs-keyword\">import</span>(<span class=\"hljs-string\">&#x27;/modules/my-module.js&#x27;</span>)"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import"}},"id":"dynamic_import"},{"entity":{"name":"Nullish Coalescing","nameHtml":"Nullish Coalescing","nameClean":"Nullish Coalescing","description":"Return first value, or second value if first value is `null` or `undefined`.","descriptionHtml":"Return first value, or second value if first value is <code>null</code> or <code>undefined</code>.","descriptionClean":"Return first value, or second value if first value is null or undefined.","id":"nullish_coalescing","tags":["entities","features","js_features","js_other","has_web_features_id"],"example":{"language":"js","code":"const foo = null ?? 'default string';\nconsole.log(foo);\n// expected output: \"default string\"\n\nconst baz = 0 ?? 42;\nconsole.log(baz);\n// expected output: 0\n","codeHighlighted":"<span class=\"hljs-keyword\">const</span> foo = <span class=\"hljs-literal\">null</span> ?? <span class=\"hljs-string\">&#x27;default string&#x27;</span>;\n<span class=\"hljs-variable language_\">console</span>.<span class=\"hljs-title function_\">log</span>(foo);\n<span class=\"hljs-comment\">// expected output: &quot;default string&quot;</span>\n\n<span class=\"hljs-keyword\">const</span> baz = <span class=\"hljs-number\">0</span> ?? <span class=\"hljs-number\">42</span>;\n<span class=\"hljs-variable language_\">console</span>.<span class=\"hljs-title function_\">log</span>(baz);\n<span class=\"hljs-comment\">// expected output: 0</span>"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing"},"webFeature":{"id":"nullish-coalescing","description_html":"The nullish coalescing (<code>??</code>) and nullish coalescing assignment (<code>??=</code>) operators return (or assign) its right-hand side operand when its left-hand side operand is null or undefined, and otherwise returns its left-hand side operand.","group":["javascript"],"name":"Nullish coalescing","spec":["https://tc39.es/ecma262/multipage/ecmascript-language-expressions.html#prod-CoalesceExpression"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/nullish-coalescing/","status":{"baseline":"high","baseline_low_date":"2020-09-16","support":{"chrome":"85","chrome_android":"85","edge":"85","firefox":"79","firefox_android":"79","safari":"14","safari_ios":"14"}}}},"id":"nullish_coalescing"},{"entity":{"name":"Private Properties","nameHtml":"Private Properties","nameClean":"Private Properties","description":"Properties that cannot be legally referenced outside of the class.","descriptionHtml":"Properties that cannot be legally referenced outside of the class.","descriptionClean":"Properties that cannot be legally referenced outside of the class.","id":"private_fields","tags":["entities","features","js_features","js_other"],"example":{"language":"js","code":"class ClassWithPrivateField {\n  #privateField\n}\n","codeHighlighted":"<span class=\"hljs-keyword\">class</span> <span class=\"hljs-title class_\">ClassWithPrivateField</span> {\n  #privateField\n}"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Private_elements"}},"id":"private_fields"},{"entity":{"name":"Logical Assignment","nameHtml":"Logical Assignment","nameClean":"Logical Assignment","description":"Operators to assign a value to a variable based on its own truthy/falsy status.","descriptionHtml":"Operators to assign a value to a variable based on its own truthy/falsy status.","descriptionClean":"Operators to assign a value to a variable based on its own truthy/falsy status.","id":"logical_assignment","tags":["entities","features","js_features","js_other","has_web_features_id"],"example":{"language":"js","code":"const a = { duration: 50, title: '' };\n\na.duration ||= 10;\nconsole.log(a.duration);\n// expected output: 50\n\na.title ||= 'title is empty.';\nconsole.log(a.title);\n// expected output: \"title is empty\"\n","codeHighlighted":"<span class=\"hljs-keyword\">const</span> a = { <span class=\"hljs-attr\">duration</span>: <span class=\"hljs-number\">50</span>, <span class=\"hljs-attr\">title</span>: <span class=\"hljs-string\">&#x27;&#x27;</span> };\n\na.<span class=\"hljs-property\">duration</span> ||= <span class=\"hljs-number\">10</span>;\n<span class=\"hljs-variable language_\">console</span>.<span class=\"hljs-title function_\">log</span>(a.<span class=\"hljs-property\">duration</span>);\n<span class=\"hljs-comment\">// expected output: 50</span>\n\na.<span class=\"hljs-property\">title</span> ||= <span class=\"hljs-string\">&#x27;title is empty.&#x27;</span>;\n<span class=\"hljs-variable language_\">console</span>.<span class=\"hljs-title function_\">log</span>(a.<span class=\"hljs-property\">title</span>);\n<span class=\"hljs-comment\">// expected output: &quot;title is empty&quot;</span>"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_OR_assignment"},"caniuse":{"url":"https://caniuse.com/mdn-javascript_operators_logical_and_assignment"},"webFeature":{"id":"logical-assignments","description_html":"The logical AND assignment (<code>&#x26;&#x26;=</code>) and the logical OR assignment (<code>||=</code>) operators short-circuit the respective binary logical operators.","group":["javascript"],"name":"Logical assignments","spec":["https://tc39.es/ecma262/multipage/ecmascript-language-expressions.html#sec-assignment-operators"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/logical-assignments/","status":{"baseline":"high","baseline_low_date":"2020-09-16","support":{"chrome":"85","chrome_android":"85","edge":"85","firefox":"79","firefox_android":"79","safari":"14","safari_ios":"14"}}}},"id":"logical_assignment"},{"entity":{"name":"`error.cause`","nameHtml":"<code>error.cause</code>","nameClean":"error.cause","description":"Indicate the specific original cause of the error.","descriptionHtml":"Indicate the specific original cause of the error.","descriptionClean":"Indicate the specific original cause of the error.","id":"error_cause","tags":["entities","features","js_features","js_other","has_web_features_id"],"example":{"language":"js","code":"try {\n  connectToDatabase();\n} catch (err) {\n  throw new Error('Connecting to database failed.', { cause: err });\n}\n","codeHighlighted":"<span class=\"hljs-keyword\">try</span> {\n  <span class=\"hljs-title function_\">connectToDatabase</span>();\n} <span class=\"hljs-keyword\">catch</span> (err) {\n  <span class=\"hljs-keyword\">throw</span> <span class=\"hljs-keyword\">new</span> <span class=\"hljs-title class_\">Error</span>(<span class=\"hljs-string\">&#x27;Connecting to database failed.&#x27;</span>, { <span class=\"hljs-attr\">cause</span>: err });\n}"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause"},"webFeature":{"id":"error-cause","description_html":"The <code>cause</code> property of errors records the specific original cause of the error, particularly for errors that have been re-thrown.","group":["javascript"],"name":"Error cause","spec":["https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-installerrorcause"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/error-cause/","status":{"baseline":"high","baseline_low_date":"2021-09-20","support":{"chrome":"93","chrome_android":"93","edge":"93","firefox":"91","firefox_android":"91","safari":"15","safari_ios":"15"}}}},"id":"error_cause"},{"entity":{"name":"Hashbang Grammar","nameHtml":"Hashbang Grammar","nameClean":"Hashbang Grammar","description":"Provide the path to a specific JavaScript interpreter that you want to use to execute the script.","descriptionHtml":"Provide the path to a specific JavaScript interpreter that you want to use to execute the script.","descriptionClean":"Provide the path to a specific JavaScript interpreter that you want to use to execute the script.","id":"hashbang_grammar","tags":["entities","features","js_features","js_other","has_web_features_id"],"example":{"language":"js","code":"#!/usr/bin/env node\n\nconsole.log(\"Hello world\");\n","codeHighlighted":"<span class=\"hljs-meta\">#!/usr/bin/env node</span>\n\n<span class=\"hljs-variable language_\">console</span>.<span class=\"hljs-title function_\">log</span>(<span class=\"hljs-string\">&quot;Hello world&quot;</span>);"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar"},"webFeature":{"id":"hashbang-comments","description_html":"The <code>#!</code> comment at the absolute start of a script or module is treated as a normal comment and is ignored by the JavaScript engine.","group":["javascript"],"name":"Hashbang comments","spec":["https://tc39.es/ecma262/multipage/ecmascript-language-lexical-grammar.html#sec-hashbang"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/hashbang-comments/","status":{"baseline":"high","baseline_low_date":"2020-03-24","support":{"chrome":"74","chrome_android":"74","edge":"79","firefox":"67","firefox_android":"67","safari":"13.1","safari_ios":"13.4"}}}},"id":"hashbang_grammar"},{"entity":{"name":"Iterator Methods","nameHtml":"Iterator Methods","nameClean":"Iterator Methods","description":"Helper methods such as `map`, `filter`, `reduce`, and others applied to Iterators.","descriptionHtml":"Helper methods such as <code>map</code>, <code>filter</code>, <code>reduce</code>, and others applied to Iterators.","descriptionClean":"Helper methods such as map, filter, reduce, and others applied to Iterators.","id":"js_iterator_methods","tags":["entities","features","js_features","js_other","top_js_pain_points","has_web_features_id"],"example":{"language":"js","code":"function* factorials (n) {\n  let result = 1;\n  for (let i = 1; i <= n; i++) {\n    result *= i;\n    yield result;\n  }\n}\n\nconst filteredFactorials = factorials(128).filter(x => x % 8 === 0);\n","codeHighlighted":"<span class=\"hljs-keyword\">function</span>* <span class=\"hljs-title function_\">factorials</span> (n) {\n  <span class=\"hljs-keyword\">let</span> result = <span class=\"hljs-number\">1</span>;\n  <span class=\"hljs-keyword\">for</span> (<span class=\"hljs-keyword\">let</span> i = <span class=\"hljs-number\">1</span>; i &lt;= n; i++) {\n    result *= i;\n    <span class=\"hljs-keyword\">yield</span> result;\n  }\n}\n\n<span class=\"hljs-keyword\">const</span> filteredFactorials = <span class=\"hljs-title function_\">factorials</span>(<span class=\"hljs-number\">128</span>).<span class=\"hljs-title function_\">filter</span>(<span class=\"hljs-function\"><span class=\"hljs-params\">x</span> =&gt;</span> x % <span class=\"hljs-number\">8</span> === <span class=\"hljs-number\">0</span>);"},"resources":[{"url":"https://web.dev/blog/baseline-iterator-helpers","title":"Iterator helpers have become Baseline Newly available"}],"webFeature":{"id":"iterator-methods","description_html":"The <code>Iterator</code> object is an abstract base for objects that implement the iterator protocol. It provides methods common to built-in iterators, such as <code>filter()</code>, <code>find()</code>, <code>map()</code>, and <code>reduce()</code>. You can also use the static method <code>Iterator.from()</code> to convert an existing iterable into an <code>Iterator</code>.","group":["iterators"],"name":"Iterator methods","spec":["https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-iterator-helper-objects"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/iterator-methods/","status":{"baseline":"low","baseline_low_date":"2025-03-31","support":{"chrome":"122","chrome_android":"122","edge":"122","firefox":"131","firefox_android":"131","safari":"18.4","safari_ios":"18.4"}}}},"id":"js_iterator_methods"},{"entity":{"name":"`RegExp.escape`","nameHtml":"<code>RegExp.escape</code>","nameClean":"RegExp.escape","description":"Escaping a string for use inside a Regular Expression.","descriptionHtml":"Escaping a string for use inside a Regular Expression.","descriptionClean":"Escaping a string for use inside a Regular Expression.","id":"regexp_escape","tags":["entities","features","js_features","js_other","has_web_features_id"],"resources":[{"url":"https://github.com/tc39/proposal-regex-escaping","title":"RegExp Escaping Proposal"}],"webFeature":{"id":"regexp-escape","description_html":"The <code>RegExp.escape()</code> static method takes a string and replaces any characters that are potentially special characters of a regular expression with equivalent escape sequences. For example, <code>RegExp.escape(\"[abc]\")</code> returns <code>\"\\\\[abc\\\\]\"</code>.","group":["regexps"],"name":"RegExp.escape()","spec":["https://tc39.es/ecma262/multipage/text-processing.html#sec-regexp.escape"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/regexp-escape/","status":{"baseline":"low","baseline_low_date":"2025-05-01","support":{"chrome":"136","chrome_android":"136","edge":"136","firefox":"134","firefox_android":"134","safari":"18.2","safari_ios":"18.2"}}}},"id":"regexp_escape"},{"entity":{"name":"Float16Array","nameHtml":"Float16Array","nameClean":"Float16Array","description":"Add float16 (aka half-precision or binary16) TypedArrays to JavaScript.","descriptionHtml":"Add float16 (aka half-precision or binary16) TypedArrays to JavaScript.","descriptionClean":"Add float16 (aka half-precision or binary16) TypedArrays to JavaScript.","id":"js_float16_arrays","tags":["entities","features","js_features","js_other","has_web_features_id"],"resources":[{"url":"https://github.com/tc39/proposal-float16array","title":"Float16Array Proposal"}],"webFeature":{"id":"float16array","description_html":"Float16Array is a typed array of 16-bit floating point numbers.","group":["typed-arrays"],"name":"Float16Array","spec":["https://tc39.es/ecma262/multipage/global-object.html#sec-float16array"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/float16array/","status":{"baseline":"low","baseline_low_date":"2025-04-04","support":{"chrome":"135","chrome_android":"135","edge":"135","firefox":"129","firefox_android":"129","safari":"18.2","safari_ios":"18.2"}}}},"id":"js_float16_arrays"},{"id":"na"}]},{"id":"string_features","template":"multiple","allowMultiple":true,"options":[{"entity":{"name":"`string.replaceAll()`","nameHtml":"<code>string.replaceAll()</code>","nameClean":"string.replaceAll()","description":"Replace all instances of a string.","descriptionHtml":"Replace all instances of a string.","descriptionClean":"Replace all instances of a string.","id":"string_replace_all","tags":["entities","features","js_features","js_strings","has_web_features_id"],"example":{"language":"js","code":"const s1 = \"foo_bar_baz\";\nconst s2 = s1.replaceAll('_', '-');\n","codeHighlighted":"<span class=\"hljs-keyword\">const</span> s1 = <span class=\"hljs-string\">&quot;foo_bar_baz&quot;</span>;\n<span class=\"hljs-keyword\">const</span> s2 = s1.<span class=\"hljs-title function_\">replaceAll</span>(<span class=\"hljs-string\">&#x27;_&#x27;</span>, <span class=\"hljs-string\">&#x27;-&#x27;</span>);"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll"},"caniuse":{"url":"https://caniuse.com/mdn-javascript_builtins_string_replaceall"},"webFeature":{"id":"string-replaceall","description_html":"The <code>replaceAll()</code> method of strings returns a new string where all matches of a pattern (a string or regular expression) have been substituted with a replacement string.","group":["string"],"name":"String replaceAll()","spec":["https://tc39.es/ecma262/multipage/text-processing.html#sec-string-objects"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/string-replaceall/","status":{"baseline":"high","baseline_low_date":"2020-08-27","support":{"chrome":"85","chrome_android":"85","edge":"85","firefox":"77","firefox_android":"79","safari":"13.1","safari_ios":"13.4"}}}},"id":"string_replace_all"},{"entity":{"name":"`string.matchAll()`","nameHtml":"<code>string.matchAll()</code>","nameClean":"string.matchAll()","description":"Return an iterator of all results matching this string against a regular expression.","descriptionHtml":"Return an iterator of all results matching this string against a regular expression.","descriptionClean":"Return an iterator of all results matching this string against a regular expression.","id":"string_match_all","tags":["entities","features","js_features","js_strings","has_web_features_id"],"example":{"language":"js","code":"const regexp = /t(e)(st(\\d?))/g;\nconst str = 'test1test2';\nconst array = [...str.matchAll(regexp)];\n","codeHighlighted":"<span class=\"hljs-keyword\">const</span> regexp = <span class=\"hljs-regexp\">/t(e)(st(\\d?))/g</span>;\n<span class=\"hljs-keyword\">const</span> str = <span class=\"hljs-string\">&#x27;test1test2&#x27;</span>;\n<span class=\"hljs-keyword\">const</span> array = [...str.<span class=\"hljs-title function_\">matchAll</span>(regexp)];"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/matchAll"},"caniuse":{"url":"https://caniuse.com/mdn-javascript_builtins_string_matchall"},"webFeature":{"id":"string-matchall","description_html":"The <code>matchAll()</code> method of strings matches a string against a regular expression and returns an iterator of all results, including capturing groups.","group":["string"],"name":"String matchAll()","spec":["https://tc39.es/ecma262/multipage/text-processing.html#sec-string-objects"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/string-matchall/","status":{"baseline":"high","baseline_low_date":"2020-01-15","support":{"chrome":"73","chrome_android":"73","edge":"79","firefox":"67","firefox_android":"67","safari":"13","safari_ios":"13"}}}},"id":"string_match_all"},{"entity":{"name":"Regexp Match Indices","nameHtml":"Regexp Match Indices","nameClean":"Regexp Match Indices","description":"Store the start and end positions of each matched capture group.","descriptionHtml":"Store the start and end positions of each matched capture group.","descriptionClean":"Store the start and end positions of each matched capture group.","id":"regexp_match_indices","tags":["entities","features","js_features","js_other"],"example":{"language":"js","code":"const str1 = \"foo bar foo\";\nconst regex1 = /foo/dg;\nconsole.log(regex1.exec(str1).indices[0]); // Output: Array [0, 2]\n","codeHighlighted":"<span class=\"hljs-keyword\">const</span> str1 = <span class=\"hljs-string\">&quot;foo bar foo&quot;</span>;\n<span class=\"hljs-keyword\">const</span> regex1 = <span class=\"hljs-regexp\">/foo/</span>dg;\n<span class=\"hljs-variable language_\">console</span>.<span class=\"hljs-title function_\">log</span>(regex1.<span class=\"hljs-title function_\">exec</span>(str1).<span class=\"hljs-property\">indices</span>[<span class=\"hljs-number\">0</span>]); <span class=\"hljs-comment\">// Output: Array [0, 2]</span>"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/hasIndices"},"resources":[{"url":"https://v8.dev/features/regexp-match-indices","title":"RegExp match indices"}]},"id":"regexp_match_indices"},{"id":"na"}]},{"id":"array_features","template":"multiple","allowMultiple":true,"options":[{"id":"array_findlast"},{"entity":{"name":"`array.toSorted()`","nameHtml":"<code>array.toSorted()</code>","nameClean":"array.toSorted()","description":"Sort without mutating the original array.","descriptionHtml":"Sort without mutating the original array.","descriptionClean":"Sort without mutating the original array.","id":"array_to_sorted","tags":["entities","features","js_features","js_arrays","has_web_features_id"],"example":{"language":"js","code":"const values = [1, 10, 21, 2];\nconst sortedValues = values.toSorted((a, b) => a - b);\nconsole.log(sortedValues); // [1, 2, 10, 21]\nconsole.log(values); // [1, 10, 21, 2]\n","codeHighlighted":"<span class=\"hljs-keyword\">const</span> values = [<span class=\"hljs-number\">1</span>, <span class=\"hljs-number\">10</span>, <span class=\"hljs-number\">21</span>, <span class=\"hljs-number\">2</span>];\n<span class=\"hljs-keyword\">const</span> sortedValues = values.<span class=\"hljs-title function_\">toSorted</span>(<span class=\"hljs-function\">(<span class=\"hljs-params\">a, b</span>) =&gt;</span> a - b);\n<span class=\"hljs-variable language_\">console</span>.<span class=\"hljs-title function_\">log</span>(sortedValues); <span class=\"hljs-comment\">// [1, 2, 10, 21]</span>\n<span class=\"hljs-variable language_\">console</span>.<span class=\"hljs-title function_\">log</span>(values); <span class=\"hljs-comment\">// [1, 10, 21, 2]</span>"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toSorted"},"webFeature":{"id":"array-by-copy","description_html":"The <code>toReversed()</code>, <code>toSorted()</code>, <code>toSpliced()</code>, and <code>with()</code> methods of arrays and typed arrays return changed copies of arrays. They stand in contrast to methods such as <code>sort()</code> or <code>reverse()</code> that change arrays in place.","group":["arrays","typed-arrays"],"name":"Array by copy","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.toreversed","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.tosorted","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.tospliced","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.with","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.toreversed","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.tosorted","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.with"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/array-by-copy/","status":{"baseline":"high","baseline_low_date":"2023-07-04","support":{"chrome":"110","chrome_android":"110","edge":"110","firefox":"115","firefox_android":"115","safari":"16","safari_ios":"16"}}}},"id":"array_to_sorted"},{"entity":{"name":"`array.toReversed()`","nameHtml":"<code>array.toReversed()</code>","nameClean":"array.toReversed()","description":"Reverse without mutating the original array.","descriptionHtml":"Reverse without mutating the original array.","descriptionClean":"Reverse without mutating the original array.","id":"array_to_reversed","tags":["entities","features","js_features","js_arrays","has_web_features_id"],"example":{"language":"js","code":"const items = [1, 2, 3];\nconst reversedItems = items.toReversed();\nconsole.log(reversedItems); // [3, 2, 1]\nconsole.log(items); // [1, 2, 3]\n","codeHighlighted":"<span class=\"hljs-keyword\">const</span> items = [<span class=\"hljs-number\">1</span>, <span class=\"hljs-number\">2</span>, <span class=\"hljs-number\">3</span>];\n<span class=\"hljs-keyword\">const</span> reversedItems = items.<span class=\"hljs-title function_\">toReversed</span>();\n<span class=\"hljs-variable language_\">console</span>.<span class=\"hljs-title function_\">log</span>(reversedItems); <span class=\"hljs-comment\">// [3, 2, 1]</span>\n<span class=\"hljs-variable language_\">console</span>.<span class=\"hljs-title function_\">log</span>(items); <span class=\"hljs-comment\">// [1, 2, 3]</span>"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toReversed"},"webFeature":{"id":"array-by-copy","description_html":"The <code>toReversed()</code>, <code>toSorted()</code>, <code>toSpliced()</code>, and <code>with()</code> methods of arrays and typed arrays return changed copies of arrays. They stand in contrast to methods such as <code>sort()</code> or <code>reverse()</code> that change arrays in place.","group":["arrays","typed-arrays"],"name":"Array by copy","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.toreversed","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.tosorted","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.tospliced","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.with","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.toreversed","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.tosorted","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.with"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/array-by-copy/","status":{"baseline":"high","baseline_low_date":"2023-07-04","support":{"chrome":"110","chrome_android":"110","edge":"110","firefox":"115","firefox_android":"115","safari":"16","safari_ios":"16"}}}},"id":"array_to_reversed"},{"entity":{"name":"`array.with()`","nameHtml":"<code>array.with()</code>","nameClean":"array.with()","description":"Returns a new array with the element at the given index replaced with the given value.","descriptionHtml":"Returns a new array with the element at the given index replaced with the given value.","descriptionClean":"Returns a new array with the element at the given index replaced with the given value.","id":"array_with","tags":["entities","features","js_features","js_arrays","has_web_features_id"],"example":{"language":"js","code":"const arr = [1, 2, 3, 4, 5];\nconsole.log(arr.with(2, 6)); // [1, 2, 6, 4, 5]\n","codeHighlighted":"<span class=\"hljs-keyword\">const</span> arr = [<span class=\"hljs-number\">1</span>, <span class=\"hljs-number\">2</span>, <span class=\"hljs-number\">3</span>, <span class=\"hljs-number\">4</span>, <span class=\"hljs-number\">5</span>];\n<span class=\"hljs-variable language_\">console</span>.<span class=\"hljs-title function_\">log</span>(arr.<span class=\"hljs-title function_\">with</span>(<span class=\"hljs-number\">2</span>, <span class=\"hljs-number\">6</span>)); <span class=\"hljs-comment\">// [1, 2, 6, 4, 5]</span>"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/with"},"webFeature":{"id":"array-by-copy","description_html":"The <code>toReversed()</code>, <code>toSorted()</code>, <code>toSpliced()</code>, and <code>with()</code> methods of arrays and typed arrays return changed copies of arrays. They stand in contrast to methods such as <code>sort()</code> or <code>reverse()</code> that change arrays in place.","group":["arrays","typed-arrays"],"name":"Array by copy","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.toreversed","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.tosorted","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.tospliced","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.with","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.toreversed","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.tosorted","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.with"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/array-by-copy/","status":{"baseline":"high","baseline_low_date":"2023-07-04","support":{"chrome":"110","chrome_android":"110","edge":"110","firefox":"115","firefox_android":"115","safari":"16","safari_ios":"16"}}}},"id":"array_with"},{"entity":{"name":"`array.toSpliced()`","nameHtml":"<code>array.toSpliced()</code>","nameClean":"array.toSpliced()","description":"Splice without mutating the original array.","descriptionHtml":"Splice without mutating the original array.","descriptionClean":"Splice without mutating the original array.","id":"array_to_spliced","tags":["entities","features","js_features","js_arrays","has_web_features_id"],"example":{"language":"js","code":"const months = [\"Jan\", \"Mar\", \"Apr\", \"May\"];\n\n// Inserting an element at index 1\nconst months2 = months.toSpliced(1, 0, \"Feb\");\n","codeHighlighted":"<span class=\"hljs-keyword\">const</span> months = [<span class=\"hljs-string\">&quot;Jan&quot;</span>, <span class=\"hljs-string\">&quot;Mar&quot;</span>, <span class=\"hljs-string\">&quot;Apr&quot;</span>, <span class=\"hljs-string\">&quot;May&quot;</span>];\n\n<span class=\"hljs-comment\">// Inserting an element at index 1</span>\n<span class=\"hljs-keyword\">const</span> months2 = months.<span class=\"hljs-title function_\">toSpliced</span>(<span class=\"hljs-number\">1</span>, <span class=\"hljs-number\">0</span>, <span class=\"hljs-string\">&quot;Feb&quot;</span>);"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toSpliced"},"webFeature":{"id":"array-by-copy","description_html":"The <code>toReversed()</code>, <code>toSorted()</code>, <code>toSpliced()</code>, and <code>with()</code> methods of arrays and typed arrays return changed copies of arrays. They stand in contrast to methods such as <code>sort()</code> or <code>reverse()</code> that change arrays in place.","group":["arrays","typed-arrays"],"name":"Array by copy","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.toreversed","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.tosorted","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.tospliced","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.with","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.toreversed","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.tosorted","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.with"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/array-by-copy/","status":{"baseline":"high","baseline_low_date":"2023-07-04","support":{"chrome":"110","chrome_android":"110","edge":"110","firefox":"115","firefox_android":"115","safari":"16","safari_ios":"16"}}}},"id":"array_to_spliced"},{"entity":{"name":"`array.fromAsync()`","nameHtml":"<code>array.fromAsync()</code>","nameClean":"array.fromAsync()","description":"Similar to Array.from but for async iterators.","descriptionHtml":"Similar to Array.from but for async iterators.","descriptionClean":"Similar to Array.from but for async iterators.","id":"array_from_async","tags":["entities","features","js_features","js_arrays","has_web_features_id"],"example":{"language":"js","code":"const asyncIterable = (async function* () {\n  for (let i = 0; i < 5; i++) {\n    await new Promise((resolve) => setTimeout(resolve, 10 * i));\n    yield i;\n  }\n})();\n\nArray.fromAsync(asyncIterable).then((array) => console.log(array));\n// [0, 1, 2, 3, 4]\n","codeHighlighted":"<span class=\"hljs-keyword\">const</span> asyncIterable = (<span class=\"hljs-keyword\">async</span> <span class=\"hljs-keyword\">function</span>* () {\n  <span class=\"hljs-keyword\">for</span> (<span class=\"hljs-keyword\">let</span> i = <span class=\"hljs-number\">0</span>; i &lt; <span class=\"hljs-number\">5</span>; i++) {\n    <span class=\"hljs-keyword\">await</span> <span class=\"hljs-keyword\">new</span> <span class=\"hljs-title class_\">Promise</span>(<span class=\"hljs-function\">(<span class=\"hljs-params\">resolve</span>) =&gt;</span> <span class=\"hljs-built_in\">setTimeout</span>(resolve, <span class=\"hljs-number\">10</span> * i));\n    <span class=\"hljs-keyword\">yield</span> i;\n  }\n})();\n\n<span class=\"hljs-title class_\">Array</span>.<span class=\"hljs-title function_\">fromAsync</span>(asyncIterable).<span class=\"hljs-title function_\">then</span>(<span class=\"hljs-function\">(<span class=\"hljs-params\">array</span>) =&gt;</span> <span class=\"hljs-variable language_\">console</span>.<span class=\"hljs-title function_\">log</span>(array));\n<span class=\"hljs-comment\">// [0, 1, 2, 3, 4]</span>"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/fromAsync"},"webFeature":{"id":"array-fromasync","description_html":"The <code>Array.fromAsync()</code> static method copies items from an async iterable object to make a new array.","group":["arrays"],"name":"Array.fromAsync()","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.fromasync"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/array-fromasync/","status":{"baseline":"high","baseline_low_date":"2024-01-25","support":{"chrome":"121","chrome_android":"121","edge":"121","firefox":"115","firefox_android":"115","safari":"16.4","safari_ios":"16.4"}}}},"id":"array_from_async"},{"id":"na"}]},{"id":"set_features","template":"multiple","allowMultiple":true,"yearAdded":2024,"options":[{"entity":{"name":"`set.intersection()`","nameHtml":"<code>set.intersection()</code>","nameClean":"set.intersection()","description":"Returns a new set containing elements in both this set and the given set.","descriptionHtml":"Returns a new set containing elements in both this set and the given set.","descriptionClean":"Returns a new set containing elements in both this set and the given set.","id":"set_intersection","tags":["entities","features","js_features","js_sets","has_web_features_id"],"example":{"language":"js","code":"const odds = new Set([1, 3, 5, 7, 9]);\nconst squares = new Set([1, 4, 9]);\nconsole.log(odds.intersection(squares)); // Set(2) { 1, 9 }\n","codeHighlighted":"<span class=\"hljs-keyword\">const</span> odds = <span class=\"hljs-keyword\">new</span> <span class=\"hljs-title class_\">Set</span>([<span class=\"hljs-number\">1</span>, <span class=\"hljs-number\">3</span>, <span class=\"hljs-number\">5</span>, <span class=\"hljs-number\">7</span>, <span class=\"hljs-number\">9</span>]);\n<span class=\"hljs-keyword\">const</span> squares = <span class=\"hljs-keyword\">new</span> <span class=\"hljs-title class_\">Set</span>([<span class=\"hljs-number\">1</span>, <span class=\"hljs-number\">4</span>, <span class=\"hljs-number\">9</span>]);\n<span class=\"hljs-variable language_\">console</span>.<span class=\"hljs-title function_\">log</span>(odds.<span class=\"hljs-title function_\">intersection</span>(squares)); <span class=\"hljs-comment\">// Set(2) { 1, 9 }</span>"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/intersection"},"webFeature":{"id":"set-methods","description_html":"The <code>difference()</code>, <code>intersection()</code>, <code>isDisjointFrom()</code>, <code>isSubsetOf()</code>, <code>isSupersetOf()</code>, <code>symmetricDifference()</code>, and <code>union()</code> methods of the JavaScript <code>Set</code> object performs operations between two sets.","group":["sets"],"name":"Set methods","spec":["https://tc39.es/ecma262/multipage/keyed-collections.html#sec-properties-of-the-set-prototype-object"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/set-methods/","status":{"baseline":"low","baseline_low_date":"2024-06-11","support":{"chrome":"122","chrome_android":"122","edge":"122","firefox":"127","firefox_android":"127","safari":"17","safari_ios":"17"}}}},"id":"set_intersection"},{"entity":{"name":"`set.union()`","nameHtml":"<code>set.union()</code>","nameClean":"set.union()","description":"Returns a new set containing elements of both this set and the given set.","descriptionHtml":"Returns a new set containing elements of both this set and the given set.","descriptionClean":"Returns a new set containing elements of both this set and the given set.","id":"set_union","tags":["entities","features","js_features","js_sets","has_web_features_id"],"example":{"language":"js","code":"const evens = new Set([2, 4, 6, 8]);\nconst squares = new Set([1, 4, 9]);\nconsole.log(evens.union(squares)); // Set(6) { 2, 4, 6, 8, 1, 9 }\n","codeHighlighted":"<span class=\"hljs-keyword\">const</span> evens = <span class=\"hljs-keyword\">new</span> <span class=\"hljs-title class_\">Set</span>([<span class=\"hljs-number\">2</span>, <span class=\"hljs-number\">4</span>, <span class=\"hljs-number\">6</span>, <span class=\"hljs-number\">8</span>]);\n<span class=\"hljs-keyword\">const</span> squares = <span class=\"hljs-keyword\">new</span> <span class=\"hljs-title class_\">Set</span>([<span class=\"hljs-number\">1</span>, <span class=\"hljs-number\">4</span>, <span class=\"hljs-number\">9</span>]);\n<span class=\"hljs-variable language_\">console</span>.<span class=\"hljs-title function_\">log</span>(evens.<span class=\"hljs-title function_\">union</span>(squares)); <span class=\"hljs-comment\">// Set(6) { 2, 4, 6, 8, 1, 9 }</span>"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/union"},"webFeature":{"id":"set-methods","description_html":"The <code>difference()</code>, <code>intersection()</code>, <code>isDisjointFrom()</code>, <code>isSubsetOf()</code>, <code>isSupersetOf()</code>, <code>symmetricDifference()</code>, and <code>union()</code> methods of the JavaScript <code>Set</code> object performs operations between two sets.","group":["sets"],"name":"Set methods","spec":["https://tc39.es/ecma262/multipage/keyed-collections.html#sec-properties-of-the-set-prototype-object"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/set-methods/","status":{"baseline":"low","baseline_low_date":"2024-06-11","support":{"chrome":"122","chrome_android":"122","edge":"122","firefox":"127","firefox_android":"127","safari":"17","safari_ios":"17"}}}},"id":"set_union"},{"entity":{"name":"`set.difference()`","nameHtml":"<code>set.difference()</code>","nameClean":"set.difference()","description":"Returns a new set containing elements in this set but not in the given set.","descriptionHtml":"Returns a new set containing elements in this set but not in the given set.","descriptionClean":"Returns a new set containing elements in this set but not in the given set.","id":"set_difference","tags":["entities","features","js_features","js_sets","has_web_features_id"],"example":{"language":"js","code":"const odds = new Set([1, 3, 5, 7, 9]);\nconst squares = new Set([1, 4, 9]);\nconsole.log(odds.difference(squares)); // Set(3) { 3, 5, 7 }\n","codeHighlighted":"<span class=\"hljs-keyword\">const</span> odds = <span class=\"hljs-keyword\">new</span> <span class=\"hljs-title class_\">Set</span>([<span class=\"hljs-number\">1</span>, <span class=\"hljs-number\">3</span>, <span class=\"hljs-number\">5</span>, <span class=\"hljs-number\">7</span>, <span class=\"hljs-number\">9</span>]);\n<span class=\"hljs-keyword\">const</span> squares = <span class=\"hljs-keyword\">new</span> <span class=\"hljs-title class_\">Set</span>([<span class=\"hljs-number\">1</span>, <span class=\"hljs-number\">4</span>, <span class=\"hljs-number\">9</span>]);\n<span class=\"hljs-variable language_\">console</span>.<span class=\"hljs-title function_\">log</span>(odds.<span class=\"hljs-title function_\">difference</span>(squares)); <span class=\"hljs-comment\">// Set(3) { 3, 5, 7 }</span>"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/difference"},"webFeature":{"id":"set-methods","description_html":"The <code>difference()</code>, <code>intersection()</code>, <code>isDisjointFrom()</code>, <code>isSubsetOf()</code>, <code>isSupersetOf()</code>, <code>symmetricDifference()</code>, and <code>union()</code> methods of the JavaScript <code>Set</code> object performs operations between two sets.","group":["sets"],"name":"Set methods","spec":["https://tc39.es/ecma262/multipage/keyed-collections.html#sec-properties-of-the-set-prototype-object"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/set-methods/","status":{"baseline":"low","baseline_low_date":"2024-06-11","support":{"chrome":"122","chrome_android":"122","edge":"122","firefox":"127","firefox_android":"127","safari":"17","safari_ios":"17"}}}},"id":"set_difference"},{"entity":{"name":"`set.symmetricDifference()`","nameHtml":"<code>set.symmetricDifference()</code>","nameClean":"set.symmetricDifference()","description":"Returns a new set containing elements which are in either this set or the given set, but not in both.","descriptionHtml":"Returns a new set containing elements which are in either this set or the given set, but not in both.","descriptionClean":"Returns a new set containing elements which are in either this set or the given set, but not in both.","id":"set_symmetric_difference","tags":["entities","features","js_features","js_sets","has_web_features_id"],"example":{"language":"js","code":"const evens = new Set([2, 4, 6, 8]);\nconst squares = new Set([1, 4, 9]);\nconsole.log(evens.symmetricDifference(squares)); // Set(5) { 2, 6, 8, 1, 9 }\n","codeHighlighted":"<span class=\"hljs-keyword\">const</span> evens = <span class=\"hljs-keyword\">new</span> <span class=\"hljs-title class_\">Set</span>([<span class=\"hljs-number\">2</span>, <span class=\"hljs-number\">4</span>, <span class=\"hljs-number\">6</span>, <span class=\"hljs-number\">8</span>]);\n<span class=\"hljs-keyword\">const</span> squares = <span class=\"hljs-keyword\">new</span> <span class=\"hljs-title class_\">Set</span>([<span class=\"hljs-number\">1</span>, <span class=\"hljs-number\">4</span>, <span class=\"hljs-number\">9</span>]);\n<span class=\"hljs-variable language_\">console</span>.<span class=\"hljs-title function_\">log</span>(evens.<span class=\"hljs-title function_\">symmetricDifference</span>(squares)); <span class=\"hljs-comment\">// Set(5) { 2, 6, 8, 1, 9 }</span>"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/symmetricDifference"},"webFeature":{"id":"set-methods","description_html":"The <code>difference()</code>, <code>intersection()</code>, <code>isDisjointFrom()</code>, <code>isSubsetOf()</code>, <code>isSupersetOf()</code>, <code>symmetricDifference()</code>, and <code>union()</code> methods of the JavaScript <code>Set</code> object performs operations between two sets.","group":["sets"],"name":"Set methods","spec":["https://tc39.es/ecma262/multipage/keyed-collections.html#sec-properties-of-the-set-prototype-object"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/set-methods/","status":{"baseline":"low","baseline_low_date":"2024-06-11","support":{"chrome":"122","chrome_android":"122","edge":"122","firefox":"127","firefox_android":"127","safari":"17","safari_ios":"17"}}}},"id":"set_symmetric_difference"},{"entity":{"name":"`set.isSubsetOf()`","nameHtml":"<code>set.isSubsetOf()</code>","nameClean":"set.isSubsetOf()","description":"Returns a boolean indicating if all elements of this set are in the given set.","descriptionHtml":"Returns a boolean indicating if all elements of this set are in the given set.","descriptionClean":"Returns a boolean indicating if all elements of this set are in the given set.","id":"set_is_subset_of","tags":["entities","features","js_features","js_sets","has_web_features_id"],"example":{"language":"js","code":"const fours = new Set([4, 8, 12, 16]);\nconst evens = new Set([2, 4, 6, 8, 10, 12, 14, 16, 18]);\nconsole.log(fours.isSubsetOf(evens)); // true\n","codeHighlighted":"<span class=\"hljs-keyword\">const</span> fours = <span class=\"hljs-keyword\">new</span> <span class=\"hljs-title class_\">Set</span>([<span class=\"hljs-number\">4</span>, <span class=\"hljs-number\">8</span>, <span class=\"hljs-number\">12</span>, <span class=\"hljs-number\">16</span>]);\n<span class=\"hljs-keyword\">const</span> evens = <span class=\"hljs-keyword\">new</span> <span class=\"hljs-title class_\">Set</span>([<span class=\"hljs-number\">2</span>, <span class=\"hljs-number\">4</span>, <span class=\"hljs-number\">6</span>, <span class=\"hljs-number\">8</span>, <span class=\"hljs-number\">10</span>, <span class=\"hljs-number\">12</span>, <span class=\"hljs-number\">14</span>, <span class=\"hljs-number\">16</span>, <span class=\"hljs-number\">18</span>]);\n<span class=\"hljs-variable language_\">console</span>.<span class=\"hljs-title function_\">log</span>(fours.<span class=\"hljs-title function_\">isSubsetOf</span>(evens)); <span class=\"hljs-comment\">// true</span>"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/isSubsetOf"},"webFeature":{"id":"set-methods","description_html":"The <code>difference()</code>, <code>intersection()</code>, <code>isDisjointFrom()</code>, <code>isSubsetOf()</code>, <code>isSupersetOf()</code>, <code>symmetricDifference()</code>, and <code>union()</code> methods of the JavaScript <code>Set</code> object performs operations between two sets.","group":["sets"],"name":"Set methods","spec":["https://tc39.es/ecma262/multipage/keyed-collections.html#sec-properties-of-the-set-prototype-object"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/set-methods/","status":{"baseline":"low","baseline_low_date":"2024-06-11","support":{"chrome":"122","chrome_android":"122","edge":"122","firefox":"127","firefox_android":"127","safari":"17","safari_ios":"17"}}}},"id":"set_is_subset_of"},{"entity":{"name":"`set.isSupersetOf()`","nameHtml":"<code>set.isSupersetOf()</code>","nameClean":"set.isSupersetOf()","description":"Returns a boolean indicating if all elements of the given set are in this set.","descriptionHtml":"Returns a boolean indicating if all elements of the given set are in this set.","descriptionClean":"Returns a boolean indicating if all elements of the given set are in this set.","id":"set_is_superset_of","tags":["entities","features","js_features","js_sets","has_web_features_id"],"example":{"language":"js","code":"const evens = new Set([2, 4, 6, 8, 10, 12, 14, 16, 18]);\nconst fours = new Set([4, 8, 12, 16]);\nconsole.log(evens.isSupersetOf(fours)); // true\n","codeHighlighted":"<span class=\"hljs-keyword\">const</span> evens = <span class=\"hljs-keyword\">new</span> <span class=\"hljs-title class_\">Set</span>([<span class=\"hljs-number\">2</span>, <span class=\"hljs-number\">4</span>, <span class=\"hljs-number\">6</span>, <span class=\"hljs-number\">8</span>, <span class=\"hljs-number\">10</span>, <span class=\"hljs-number\">12</span>, <span class=\"hljs-number\">14</span>, <span class=\"hljs-number\">16</span>, <span class=\"hljs-number\">18</span>]);\n<span class=\"hljs-keyword\">const</span> fours = <span class=\"hljs-keyword\">new</span> <span class=\"hljs-title class_\">Set</span>([<span class=\"hljs-number\">4</span>, <span class=\"hljs-number\">8</span>, <span class=\"hljs-number\">12</span>, <span class=\"hljs-number\">16</span>]);\n<span class=\"hljs-variable language_\">console</span>.<span class=\"hljs-title function_\">log</span>(evens.<span class=\"hljs-title function_\">isSupersetOf</span>(fours)); <span class=\"hljs-comment\">// true</span>"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/isSupersetOf"},"webFeature":{"id":"set-methods","description_html":"The <code>difference()</code>, <code>intersection()</code>, <code>isDisjointFrom()</code>, <code>isSubsetOf()</code>, <code>isSupersetOf()</code>, <code>symmetricDifference()</code>, and <code>union()</code> methods of the JavaScript <code>Set</code> object performs operations between two sets.","group":["sets"],"name":"Set methods","spec":["https://tc39.es/ecma262/multipage/keyed-collections.html#sec-properties-of-the-set-prototype-object"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/set-methods/","status":{"baseline":"low","baseline_low_date":"2024-06-11","support":{"chrome":"122","chrome_android":"122","edge":"122","firefox":"127","firefox_android":"127","safari":"17","safari_ios":"17"}}}},"id":"set_is_superset_of"},{"entity":{"name":"`set.isDisjointFrom()`","nameHtml":"<code>set.isDisjointFrom()</code>","nameClean":"set.isDisjointFrom()","description":"Returns a boolean indicating if this set has no elements in common with the given set.","descriptionHtml":"Returns a boolean indicating if this set has no elements in common with the given set.","descriptionClean":"Returns a boolean indicating if this set has no elements in common with the given set.","id":"set_is_disjoint_from","tags":["entities","features","js_features","js_sets","has_web_features_id"],"example":{"language":"js","code":"const primes = new Set([2, 3, 5, 7, 11, 13, 17, 19]);\nconst squares = new Set([1, 4, 9, 16]);\nconsole.log(primes.isDisjointFrom(squares)); // true\n","codeHighlighted":"<span class=\"hljs-keyword\">const</span> primes = <span class=\"hljs-keyword\">new</span> <span class=\"hljs-title class_\">Set</span>([<span class=\"hljs-number\">2</span>, <span class=\"hljs-number\">3</span>, <span class=\"hljs-number\">5</span>, <span class=\"hljs-number\">7</span>, <span class=\"hljs-number\">11</span>, <span class=\"hljs-number\">13</span>, <span class=\"hljs-number\">17</span>, <span class=\"hljs-number\">19</span>]);\n<span class=\"hljs-keyword\">const</span> squares = <span class=\"hljs-keyword\">new</span> <span class=\"hljs-title class_\">Set</span>([<span class=\"hljs-number\">1</span>, <span class=\"hljs-number\">4</span>, <span class=\"hljs-number\">9</span>, <span class=\"hljs-number\">16</span>]);\n<span class=\"hljs-variable language_\">console</span>.<span class=\"hljs-title function_\">log</span>(primes.<span class=\"hljs-title function_\">isDisjointFrom</span>(squares)); <span class=\"hljs-comment\">// true</span>"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/isDisjointFrom"},"webFeature":{"id":"set-methods","description_html":"The <code>difference()</code>, <code>intersection()</code>, <code>isDisjointFrom()</code>, <code>isSubsetOf()</code>, <code>isSupersetOf()</code>, <code>symmetricDifference()</code>, and <code>union()</code> methods of the JavaScript <code>Set</code> object performs operations between two sets.","group":["sets"],"name":"Set methods","spec":["https://tc39.es/ecma262/multipage/keyed-collections.html#sec-properties-of-the-set-prototype-object"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/set-methods/","status":{"baseline":"low","baseline_low_date":"2024-06-11","support":{"chrome":"122","chrome_android":"122","edge":"122","firefox":"127","firefox_android":"127","safari":"17","safari_ios":"17"}}}},"id":"set_is_disjoint_from"},{"id":"na"}]},{"id":"object_features","template":"multiple","allowMultiple":true,"yearAdded":2024,"options":[{"entity":{"name":"`Object.groupBy()`","nameHtml":"<code>Object.groupBy()</code>","nameClean":"Object.groupBy()","description":"Group the elements of a given iterable according to the string values returned by a provided function.","descriptionHtml":"Group the elements of a given iterable according to the string values returned by a provided function.","descriptionClean":"Group the elements of a given iterable according to the string values returned by a provided function.","id":"object_group_by","tags":["entities","features","js_features","js_other","has_web_features_id"],"example":{"language":"js","code":"const inventory = [\n  { name: \"salad\", type: \"vegetables\" },\n  { name: \"banana\", type: \"fruit\" },\n  { name: \"apple\", type: \"fruit\" },\n];\n\nconst result = Object.groupBy(inventory, ({ type }) => type);\n\n/*\n{\n  vegetables: [\n    { name: 'salad', type: 'vegetables' },\n  ],\n  fruit: [\n    { name: \"banana\", type: \"fruit\" },\n    { name: \"apple\", type: \"fruit\" }\n  ]\n}\n*/\n","codeHighlighted":"<span class=\"hljs-keyword\">const</span> inventory = [\n  { <span class=\"hljs-attr\">name</span>: <span class=\"hljs-string\">&quot;salad&quot;</span>, <span class=\"hljs-attr\">type</span>: <span class=\"hljs-string\">&quot;vegetables&quot;</span> },\n  { <span class=\"hljs-attr\">name</span>: <span class=\"hljs-string\">&quot;banana&quot;</span>, <span class=\"hljs-attr\">type</span>: <span class=\"hljs-string\">&quot;fruit&quot;</span> },\n  { <span class=\"hljs-attr\">name</span>: <span class=\"hljs-string\">&quot;apple&quot;</span>, <span class=\"hljs-attr\">type</span>: <span class=\"hljs-string\">&quot;fruit&quot;</span> },\n];\n\n<span class=\"hljs-keyword\">const</span> result = <span class=\"hljs-title class_\">Object</span>.<span class=\"hljs-title function_\">groupBy</span>(inventory, <span class=\"hljs-function\">(<span class=\"hljs-params\">{ type }</span>) =&gt;</span> type);\n\n<span class=\"hljs-comment\">/*\n{\n  vegetables: [\n    { name: &#x27;salad&#x27;, type: &#x27;vegetables&#x27; },\n  ],\n  fruit: [\n    { name: &quot;banana&quot;, type: &quot;fruit&quot; },\n    { name: &quot;apple&quot;, type: &quot;fruit&quot; }\n  ]\n}\n*/</span>"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/union"},"webFeature":{"id":"set-methods","description_html":"The <code>difference()</code>, <code>intersection()</code>, <code>isDisjointFrom()</code>, <code>isSubsetOf()</code>, <code>isSupersetOf()</code>, <code>symmetricDifference()</code>, and <code>union()</code> methods of the JavaScript <code>Set</code> object performs operations between two sets.","group":["sets"],"name":"Set methods","spec":["https://tc39.es/ecma262/multipage/keyed-collections.html#sec-properties-of-the-set-prototype-object"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/set-methods/","status":{"baseline":"low","baseline_low_date":"2024-06-11","support":{"chrome":"122","chrome_android":"122","edge":"122","firefox":"127","firefox_android":"127","safari":"17","safari_ios":"17"}}}},"id":"object_group_by"},{"id":"na"}]},{"id":"async_features","template":"multiple","allowMultiple":true,"options":[{"entity":{"name":"`Promise.allSettled()`","nameHtml":"<code>Promise.allSettled()</code>","nameClean":"Promise.allSettled()","description":"Returns a single Promise that fulfills when all of the input's promises fulfills.","descriptionHtml":"Returns a single Promise that fulfills when all of the input's promises fulfills.","descriptionClean":"Returns a single Promise that fulfills when all of the input's promises fulfills.","id":"promise_all_settled","tags":["entities","features","js_features","js_async","has_web_features_id"],"example":{"language":"js","code":"const promises = [promise1, promise2];\n\nPromise.allSettled(promises).then((results) =>\n  results.forEach((result) => console.log(result.status)),\n);\n","codeHighlighted":"<span class=\"hljs-keyword\">const</span> promises = [promise1, promise2];\n\n<span class=\"hljs-title class_\">Promise</span>.<span class=\"hljs-title function_\">allSettled</span>(promises).<span class=\"hljs-title function_\">then</span>(<span class=\"hljs-function\">(<span class=\"hljs-params\">results</span>) =&gt;</span>\n  results.<span class=\"hljs-title function_\">forEach</span>(<span class=\"hljs-function\">(<span class=\"hljs-params\">result</span>) =&gt;</span> <span class=\"hljs-variable language_\">console</span>.<span class=\"hljs-title function_\">log</span>(result.<span class=\"hljs-property\">status</span>)),\n);"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/allSettled"},"webFeature":{"id":"promise-allsettled","description_html":"The <code>Promise.allSettled()</code> static method waits for an array of promises to settle (resolve or reject).","group":["promises"],"name":"Promise.allSettled()","spec":["https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-promise.allsettled"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/promise-allsettled/","status":{"baseline":"high","baseline_low_date":"2020-07-28","support":{"chrome":"76","chrome_android":"76","edge":"79","firefox":"71","firefox_android":"79","safari":"13","safari_ios":"13"}}}},"id":"promise_all_settled"},{"entity":{"name":"`Promise.any()`","nameHtml":"<code>Promise.any()</code>","nameClean":"Promise.any()","description":"Returns a single Promise that fulfills when any of the input's promises fulfills.","descriptionHtml":"Returns a single Promise that fulfills when any of the input's promises fulfills.","descriptionClean":"Returns a single Promise that fulfills when any of the input's promises fulfills.","id":"promise_any","tags":["entities","features","js_features","js_async","has_web_features_id"],"example":{"language":"js","code":"const promises = [promise1, promise2, promise3];\n\nPromise.any(promises).then((value) => console.log(value));\n","codeHighlighted":"<span class=\"hljs-keyword\">const</span> promises = [promise1, promise2, promise3];\n\n<span class=\"hljs-title class_\">Promise</span>.<span class=\"hljs-title function_\">any</span>(promises).<span class=\"hljs-title function_\">then</span>(<span class=\"hljs-function\">(<span class=\"hljs-params\">value</span>) =&gt;</span> <span class=\"hljs-variable language_\">console</span>.<span class=\"hljs-title function_\">log</span>(value));"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/any"},"caniuse":{"url":"https://caniuse.com/mdn-javascript_builtins_promise_any"},"webFeature":{"id":"promise-any","description_html":"The <code>Promise.any()</code> static method returns a promise that fulfills as soon as the first of an iterable of promises fulfills, with that promise's value. Otherwise, it rejects with an <code>AggregateError</code> when all of the promises have rejected.","group":["promises"],"name":"Promise.any()","spec":["https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-promise.any"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/promise-any/","status":{"baseline":"high","baseline_low_date":"2020-09-16","support":{"chrome":"85","chrome_android":"85","edge":"85","firefox":"79","firefox_android":"79","safari":"14","safari_ios":"14"}}}},"id":"promise_any"},{"entity":{"name":"`Promise.try()`","nameHtml":"<code>Promise.try()</code>","nameClean":"Promise.try()","description":"Take a callback of any kind and wrap its result in a Promise.","descriptionHtml":"Take a callback of any kind and wrap its result in a Promise.","descriptionClean":"Take a callback of any kind and wrap its result in a Promise.","id":"promise_try","tags":["entities","features","js_features","js_async","has_web_features_id"],"example":{"language":"js","code":"function doSomething(action) {\n  return Promise.try(action)\n    .then((result) => console.log(result))\n    .catch((error) => console.error(error))\n    .finally(() => console.log(\"Done\"));\n}\n","codeHighlighted":"<span class=\"hljs-keyword\">function</span> <span class=\"hljs-title function_\">doSomething</span>(<span class=\"hljs-params\">action</span>) {\n  <span class=\"hljs-keyword\">return</span> <span class=\"hljs-title class_\">Promise</span>.<span class=\"hljs-title function_\">try</span>(action)\n    .<span class=\"hljs-title function_\">then</span>(<span class=\"hljs-function\">(<span class=\"hljs-params\">result</span>) =&gt;</span> <span class=\"hljs-variable language_\">console</span>.<span class=\"hljs-title function_\">log</span>(result))\n    .<span class=\"hljs-title function_\">catch</span>(<span class=\"hljs-function\">(<span class=\"hljs-params\">error</span>) =&gt;</span> <span class=\"hljs-variable language_\">console</span>.<span class=\"hljs-title function_\">error</span>(error))\n    .<span class=\"hljs-title function_\">finally</span>(<span class=\"hljs-function\">() =&gt;</span> <span class=\"hljs-variable language_\">console</span>.<span class=\"hljs-title function_\">log</span>(<span class=\"hljs-string\">&quot;Done&quot;</span>));\n}"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/try"},"caniuse":{"url":"https://caniuse.com/javascript_builtins_promise_try"},"webFeature":{"id":"promise-try","description_html":"The <code>Promise.try()</code> static method returns a promise that takes a callback of any kind (returns or throws, synchronously or asynchronously) and wraps its result in a <code>Promise</code>.","group":["promises"],"name":"Promise.try()","spec":["https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-promise.try"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/promise-try/","status":{"baseline":"low","baseline_low_date":"2025-01-07","support":{"chrome":"128","chrome_android":"128","edge":"128","firefox":"134","firefox_android":"134","safari":"18.2","safari_ios":"18.2"}}}},"id":"promise_try"},{"id":"na"}]},{"id":"browser_api_features","template":"multiple","allowMultiple":true,"options":[{"entity":{"name":"WebGL","nameHtml":"WebGL","nameClean":"WebGL","description":"A low-level API for rendering 2D and 3D graphics with the GPU on `<canvas>` , based on OpenGL.","descriptionHtml":"A low-level API for rendering 2D and 3D graphics with the GPU on <code>&lt;canvas&gt;</code> , based on OpenGL.","descriptionClean":"A low-level API for rendering 2D and 3D graphics with the GPU on <canvas> , based on OpenGL.","id":"webgl","parentId":"graphics_issues","tags":["entities","features","html_features","html_graphics","colors_pain_points","has_web_features_id"],"example":{"language":"js","code":"const gl = canvas.getContext(\"webgl\");\n","codeHighlighted":"<span class=\"hljs-keyword\">const</span> gl = canvas.<span class=\"hljs-title function_\">getContext</span>(<span class=\"hljs-string\">&quot;webgl&quot;</span>);"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/Tutorial/Getting_started_with_WebGL"},"webFeature":{"id":"webgl","description_html":"The <code>WebGLRenderingContext</code> API is the <code>\"webgl\"</code> rendering context for the <code>&#x3C;canvas></code> element. It represents a space for drawing two- and three-dimensional graphics and animations.","group":["webgl"],"name":"WebGL","spec":["https://registry.khronos.org/webgl/specs/latest/1.0/"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/webgl/","status":{"baseline":"high","baseline_low_date":"2015-07-29","support":{"chrome":"9","chrome_android":"25","edge":"12","firefox":"4","firefox_android":"4","safari":"5.1","safari_ios":"8"}}}},"id":"webgl"},{"entity":{"name":"Web Animations","nameHtml":"Web Animations","nameClean":"Web Animations","id":"web_animations","tags":["entities","features","js_features","js_other","has_web_features_id"],"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API/Using_the_Web_Animations_API"},"webFeature":{"id":"web-animations","description_html":"The web animation API programmatically creates, inspects, and controls element animations, to change and synchronize appearance over time.","group":["animation"],"name":"Web animations","spec":["https://drafts.csswg.org/web-animations-1/"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/web-animations/","status":{"baseline":"high","baseline_low_date":"2020-09-16","support":{"chrome":"84","chrome_android":"84","edge":"84","firefox":"75","firefox_android":"79","safari":"14","safari_ios":"14"}}}},"id":"web_animations"},{"entity":{"name":"WebRTC","nameHtml":"WebRTC","nameClean":"WebRTC","id":"webrtc","parentId":"apis_capabilities","tags":["entities","features","js_features","js_other","has_web_features_id"],"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API"},"webFeature":{"id":"webrtc","description_html":"The WebRTC API establishes real-time communication channels directly between browsers. It is commonly used in video conferencing applications.","group":["webrtc"],"name":"WebRTC","spec":["https://w3c.github.io/webrtc-pc/"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/webrtc/","status":{"baseline":"high","baseline_low_date":"2020-01-15","support":{"chrome":"56","chrome_android":"56","edge":"79","firefox":"22","firefox_android":"24","safari":"11","safari_ios":"11"}}}},"id":"webrtc"},{"entity":{"name":"Web Speech API","nameHtml":"Web Speech API","nameClean":"Web Speech API","id":"web_speech","tags":["entities","features","js_features","js_other"],"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API"}},"id":"web_speech"},{"entity":{"name":"WebSocket","nameHtml":"WebSocket","nameClean":"WebSocket","id":"websocket","tags":["entities","features","js_features","js_other","meta_frameworks_pain_points","testing_pain_points","has_web_features_id"],"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API"},"webFeature":{"id":"websockets","description_html":"The <code>WebSocket</code> API opens a two-way communication channel between the user's browser and a server.","name":"WebSockets","spec":["https://websockets.spec.whatwg.org/"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/websockets/","status":{"baseline":"high","baseline_low_date":"2015-07-29","support":{"chrome":"5","chrome_android":"18","edge":"12","firefox":"11","firefox_android":"14","safari":"5","safari_ios":"4.2"}}}},"id":"websocket"},{"entity":{"name":"Page Visibility API","nameHtml":"Page Visibility API","nameClean":"Page Visibility API","id":"page_visibility","tags":["entities","features","js_features","js_other","has_web_features_id"],"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API"},"caniuse":{"url":"https://caniuse.com/pagevisibility"},"webFeature":{"id":"page-visibility","description_html":"The <code>document.visibilityState</code> and <code>document.hidden</code> properties tell you whether the page is visible to the user (for example, it's not minimized or in a background tab).","name":"Page visibility","spec":["https://html.spec.whatwg.org/multipage/interaction.html#page-visibility"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/page-visibility/","status":{"baseline":"high","baseline_low_date":"2015-07-29","support":{"chrome":"33","chrome_android":"33","edge":"12","firefox":"18","firefox_android":"18","safari":"7","safari_ios":"7"}}}},"id":"page_visibility"},{"entity":{"name":"Broadcast Channel API","nameHtml":"Broadcast Channel API","nameClean":"Broadcast Channel API","id":"broadcast_channel","tags":["entities","features","js_features","js_other","html_missing_features","has_web_features_id"],"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/API/Broadcast_Channel_API"},"caniuse":{"url":"https://caniuse.com/broadcastchannel"},"webFeature":{"id":"broadcast-channel","description_html":"The <code>BroadcastChannel</code> API allows you to send messages between same-origin browsing contexts, such as between the same page loaded in multiple tabs.","group":["messaging"],"name":"BroadcastChannel","spec":["https://html.spec.whatwg.org/multipage/web-messaging.html#broadcasting-to-other-browsing-contexts"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/broadcast-channel/","status":{"baseline":"high","baseline_low_date":"2022-03-14","support":{"chrome":"54","chrome_android":"54","edge":"79","firefox":"38","firefox_android":"38","safari":"15.4","safari_ios":"15.4"}}}},"id":"broadcast_channel"},{"entity":{"name":"Geolocation API","nameHtml":"Geolocation API","nameClean":"Geolocation API","id":"geolocation","parentId":"apis_capabilities","tags":["entities","features","js_features","js_other","has_web_features_id"],"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/API/Geolocation_API"},"caniuse":{"url":"https://caniuse.com/geolocation"},"webFeature":{"id":"geolocation","description_html":"The <code>navigator.geolocation</code> API requests the user's latitude, longitude, heading, and speed.","group":["geolocation"],"name":"Geolocation API","spec":["https://w3c.github.io/geolocation/"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/geolocation/","status":{"baseline":"high","baseline_low_date":"2015-07-29","support":{"chrome":"5","chrome_android":"18","edge":"12","firefox":"3.5","firefox_android":"4","safari":"5","safari_ios":"≤3"}}}},"id":"geolocation"},{"entity":{"name":"`navigator.xr` (WebXR Device API)","nameHtml":"<code>navigator.xr</code> (WebXR Device API)","nameClean":"navigator.xr (WebXR Device API)","description":"Create AR/VR sessions with compatible output devices.","descriptionHtml":"Create AR/VR sessions with compatible output devices.","descriptionClean":"Create AR/VR sessions with compatible output devices.","id":"webxr","tags":["entities","features","js_features","js_other","has_web_features_id"],"example":{"language":"js","code":"const xr = navigator.xr;\nconst session = await xr?.requestSession(\"immersive-vr\");\n","codeHighlighted":"<span class=\"hljs-keyword\">const</span> xr = navigator.<span class=\"hljs-property\">xr</span>;\n<span class=\"hljs-keyword\">const</span> session = <span class=\"hljs-keyword\">await</span> xr?.<span class=\"hljs-title function_\">requestSession</span>(<span class=\"hljs-string\">&quot;immersive-vr&quot;</span>);"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/API/WebXR_Device_API"},"caniuse":{"url":"https://caniuse.com/webxr"},"webFeature":{"id":"webxr-device","description_html":"The <code>navigator.xr</code> API represents the browser's virtual reality or augmented reality system. You can use to request a WebXR session.","group":["webxr"],"name":"WebXR","spec":["https://immersive-web.github.io/webxr/"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/webxr-device/","status":{"baseline":"false","support":{"chrome":"79","chrome_android":"79","edge":"79"}}}},"id":"webxr"},{"entity":{"name":"Temporal","nameHtml":"Temporal","nameClean":"Temporal","description":"Provides standard objects and functions for working with dates and times.","descriptionHtml":"Provides standard objects and functions for working with dates and times.","descriptionClean":"Provides standard objects and functions for working with dates and times.","id":"temporal","parentId":"date_and_time","tags":["entities","features","js_features","js_other","has_web_features_id"],"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date"},"webFeature":{"id":"temporal","description_html":"The <code>Temporal</code> API allows you to work with dates, times, time zones, and durations. It is more powerful than the <code>Date</code> API.","group":["javascript"],"name":"Temporal","spec":["https://tc39.es/proposal-temporal/"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/temporal/","status":{"baseline":"false","support":{"chrome":"144","chrome_android":"144","edge":"144","firefox":"139","firefox_android":"139"}}}},"id":"temporal"},{"entity":{"name":"Gamepad API","nameHtml":"Gamepad API","nameClean":"Gamepad API","id":"gamepad_api","parentId":"apis_capabilities","tags":["entities","features","js_features","js_other","has_web_features_id"],"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API"},"webFeature":{"id":"gamepad","description_html":"The <code>navigator.getGamepads()</code> API accesses and responds to signals from game controllers.","group":["gamepad"],"name":"Gamepad","spec":["https://w3c.github.io/gamepad/"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/gamepad/","status":{"baseline":"high","baseline_low_date":"2017-03-27","support":{"chrome":"35","chrome_android":"35","edge":"12","firefox":"29","firefox_android":"32","safari":"10.1","safari_ios":"10.3"}}}},"id":"gamepad_api"},{"entity":{"name":"Web Authentication API","nameHtml":"Web Authentication API","nameClean":"Web Authentication API","id":"web_authentication_api","tags":["entities","features","js_features","js_other","has_web_features_id"],"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/API/Web_Authentication_API"},"webFeature":{"id":"webauthn","description_html":"The web authentication API allows you to create public key-based credentials and use them for authentication, such as when signing in. Also known as WebAuthn.","group":["webauthn"],"name":"Web authentication","spec":["https://w3c.github.io/webauthn/"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/webauthn/","status":{"baseline":"high","baseline_low_date":"2021-09-07","support":{"chrome":"67","chrome_android":"70","edge":"18","firefox":"60","firefox_android":"92","safari":"13","safari_ios":"13"}}}},"id":"web_authentication_api"},{"entity":{"name":"URLPattern API","nameHtml":"URLPattern API","nameClean":"URLPattern API","description":"Match URLs or parts of URLs against a pattern","descriptionHtml":"Match URLs or parts of URLs against a pattern","descriptionClean":"Match URLs or parts of URLs against a pattern","id":"urlpattern","tags":["entities","features","html_features","html_main","back_end_frameworks_pain_points","has_web_features_id"],"example":{"language":"js","code":"let repoPattern = new URLPattern(\"https://github.com/:owner/:repo/\");\n","codeHighlighted":"<span class=\"hljs-keyword\">let</span> repoPattern = <span class=\"hljs-keyword\">new</span> <span class=\"hljs-title class_\">URLPattern</span>(<span class=\"hljs-string\">&quot;https://github.com/:owner/:repo/&quot;</span>);"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/API/URLPattern"},"caniuse":{"url":"https://caniuse.com/https://caniuse.com/mdn-api_urlpattern"},"webFeature":{"id":"urlpattern","description_html":"The <code>URLPattern</code> API creates patterns that can be matched against URLs or URL components.","name":"URLPattern","spec":["https://urlpattern.spec.whatwg.org/"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/urlpattern/","status":{"baseline":"low","baseline_low_date":"2025-09-15","support":{"chrome":"95","chrome_android":"95","edge":"95","firefox":"142","firefox_android":"142","safari":"26","safari_ios":"26"}}}},"id":"urlpattern"},{"entity":{"name":"Scheduler API","nameHtml":"Scheduler API","nameClean":"Scheduler API","description":"The Scheduler API provides a way to prioritize all tasks belonging to an application.","descriptionHtml":"The Scheduler API provides a way to prioritize all tasks belonging to an application.","descriptionClean":"The Scheduler API provides a way to prioritize all tasks belonging to an application.","id":"scheduler_api","tags":["entities","features","js_features","js_other","has_web_features_id"],"example":{"language":"js","code":"scheduler\n  .postTask(() => \"Task executing\")\n  .then((taskResult) => console.log(`${taskResult}`)) // Log result\n  .catch((error) => console.error(`Error: ${error}`)); // Log errors\n","codeHighlighted":"scheduler\n  .<span class=\"hljs-title function_\">postTask</span>(<span class=\"hljs-function\">() =&gt;</span> <span class=\"hljs-string\">&quot;Task executing&quot;</span>)\n  .<span class=\"hljs-title function_\">then</span>(<span class=\"hljs-function\">(<span class=\"hljs-params\">taskResult</span>) =&gt;</span> <span class=\"hljs-variable language_\">console</span>.<span class=\"hljs-title function_\">log</span>(<span class=\"hljs-string\">`<span class=\"hljs-subst\">${taskResult}</span>`</span>)) <span class=\"hljs-comment\">// Log result</span>\n  .<span class=\"hljs-title function_\">catch</span>(<span class=\"hljs-function\">(<span class=\"hljs-params\">error</span>) =&gt;</span> <span class=\"hljs-variable language_\">console</span>.<span class=\"hljs-title function_\">error</span>(<span class=\"hljs-string\">`Error: <span class=\"hljs-subst\">${error}</span>`</span>)); <span class=\"hljs-comment\">// Log errors</span>"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/API/Scheduler"},"webFeature":{"id":"scheduler","description_html":"The <code>scheduler</code> API provides a way to prioritize all tasks belonging to an application.","name":"Scheduler API","spec":["https://wicg.github.io/scheduling-apis/"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/scheduler/","status":{"baseline":"false","support":{"chrome":"129","chrome_android":"129","edge":"129","firefox":"142","firefox_android":"142"}}}},"id":"scheduler_api"},{"entity":{"name":"Progressive Web Apps","nameHtml":"Progressive Web Apps","nameClean":"Progressive Web Apps","id":"pwas","tags":["entities","features","js_features","js_other","html_interoperability_features","browser_apis_pain_points","mobile_desktop_pain_points"],"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps"}},"id":"pwas"},{"entity":{"name":"WebAssembly (WASM)","nameHtml":"WebAssembly (WASM)","nameClean":"WebAssembly (WASM)","id":"wasm","tags":["entities","features","js_features","js_other","top_js_pain_points","has_web_features_id"],"mdn":{"url":"https://developer.mozilla.org/en-US/docs/WebAssembly"},"webFeature":{"id":"wasm","description_html":"The <code>WebAssembly.instantiate()</code> and <code>WebAssembly.instantiateStreaming()</code> global static methods load WebAssembly code (also known as Wasm), a portable binary instruction format.","group":["webassembly"],"name":"WebAssembly","spec":["https://webassembly.github.io/gc/core/bikeshed/"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/wasm/","status":{"baseline":"high","baseline_low_date":"2017-10-17","support":{"chrome":"57","chrome_android":"57","edge":"16","firefox":"52","firefox_android":"52","safari":"11","safari_ios":"11"}}}},"id":"wasm"},{"id":"na"}]},{"id":"language_pain_points","template":"textList","optionsNamespace":"pain_points","allowMultiple":true,"options":[{"id":"static_typing"},{"id":"browser_support"},{"id":"date"},{"id":"typescript_support"},{"id":"esm_cjs"},{"id":"error_handling"},{"id":"performance"},{"id":"async"},{"id":"standard_library"},{"id":"security"},{"id":"objects"},{"id":"ecosystem"},{"id":"lack_of_tools"},{"id":"null_keyword"},{"id":"dependencies"},{"id":"lack_of_pipe_operator"},{"id":"excessive_complexity"},{"id":"frameworks"},{"id":"package_management"}]},{"id":"browser_apis_pain_points","template":"textList","optionsNamespace":"pain_points","allowMultiple":true,"options":[{"id":"browser_support"},{"entity":{"name":"Safari","nameHtml":"Safari","nameClean":"Safari","id":"safari","parentId":"apple","tags":["entities","apps","browsers","shapes_graphics_pain_points"],"homepage":{"url":"https://www.apple.com/safari/"}},"id":"safari"},{"id":"lack_of_documentation"},{"id":"performance"},{"id":"excessive_complexity"},{"id":"firefox_issues"},{"entity":{"name":"Progressive Web Apps","nameHtml":"Progressive Web Apps","nameClean":"Progressive Web Apps","id":"pwas","tags":["entities","features","js_features","js_other","html_interoperability_features","browser_apis_pain_points","mobile_desktop_pain_points"],"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps"}},"id":"pwas"},{"entity":{"name":"`<input type=\"date\">`","nameHtml":"<code>&lt;input type=\"date\"&gt;</code>","nameClean":"<input type=\"date\">","id":"input_type_date","parentId":"pickers","tags":["entities","features","html_features","html_forms","forms_pain_points"]},"id":"input_type_date"},{"entity":{"name":"Chrome","nameHtml":"Chrome","nameClean":"Chrome","id":"chrome","parentId":"google","tags":["entities","apps","browsers","browser_apis_pain_points"],"homepage":{"url":"https://www.google.com/chrome/"}},"id":"chrome"},{"id":"dom_api"},{"id":"lack_of_adoption"},{"entity":{"name":"Web Components","nameHtml":"Web Components","nameClean":"Web Components","id":"web_components","tags":["entities","features","js_features","js_other","html_interoperability_features","interactivity_pain_points","front_end_frameworks_pain_points","meta_frameworks_pain_points","testing_pain_points","build_tools_pain_points","colors_pain_points","other_features_pain_points","css_general_pain_points"],"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/API/Web_components"}},"id":"web_components"},{"id":"filesystem_access"},{"id":"error_handling"},{"entity":{"name":"CORS","nameHtml":"CORS","nameClean":"CORS","description":"Opt-in to allowing requests from different origins.","descriptionHtml":"Opt-in to allowing requests from different origins.","descriptionClean":"Opt-in to allowing requests from different origins.","id":"cors","parentId":"security_privacy","tags":["entities","features","html_features","html_main","common_pain_points","content_pain_points","browser_apis_pain_points"],"example":{"language":"http","code":"Access-Control-Allow-Origin: *\nAccess-Control-Allow-Methods: POST, GET, OPTIONS","codeHighlighted":"<span class=\"hljs-attribute\">Access-Control-Allow-Origin</span><span class=\"hljs-punctuation\">: </span>*\n<span class=\"hljs-attribute\">Access-Control-Allow-Methods</span><span class=\"hljs-punctuation\">: </span>POST, GET, OPTIONS"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CORS"},"resources":[{"url":"https://fetch.spec.whatwg.org/#http-access-control-allow-origin","title":"Fetch Standard"}]},"id":"cors"},{"id":"event_management"},{"entity":{"name":"Temporal","nameHtml":"Temporal","nameClean":"Temporal","description":"Provides standard objects and functions for working with dates and times.","descriptionHtml":"Provides standard objects and functions for working with dates and times.","descriptionClean":"Provides standard objects and functions for working with dates and times.","id":"temporal","parentId":"date_and_time","tags":["entities","features","js_features","js_other","has_web_features_id"],"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date"},"webFeature":{"id":"temporal","description_html":"The <code>Temporal</code> API allows you to work with dates, times, time zones, and durations. It is more powerful than the <code>Date</code> API.","group":["javascript"],"name":"Temporal","spec":["https://tc39.es/proposal-temporal/"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/temporal/","status":{"baseline":"false","support":{"chrome":"144","chrome_android":"144","edge":"144","firefox":"139","firefox_android":"139"}}}},"id":"temporal"},{"id":"speed_of_change"},{"id":"debugging"}]},{"id":"js_new_features","template":"multipleWithOther","allowMultiple":true,"allowOther":true,"yearAdded":2024,"limit":3,"options":[{"entity":{"name":"Temporal","nameHtml":"Temporal","nameClean":"Temporal","description":"Provides standard objects and functions for working with dates and times.","descriptionHtml":"Provides standard objects and functions for working with dates and times.","descriptionClean":"Provides standard objects and functions for working with dates and times.","id":"temporal","parentId":"date_and_time","tags":["entities","features","js_features","js_other","has_web_features_id"],"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date"},"webFeature":{"id":"temporal","description_html":"The <code>Temporal</code> API allows you to work with dates, times, time zones, and durations. It is more powerful than the <code>Date</code> API.","group":["javascript"],"name":"Temporal","spec":["https://tc39.es/proposal-temporal/"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/temporal/","status":{"baseline":"false","support":{"chrome":"144","chrome_android":"144","edge":"144","firefox":"139","firefox_android":"139"}}}},"id":"temporal"},{"entity":{"name":"Decorators","nameHtml":"Decorators","nameClean":"Decorators","description":"Functions called on classes or other JavaScript syntax forms during definition.","descriptionHtml":"Functions called on classes or other JavaScript syntax forms during definition.","descriptionClean":"Functions called on classes or other JavaScript syntax forms during definition.","id":"js_decorators","tags":["entities","features","js_features","js_other"],"example":{"language":"js","code":"@defineElement(\"my-class\")\nclass C extends HTMLElement {\n  @reactive accessor clicked = false;\n}\n","codeHighlighted":"@<span class=\"hljs-title function_\">defineElement</span>(<span class=\"hljs-string\">&quot;my-class&quot;</span>)\n<span class=\"hljs-keyword\">class</span> <span class=\"hljs-title class_\">C</span> <span class=\"hljs-keyword\">extends</span> <span class=\"hljs-title class_ inherited__\">HTMLElement</span> {\n  @reactive accessor clicked = <span class=\"hljs-literal\">false</span>;\n}"},"resources":[{"url":"https://github.com/tc39/proposal-decorators","title":"Decorators Proposal"}]},"id":"js_decorators"},{"entity":{"name":"Explicit Resource Management","nameHtml":"Explicit Resource Management","nameClean":"Explicit Resource Management","description":"Allocation of a resource and the ability to explicitly release critical resources.","descriptionHtml":"Allocation of a resource and the ability to explicitly release critical resources.","descriptionClean":"Allocation of a resource and the ability to explicitly release critical resources.","id":"js_explicit_resource_management","tags":["entities","features","js_features","js_other"],"resources":[{"url":"https://github.com/tc39/proposal-explicit-resource-management","title":"ECMAScript Explicit Resource Management Proposal"}]},"id":"js_explicit_resource_management"},{"entity":{"name":"Source Phase Imports","nameHtml":"Source Phase Imports","nameClean":"Source Phase Imports","description":"Customize the loading, linking, and execution of modules beyond the standard host execution model.","descriptionHtml":"Customize the loading, linking, and execution of modules beyond the standard host execution model.","descriptionClean":"Customize the loading, linking, and execution of modules beyond the standard host execution model.","id":"js_source_phase_imports","tags":["entities","features","js_features","js_other"],"example":{"language":"js","code":"import source x from \"<specifier>\";\n","codeHighlighted":"<span class=\"hljs-keyword\">import</span> source x <span class=\"hljs-keyword\">from</span> <span class=\"hljs-string\">&quot;&lt;specifier&gt;&quot;</span>;"},"resources":[{"url":"https://github.com/tc39/proposal-source-phase-imports","title":"Source Phase Imports Proposal"}]},"id":"js_source_phase_imports"},{"entity":{"name":"ShadowRealm API","nameHtml":"ShadowRealm API","nameClean":"ShadowRealm API","description":"A distinct global environment, with its own global object containing its own intrinsics and built-ins.","descriptionHtml":"A distinct global environment, with its own global object containing its own intrinsics and built-ins.","descriptionClean":"A distinct global environment, with its own global object containing its own intrinsics and built-ins.","id":"js_shadow_realm","tags":["entities","features","js_features","js_other"],"example":{"language":"js","code":"declare class ShadowRealm {\n  constructor();\n  importValue(specifier: string, bindingName: string): Promise<PrimitiveValueOrCallable>;\n  evaluate(sourceText: string): PrimitiveValueOrCallable;\n}\n","codeHighlighted":"declare <span class=\"hljs-keyword\">class</span> <span class=\"hljs-title class_\">ShadowRealm</span> {\n  <span class=\"hljs-title function_\">constructor</span>(<span class=\"hljs-params\"></span>);\n  <span class=\"hljs-title function_\">importValue</span>(<span class=\"hljs-attr\">specifier</span>: string, <span class=\"hljs-attr\">bindingName</span>: string): <span class=\"hljs-title class_\">Promise</span>&lt;<span class=\"hljs-title class_\">PrimitiveValueOrCallable</span>&gt;;\n  <span class=\"hljs-title function_\">evaluate</span>(<span class=\"hljs-attr\">sourceText</span>: string): <span class=\"hljs-title class_\">PrimitiveValueOrCallable</span>;\n}"},"resources":[{"url":"https://github.com/tc39/proposal-shadowrealm","title":"ShadowRealm Proposal"}]},"id":"js_shadow_realm"},{"entity":{"name":"Deferring Module Evaluation","nameHtml":"Deferring Module Evaluation","nameClean":"Deferring Module Evaluation","description":"Modules that would not be executed when loaded, but would be fully loaded to the point of being execution-ready.","descriptionHtml":"Modules that would not be executed when loaded, but would be fully loaded to the point of being execution-ready.","descriptionClean":"Modules that would not be executed when loaded, but would be fully loaded to the point of being execution-ready.","id":"js_deferring_module_evaluation","tags":["entities","features","js_features","js_other"],"resources":[{"url":"https://github.com/tc39/proposal-defer-import-eval","title":"Deferring Module Evaluation Proposal"}]},"id":"js_deferring_module_evaluation"},{"entity":{"name":"Joint Iteration","nameHtml":"Joint Iteration","nameClean":"Joint Iteration","description":"Synchronise the advancement of multiple iterators.","descriptionHtml":"Synchronise the advancement of multiple iterators.","descriptionClean":"Synchronise the advancement of multiple iterators.","id":"js_joint_iteration","tags":["entities","features","js_features","js_other"],"resources":[{"url":"https://github.com/tc39/proposal-joint-iteration","title":"Joint Iteration Proposal"}]},"id":"js_joint_iteration"},{"entity":{"name":"Iterator Sequencing","nameHtml":"Iterator Sequencing","nameClean":"Iterator Sequencing","description":"Create iterators by sequencing existing iterators.","descriptionHtml":"Create iterators by sequencing existing iterators.","descriptionClean":"Create iterators by sequencing existing iterators.","id":"js_iterator_sequencing","tags":["entities","features","js_features","js_other"],"resources":[{"url":"https://github.com/tc39/proposal-iterator-sequencing","title":"Iterator Sequencing Proposal"}]},"id":"js_iterator_sequencing"},{"entity":{"name":"JSON.parse source text access","nameHtml":"JSON.parse source text access","nameClean":"JSON.parse source text access","description":"Grant reviver functions access to the input source text.","descriptionHtml":"Grant reviver functions access to the input source text.","descriptionClean":"Grant reviver functions access to the input source text.","id":"js_json_parse_source_access","tags":["entities","features","js_features","js_other"],"resources":[{"url":"https://github.com/tc39/proposal-json-parse-with-source","title":"JSON.parse source text access Proposal"}]},"id":"js_json_parse_source_access"},{"entity":{"name":"Decorator Metadata","nameHtml":"Decorator Metadata","nameClean":"Decorator Metadata","description":"Extend the Decorators proposal by adding the ability for decorators to associate metadata with the value being decorated.","descriptionHtml":"Extend the Decorators proposal by adding the ability for decorators to associate metadata with the value being decorated.","descriptionClean":"Extend the Decorators proposal by adding the ability for decorators to associate metadata with the value being decorated.","id":"js_decorator_metadata","tags":["entities","features","js_features","js_other","back_end_frameworks_pain_points"],"resources":[{"url":"https://github.com/tc39/proposal-decorator-metadata","title":"Decorator Metadata Proposal"}]},"id":"js_decorator_metadata"},{"entity":{"name":"`map.getOrInsert()`","nameHtml":"<code>map.getOrInsert()</code>","nameClean":"map.getOrInsert()","description":"Checking if a key is present, and then inserting or updating depending upon the result, in a single call.","descriptionHtml":"Checking if a key is present, and then inserting or updating depending upon the result, in a single call.","descriptionClean":"Checking if a key is present, and then inserting or updating depending upon the result, in a single call.","id":"js_get_or_insert","tags":["entities","features","js_features","js_other"],"example":{"language":"js","code":"// Using getOrInsert\nlet prefs = new getUserPrefs();\nprefs.getOrInsert(\"useDarkmode\", true); // default to true\n","codeHighlighted":"<span class=\"hljs-comment\">// Using getOrInsert</span>\n<span class=\"hljs-keyword\">let</span> prefs = <span class=\"hljs-keyword\">new</span> <span class=\"hljs-title function_\">getUserPrefs</span>();\nprefs.<span class=\"hljs-title function_\">getOrInsert</span>(<span class=\"hljs-string\">&quot;useDarkmode&quot;</span>, <span class=\"hljs-literal\">true</span>); <span class=\"hljs-comment\">// default to true</span>"},"resources":[{"url":"https://github.com/tc39/proposal-upsert","title":"Upsert Proposal"}]},"id":"js_get_or_insert"},{"id":"na"}]},{"id":"top_currently_missing_from_js","template":"multipleWithOther","allowMultiple":true,"allowOther":true,"yearAdded":2021,"limit":3,"options":[{"id":"static_typing"},{"id":"standard_library"},{"entity":{"name":"Pattern Matching","nameHtml":"Pattern Matching","nameClean":"Pattern Matching","description":"A new `match` keyword for pattern-matching objects.","descriptionHtml":"A new <code>match</code> keyword for pattern-matching objects.","descriptionClean":"A new match keyword for pattern-matching objects.","id":"js_pattern_matching","tags":["entities","features","js_features","js_other"],"resources":[{"url":"https://github.com/tc39/proposal-pattern-matching","title":"Pattern Matching Proposal"}]},"id":"js_pattern_matching"},{"entity":{"name":"Pipe Operator (`|>`)","nameHtml":"Pipe Operator (<code>|&gt;</code>)","nameClean":"Pipe Operator (|>)","description":"A new `|>` operator for passing the result of one function to another.","descriptionHtml":"A new <code>|&gt;</code> operator for passing the result of one function to another.","descriptionClean":"A new |> operator for passing the result of one function to another.","id":"js_pipeline_operator","tags":["entities","features","js_features","js_other","js_missing_features"],"example":{"language":"js","code":"input\n  |> f(#, 0)\n  |> await g(#, { opt: true })\n  |> Array.from(#)\n  |> console.log(`Result is ${#}.`);\n","codeHighlighted":"input\n  |&gt; <span class=\"hljs-title function_\">f</span>(#, <span class=\"hljs-number\">0</span>)\n  |&gt; <span class=\"hljs-keyword\">await</span> <span class=\"hljs-title function_\">g</span>(#, { <span class=\"hljs-attr\">opt</span>: <span class=\"hljs-literal\">true</span> })\n  |&gt; <span class=\"hljs-title class_\">Array</span>.<span class=\"hljs-title function_\">from</span>(#)\n  |&gt; <span class=\"hljs-variable language_\">console</span>.<span class=\"hljs-title function_\">log</span>(<span class=\"hljs-string\">`Result is <span class=\"hljs-subst\">${#}</span>.`</span>);"},"resources":[{"url":"https://github.com/tc39/proposal-pipeline-operator","title":"Pipe Operator (|>) for JavaScript Proposal"}]},"id":"js_pipeline_operator"},{"entity":{"name":"`Observable`","nameHtml":"<code>Observable</code>","nameClean":"Observable","description":"A type that can be used to model push-based data sources such as DOM events, timer intervals, and sockets.","descriptionHtml":"A type that can be used to model push-based data sources such as DOM events, timer intervals, and sockets.","descriptionClean":"A type that can be used to model push-based data sources such as DOM events, timer intervals, and sockets.","id":"js_observable","parentId":"event_management","tags":["entities","features","js_features","js_other"],"resources":[{"url":"https://github.com/tc39/proposal-observable","title":"Observable Proposal"}]},"id":"js_observable"},{"entity":{"name":"Signals","nameHtml":"Signals","nameClean":"Signals","description":"Used in reactive programming to remove the need to manage updating in applications.","descriptionHtml":"Used in reactive programming to remove the need to manage updating in applications.","descriptionClean":"Used in reactive programming to remove the need to manage updating in applications.","id":"js_signals","tags":["entities","features","js_features","js_other"],"resources":[{"url":"https://github.com/tc39/proposal-signals","title":"Signals Proposal"}]},"id":"js_signals"},{"entity":{"name":"Async Context","nameHtml":"Async Context","nameClean":"Async Context","description":"APIs to propagate a value through asynchronous code, such as a promise continuation or async callbacks.","descriptionHtml":"APIs to propagate a value through asynchronous code, such as a promise continuation or async callbacks.","descriptionClean":"APIs to propagate a value through asynchronous code, such as a promise continuation or async callbacks.","id":"js_async_context","tags":["entities","features","js_features","js_other","back_end_frameworks_pain_points"],"resources":[{"url":"https://github.com/tc39/proposal-async-context","title":"Async Context Proposal"}]},"id":"js_async_context"},{"entity":{"name":"Extractors","nameHtml":"Extractors","nameClean":"Extractors","description":"A mechanism for executing user-defined logic during destructuring.","descriptionHtml":"A mechanism for executing user-defined logic during destructuring.","descriptionClean":"A mechanism for executing user-defined logic during destructuring.","id":"js_extractors","tags":["entities","features","js_features","js_other"],"example":{"language":"js","code":"let Foo(a, { b }, [c]) = x;\n","codeHighlighted":"<span class=\"hljs-keyword\">let</span> <span class=\"hljs-title class_\">Foo</span>(a, { b }, [c]) = x;"},"resources":[{"url":"https://github.com/tc39/proposal-extractors","title":"Extractors Proposal"}]},"id":"js_extractors"},{"entity":{"name":"Iterator Chunking","nameHtml":"Iterator Chunking","nameClean":"Iterator Chunking","description":"A way to transform an iterator into subsequences of configurable size.","descriptionHtml":"A way to transform an iterator into subsequences of configurable size.","descriptionClean":"A way to transform an iterator into subsequences of configurable size.","id":"js_iterator_chunking","tags":["entities","features","js_features","js_other"],"example":{"language":"js","code":"const digits = () => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].values();\n\nlet chunksOf2 = Array.from(digits().chunks(2));\n// [ [0, 1], [2, 3], [4, 5], [6, 7], [8, 9] ]\n","codeHighlighted":"<span class=\"hljs-keyword\">const</span> <span class=\"hljs-title function_\">digits</span> = (<span class=\"hljs-params\"></span>) =&gt; [<span class=\"hljs-number\">0</span>, <span class=\"hljs-number\">1</span>, <span class=\"hljs-number\">2</span>, <span class=\"hljs-number\">3</span>, <span class=\"hljs-number\">4</span>, <span class=\"hljs-number\">5</span>, <span class=\"hljs-number\">6</span>, <span class=\"hljs-number\">7</span>, <span class=\"hljs-number\">8</span>, <span class=\"hljs-number\">9</span>].<span class=\"hljs-title function_\">values</span>();\n\n<span class=\"hljs-keyword\">let</span> chunksOf2 = <span class=\"hljs-title class_\">Array</span>.<span class=\"hljs-title function_\">from</span>(<span class=\"hljs-title function_\">digits</span>().<span class=\"hljs-title function_\">chunks</span>(<span class=\"hljs-number\">2</span>));\n<span class=\"hljs-comment\">// [ [0, 1], [2, 3], [4, 5], [6, 7], [8, 9] ]</span>"},"resources":[{"url":"https://github.com/tc39/proposal-iterator-chunking","title":"Iterator Chunking Proposal"}]},"id":"js_iterator_chunking"},{"entity":{"name":"JavaScript Structs","nameHtml":"JavaScript Structs","nameClean":"JavaScript Structs","description":"Enable high-performance applications by unlocking shared memory multithreading.","descriptionHtml":"Enable high-performance applications by unlocking shared memory multithreading.","descriptionClean":"Enable high-performance applications by unlocking shared memory multithreading.","id":"js_structs","tags":["entities","features","js_features","js_other"],"example":{"language":"js","code":"struct Box {\n  constructor(x) { this.x = x; }\n  x;\n}\n\nlet box = new Box(0);\nbox.x = 42;  // x is declared\nbox.y = 42;  // error\n","codeHighlighted":"struct <span class=\"hljs-title class_\">Box</span> {\n  <span class=\"hljs-title function_\">constructor</span>(<span class=\"hljs-params\">x</span>) { <span class=\"hljs-variable language_\">this</span>.<span class=\"hljs-property\">x</span> = x; }\n  x;\n}\n\n<span class=\"hljs-keyword\">let</span> box = <span class=\"hljs-keyword\">new</span> <span class=\"hljs-title class_\">Box</span>(<span class=\"hljs-number\">0</span>);\nbox.<span class=\"hljs-property\">x</span> = <span class=\"hljs-number\">42</span>;  <span class=\"hljs-comment\">// x is declared</span>\nbox.<span class=\"hljs-property\">y</span> = <span class=\"hljs-number\">42</span>;  <span class=\"hljs-comment\">// error</span>"},"resources":[{"url":"https://github.com/tc39/proposal-structs","title":"JavaScript Structs Proposal"}]},"id":"js_structs"},{"entity":{"name":"Composites","nameHtml":"Composites","nameClean":"Composites","description":"Keys for Maps and Sets that represent a structured group of values.","descriptionHtml":"Keys for Maps and Sets that represent a structured group of values.","descriptionClean":"Keys for Maps and Sets that represent a structured group of values.","id":"js_composites","tags":["entities","features","js_features","js_other"],"resources":[{"url":"https://github.com/tc39/proposal-composites","title":"Composites Proposal"}]},"id":"js_composites"},{"id":"na"}]},{"id":"native_types_proposal","template":"singleWithOther","allowMultiple":false,"allowOther":true,"yearAdded":2024,"options":[{"id":"runtime_types"},{"id":"type_annotations"},{"id":"jsdoc_types"},{"id":"no_types"}]},{"id":"js_pace_of_change","template":"single","optionsAreNumeric":true,"allowMultiple":false,"yearAdded":2025,"options":[{"id":1},{"id":2},{"id":3},{"id":4},{"id":5}]}]},{"id":"front_end_frameworks","questions":[{"id":"react","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"react","name":"React","nameClean":"React","nameHtml":"React"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"vuejs","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"vuejs","name":"Vue.js","nameClean":"Vue.js","nameHtml":"Vue.js"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"angular","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"angular","name":"Angular","nameClean":"Angular","nameHtml":"Angular"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"preact","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"preact","name":"Preact","nameClean":"Preact","nameHtml":"Preact"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"svelte","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"svelte","name":"Svelte","nameClean":"Svelte","nameHtml":"Svelte"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"alpinejs","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"alpinejs","name":"Alpine.js","nameClean":"Alpine.js","nameHtml":"Alpine.js"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"litelement","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"litelement","name":"Lit","nameClean":"Lit","nameHtml":"Lit"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"solid","template":"toolv3","optionsNamespace":"experience","allowComment":true,"yearAdded":2021,"entity":{"id":"solid","name":"Solid","nameClean":"Solid","nameHtml":"Solid"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"qwik","template":"toolv3","optionsNamespace":"experience","allowComment":true,"yearAdded":2022,"entity":{"id":"qwik","name":"Qwik","nameClean":"Qwik","nameHtml":"Qwik"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"stencil","template":"toolv3","optionsNamespace":"experience","allowComment":true,"yearAdded":2022,"entity":{"id":"stencil","name":"Stencil","nameClean":"Stencil","nameHtml":"Stencil"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"htmx","template":"toolv3","optionsNamespace":"experience","allowComment":true,"yearAdded":2023,"entity":{"id":"htmx","name":"HTMX","nameClean":"HTMX","nameHtml":"HTMX"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"front_end_frameworks_others","template":"projects","allowMultiple":true,"options":[{"entity":{"name":"Astro","nameHtml":"Astro","nameClean":"Astro","id":"astro","tags":["entities","libraries","js_libraries","js_meta_frameworks","language_pain_points"],"homepage":{"url":"https://astro.build/"},"github":{"url":"withastro/astro"},"npm":{"url":"https://www.npmjs.com/package/astro"}},"id":"astro"},{"entity":{"name":"Ember","nameHtml":"Ember","nameClean":"Ember","description":"A JavaScript framework for creating ambitious web applications","descriptionHtml":"A JavaScript framework for creating ambitious web applications","descriptionClean":"A JavaScript framework for creating ambitious web applications","id":"ember","tags":["entities","libraries","js_libraries","js_frontend_frameworks"],"homepage":{"url":"https://emberjs.com"},"github":{"url":"emberjs/ember.js"},"npm":{"url":"https://www.npmjs.com/package/ember-source"}},"id":"ember"},{"entity":{"name":"Ripple","nameHtml":"Ripple","nameClean":"Ripple","id":"ripple","tags":["entities","libraries","js_libraries","js_frontend_frameworks"],"homepage":{"url":"https://www.ripplejs.com/"}},"id":"ripple"},{"entity":{"name":"TanStack Start","nameHtml":"TanStack Start","nameClean":"TanStack Start","id":"tanstack_start","tags":["entities","libraries","js_libraries","js_meta_frameworks"],"homepage":{"url":"https://tanstack.com/start/latest"}},"id":"tanstack_start"},{"entity":{"name":"Next.js","nameHtml":"Next.js","nameClean":"Next.js","id":"nextjs","tags":["entities","libraries","js_libraries","js_backend_frameworks","react_usage_pain_points","meta_frameworks_pain_points","testing_pain_points","build_tools_pain_points"],"homepage":{"url":"https://nextjs.org"},"github":{"url":"vercel/next.js"},"npm":{"url":"https://www.npmjs.com/package/next"}},"id":"nextjs"},{"entity":{"name":"Nuxt","nameHtml":"Nuxt","nameClean":"Nuxt","id":"nuxt","tags":["entities","libraries","js_libraries","js_backend_frameworks","state_of_js_sources","meta_frameworks_pain_points","testing_pain_points"],"homepage":{"url":"https://nuxt.com/"},"github":{"url":"nuxt/nuxt.js"},"npm":{"url":"https://www.npmjs.com/package/nuxt"}},"id":"nuxt"},{"entity":{"name":"jQuery","nameHtml":"jQuery","nameClean":"jQuery","id":"jquery","tags":["entities","libraries","js_libraries","js_other_tools","meta_frameworks_pain_points"],"homepage":{"url":"https://jquery.com/"},"github":{"url":"jquery/jquery"},"npm":{"url":"https://www.npmjs.com/package/jquery"}},"id":"jquery"},{"entity":{"name":"Elm","nameHtml":"Elm","nameClean":"Elm","id":"elm","tags":["entities","other","languages","javascript_flavors","libraries"],"homepage":{"url":"https://elm-lang.org/"},"github":{"url":"elm/compiler"}},"id":"elm"},{"entity":{"name":"Remix","nameHtml":"Remix","nameClean":"Remix","id":"remix","tags":["entities","libraries","js_libraries","js_meta_frameworks"],"homepage":{"url":"https://remix.run/"},"github":{"url":"remix-run/remix"},"npm":{"url":"https://www.npmjs.com/package/create-remix"}},"id":"remix"},{"entity":{"name":"Marko","nameHtml":"Marko","nameClean":"Marko","description":"A declarative, HTML-based language that makes building web apps fun","descriptionHtml":"A declarative, HTML-based language that makes building web apps fun","descriptionClean":"A declarative, HTML-based language that makes building web apps fun","id":"marko","tags":["entities","libraries","js_libraries","js_frontend_frameworks","meta_frameworks_pain_points"],"homepage":{"url":"https://markojs.com/"},"github":{"url":"marko-js/marko"},"npm":{"url":"https://www.npmjs.com/package/marko"}},"id":"marko"},{"entity":{"name":"Aurelia","nameHtml":"Aurelia","nameClean":"Aurelia","description":"The Aurelia 1 framework entry point, bringing together all the required sub-modules of Aurelia.","descriptionHtml":"The Aurelia 1 framework entry point, bringing together all the required sub-modules of Aurelia.","descriptionClean":"The Aurelia 1 framework entry point, bringing together all the required sub-modules of Aurelia.","id":"aurelia","tags":["entities","libraries","js_libraries","js_frontend_frameworks"],"homepage":{"url":"https://aurelia.io/"},"github":{"url":"aurelia/framework"},"npm":{"url":"https://www.npmjs.com/package/aurelia-framework"}},"id":"aurelia"},{"entity":{"name":"Unpoly","nameHtml":"Unpoly","nameClean":"Unpoly","id":"unpoly","tags":["entities","libraries","other_libraries","non_js_frameworks"],"homepage":{"url":"https://unpoly.com/"}},"id":"unpoly"},{"entity":{"name":"Stimulus","nameHtml":"Stimulus","nameClean":"Stimulus","description":"A modest JavaScript framework for the HTML you already have","descriptionHtml":"A modest JavaScript framework for the HTML you already have","descriptionClean":"A modest JavaScript framework for the HTML you already have","id":"stimulus","tags":["entities","libraries","js_libraries","js_frontend_frameworks"],"homepage":{"url":"https://stimulusjs.org/"},"github":{"url":"stimulusjs/stimulus"},"npm":{"url":"https://www.npmjs.com/package/stimulus"}},"id":"stimulus"},{"entity":{"name":"Mithril","nameHtml":"Mithril","nameClean":"Mithril","description":"A JavaScript Framework for Building Brilliant Applications","descriptionHtml":"A JavaScript Framework for Building Brilliant Applications","descriptionClean":"A JavaScript Framework for Building Brilliant Applications","id":"mithril","tags":["entities","libraries","js_libraries","js_frontend_frameworks"],"homepage":{"url":"https://mithril.js.org"},"github":{"url":"MithrilJS/mithril.js"},"npm":{"url":"https://www.npmjs.com/package/mithril"}},"id":"mithril"},{"entity":{"name":"Knockout","nameHtml":"Knockout","nameClean":"Knockout","description":"Knockout makes it easier to create rich, responsive UIs with JavaScript","descriptionHtml":"Knockout makes it easier to create rich, responsive UIs with JavaScript","descriptionClean":"Knockout makes it easier to create rich, responsive UIs with JavaScript","id":"knockout","tags":["entities","libraries","js_libraries","js_frontend_frameworks"],"homepage":{"url":"http://knockoutjs.com/"},"github":{"url":"knockout/knockout"},"npm":{"url":"https://www.npmjs.com/package/knockout"}},"id":"knockout"},{"entity":{"name":"Deno Fresh","nameHtml":"Deno Fresh","nameClean":"Deno Fresh","id":"fresh","tags":["entities","libraries","js_libraries","js_meta_frameworks"],"homepage":{"url":"https://fresh.deno.dev/"}},"id":"fresh"},{"entity":{"name":"NextJS Landing Page Template","nameHtml":"NextJS Landing Page Template","nameClean":"NextJS Landing Page Template","id":"nextjs_landing_page_template","tags":["entities","libraries","js_libraries","js_meta_frameworks"],"homepage":{"url":"https://creativedesignsguru.com/"}},"id":"nextjs_landing_page_template"},{"entity":{"name":"Meteor","nameHtml":"Meteor","nameClean":"Meteor","description":"Meteor, the JavaScript App Platform","descriptionHtml":"Meteor, the JavaScript App Platform","descriptionClean":"Meteor, the JavaScript App Platform","id":"meteor","tags":["entities","libraries","js_libraries","js_backend_frameworks"],"homepage":{"url":"https://www.meteor.com"},"github":{"url":"meteor/meteor"}},"id":"meteor"}]},{"id":"front_end_frameworks_happiness","template":"happiness","optionsAreNumeric":true,"options":[{"id":0,"value":1,"average":1},{"id":1,"value":2,"average":2},{"id":2,"value":3,"average":3},{"id":3,"value":4,"average":4},{"id":4,"value":5,"average":5}]},{"id":"front_end_frameworks_pain_points","template":"textList","optionsNamespace":"pain_points","allowMultiple":true,"options":[{"id":"react_issues"},{"id":"excessive_complexity"},{"id":"performance"},{"id":"version_updates"},{"id":"too_many_choices"},{"id":"state_management"},{"id":"speed_of_change"},{"id":"dependencies"},{"id":"ssr"},{"id":"angular_issues"},{"id":"lack_of_documentation"},{"id":"configuration"},{"id":"ecosystem"},{"id":"build_issues"},{"id":"vue_issues"},{"id":"tough_learning_curve"},{"id":"browser_support"},{"id":"build_tool_issues"},{"id":"bloat"}]}]},{"id":"meta_frameworks","questions":[{"id":"nextjs","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"nextjs","name":"Next.js","nameClean":"Next.js","nameHtml":"Next.js"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"nuxt","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"nuxt","name":"Nuxt","nameClean":"Nuxt","nameHtml":"Nuxt"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"gatsby","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"gatsby","name":"Gatsby","nameClean":"Gatsby","nameHtml":"Gatsby"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"remix","template":"toolv3","optionsNamespace":"experience","allowComment":true,"yearAdded":2021,"entity":{"id":"remix","name":"Remix","nameClean":"Remix","nameHtml":"Remix"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"astro","template":"toolv3","optionsNamespace":"experience","allowComment":true,"yearAdded":2021,"entity":{"id":"astro","name":"Astro","nameClean":"Astro","nameHtml":"Astro"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"sveltekit","template":"toolv3","optionsNamespace":"experience","allowComment":true,"yearAdded":2021,"entity":{"id":"sveltekit","name":"SvelteKit","nameClean":"SvelteKit","nameHtml":"SvelteKit"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"docusaurus","template":"toolv3","optionsNamespace":"experience","allowComment":true,"yearAdded":2022,"entity":{"id":"docusaurus","name":"Docusaurus","nameClean":"Docusaurus","nameHtml":"Docusaurus"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"solidstart","template":"toolv3","optionsNamespace":"experience","allowComment":true,"yearAdded":2023,"entity":{"id":"solidstart","name":"SolidStart","nameClean":"SolidStart","nameHtml":"SolidStart"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"fresh","template":"toolv3","optionsNamespace":"experience","allowComment":true,"yearAdded":2023,"entity":{"id":"fresh","name":"Deno Fresh","nameClean":"Deno Fresh","nameHtml":"Deno Fresh"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"analog","template":"toolv3","optionsNamespace":"experience","allowComment":true,"yearAdded":2025,"entity":{"id":"analog","name":"Analog","nameClean":"Analog","nameHtml":"Analog"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"quasar","template":"toolv3","optionsNamespace":"experience","allowComment":true,"yearAdded":2025,"entity":{"id":"quasar","name":"Quasar","nameClean":"Quasar","nameHtml":"Quasar"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"meta_frameworks_others","template":"projects","allowMultiple":true,"options":[{"entity":{"name":"TanStack Start","nameHtml":"TanStack Start","nameClean":"TanStack Start","id":"tanstack_start","tags":["entities","libraries","js_libraries","js_meta_frameworks"],"homepage":{"url":"https://tanstack.com/start/latest"}},"id":"tanstack_start"},{"entity":{"name":"Analog","nameHtml":"Analog","nameClean":"Analog","id":"analog","tags":["entities","libraries","js_libraries","js_meta_frameworks"],"homepage":{"url":"https://analogjs.org/"}},"id":"analog"},{"entity":{"name":"React Router","nameHtml":"React Router","nameClean":"React Router","description":"Declarative routing for React","descriptionHtml":"Declarative routing for React","descriptionClean":"Declarative routing for React","id":"react_router","tags":["entities","libraries","react_libraries","react_routers"],"homepage":{"url":"https://reacttraining.com/react-router/"},"github":{"url":"ReactTraining/react-router"},"npm":{"url":"https://www.npmjs.com/package/react-router"}},"id":"react_router"},{"entity":{"name":"Quasar","nameHtml":"Quasar","nameClean":"Quasar","description":"Responsive Single Page Apps, Server-side Render Apps, Progressive Web Apps, Hybrid Mobile Apps (that look native!) & Electron Apps, all using the same codebase.","descriptionHtml":"Responsive Single Page Apps, Server-side Render Apps, Progressive Web Apps, Hybrid Mobile Apps (that look native!) &amp; Electron Apps, all using the same codebase.","descriptionClean":"Responsive Single Page Apps, Server-side Render Apps, Progressive Web Apps, Hybrid Mobile Apps (that look native!) & Electron Apps, all using the same codebase.","id":"quasar","tags":["entities","libraries","js_libraries","js_mobile_desktop","meta_frameworks_pain_points","back_end_frameworks_pain_points"],"homepage":{"url":"https://quasar.dev"},"github":{"url":"quasarframework/quasar"}},"id":"quasar"},{"entity":{"name":"Eleventy","nameHtml":"Eleventy","nameClean":"Eleventy","id":"eleventy","tags":["entities","libraries","js_libraries","js_meta_frameworks","build_tools_pain_points"],"homepage":{"url":"https://www.11ty.dev/"},"github":{"url":"11ty/eleventy"},"npm":{"url":"https://www.npmjs.com/package/@11ty/eleventy"}},"id":"eleventy"},{"entity":{"name":"TanStack Router","nameHtml":"TanStack Router","nameClean":"TanStack Router","id":"tanstack_router","tags":["entities","libraries","js_libraries","js_other_tools"],"homepage":{"url":"https://tanstack.com/router/"}},"id":"tanstack_router"},{"entity":{"name":"NestJS","nameHtml":"NestJS","nameClean":"NestJS","description":"A progressive Node.js framework for building efficient, scalable, and enterprise-grade server-side applications on top of TypeScript & JavaScript (ES6, ES7, ES8)","descriptionHtml":"A progressive Node.js framework for building efficient, scalable, and enterprise-grade server-side applications on top of TypeScript &amp; JavaScript (ES6, ES7, ES8)","descriptionClean":"A progressive Node.js framework for building efficient, scalable, and enterprise-grade server-side applications on top of TypeScript & JavaScript (ES6, ES7, ES8)","id":"nest","tags":["entities","libraries","js_libraries","js_backend_frameworks","graphql_api_generators"],"homepage":{"url":"https://nestjs.com"},"github":{"url":"nestjs/nest"},"npm":{"url":"https://www.npmjs.com/package/@nestjs/core"}},"id":"nest"},{"entity":{"name":"Meteor","nameHtml":"Meteor","nameClean":"Meteor","description":"Meteor, the JavaScript App Platform","descriptionHtml":"Meteor, the JavaScript App Platform","descriptionClean":"Meteor, the JavaScript App Platform","id":"meteor","tags":["entities","libraries","js_libraries","js_backend_frameworks"],"homepage":{"url":"https://www.meteor.com"},"github":{"url":"meteor/meteor"}},"id":"meteor"},{"entity":{"name":"VitePress","nameHtml":"VitePress","nameClean":"VitePress","id":"vitepress","tags":["entities","libraries","js_libraries","js_meta_frameworks"],"homepage":{"url":"https://vitepress.dev/"}},"id":"vitepress"},{"entity":{"name":"Expo","nameHtml":"Expo","nameClean":"Expo","description":"An open-source platform for making universal native apps with React. Expo runs on Android, iOS, and the web.","descriptionHtml":"An open-source platform for making universal native apps with React. Expo runs on Android, iOS, and the web.","descriptionClean":"An open-source platform for making universal native apps with React. Expo runs on Android, iOS, and the web.","id":"expo","tags":["entities","libraries","js_libraries","js_mobile_desktop","meta_frameworks_pain_points"],"homepage":{"url":"https://docs.expo.io"},"github":{"url":"expo/expo"},"npm":{"url":"https://www.npmjs.com/package/expo"}},"id":"expo"},{"id":"inertiajs"},{"entity":{"name":"Redwood SDK","nameHtml":"Redwood SDK","nameClean":"Redwood SDK","id":"redwood_sdk","tags":["entities","libraries","js_libraries","js_backend_frameworks","testing_pain_points"],"homepage":{"url":"https://rwsdk.com/"},"github":{"url":"https://github.com/redwoodjs/sdk"}},"id":"redwood_sdk"},{"entity":{"name":"Vike","nameHtml":"Vike","nameClean":"Vike","id":"vike","tags":["entities","libraries","js_libraries","js_meta_frameworks"],"homepage":{"url":"https://vike.dev/"}},"id":"vike"}]},{"id":"meta_frameworks_happiness","template":"happiness","optionsAreNumeric":true,"options":[{"id":0,"value":1,"average":1},{"id":1,"value":2,"average":2},{"id":2,"value":3,"average":3},{"id":3,"value":4,"average":4},{"id":4,"value":5,"average":5}]},{"id":"meta_frameworks_pain_points","template":"textList","optionsNamespace":"pain_points","allowMultiple":true,"options":[{"id":"nextjs_issues"},{"id":"excessive_complexity"},{"id":"version_updates"},{"id":"ssr"},{"id":"performance"},{"id":"lack_of_documentation"},{"id":"deployment"},{"id":"speed_of_change"},{"id":"server_client_issues"},{"entity":{"name":"Vercel","nameHtml":"Vercel","nameClean":"Vercel","id":"vercel","tags":["entities","sites","services","companies","react_usage_pain_points","language_pain_points"],"homepage":{"url":"https://vercel.com/"}},"id":"vercel"},{"id":"too_much_magic"},{"entity":{"name":"React","nameHtml":"React","nameClean":"React","id":"react","parentId":"framework_issues","tags":["entities","libraries","js_libraries","js_frontend_frameworks","language_pain_points","meta_frameworks_pain_points","testing_pain_points","build_tools_pain_points","top_js_pain_points"],"homepage":{"url":"https://reactjs.org/"},"github":{"url":"facebook/react"},"npm":{"url":"https://www.npmjs.com/package/react"}},"id":"react"},{"id":"too_many_choices"},{"id":"bloat"},{"id":"routing"},{"id":"too_opinionated"},{"id":"tough_learning_curve"},{"id":"lock_in"},{"id":"server_components_issues"}]}]},{"id":"back_end_frameworks","questions":[{"id":"express","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"express","name":"Express","nameClean":"Express","nameHtml":"Express"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"nest","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"nest","name":"NestJS","nameClean":"NestJS","nameHtml":"NestJS"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"fastify","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"fastify","name":"Fastify","nameClean":"Fastify","nameHtml":"Fastify"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"strapi","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"strapi","name":"Strapi","nameClean":"Strapi","nameHtml":"Strapi"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"hono","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"hono","name":"Hono","nameClean":"Hono","nameHtml":"Hono"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"koa","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"koa","name":"Koa","nameClean":"Koa","nameHtml":"Koa"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"elysia","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"elysia","name":"ElysiaJS","nameClean":"ElysiaJS","nameHtml":"ElysiaJS"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"adonis","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"adonis","name":"Adonis","nameClean":"Adonis","nameHtml":"Adonis"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"hapi","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"hapi","name":"Hapi","nameClean":"Hapi","nameHtml":"Hapi"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"directus","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"directus","name":"Directus","nameClean":"Directus","nameHtml":"Directus"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"trpc","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"trpc","name":"tRPC","nameClean":"tRPC","nameHtml":"tRPC"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"nitro","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"nitro","name":"Nitro","nameClean":"Nitro","nameHtml":"Nitro"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"back_end_frameworks_others","template":"projects","allowMultiple":true,"options":[{"entity":{"name":"oRPC","nameHtml":"oRPC","nameClean":"oRPC","id":"orpc","tags":["entities","libraries","js_libraries","js_backend_frameworks"],"homepage":{"url":"https://orpc.dev/"}},"id":"orpc"},{"entity":{"name":"h3","nameHtml":"h3","nameClean":"h3","id":"h3","tags":["entities","libraries","js_libraries","js_other_tools"],"homepage":{"url":"https://github.com/unjs/h3"},"github":{"url":"unjs/h3"}},"id":"h3"},{"id":"payload"},{"entity":{"name":"Meteor","nameHtml":"Meteor","nameClean":"Meteor","description":"Meteor, the JavaScript App Platform","descriptionHtml":"Meteor, the JavaScript App Platform","descriptionClean":"Meteor, the JavaScript App Platform","id":"meteor","tags":["entities","libraries","js_libraries","js_backend_frameworks"],"homepage":{"url":"https://www.meteor.com"},"github":{"url":"meteor/meteor"}},"id":"meteor"},{"id":"effect"},{"entity":{"name":"Bun","nameHtml":"Bun","nameClean":"Bun","id":"bun","tags":["entities","other","runtimes","libraries","js_libraries","back_end_frameworks_pain_points","testing_pain_points","build_tools_pain_points","language_pain_points"],"homepage":{"url":"https://bun.sh/"}},"id":"bun"},{"entity":{"name":"Oak","nameHtml":"Oak","nameClean":"Oak","id":"oak","tags":["entities","libraries","js_libraries","js_other_tools"],"homepage":{"url":"https://oakserver.github.io/oak/"}},"id":"oak"}]},{"id":"back_end_frameworks_happiness","template":"happiness","optionsAreNumeric":true,"options":[{"id":0,"value":1,"average":1},{"id":1,"value":2,"average":2},{"id":2,"value":3,"average":3},{"id":3,"value":4,"average":4},{"id":4,"value":5,"average":5}]},{"id":"back_end_frameworks_pain_points","template":"textList","optionsNamespace":"pain_points","allowMultiple":true,"options":[{"id":"performance"},{"id":"lack_of_documentation"},{"id":"too_many_choices"},{"id":"excessive_complexity"},{"id":"dependencies"},{"id":"deployment"},{"id":"configuration"},{"id":"authentication"},{"id":"reliance_on_javascript"},{"id":"version_updates"},{"id":"too_much_boilerplate"},{"id":"ecosystem"},{"id":"browser_support"},{"id":"too_opinionated"},{"id":"maintenance"},{"id":"lack_of_best_practices"},{"id":"tough_learning_curve"},{"id":"error_handling"}]}]},{"id":"testing","questions":[{"id":"jest","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"jest","name":"Jest","nameClean":"Jest","nameHtml":"Jest"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"mocha","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"mocha","name":"Mocha","nameClean":"Mocha","nameHtml":"Mocha"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"storybook","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"storybook","name":"Storybook","nameClean":"Storybook","nameHtml":"Storybook"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"cypress","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"cypress","name":"Cypress","nameClean":"Cypress","nameHtml":"Cypress"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"puppeteer","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"puppeteer","name":"Puppeteer","nameClean":"Puppeteer","nameHtml":"Puppeteer"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"testing_library","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"testing_library","name":"Testing Library","nameClean":"Testing Library","nameHtml":"Testing Library"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"playwright","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"playwright","name":"Playwright","nameClean":"Playwright","nameHtml":"Playwright"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"webdriverio","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"webdriverio","name":"WebdriverIO","nameClean":"WebdriverIO","nameHtml":"WebdriverIO"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"vitest","template":"toolv3","optionsNamespace":"experience","allowComment":true,"yearAdded":2021,"entity":{"id":"vitest","name":"Vitest","nameClean":"Vitest","nameHtml":"Vitest"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"selenium","template":"toolv3","optionsNamespace":"experience","allowComment":true,"yearAdded":2022,"entity":{"id":"selenium","name":"Selenium","nameClean":"Selenium","nameHtml":"Selenium"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"testcafe","template":"toolv3","optionsNamespace":"experience","allowComment":true,"yearAdded":2022,"entity":{"id":"testcafe","name":"TestCafe","nameClean":"TestCafe","nameHtml":"TestCafe"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"mock_service_worker","template":"toolv3","optionsNamespace":"experience","allowComment":true,"yearAdded":2023,"entity":{"id":"mock_service_worker","name":"Mock Service Worker","nameClean":"Mock Service Worker","nameHtml":"Mock Service Worker"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"node_test_runner","template":"toolv3","optionsNamespace":"experience","allowComment":true,"yearAdded":2024,"entity":{"id":"node_test_runner","name":"Node Test Runner","nameClean":"Node Test Runner","nameHtml":"Node Test Runner"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"bun_test","template":"toolv3","optionsNamespace":"experience","allowComment":true,"yearAdded":2025,"entity":{"id":"bun_test","name":"`bun test`","nameClean":"bun test","nameHtml":"<code>bun test</code>"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"testing_others","template":"projects","allowMultiple":true,"options":[{"entity":{"name":"Jasmine","nameHtml":"Jasmine","nameClean":"Jasmine","description":"Simple JavaScript testing framework for browsers and node.js","descriptionHtml":"Simple JavaScript testing framework for browsers and node.js","descriptionClean":"Simple JavaScript testing framework for browsers and node.js","id":"jasmine","tags":["entities","libraries","js_libraries","js_testing"],"homepage":{"url":"http://jasmine.github.io/"},"github":{"url":"jasmine/jasmine"},"npm":{"url":"https://www.npmjs.com/package/jasmine"}},"id":"jasmine"},{"entity":{"name":"Karma","nameHtml":"Karma","nameClean":"Karma","description":"Spectacular Test Runner for JavaScript","descriptionHtml":"Spectacular Test Runner for JavaScript","descriptionClean":"Spectacular Test Runner for JavaScript","id":"karma","tags":["entities","libraries","js_libraries","js_testing"],"homepage":{"url":"http://karma-runner.github.io"},"github":{"url":"karma-runner/karma"},"npm":{"url":"https://www.npmjs.com/package/karma"}},"id":"karma"},{"entity":{"name":"Bun","nameHtml":"Bun","nameClean":"Bun","id":"bun","tags":["entities","other","runtimes","libraries","js_libraries","back_end_frameworks_pain_points","testing_pain_points","build_tools_pain_points","language_pain_points"],"homepage":{"url":"https://bun.sh/"}},"id":"bun"},{"entity":{"name":"Deno","nameHtml":"Deno","nameClean":"Deno","description":"A secure JavaScript and TypeScript runtime","descriptionHtml":"A secure JavaScript and TypeScript runtime","descriptionClean":"A secure JavaScript and TypeScript runtime","id":"deno","tags":["entities","libraries","js_libraries","js_backend_frameworks","build_tools_pain_points","language_pain_points"],"homepage":{"url":"https://deno.land"},"github":{"url":"denoland/deno"}},"id":"deno"},{"entity":{"name":"QUnit","nameHtml":"QUnit","nameClean":"QUnit","description":"An easy-to-use JavaScript unit testing framework.","descriptionHtml":"An easy-to-use JavaScript unit testing framework.","descriptionClean":"An easy-to-use JavaScript unit testing framework.","id":"qunit","tags":["entities","libraries","js_libraries","js_testing"],"homepage":{"url":"https://qunitjs.com"},"github":{"url":"qunitjs/qunit"},"npm":{"url":"https://www.npmjs.com/package/qunit"}},"id":"qunit"},{"entity":{"name":"Japa","nameHtml":"Japa","nameClean":"Japa","id":"japa","tags":["entities","libraries","js_libraries","js_testing"],"homepage":{"url":"https://japa.dev/docs"}},"id":"japa"},{"entity":{"name":"AVA","nameHtml":"AVA","nameClean":"AVA","description":"Node.js test runner that lets you develop with confidence","descriptionHtml":"Node.js test runner that lets you develop with confidence","descriptionClean":"Node.js test runner that lets you develop with confidence","id":"ava","tags":["entities","libraries","js_libraries","js_testing"],"github":{"url":"avajs/ava"},"npm":{"url":"https://www.npmjs.com/package/ava"}},"id":"ava"},{"entity":{"name":"Web Test Runner","nameHtml":"Web Test Runner","nameClean":"Web Test Runner","id":"web_test_runner","tags":["entities","libraries","js_libraries","js_testing"],"homepage":{"url":"https://modern-web.dev/docs/test-runner/overview/"}},"id":"web_test_runner"},{"entity":{"name":"uvu","nameHtml":"uvu","nameClean":"uvu","id":"uvu","tags":["entities","libraries","js_libraries","js_testing"],"homepage":{"url":"https://github.com/lukeed/uvu"},"github":{"url":"lukeed/uvu"},"npm":{"url":"https://www.npmjs.com/package/uvu"}},"id":"uvu"}]},{"id":"testing_happiness","template":"happiness","optionsAreNumeric":true,"options":[{"id":0,"value":1,"average":1},{"id":1,"value":2,"average":2},{"id":2,"value":3,"average":3},{"id":3,"value":4,"average":4},{"id":4,"value":5,"average":5}]},{"id":"testing_pain_points","template":"textList","optionsNamespace":"pain_points","allowMultiple":true,"options":[{"id":"mocking"},{"id":"configuration"},{"id":"performance"},{"entity":{"name":"Jest","nameHtml":"Jest","nameClean":"Jest","description":"Delightful JavaScript Testing.","descriptionHtml":"Delightful JavaScript Testing.","descriptionClean":"Delightful JavaScript Testing.","id":"jest","tags":["entities","libraries","js_libraries","js_testing","language_pain_points"],"homepage":{"url":"https://jestjs.io"},"github":{"url":"facebook/jest"},"npm":{"url":"https://www.npmjs.com/package/jest"}},"id":"jest"},{"id":"esm_cjs"},{"id":"excessive_complexity"},{"id":"flakiness"},{"id":"browser_testing_issues"},{"id":"e2e_testing"},{"id":"lack_of_documentation"},{"id":"typescript_support"},{"id":"unit_testing"},{"id":"debugging"},{"entity":{"name":"Cypress","nameHtml":"Cypress","nameClean":"Cypress","description":"Fast, easy and reliable testing for anything that runs in a browser.","descriptionHtml":"Fast, easy and reliable testing for anything that runs in a browser.","descriptionClean":"Fast, easy and reliable testing for anything that runs in a browser.","id":"cypress","tags":["entities","libraries","js_libraries","js_testing"],"homepage":{"url":"https://www.cypress.io"},"github":{"url":"cypress-io/cypress"},"npm":{"url":"https://www.npmjs.com/package/cypress"}},"id":"cypress"},{"id":"async_testing"},{"id":"front_end"},{"id":"integration_with_tools"},{"id":"browser_support"},{"entity":{"name":"Vitest","nameHtml":"Vitest","nameClean":"Vitest","description":"A blazing fast unit-test framework powered by Vite","descriptionHtml":"A blazing fast unit-test framework powered by Vite","descriptionClean":"A blazing fast unit-test framework powered by Vite","id":"vitest","tags":["entities","libraries","js_libraries","js_testing"],"homepage":{"url":"https://vitest.dev/"},"github":{"url":"vitest-dev/vitest"},"npm":{"url":"https://www.npmjs.com/package/vitest"}},"id":"vitest"}]}]},{"id":"build_tools","questions":[{"id":"webpack","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"webpack","name":"webpack","nameClean":"webpack","nameHtml":"webpack"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"parcel","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"parcel","name":"Parcel","nameClean":"Parcel","nameHtml":"Parcel"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"rollup","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"rollup","name":"Rollup","nameClean":"Rollup","nameHtml":"Rollup"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"tsc","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"tsc","name":"tsc CLI","nameClean":"tsc CLI","nameHtml":"tsc CLI"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"swc","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"swc","name":"SWC","nameClean":"SWC","nameHtml":"SWC"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"esbuild","template":"toolv3","optionsNamespace":"experience","allowComment":true,"entity":{"id":"esbuild","name":"esbuild","nameClean":"esbuild","nameHtml":"esbuild"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"vite","template":"toolv3","optionsNamespace":"experience","allowComment":true,"yearAdded":2021,"entity":{"id":"vite","name":"Vite","nameClean":"Vite","nameHtml":"Vite"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"turbopack","template":"toolv3","optionsNamespace":"experience","allowComment":true,"yearAdded":2022,"entity":{"id":"turbopack","name":"Turbopack","nameClean":"Turbopack","nameHtml":"Turbopack"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"tsup","template":"toolv3","optionsNamespace":"experience","allowComment":true,"yearAdded":2023,"entity":{"id":"tsup","name":"tsup","nameClean":"tsup","nameHtml":"tsup"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"rspack","template":"toolv3","optionsNamespace":"experience","allowComment":true,"yearAdded":2024,"entity":{"id":"rspack","name":"Rspack","nameClean":"Rspack","nameHtml":"Rspack"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"rolldown","template":"toolv3","optionsNamespace":"experience","allowComment":true,"yearAdded":2024,"entity":{"id":"rolldown","name":"Rolldown","nameClean":"Rolldown","nameHtml":"Rolldown"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"bun","template":"toolv3","optionsNamespace":"experience","allowComment":true,"yearAdded":2025,"entity":{"id":"bun","name":"Bun","nameClean":"Bun","nameHtml":"Bun"},"options":[{"id":"never_heard"},{"id":"heard"},{"id":"used"}]},{"id":"build_tools_others","template":"projects","allowMultiple":true,"options":[{"entity":{"name":"Deno","nameHtml":"Deno","nameClean":"Deno","description":"A secure JavaScript and TypeScript runtime","descriptionHtml":"A secure JavaScript and TypeScript runtime","descriptionClean":"A secure JavaScript and TypeScript runtime","id":"deno","tags":["entities","libraries","js_libraries","js_backend_frameworks","build_tools_pain_points","language_pain_points"],"homepage":{"url":"https://deno.land"},"github":{"url":"denoland/deno"}},"id":"deno"},{"entity":{"name":"tsdown","nameHtml":"tsdown","nameClean":"tsdown","id":"tsdown","tags":["entities","libraries","js_libraries","js_build_tools"],"homepage":{"url":"https://tsdown.dev/"}},"id":"tsdown"},{"entity":{"name":"Bun","nameHtml":"Bun","nameClean":"Bun","id":"bun","tags":["entities","other","runtimes","libraries","js_libraries","back_end_frameworks_pain_points","testing_pain_points","build_tools_pain_points","language_pain_points"],"homepage":{"url":"https://bun.sh/"}},"id":"bun"},{"entity":{"name":"Gulp","nameHtml":"Gulp","nameClean":"Gulp","description":"A toolkit to automate & enhance your workflow","descriptionHtml":"A toolkit to automate &amp; enhance your workflow","descriptionClean":"A toolkit to automate & enhance your workflow","id":"gulp","tags":["entities","libraries","js_libraries","js_build_tools"],"homepage":{"url":"https://gulpjs.com"},"github":{"url":"gulpjs/gulp"},"npm":{"url":"https://www.npmjs.com/package/gulp"}},"id":"gulp"},{"entity":{"name":"Oxc","nameHtml":"Oxc","nameClean":"Oxc","id":"oxc","tags":["entities","libraries","js_libraries","js_build_tools"],"homepage":{"url":"https://oxc.rs/"}},"id":"oxc"}]},{"id":"build_tools_happiness","template":"happiness","optionsAreNumeric":true,"options":[{"id":0,"value":1,"average":1},{"id":1,"value":2,"average":2},{"id":2,"value":3,"average":3},{"id":3,"value":4,"average":4},{"id":4,"value":5,"average":5}]},{"id":"build_tools_pain_points","template":"textList","optionsNamespace":"pain_points","allowMultiple":true,"options":[{"id":"configuration"},{"id":"performance"},{"id":"excessive_complexity"},{"id":"webpack_issues"},{"id":"build_tool_issues"},{"id":"esm_cjs"},{"id":"lack_of_documentation"},{"id":"too_many_choices"},{"id":"plugin_issues"},{"id":"typescript_support"},{"id":"version_updates"},{"id":"dependencies"},{"id":"browser_support"},{"id":"debugging"},{"id":"bundler_issues"},{"id":"build_times"},{"id":"tough_learning_curve"},{"id":"lack_of_tools"},{"id":"error_handling"}]}]},{"id":"other_tools","questions":[{"id":"libraries","template":"multipleWithOtherSentiment","allowMultiple":true,"allowComment":true,"allowOther":true,"options":[{"entity":{"name":"Immer","nameHtml":"Immer","nameClean":"Immer","description":"Create the next immutable state by mutating the current one","descriptionHtml":"Create the next immutable state by mutating the current one","descriptionClean":"Create the next immutable state by mutating the current one","id":"immer","tags":["entities","libraries","js_libraries","js_other_tools"],"homepage":{"url":"https://immerjs.github.io/immer/"},"github":{"url":"immerjs/immer"},"npm":{"url":"https://www.npmjs.com/package/immer"}},"id":"immer"},{"entity":{"name":"Lodash","nameHtml":"Lodash","nameClean":"Lodash","description":"A modern JavaScript utility library delivering modularity, performance, & extras.","descriptionHtml":"A modern JavaScript utility library delivering modularity, performance, &amp; extras.","descriptionClean":"A modern JavaScript utility library delivering modularity, performance, & extras.","id":"lodash","tags":["entities","libraries","js_libraries","js_other_tools","language_pain_points"],"homepage":{"url":"https://lodash.com/"},"github":{"url":"lodash/lodash"},"npm":{"url":"https://www.npmjs.com/package/lodash"}},"id":"lodash"},{"entity":{"name":"Underscore.js","nameHtml":"Underscore.js","nameClean":"Underscore.js","description":"JavaScript's utility _ belt","descriptionHtml":"JavaScript's utility _ belt","descriptionClean":"JavaScript's utility _ belt","id":"underscore","tags":["entities","libraries","js_libraries","js_other_tools"],"homepage":{"url":"https://underscorejs.org"},"github":{"url":"jashkenas/underscore"},"npm":{"url":"https://www.npmjs.com/package/underscore"}},"id":"underscore"},{"entity":{"name":"Ramda","nameHtml":"Ramda","nameClean":"Ramda","description":"Practical functional Javascript","descriptionHtml":"Practical functional Javascript","descriptionClean":"Practical functional Javascript","id":"ramda","tags":["entities","libraries","js_libraries","js_other_tools","language_pain_points"],"homepage":{"url":"https://ramdajs.com"},"github":{"url":"ramda/ramda"},"npm":{"url":"https://www.npmjs.com/package/ramda"}},"id":"ramda"},{"entity":{"name":"jQuery","nameHtml":"jQuery","nameClean":"jQuery","id":"jquery","tags":["entities","libraries","js_libraries","js_other_tools","meta_frameworks_pain_points"],"homepage":{"url":"https://jquery.com/"},"github":{"url":"jquery/jquery"},"npm":{"url":"https://www.npmjs.com/package/jquery"}},"id":"jquery"},{"entity":{"name":"RxJS","nameHtml":"RxJS","nameClean":"RxJS","description":"A reactive programming library for JavaScript","descriptionHtml":"A reactive programming library for JavaScript","descriptionClean":"A reactive programming library for JavaScript","id":"rxjs","tags":["entities","libraries","js_libraries","js_other_tools","testing_pain_points","top_js_pain_points","language_pain_points"],"homepage":{"url":"https://rxjs.dev"},"github":{"url":"ReactiveX/rxjs"},"npm":{"url":"https://www.npmjs.com/package/rx"}},"id":"rxjs"},{"entity":{"name":"stdlib","nameHtml":"stdlib","nameClean":"stdlib","description":"a standard library for javascript and node.js","descriptionHtml":"a standard library for javascript and node.js","descriptionClean":"a standard library for javascript and node.js","id":"stdlib","tags":["entities","libraries","js_libraries","js_other_tools"],"homepage":{"url":"https://stdlib.io/"},"github":{"url":"stdlib-js/stdlib"},"npm":{"url":"https://www.npmjs.com/package/@stdlib/stdlib"}},"id":"stdlib"},{"entity":{"name":"Zod","nameHtml":"Zod","nameClean":"Zod","id":"zod","tags":["entities","libraries","js_libraries","js_validation","back_end_frameworks_pain_points","top_js_pain_points","language_pain_points"],"homepage":{"url":"https://github.com/colinhacks/zod"}},"id":"zod"},{"entity":{"name":"core-js","nameHtml":"core-js","nameClean":"core-js","id":"core_js","tags":["entities","libraries","js_libraries","js_other_tools"],"homepage":{"url":"https://github.com/zloirock/core-js"},"github":{"url":"zloirock/core-js"}},"id":"core_js"},{"entity":{"name":"Partytown","nameHtml":"Partytown","nameClean":"Partytown","id":"partytown","tags":["entities","libraries","js_libraries","js_other_tools"],"homepage":{"url":"https://github.com/BuilderIO/partytown"}},"id":"partytown"},{"entity":{"name":"Mitosis","nameHtml":"Mitosis","nameClean":"Mitosis","id":"mitosis","tags":["entities","libraries","js_libraries","js_other_tools"],"homepage":{"url":"https://github.com/BuilderIO/mitosis"}},"id":"mitosis"},{"entity":{"name":"Moment","nameHtml":"Moment","nameClean":"Moment","description":"Parse, validate, manipulate, and display dates in javascript.","descriptionHtml":"Parse, validate, manipulate, and display dates in javascript.","descriptionClean":"Parse, validate, manipulate, and display dates in javascript.","id":"moment","tags":["entities","libraries","js_libraries","js_other_tools"],"homepage":{"url":"https://momentjs.com/"},"github":{"url":"moment/moment"},"npm":{"url":"https://www.npmjs.com/package/moment"}},"id":"moment"},{"entity":{"name":"Day.js","nameHtml":"Day.js","nameClean":"Day.js","description":"Day.js 2KB immutable date-time library alternative to Moment.js with the same modern API","descriptionHtml":"Day.js 2KB immutable date-time library alternative to Moment.js with the same modern API","descriptionClean":"Day.js 2KB immutable date-time library alternative to Moment.js with the same modern API","id":"dayjs","tags":["entities","libraries","js_libraries","js_other_tools"],"homepage":{"url":"https://day.js.org"},"github":{"url":"iamkun/dayjs"},"npm":{"url":"https://www.npmjs.com/package/dayjs"}},"id":"dayjs"},{"entity":{"name":"date-fns","nameHtml":"date-fns","nameClean":"date-fns","description":"Modern JavaScript date utility library ️","descriptionHtml":"Modern JavaScript date utility library ️","descriptionClean":"Modern JavaScript date utility library ️","id":"date_fns","tags":["entities","libraries","js_libraries","js_other_tools"],"homepage":{"url":"https://date-fns.org"},"github":{"url":"date-fns/date-fns"},"npm":{"url":"https://www.npmjs.com/package/date-fns"}},"id":"date_fns"},{"entity":{"name":"Luxon","nameHtml":"Luxon","nameClean":"Luxon","description":"⏱ A library for working with dates and times in JS","descriptionHtml":"⏱ A library for working with dates and times in JS","descriptionClean":"⏱ A library for working with dates and times in JS","id":"luxon","tags":["entities","libraries","js_libraries","js_other_tools"],"homepage":{"url":"https://moment.github.io/luxon"},"github":{"url":"moment/luxon"},"npm":{"url":"https://www.npmjs.com/package/luxon"}},"id":"luxon"},{"entity":{"name":"Yup","nameHtml":"Yup","nameClean":"Yup","description":"Dead simple Object schema validation","descriptionHtml":"Dead simple Object schema validation","descriptionClean":"Dead simple Object schema validation","id":"yup","tags":["entities","libraries","js_libraries","js_other_tools"],"homepage":{"url":"https://github.com/jquense/yup"},"github":{"url":"jquense/yup"},"npm":{"url":"https://www.npmjs.com/package/yup"}},"id":"yup"},{"entity":{"name":"Valibot","nameHtml":"Valibot","nameClean":"Valibot","id":"valibot","tags":["entities","libraries","js_libraries","js_validation"],"homepage":{"url":"https://valibot.dev/"}},"id":"valibot"},{"id":"na"}]},{"id":"graphics_animation","template":"multipleWithOtherSentiment","allowMultiple":true,"allowComment":true,"allowOther":true,"yearAdded":2022,"options":[{"entity":{"name":"Three.js","nameHtml":"Three.js","nameClean":"Three.js","description":"JavaScript 3D library.","descriptionHtml":"JavaScript 3D library.","descriptionClean":"JavaScript 3D library.","id":"three_js","tags":["entities","libraries","js_libraries","js_animation","animation"],"homepage":{"url":"https://threejs.org/"},"github":{"url":"mrdoob/three.js"},"npm":{"url":"https://www.npmjs.com/package/three"}},"id":"three_js"},{"entity":{"name":"Theatre.js","nameHtml":"Theatre.js","nameClean":"Theatre.js","id":"theatre_js","tags":["entities","libraries","js_libraries","js_animation","animation"],"homepage":{"url":"https://www.theatrejs.com/"}},"id":"theatre_js"},{"entity":{"name":"Anime.js","nameHtml":"Anime.js","nameClean":"Anime.js","description":"JavaScript animation engine","descriptionHtml":"JavaScript animation engine","descriptionClean":"JavaScript animation engine","id":"anime_js","tags":["entities","libraries","js_libraries","js_animation","animation"],"homepage":{"url":"https://animejs.com"},"github":{"url":"juliangarnier/anime"},"npm":{"url":"https://www.npmjs.com/package/animejs"}},"id":"anime_js"},{"entity":{"name":"React-Spring","nameHtml":"React-Spring","nameClean":"React-Spring","id":"react_spring","tags":["entities","libraries","js_libraries","js_animation","animation"],"homepage":{"url":"https://react-spring.dev/"}},"id":"react_spring"},{"entity":{"name":"Lottie","nameHtml":"Lottie","nameClean":"Lottie","description":"Render After Effects animations natively on Web, Android and iOS, and React Native.","descriptionHtml":"Render After Effects animations natively on Web, Android and iOS, and React Native.","descriptionClean":"Render After Effects animations natively on Web, Android and iOS, and React Native.","id":"lottie","tags":["entities","libraries","js_libraries","js_animation","animation"],"homepage":{"url":"https://airbnb.io/lottie/"},"github":{"url":"airbnb/lottie-web"}},"id":"lottie"},{"entity":{"name":"GSAP","nameHtml":"GSAP","nameClean":"GSAP","description":"GreenSock's GSAP JavaScript animation library (including Draggable).","descriptionHtml":"GreenSock's GSAP JavaScript animation library (including Draggable).","descriptionClean":"GreenSock's GSAP JavaScript animation library (including Draggable).","id":"greensock","tags":["entities","libraries","js_libraries","js_animation","animation"],"homepage":{"url":"https://greensock.com"},"github":{"url":"greensock/GSAP"},"npm":{"url":"https://www.npmjs.com/package/gsap"}},"id":"greensock"},{"entity":{"name":"Popmotion","nameHtml":"Popmotion","nameClean":"Popmotion","description":"Simple animation libraries for delightful user interfaces","descriptionHtml":"Simple animation libraries for delightful user interfaces","descriptionClean":"Simple animation libraries for delightful user interfaces","id":"popmotion","tags":["entities","libraries","js_libraries","js_animation","animation"],"homepage":{"url":"https://popmotion.io"},"github":{"url":"Popmotion/popmotion"},"npm":{"url":"https://www.npmjs.com/package/popmotion"}},"id":"popmotion"},{"entity":{"name":"Motion (ex-Framer Motion)","nameHtml":"Motion (ex-Framer Motion)","nameClean":"Motion (ex-Framer Motion)","id":"framer_motion","tags":["entities","libraries","js_libraries","js_animation","animation"],"homepage":{"url":"https://motion.dev/"}},"id":"framer_motion"},{"entity":{"name":"Motion One","nameHtml":"Motion One","nameClean":"Motion One","id":"motion_one","tags":["entities","libraries","js_libraries","js_animation","animation"],"homepage":{"url":"https://motion.dev/"},"github":{"url":"motiondivision/motionone"},"npm":{"url":"https://www.npmjs.com/package/motion"}},"id":"motion_one"},{"entity":{"name":"D3","nameHtml":"D3","nameClean":"D3","description":"Bring data to life with SVG, Canvas and HTML.","descriptionHtml":"Bring data to life with SVG, Canvas and HTML.","descriptionClean":"Bring data to life with SVG, Canvas and HTML.","id":"d3","tags":["entities","libraries","js_libraries","js_animation"],"homepage":{"url":"https://d3js.org"},"github":{"url":"d3/d3"},"npm":{"url":"https://www.npmjs.com/package/d3"}},"id":"d3"},{"entity":{"name":"PixiJS","nameHtml":"PixiJS","nameClean":"PixiJS","id":"pixi_js","tags":["entities","libraries","js_libraries","js_animation"],"homepage":{"url":"https://pixijs.com/"}},"id":"pixi_js"},{"entity":{"name":"Chart.js","nameHtml":"Chart.js","nameClean":"Chart.js","id":"chart_js","tags":["entities","libraries","js_libraries","js_data_visualization","data_visualization"],"homepage":{"url":"https://www.chartjs.org/"}},"id":"chart_js"},{"id":"na"}]},{"id":"utilities","template":"multipleWithOtherSentiment","allowMultiple":true,"allowComment":true,"allowOther":true,"entity":{"id":"utilities"},"options":[{"entity":{"name":"Babel","nameHtml":"Babel","nameClean":"Babel","description":"A compiler for writing next generation JavaScript.","descriptionHtml":"A compiler for writing next generation JavaScript.","descriptionClean":"A compiler for writing next generation JavaScript.","id":"babel","tags":["entities","libraries","js_libraries","js_build_tools","language_pain_points"],"homepage":{"url":"https://babel.dev"},"github":{"url":"babel/babel"},"npm":{"url":"https://www.npmjs.com/package/babel-core"}},"id":"babel"},{"entity":{"name":"Prettier","nameHtml":"Prettier","nameClean":"Prettier","id":"prettier","tags":["entities","libraries","js_libraries","js_other_tools","testing_pain_points","language_pain_points"],"homepage":{"url":"https://prettier.io"},"github":{"url":"prettier/prettier"},"npm":{"url":"https://www.npmjs.com/package/prettier"}},"id":"prettier"},{"entity":{"name":"ESLint","nameHtml":"ESLint","nameClean":"ESLint","description":"Find and fix problems in your JavaScript code.","descriptionHtml":"Find and fix problems in your JavaScript code.","descriptionClean":"Find and fix problems in your JavaScript code.","id":"eslint","tags":["entities","libraries","js_libraries","js_other_tools","accessibility","meta_frameworks_pain_points","testing_pain_points","build_tools_pain_points","top_js_pain_points","language_pain_points"],"homepage":{"url":"https://eslint.org"},"github":{"url":"eslint/eslint"},"npm":{"url":"https://www.npmjs.com/package/eslint"}},"id":"eslint"},{"entity":{"name":"nvm","nameHtml":"nvm","nameClean":"nvm","description":"Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions","descriptionHtml":"Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions","descriptionClean":"Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions","id":"nvm","tags":["entities","libraries","js_libraries","js_other_tools"],"github":{"url":"nvm-sh/nvm"}},"id":"nvm"},{"id":"n"},{"entity":{"name":"Biome","nameHtml":"Biome","nameClean":"Biome","description":"One toolchain for your web project","descriptionHtml":"One toolchain for your web project","descriptionClean":"One toolchain for your web project","id":"biome","tags":["entities","libraries","js_libraries","js_build_tools","top_js_pain_points"],"homepage":{"url":"https://biomejs.dev/"},"github":{"url":"biomejs/biome"}},"id":"biome"}]},{"id":"runtimes","template":"multipleWithOtherSentiment","allowMultiple":true,"allowComment":true,"allowOther":true,"options":[{"entity":{"name":"Browser","nameHtml":"Browser","nameClean":"Browser","id":"browser_environment","tags":["entities","libraries","css_libraries","css_utilities"]},"id":"browser_environment"},{"entity":{"name":"Node.js","nameHtml":"Node.js","nameClean":"Node.js","id":"node","tags":["entities","other","runtimes"],"homepage":{"url":"https://nodejs.org/en/"}},"id":"node"},{"entity":{"name":"Deno","nameHtml":"Deno","nameClean":"Deno","description":"A secure JavaScript and TypeScript runtime","descriptionHtml":"A secure JavaScript and TypeScript runtime","descriptionClean":"A secure JavaScript and TypeScript runtime","id":"deno","tags":["entities","libraries","js_libraries","js_backend_frameworks","build_tools_pain_points","language_pain_points"],"homepage":{"url":"https://deno.land"},"github":{"url":"denoland/deno"}},"id":"deno"},{"entity":{"name":"ChakraCore","nameHtml":"ChakraCore","nameClean":"ChakraCore","id":"chakracore","tags":["entities","libraries","js_libraries","js_mobile_desktop"],"homepage":{"url":"https://github.com/microsoft/ChakraCore"},"github":{"url":"ChakraCore"}},"id":"chakracore"},{"entity":{"name":"Hermes","nameHtml":"Hermes","nameClean":"Hermes","description":"A small and lightweight JavaScript engine optimized for running React Native on Android","descriptionHtml":"A small and lightweight JavaScript engine optimized for running React Native on Android","descriptionClean":"A small and lightweight JavaScript engine optimized for running React Native on Android","id":"hermes","tags":["entities","libraries","js_libraries","js_mobile_desktop"],"homepage":{"url":"https://hermesengine.dev"},"github":{"url":"facebook/hermes"}},"id":"hermes"},{"entity":{"name":"Service Workers","nameHtml":"Service Workers","nameClean":"Service Workers","description":"`navigator.serviceWorker.register(\"/sw.js\")`","descriptionHtml":"<code>navigator.serviceWorker.register(\"/sw.js\")</code>","descriptionClean":"navigator.serviceWorker.register(\"/sw.js\")","id":"service_workers","tags":["entities","features","html_features","html_pwas","js_other","mobile_web_apps_pain_points","language_pain_points","meta_frameworks_pain_points","build_tools_pain_points","top_js_pain_points"],"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API"}},"id":"service_workers"},{"entity":{"name":"Bun","nameHtml":"Bun","nameClean":"Bun","id":"bun","tags":["entities","other","runtimes","libraries","js_libraries","back_end_frameworks_pain_points","testing_pain_points","build_tools_pain_points","language_pain_points"],"homepage":{"url":"https://bun.sh/"}},"id":"bun"},{"entity":{"name":"Cloudflare Workers","nameHtml":"Cloudflare Workers","nameClean":"Cloudflare Workers","id":"cloudflare_workers","tags":["entities","other","runtimes"],"homepage":{"url":"https://workers.cloudflare.com/"}},"id":"cloudflare_workers"},{"id":"na"}]},{"id":"hosting","template":"multipleWithOtherSentiment","allowMultiple":true,"allowComment":true,"allowOther":true,"options":[{"entity":{"name":"AWS","nameHtml":"AWS","nameClean":"AWS","id":"aws","tags":["entities","sites","services","back_end_frameworks_pain_points"],"homepage":{"url":"https://aws.amazon.com/"}},"id":"aws"},{"entity":{"name":"Azure","nameHtml":"Azure","nameClean":"Azure","id":"azure","tags":["entities","sites","services","companies"],"homepage":{"url":"https://azure.microsoft.com/"}},"id":"azure"},{"entity":{"name":"Cloudflare","nameHtml":"Cloudflare","nameClean":"Cloudflare","id":"cloudflare","tags":["entities","sites","services","companies","back_end_frameworks_pain_points"],"homepage":{"url":"https://www.cloudflare.com/"}},"id":"cloudflare"},{"entity":{"name":"Digital Ocean","nameHtml":"Digital Ocean","nameClean":"Digital Ocean","id":"digital_ocean","tags":["entities","sites","services","companies"],"homepage":{"url":"https://digitalocean.com/"}},"id":"digital_ocean"},{"entity":{"name":"Fastly","nameHtml":"Fastly","nameClean":"Fastly","id":"fastly","tags":["entities","sites","services","companies"],"homepage":{"url":"https://www.fastly.com/"}},"id":"fastly"},{"entity":{"name":"Fly.io","nameHtml":"Fly.io","nameClean":"Fly.io","id":"fly_io","tags":["entities","sites","services","edge_runtimes","runtimes"],"homepage":{"url":"https://fly.io/"}},"id":"fly_io"},{"entity":{"name":"GitHub Pages","nameHtml":"GitHub Pages","nameClean":"GitHub Pages","id":"github_pages","tags":["entities","sites","services"],"homepage":{"url":"https://pages.github.com/"}},"id":"github_pages"},{"entity":{"name":"Google Cloud","nameHtml":"Google Cloud","nameClean":"Google Cloud","id":"google_cloud","tags":["entities","sites","services"],"homepage":{"url":"https://cloud.google.com/"}},"id":"google_cloud"},{"entity":{"name":"Heroku","nameHtml":"Heroku","nameClean":"Heroku","id":"heroku","tags":["entities","sites","services","companies"],"homepage":{"url":"https://heroku.com/"}},"id":"heroku"},{"entity":{"name":"Netlify","nameHtml":"Netlify","nameClean":"Netlify","id":"netlify","tags":["entities","sites","services","companies"],"homepage":{"url":"https://www.netlify.com/"}},"id":"netlify"},{"entity":{"name":"Render","nameHtml":"Render","nameClean":"Render","id":"render","tags":["entities","sites","services","edge_runtimes","companies"],"homepage":{"url":"https://render.com/"}},"id":"render"},{"entity":{"name":"Vercel","nameHtml":"Vercel","nameClean":"Vercel","id":"vercel","tags":["entities","sites","services","companies","react_usage_pain_points","language_pain_points"],"homepage":{"url":"https://vercel.com/"}},"id":"vercel"},{"entity":{"name":"Railway","nameHtml":"Railway","nameClean":"Railway","id":"railway","tags":["entities","other","runtimes","edge_runtimes"],"homepage":{"url":"https://railway.app/"}},"id":"railway"},{"entity":{"name":"Hetzner","nameHtml":"Hetzner","nameClean":"Hetzner","id":"hetzner","tags":["entities","sites","services","companies"],"homepage":{"url":"https://www.hetzner.com/"}},"id":"hetzner"},{"entity":{"name":"Firebase","nameHtml":"Firebase","nameClean":"Firebase","id":"firebase","tags":["entities","sites","services"],"homepage":{"url":"https://firebase.google.com/"}},"id":"firebase"},{"entity":{"name":"Coolify","nameHtml":"Coolify","nameClean":"Coolify","id":"coolify","tags":["entities","sites","services"],"homepage":{"url":"https://coolify.io/"}},"id":"coolify"},{"id":"na"}]},{"id":"edge_runtimes","template":"multipleWithOtherSentiment","allowMultiple":true,"allowComment":true,"allowOther":true,"yearAdded":2022,"options":[{"entity":{"name":"AWS Lambda","nameHtml":"AWS Lambda","nameClean":"AWS Lambda","id":"aws_lambda","tags":["entities","other","runtimes","edge_runtimes"],"homepage":{"url":"https://aws.amazon.com/lambda/"}},"id":"aws_lambda"},{"entity":{"name":"Cloudflare Workers","nameHtml":"Cloudflare Workers","nameClean":"Cloudflare Workers","id":"cloudflare_workers","tags":["entities","other","runtimes"],"homepage":{"url":"https://workers.cloudflare.com/"}},"id":"cloudflare_workers"},{"entity":{"name":"Netlify Edge Functions","nameHtml":"Netlify Edge Functions","nameClean":"Netlify Edge Functions","id":"netlify_edge_functions","tags":["entities","other","runtimes","edge_runtimes"],"homepage":{"url":"https://docs.netlify.com/edge-functions/overview/"}},"id":"netlify_edge_functions"},{"entity":{"name":"Google Cloud Functions","nameHtml":"Google Cloud Functions","nameClean":"Google Cloud Functions","id":"google_cloud_functions","tags":["entities","other","runtimes","edge_runtimes"],"homepage":{"url":"https://cloud.google.com/functions"}},"id":"google_cloud_functions"},{"entity":{"name":"Vercel Functions","nameHtml":"Vercel Functions","nameClean":"Vercel Functions","id":"vercel_functions","tags":["entities","other","runtimes","edge_runtimes"],"homepage":{"url":"https://vercel.com/docs/functions"}},"id":"vercel_functions"},{"entity":{"name":"Fly.io","nameHtml":"Fly.io","nameClean":"Fly.io","id":"fly_io","tags":["entities","sites","services","edge_runtimes","runtimes"],"homepage":{"url":"https://fly.io/"}},"id":"fly_io"},{"entity":{"name":"Digital Ocean Functions","nameHtml":"Digital Ocean Functions","nameClean":"Digital Ocean Functions","id":"digital_ocean_functions","tags":["entities","other","runtimes","edge_runtimes"],"homepage":{"url":"https://www.digitalocean.com/products/functions"}},"id":"digital_ocean_functions"},{"entity":{"name":"Azure Functions","nameHtml":"Azure Functions","nameClean":"Azure Functions","id":"azure_functions","tags":["entities","other","runtimes","edge_runtimes"],"homepage":{"url":"https://learn.microsoft.com/en-us/azure/azure-functions/functions-overview"}},"id":"azure_functions"},{"entity":{"name":"Deno","nameHtml":"Deno","nameClean":"Deno","description":"A secure JavaScript and TypeScript runtime","descriptionHtml":"A secure JavaScript and TypeScript runtime","descriptionClean":"A secure JavaScript and TypeScript runtime","id":"deno","tags":["entities","libraries","js_libraries","js_backend_frameworks","build_tools_pain_points","language_pain_points"],"homepage":{"url":"https://deno.land"},"github":{"url":"denoland/deno"}},"id":"deno"},{"id":"na"}]},{"id":"text_editors","template":"multipleWithOtherSentiment","allowMultiple":true,"allowComment":true,"allowOther":true,"options":[{"entity":{"name":"VS Code","nameHtml":"VS Code","nameClean":"VS Code","id":"vs_code","tags":["entities","apps","text_editors"],"homepage":{"url":"https://code.visualstudio.com/"}},"id":"vs_code"},{"entity":{"name":"Sublime Text","nameHtml":"Sublime Text","nameClean":"Sublime Text","id":"sublime_text","tags":["entities","apps","text_editors"],"homepage":{"url":"https://www.sublimetext.com/"}},"id":"sublime_text"},{"entity":{"name":"Vim","nameHtml":"Vim","nameClean":"Vim","id":"vim","tags":["entities","apps","text_editors"],"homepage":{"url":"https://www.vim.org/"}},"id":"vim"},{"entity":{"name":"Emacs","nameHtml":"Emacs","nameClean":"Emacs","id":"emacs","tags":["entities","apps","text_editors"],"homepage":{"url":"https://www.gnu.org/software/emacs/"}},"id":"emacs"},{"entity":{"name":"WebStorm","nameHtml":"WebStorm","nameClean":"WebStorm","id":"webstorm","tags":["entities","apps","text_editors"],"homepage":{"url":"https://www.jetbrains.com/webstorm/"}},"id":"webstorm"},{"entity":{"name":"Cursor","nameHtml":"Cursor","nameClean":"Cursor","id":"cursor","tags":["entities","other","ai_tools"],"homepage":{"url":"https://www.cursor.so/"}},"id":"cursor"},{"entity":{"name":"Windsurf Editor","nameHtml":"Windsurf Editor","nameClean":"Windsurf Editor","id":"windsurf","tags":["entities","other","ai_tools"],"homepage":{"url":"https://codeium.com/windsurf"}},"id":"windsurf"},{"entity":{"name":"Zed","nameHtml":"Zed","nameClean":"Zed","id":"zed","tags":["entities","other","ai_tools"],"homepage":{"url":"https://zed.dev/ai"}},"id":"zed"}]},{"id":"ai_tools","template":"multipleWithOtherSentiment","allowMultiple":true,"allowComment":true,"allowOther":true,"entity":{"id":"ai_tools","name":"AI tools","nameClean":"AI tools","nameHtml":"AI tools"},"options":[{"entity":{"name":"GitHub Copilot","nameHtml":"GitHub Copilot","nameClean":"GitHub Copilot","id":"copilot","tags":["entities","other","ai_tools"],"homepage":{"url":"https://github.com/features/copilot"}},"id":"copilot"},{"entity":{"name":"ChatGPT","nameHtml":"ChatGPT","nameClean":"ChatGPT","id":"chat_gpt","parentId":"ai_tools","tags":["entities","other","ai_tools","first_steps","sites"],"homepage":{"url":"https://chatgpt.com/"}},"id":"chat_gpt"},{"entity":{"name":"Google Gemini","nameHtml":"Google Gemini","nameClean":"Google Gemini","id":"gemini","tags":["entities","other","ai_tools"],"homepage":{"url":"https://gemini.google.com/"}},"id":"gemini"},{"entity":{"name":"Claude","nameHtml":"Claude","nameClean":"Claude","id":"claude","tags":["entities","other","ai_tools"],"homepage":{"url":"https://claude.ai/"}},"id":"claude"},{"entity":{"name":"DeepSeek","nameHtml":"DeepSeek","nameClean":"DeepSeek","id":"deepseek","tags":["entities","other","ai_tools"],"homepage":{"url":"https://www.deepseek.com/"}},"id":"deepseek"},{"entity":{"name":"Perplexity","nameHtml":"Perplexity","nameClean":"Perplexity","id":"perplexity","tags":["entities","other","ai_tools"],"homepage":{"url":"https://www.perplexity.ai/"}},"id":"perplexity"},{"entity":{"name":"Cursor","nameHtml":"Cursor","nameClean":"Cursor","id":"cursor","tags":["entities","other","ai_tools"],"homepage":{"url":"https://www.cursor.so/"}},"id":"cursor"},{"entity":{"name":"Tabnine","nameHtml":"Tabnine","nameClean":"Tabnine","id":"tabnine","tags":["entities","other","ai_tools"],"homepage":{"url":"https://www.tabnine.com/"}},"id":"tabnine"},{"entity":{"name":"JetBrains AI","nameHtml":"JetBrains AI","nameClean":"JetBrains AI","id":"jetbrains_ai","tags":["entities","other","ai_tools"],"homepage":{"url":"https://blog.jetbrains.com/idea/2023/06/ai-assistant-in-jetbrains-ides/"}},"id":"jetbrains_ai"},{"entity":{"name":"v0","nameHtml":"v0","nameClean":"v0","id":"v0","tags":["entities","other","ai_tools"],"homepage":{"url":"https://v0.dev/"}},"id":"v0"},{"entity":{"name":"Bolt","nameHtml":"Bolt","nameClean":"Bolt","id":"bolt","tags":["entities","other","ai_tools"],"homepage":{"url":"https://bolt.new/"}},"id":"bolt"},{"id":"na"}]},{"id":"mobile_desktop","template":"multipleWithOtherSentiment","allowMultiple":true,"allowComment":true,"allowOther":true,"options":[{"entity":{"name":"Electron","nameHtml":"Electron","nameClean":"Electron","id":"electron","tags":["entities","libraries","js_libraries","js_mobile_desktop","testing_pain_points","build_tools_pain_points","language_pain_points","browser_apis_pain_points"],"homepage":{"url":"https://electronjs.org"},"github":{"url":"electron/electron"},"npm":{"url":"https://www.npmjs.com/package/electron"}},"id":"electron"},{"entity":{"name":"React Native","nameHtml":"React Native","nameClean":"React Native","id":"reactnative","tags":["entities","libraries","js_libraries","js_mobile_desktop"],"homepage":{"url":"https://facebook.github.io/react-native/"}},"id":"reactnative"},{"entity":{"name":"Cordova","nameHtml":"Cordova","nameClean":"Cordova","description":"Apache Cordova is a mobile application development framework.","descriptionHtml":"Apache Cordova is a mobile application development framework.","descriptionClean":"Apache Cordova is a mobile application development framework.","id":"cordova","tags":["entities","libraries","js_libraries","js_mobile_desktop"]},"id":"cordova"},{"entity":{"name":"Ionic","nameHtml":"Ionic","nameClean":"Ionic","id":"ionic","tags":["entities","libraries","js_libraries","js_mobile_desktop"],"homepage":{"url":"https://ionicframework.com"},"github":{"url":"ionic-team/ionic-framework"},"npm":{"url":"https://www.npmjs.com/package/@ionic/core"}},"id":"ionic"},{"entity":{"name":"Capacitor","nameHtml":"Capacitor","nameClean":"Capacitor","id":"capacitor","tags":["entities","libraries","js_libraries","js_mobile_desktop","mobile_desktop"],"homepage":{"url":"https://capacitor.ionicframework.com/"}},"id":"capacitor"},{"entity":{"name":"NW.js","nameHtml":"NW.js","nameClean":"NW.js","description":"Call all Node.js modules directly from DOM/WebWorker and enable a new way of writing applications with all Web technologies.","descriptionHtml":"Call all Node.js modules directly from DOM/WebWorker and enable a new way of writing applications with all Web technologies.","descriptionClean":"Call all Node.js modules directly from DOM/WebWorker and enable a new way of writing applications with all Web technologies.","id":"nwjs","tags":["entities","libraries","js_libraries","js_mobile_desktop"],"homepage":{"url":"https://nwjs.io"},"github":{"url":"nwjs/nw.js"}},"id":"nwjs"},{"entity":{"name":"Expo","nameHtml":"Expo","nameClean":"Expo","description":"An open-source platform for making universal native apps with React. Expo runs on Android, iOS, and the web.","descriptionHtml":"An open-source platform for making universal native apps with React. Expo runs on Android, iOS, and the web.","descriptionClean":"An open-source platform for making universal native apps with React. Expo runs on Android, iOS, and the web.","id":"expo","tags":["entities","libraries","js_libraries","js_mobile_desktop","meta_frameworks_pain_points"],"homepage":{"url":"https://docs.expo.io"},"github":{"url":"expo/expo"},"npm":{"url":"https://www.npmjs.com/package/expo"}},"id":"expo"},{"entity":{"name":"Tauri","nameHtml":"Tauri","nameClean":"Tauri","description":"Build smaller, faster, and more secure desktop applications with a web frontend","descriptionHtml":"Build smaller, faster, and more secure desktop applications with a web frontend","descriptionClean":"Build smaller, faster, and more secure desktop applications with a web frontend","id":"tauri","tags":["entities","libraries","js_libraries","js_mobile_desktop"],"homepage":{"url":"https://tauri.app/"},"github":{"url":"tauri-apps/tauri"},"npm":{"url":"https://www.npmjs.com/package/tauri"}},"id":"tauri"},{"entity":{"name":"NativeScript","nameHtml":"NativeScript","nameClean":"NativeScript","description":"NativeScript empowers you to access native api's from JavaScript directly. Angular, Vue, Svelte, React and you name it compatible.","descriptionHtml":"NativeScript empowers you to access native api's from JavaScript directly. Angular, Vue, Svelte, React and you name it compatible.","descriptionClean":"NativeScript empowers you to access native api's from JavaScript directly. Angular, Vue, Svelte, React and you name it compatible.","id":"nativescript","tags":["entities","libraries","js_libraries","js_mobile_desktop"],"homepage":{"url":"https://www.nativescript.org"},"github":{"url":"NativeScript/NativeScript"},"npm":{"url":"https://www.npmjs.com/package/nativescript"}},"id":"nativescript"},{"id":"na"}]},{"id":"monorepo_tools","template":"multipleWithOtherSentiment","allowMultiple":true,"allowComment":true,"allowOther":true,"entity":{"id":"monorepo_tools","name":"Monorepo Tools","nameClean":"Monorepo Tools","nameHtml":"Monorepo Tools"},"options":[{"entity":{"name":"Rush","nameHtml":"Rush","nameClean":"Rush","description":"Monorepo for tools developed by the Rush Stack community","descriptionHtml":"Monorepo for tools developed by the Rush Stack community","descriptionClean":"Monorepo for tools developed by the Rush Stack community","id":"rush","tags":["entities","libraries","js_libraries","js_other_tools"],"homepage":{"url":"https://rushjs.io/"},"github":{"url":"microsoft/rushstack"},"npm":{"url":"https://www.npmjs.com/package/@microsoft/rush"}},"id":"rush"},{"entity":{"name":"Turborepo","nameHtml":"Turborepo","nameClean":"Turborepo","description":"Turborepo is a high-performance build system for JavaScript and TypeScript codebases.","descriptionHtml":"Turborepo is a high-performance build system for JavaScript and TypeScript codebases.","descriptionClean":"Turborepo is a high-performance build system for JavaScript and TypeScript codebases.","id":"turborepo","tags":["entities","libraries","js_libraries","js_build_tools"],"homepage":{"url":"https://turborepo.org/"},"github":{"url":"vercel/turborepo"},"npm":{"url":"https://www.npmjs.com/package/create-turbo"}},"id":"turborepo"},{"entity":{"name":"Yarn Workspaces","nameHtml":"Yarn Workspaces","nameClean":"Yarn Workspaces","description":"Yarn workspaces aim to make working with monorepos easy","descriptionHtml":"Yarn workspaces aim to make working with monorepos easy","descriptionClean":"Yarn workspaces aim to make working with monorepos easy","id":"yarn_workspaces","tags":["entities","libraries","js_libraries","js_monorepo_tools"]},"id":"yarn_workspaces"},{"entity":{"name":"Yalc","nameHtml":"Yalc","nameClean":"Yalc","description":"Work with yarn/npm packages locally like a boss.","descriptionHtml":"Work with yarn/npm packages locally like a boss.","descriptionClean":"Work with yarn/npm packages locally like a boss.","id":"yalc","tags":["entities","libraries","js_libraries","js_monorepo_tools"],"homepage":{"url":"https://github.com/wclr/yalc"},"github":{"url":"wclr/yalc"}},"id":"yalc"},{"entity":{"name":"Lerna","nameHtml":"Lerna","nameClean":"Lerna","description":"A tool for managing JavaScript projects with multiple packages.","descriptionHtml":"A tool for managing JavaScript projects with multiple packages.","descriptionClean":"A tool for managing JavaScript projects with multiple packages.","id":"lerna","tags":["entities","libraries","js_libraries","js_other_tools"],"homepage":{"url":"https://lerna.js.org"},"github":{"url":"lerna/lerna"},"npm":{"url":"https://www.npmjs.com/package/lerna"}},"id":"lerna"},{"entity":{"name":"npm Workspaces","nameHtml":"npm Workspaces","nameClean":"npm Workspaces","description":"Manage multiple packages from your local file system from within a singular top-level, root package.","descriptionHtml":"Manage multiple packages from your local file system from within a singular top-level, root package.","descriptionClean":"Manage multiple packages from your local file system from within a singular top-level, root package.","id":"npm_workspaces","tags":["entities","libraries","js_libraries","js_monorepo_tools"]},"id":"npm_workspaces"},{"entity":{"name":"pnpm","nameHtml":"pnpm","nameClean":"pnpm","id":"pnpm","tags":["entities","libraries","js_libraries","js_monorepo_tools","back_end_frameworks_pain_points","language_pain_points"],"homepage":{"url":"https://pnpm.js.org"},"github":{"url":"pnpm/pnpm"},"npm":{"url":"https://www.npmjs.com/package/pnpm"}},"id":"pnpm"},{"entity":{"name":"Nx","nameHtml":"Nx","nameClean":"Nx","description":"Extensible Dev Tools for Monorepos","descriptionHtml":"Extensible Dev Tools for Monorepos","descriptionClean":"Extensible Dev Tools for Monorepos","id":"nx","tags":["entities","libraries","js_libraries","js_other_tools","meta_frameworks_pain_points","testing_pain_points","build_tools_pain_points","language_pain_points"],"homepage":{"url":"https://nx.dev"},"github":{"url":"nrwl/nx"}},"id":"nx"},{"entity":{"name":"`bun install`","nameHtml":"<code>bun install</code>","nameClean":"bun install","id":"bun_install","tags":["entities","libraries","js_libraries","js_testing"],"homepage":{"url":"https://bun.com/package-manager"}},"id":"bun_install"},{"id":"na"}]},{"id":"non_js_languages","template":"multipleWithOtherSentiment","allowMultiple":true,"allowComment":true,"allowOther":true,"options":[{"entity":{"name":"PHP","nameHtml":"PHP","nameClean":"PHP","id":"php","tags":["entities","other","languages"],"homepage":{"url":"https://www.php.net/"}},"id":"php"},{"entity":{"name":"Ruby","nameHtml":"Ruby","nameClean":"Ruby","id":"ruby","tags":["entities","other","languages"],"homepage":{"url":"https://www.ruby-lang.org/"}},"id":"ruby"},{"entity":{"name":"Python","nameHtml":"Python","nameClean":"Python","id":"python","tags":["entities","other","languages"],"homepage":{"url":"https://www.python.org/"}},"id":"python"},{"entity":{"name":"Go","nameHtml":"Go","nameClean":"Go","id":"golang","tags":["entities","other","languages"],"homepage":{"url":"https://go.dev/"}},"id":"golang"},{"entity":{"name":"Rust","nameHtml":"Rust","nameClean":"Rust","id":"rust","tags":["entities","other","languages"],"homepage":{"url":"https://www.rust-lang.org/"}},"id":"rust"},{"entity":{"name":"Java","nameHtml":"Java","nameClean":"Java","id":"java","tags":["entities","other","languages"],"homepage":{"url":"https://www.java.com/"}},"id":"java"},{"entity":{"name":"C/C++","nameHtml":"C/C++","nameClean":"C/C++","id":"c_cplusplus","tags":["entities","other","languages"],"homepage":{"url":"https://cplusplus.com/"}},"id":"c_cplusplus"},{"entity":{"name":"Objective-C","nameHtml":"Objective-C","nameClean":"Objective-C","id":"objective_c","tags":["entities","other","languages"]},"id":"objective_c"},{"entity":{"name":"Scala","nameHtml":"Scala","nameClean":"Scala","id":"scala","tags":["entities","other","languages"],"homepage":{"url":"https://scala-lang.org"}},"id":"scala"},{"entity":{"name":"Swift","nameHtml":"Swift","nameClean":"Swift","id":"swift","tags":["entities","other","languages"],"homepage":{"url":"https://www.swift.org/"}},"id":"swift"},{"entity":{"name":"C#","nameHtml":"C#","nameClean":"C#","id":"csharp","tags":["entities","other","languages"],"homepage":{"url":"https://learn.microsoft.com/en-us/dotnet/csharp/"}},"id":"csharp"},{"entity":{"name":"Haskell","nameHtml":"Haskell","nameClean":"Haskell","id":"haskell","tags":["entities","other","languages"],"homepage":{"url":"https://www.haskell.org/"}},"id":"haskell"},{"entity":{"name":"OCaml","nameHtml":"OCaml","nameClean":"OCaml","id":"ocaml","tags":["entities","other","languages"],"homepage":{"url":"https://ocaml.org/"}},"id":"ocaml"},{"entity":{"name":"Dart","nameHtml":"Dart","nameClean":"Dart","id":"dart","tags":["entities","other","languages"],"homepage":{"url":"https://dart.dev"}},"id":"dart"},{"entity":{"name":"Kotlin","nameHtml":"Kotlin","nameClean":"Kotlin","id":"kotlin","tags":["entities","other","languages"],"homepage":{"url":"https://kotlinlang.org"}},"id":"kotlin"},{"entity":{"name":"Elixir","nameHtml":"Elixir","nameClean":"Elixir","id":"elixir","tags":["entities","other","languages"],"homepage":{"url":"https://elixir-lang.org/"}},"id":"elixir"},{"entity":{"name":"Bash","nameHtml":"Bash","nameClean":"Bash","id":"bash","tags":["entities","other","languages"],"homepage":{"url":"https://www.gnu.org/software/bash/"}},"id":"bash"},{"entity":{"name":"Clojure","nameHtml":"Clojure","nameClean":"Clojure","id":"clojure","tags":["entities","other","languages"],"homepage":{"url":"https://clojure.org/"}},"id":"clojure"},{"entity":{"name":"Elm","nameHtml":"Elm","nameClean":"Elm","id":"elm","tags":["entities","other","languages","javascript_flavors","libraries"],"homepage":{"url":"https://elm-lang.org/"},"github":{"url":"elm/compiler"}},"id":"elm"},{"entity":{"name":"Julia","nameHtml":"Julia","nameClean":"Julia","id":"julia","tags":["entities","other","languages"],"homepage":{"url":"https://julialang.org/"}},"id":"julia"},{"entity":{"name":"Lua","nameHtml":"Lua","nameClean":"Lua","id":"lua","tags":["entities","other","languages"],"homepage":{"url":"https://www.lua.org/"}},"id":"lua"},{"id":"na"}]},{"id":"non_js_languages_features","template":"textList","allowMultiple":true,"yearAdded":2025,"options":[{"id":"pattern_matching"},{"entity":{"name":"Rust","nameHtml":"Rust","nameClean":"Rust","id":"rust","tags":["entities","other","languages"],"homepage":{"url":"https://www.rust-lang.org/"}},"id":"rust"},{"id":"static_typing"},{"id":"pipe_operator"},{"entity":{"name":"Go","nameHtml":"Go","nameClean":"Go","id":"golang","tags":["entities","other","languages"],"homepage":{"url":"https://go.dev/"}},"id":"golang"},{"entity":{"name":"Python","nameHtml":"Python","nameClean":"Python","id":"python","tags":["entities","other","languages"],"homepage":{"url":"https://www.python.org/"}},"id":"python"},{"id":"error_handling"},{"id":"standard_library"},{"id":"enums"},{"entity":{"name":"C#","nameHtml":"C#","nameClean":"C#","id":"csharp","tags":["entities","other","languages"],"homepage":{"url":"https://learn.microsoft.com/en-us/dotnet/csharp/"}},"id":"csharp"},{"entity":{"name":"Java","nameHtml":"Java","nameClean":"Java","id":"java","tags":["entities","other","languages"],"homepage":{"url":"https://www.java.com/"}},"id":"java"},{"entity":{"name":"Elixir","nameHtml":"Elixir","nameClean":"Elixir","id":"elixir","tags":["entities","other","languages"],"homepage":{"url":"https://elixir-lang.org/"}},"id":"elixir"},{"entity":{"name":"PHP","nameHtml":"PHP","nameClean":"PHP","id":"php","tags":["entities","other","languages"],"homepage":{"url":"https://www.php.net/"}},"id":"php"},{"entity":{"name":"Kotlin","nameHtml":"Kotlin","nameClean":"Kotlin","id":"kotlin","tags":["entities","other","languages"],"homepage":{"url":"https://kotlinlang.org"}},"id":"kotlin"},{"id":"feature_structs"},{"entity":{"name":"Haskell","nameHtml":"Haskell","nameClean":"Haskell","id":"haskell","tags":["entities","other","languages"],"homepage":{"url":"https://www.haskell.org/"}},"id":"haskell"},{"id":"multi_threading"},{"entity":{"name":"Ruby","nameHtml":"Ruby","nameClean":"Ruby","id":"ruby","tags":["entities","other","languages"],"homepage":{"url":"https://www.ruby-lang.org/"}},"id":"ruby"},{"id":"feature_option_result"}]}]},{"id":"usage","questions":[{"id":"js_ts_balance","template":"slider","optionsAreNumeric":true,"yearAdded":2022,"options":[{"id":0,"value":0},{"id":1,"value":12.5,"average":12.5},{"id":2,"value":25,"average":25},{"id":3,"value":37.5,"average":37.5},{"id":4,"value":50,"average":50},{"id":5,"value":62.5,"average":62.5},{"id":6,"value":75,"average":75},{"id":7,"value":87.5,"average":87.5},{"id":8,"value":100,"average":100}]},{"id":"compiled_code_balance","template":"slider","optionsAreNumeric":true,"yearAdded":2024,"options":[{"id":0,"value":0},{"id":1,"value":12.5,"average":12.5},{"id":2,"value":25,"average":25},{"id":3,"value":37.5,"average":37.5},{"id":4,"value":50,"average":50},{"id":5,"value":62.5,"average":62.5},{"id":6,"value":75,"average":75},{"id":7,"value":87.5,"average":87.5},{"id":8,"value":100,"average":100}]},{"id":"build_step_advantages","template":"multipleWithOther","allowMultiple":true,"allowOther":true,"yearAdded":2025,"limit":3,"options":[{"id":"types"},{"id":"developer_experience"},{"id":"transpilation"},{"id":"bundling"},{"id":"optimization"},{"id":"compatibility"},{"id":"assets"},{"id":"linting"},{"id":"environment_support"}]},{"id":"ai_generated_code_balance","template":"slider","optionsAreNumeric":true,"yearAdded":2024,"options":[{"id":0,"value":0},{"id":1,"value":12.5,"average":12.5},{"id":2,"value":25,"average":25},{"id":3,"value":37.5,"average":37.5},{"id":4,"value":50,"average":50},{"id":5,"value":62.5,"average":62.5},{"id":6,"value":75,"average":75},{"id":7,"value":87.5,"average":87.5},{"id":8,"value":100,"average":100}]},{"id":"what_do_you_use_js_for","template":"multipleWithOther","allowMultiple":true,"allowOther":true,"yearAdded":2022,"options":[{"id":"frontend_development"},{"id":"backend_development"},{"id":"data_analysis"},{"id":"machine_learning"},{"id":"desktop_apps"},{"id":"mobile_apps"},{"id":"embedded_apps"},{"id":"game_development"},{"id":"data_visualization"},{"id":"graphics_animation"}]},{"id":"industry_sector","template":"multipleWithOther","allowMultiple":true,"allowOther":true,"entity":{"id":"industry_sector","name":"Industry & Company Type","nameClean":"Industry & Company Type","nameHtml":"Industry &amp; Company Type"},"options":[{"id":"consulting"},{"id":"cyber_security"},{"id":"ecommerce"},{"id":"education"},{"id":"entertainment"},{"id":"finance"},{"id":"government"},{"id":"healthcare"},{"id":"marketing_tools"},{"id":"news_media"},{"id":"programming_tools"},{"id":"socialmedia"}]},{"id":"js_app_patterns","template":"multipleWithOtherSentiment","allowMultiple":true,"allowComment":true,"allowOther":true,"yearAdded":2022,"options":[{"id":"single_page_app"},{"id":"multiple_page_app"},{"id":"static_site_generation"},{"id":"server_side_rendering"},{"id":"partial_hydration"},{"id":"progressive_rehydration"},{"id":"islands_architecture"},{"entity":{"name":"Progressive Enhancement","nameHtml":"Progressive Enhancement","nameClean":"Progressive Enhancement","id":"progressive_enhancement","tags":["entities","features","css_features","css_accessibility","accessibility_features","making_web_components_pain_points","using_web_components_pain_points"]},"id":"progressive_enhancement"},{"id":"incremental_static_generation"},{"id":"streaming_ssr"},{"id":"resumability"},{"id":"edge_rendering"},{"id":"partial_prerendering"}]},{"id":"top_js_pain_points","template":"multipleWithOther","optionsNamespace":"pain_points","allowMultiple":true,"allowOther":true,"yearAdded":2021,"limit":3,"options":[{"id":"state_management"},{"id":"architecture"},{"id":"finding_packages"},{"id":"debugging"},{"id":"managing_dependencies"},{"id":"async_code"},{"id":"writing_modules"},{"id":"date_management"},{"id":"performance"},{"id":"build_tools"},{"id":"typing"}]},{"id":"state_of_the_web_happiness","template":"happiness","optionsAreNumeric":true,"options":[{"id":0,"value":1,"average":1},{"id":1,"value":2,"average":2},{"id":2,"value":3,"average":3},{"id":3,"value":4,"average":4},{"id":4,"value":5,"average":5}]},{"id":"state_of_js_happiness","template":"happiness","optionsAreNumeric":true,"options":[{"id":0,"value":1,"average":1},{"id":1,"value":2,"average":2},{"id":2,"value":3,"average":3},{"id":3,"value":4,"average":4},{"id":4,"value":5,"average":5}]}]},{"id":"resources","questions":[{"id":"courses","template":"multipleWithOther","allowMultiple":true,"allowOther":true,"options":[{"entity":{"name":"Udemy","nameHtml":"Udemy","nameClean":"Udemy","id":"udemy","tags":["entities","sites","courses"],"homepage":{"url":"https://www.udemy.com/"}},"id":"udemy"},{"entity":{"name":"Frontend Masters","nameHtml":"Frontend Masters","nameClean":"Frontend Masters","id":"frontendmasters","tags":["entities","sites","courses"],"homepage":{"url":"https://frontendmasters.com/"}},"id":"frontendmasters"},{"entity":{"name":"Pluralsight","nameHtml":"Pluralsight","nameClean":"Pluralsight","id":"pluralsight","tags":["entities","sites","courses"],"homepage":{"url":"https://www.pluralsight.com/"}},"id":"pluralsight"},{"entity":{"name":"Zero To Mastery","nameHtml":"Zero To Mastery","nameClean":"Zero To Mastery","id":"zero_to_mastery","tags":["entities","sites","courses"],"homepage":{"url":"https://zerotomastery.io/"}},"id":"zero_to_mastery"},{"entity":{"name":"Platzi","nameHtml":"Platzi","nameClean":"Platzi","id":"platzi","tags":["entities","sites","courses"],"homepage":{"url":"https://platzi.com/"}},"id":"platzi"},{"entity":{"name":"Egghead.io","nameHtml":"Egghead.io","nameClean":"Egghead.io","id":"egghead","tags":["entities","sites","courses"],"homepage":{"url":"https://egghead.io/"}},"id":"egghead"},{"entity":{"name":"Wes Bos","nameHtml":"Wes Bos","nameClean":"Wes Bos","id":"wes_bos","tags":["entities","people","courses","css"],"homepage":{"url":"https://wesbos.com/"},"youtube":{"url":"https://www.youtube.com/wesbos"},"twitter":{"url":"https://twitter.com/wesbos"},"bluesky":{"url":"https://bsky.app/profile/wesbos.com"}},"id":"wes_bos"},{"entity":{"name":"Vue Mastery","nameHtml":"Vue Mastery","nameClean":"Vue Mastery","id":"vue_mastery","tags":["entities","sites","courses"],"homepage":{"url":"https://www.vuemastery.com/"}},"id":"vue_mastery"},{"entity":{"name":"You Don't Know JS","nameHtml":"You Don't Know JS","nameClean":"You Don't Know JS","id":"you_dont_know_js","tags":["entities","sites","courses"],"homepage":{"url":"https://github.com/getify/You-Dont-Know-JS"}},"id":"you_dont_know_js"},{"entity":{"name":"Eloquent JavaScript","nameHtml":"Eloquent JavaScript","nameClean":"Eloquent JavaScript","id":"eloquent_javascript","tags":["entities","sites","courses","books"],"homepage":{"url":"https://eloquentjavascript.net/"}},"id":"eloquent_javascript"},{"entity":{"name":"Codecademy","nameHtml":"Codecademy","nameClean":"Codecademy","id":"codecademy","tags":["entities","sites","courses"],"homepage":{"url":"https://www.codecademy.com/"}},"id":"codecademy"},{"entity":{"name":"The Joy of React","nameHtml":"The Joy of React","nameClean":"The Joy of React","id":"joy_of_react","tags":["entities","sites","courses"],"homepage":{"url":"https://www.joyofreact.com/"}},"id":"joy_of_react"},{"entity":{"name":"Epic React","nameHtml":"Epic React","nameClean":"Epic React","id":"epic_react","tags":["entities","sites","courses"],"homepage":{"url":"https://epicreact.dev/"}},"id":"epic_react"},{"entity":{"name":"O'Reilly","nameHtml":"O'Reilly","nameClean":"O'Reilly","id":"o_reilly","tags":["entities","sites","courses"],"homepage":{"url":"https://www.oreilly.com/"}},"id":"o_reilly"},{"entity":{"name":"Scrimba","nameHtml":"Scrimba","nameClean":"Scrimba","id":"scrimba","tags":["entities","sites"],"homepage":{"url":"https://scrimba.com/"}},"id":"scrimba"},{"entity":{"name":"freeCodeCamp","nameHtml":"freeCodeCamp","nameClean":"freeCodeCamp","id":"freecodecamp","tags":["entities","sites","courses","podcasts"],"homepage":{"url":"https://www.freecodecamp.org/"}},"id":"freecodecamp"},{"entity":{"name":"Vue School","nameHtml":"Vue School","nameClean":"Vue School","id":"vue_school","tags":["entities","sites","courses"],"homepage":{"url":"https://vueschool.io/"}},"id":"vue_school"},{"id":"midudev"},{"entity":{"name":"DevTalles","nameHtml":"DevTalles","nameClean":"DevTalles","id":"devtalles","tags":["entities","sites","podcasts"],"homepage":{"url":"https://anchor.fm/fernando-her85"}},"id":"devtalles"},{"entity":{"name":"Fireship","nameHtml":"Fireship","nameClean":"Fireship","id":"fireship","tags":["entities","people","video_creators","youtube","newsletters"],"youtube":{"url":"https://www.youtube.com/channel/UCsBjURrPoezykLs9EqgamOA"},"twitter":{"url":"https://twitter.com/fireship_dev"}},"id":"fireship"},{"id":"na"}]},{"id":"newsletters","template":"multipleWithOther","allowMultiple":true,"allowOther":true,"yearAdded":2024,"entity":{"id":"newsletters"},"options":[{"entity":{"name":"Frontend Horse","nameHtml":"Frontend Horse","nameClean":"Frontend Horse","id":"frontend_horse","tags":["entities","sites","newsletters"],"homepage":{"url":"https://frontend.horse/"}},"id":"frontend_horse"},{"entity":{"name":"JavaScript Weekly","nameHtml":"JavaScript Weekly","nameClean":"JavaScript Weekly","id":"js_weekly","tags":["entities","sites","newsletters"],"homepage":{"url":"https://javascriptweekly.com/"}},"id":"js_weekly"},{"entity":{"name":"Node Weekly","nameHtml":"Node Weekly","nameClean":"Node Weekly","id":"node_weekly","tags":["entities","sites","newsletters"],"homepage":{"url":"https://nodeweekly.com/"}},"id":"node_weekly"},{"entity":{"name":"Frontend Focus","nameHtml":"Frontend Focus","nameClean":"Frontend Focus","id":"frontend_focus","tags":["entities","sites","newsletters"],"homepage":{"url":"https://frontendfoc.us/"}},"id":"frontend_focus"},{"entity":{"name":"Bytes","nameHtml":"Bytes","nameClean":"Bytes","id":"bytes","tags":["entities","sites","newsletters"],"homepage":{"url":"https://bytes.dev/"}},"id":"bytes"},{"entity":{"name":"This Week In React","nameHtml":"This Week In React","nameClean":"This Week In React","id":"this_week_in_react","tags":["entities","sites","newsletters"],"homepage":{"url":"https://thisweekinreact.com/"}},"id":"this_week_in_react"},{"entity":{"name":"TLDR","nameHtml":"TLDR","nameClean":"TLDR","id":"tldr","tags":["entities","sites","newsletters"],"homepage":{"url":"https://tldr.tech/"}},"id":"tldr"},{"entity":{"name":"CSS-Tricks","nameHtml":"CSS-Tricks","nameClean":"CSS-Tricks","id":"css_tricks","tags":["entities","sites","blogs"],"homepage":{"url":"https://css-tricks.com/"}},"id":"css_tricks"},{"entity":{"name":"SitePoint","nameHtml":"SitePoint","nameClean":"SitePoint","id":"sitepoint","tags":["entities","sites","blogs"],"homepage":{"url":"https://www.sitepoint.com/"}},"id":"sitepoint"},{"entity":{"name":"Web Design Weekly","nameHtml":"Web Design Weekly","nameClean":"Web Design Weekly","id":"web_design_weekly","tags":["entities","sites","newsletters"],"homepage":{"url":"https://web-design-weekly.com/"}},"id":"web_design_weekly"},{"entity":{"name":"Daily Dev","nameHtml":"Daily Dev","nameClean":"Daily Dev","id":"daily_dev","tags":["entities","sites","news","newsletters"],"homepage":{"url":"https://daily.dev/"}},"id":"daily_dev"},{"id":"na"}]},{"id":"podcasts","template":"multipleWithOther","allowMultiple":true,"allowOther":true,"entity":{"id":"podcasts"},"options":[{"entity":{"name":"Syntax","nameHtml":"Syntax","nameClean":"Syntax","id":"syntaxfm","tags":["entities","sites","podcasts","video_creators"],"homepage":{"url":"https://syntax.fm/"}},"id":"syntaxfm"},{"entity":{"name":"JS Party","nameHtml":"JS Party","nameClean":"JS Party","id":"js_party","tags":["entities","sites","podcasts"],"homepage":{"url":"https://changelog.com/jsparty"}},"id":"js_party"},{"entity":{"name":"Web Standards","nameHtml":"Web Standards","nameClean":"Web Standards","id":"web_standards_ru","tags":["entities","sites","podcasts"],"homepage":{"url":"https://web-standards.ru/"}},"id":"web_standards_ru"},{"entity":{"name":"The Changelog","nameHtml":"The Changelog","nameClean":"The Changelog","id":"changelog","tags":["entities","sites","podcasts"],"homepage":{"url":"https://changelog.com/"}},"id":"changelog"},{"entity":{"name":"Shop Talk Show","nameHtml":"Shop Talk Show","nameClean":"Shop Talk Show","id":"shop_talk_show","tags":["entities","sites","podcasts"],"homepage":{"url":"https://shoptalkshow.com/"}},"id":"shop_talk_show"},{"entity":{"name":"JavaScript Jabber","nameHtml":"JavaScript Jabber","nameClean":"JavaScript Jabber","id":"javascript_jabber","tags":["entities","sites","podcasts"],"homepage":{"url":"https://devchat.tv/js-jabber/"}},"id":"javascript_jabber"},{"entity":{"name":"Midudev","nameHtml":"Midudev","nameClean":"Midudev","alias":"Midudev","id":"miguel_angel_duran","tags":["entities","people","css","youtube","spanish"],"homepage":{"url":"https://midu.dev/"},"youtube":{"url":"https://www.youtube.com/@midudev"},"twitter":{"url":"https://twitter.com/midudev"},"bluesky":{"url":"https://bsky.app/profile/midu.dev"},"twitch":{"url":"https://www.twitch.tv/midudev"}},"id":"miguel_angel_duran"},{"entity":{"name":"PodRocket","nameHtml":"PodRocket","nameClean":"PodRocket","id":"podrocket","tags":["entities","sites","podcasts"],"homepage":{"url":"https://podrocket.logrocket.com/"}},"id":"podrocket"},{"entity":{"name":"DevTalles","nameHtml":"DevTalles","nameClean":"DevTalles","id":"devtalles","tags":["entities","sites","podcasts"],"homepage":{"url":"https://anchor.fm/fernando-her85"}},"id":"devtalles"},{"entity":{"name":"Front End Happy Hour","nameHtml":"Front End Happy Hour","nameClean":"Front End Happy Hour","id":"front_end_happy_hour","tags":["entities","sites","podcasts"],"homepage":{"url":"https://frontendhappyhour.com/"}},"id":"front_end_happy_hour"},{"entity":{"name":"The Primeagen","nameHtml":"The Primeagen","nameClean":"The Primeagen","id":"the_primeagen","tags":["entities","people","video_creators","youtube"],"youtube":{"url":"https://www.youtube.com/c/ThePrimeagen"},"twitter":{"url":"https://twitter.com/ThePrimeagen"},"twitch":{"url":"https://www.twitch.tv/theprimeagen"}},"id":"the_primeagen"},{"entity":{"name":"The CSS Podcast","nameHtml":"The CSS Podcast","nameClean":"The CSS Podcast","id":"css_podcast","tags":["entities","sites","podcasts"],"homepage":{"url":"https://thecsspodcast.libsyn.com/"}},"id":"css_podcast"},{"entity":{"name":"Stack Overflow Podcast","nameHtml":"Stack Overflow Podcast","nameClean":"Stack Overflow Podcast","id":"stack_overflow_podcast","tags":["entities","sites","podcasts"],"homepage":{"url":"https://stackoverflow.blog/podcast"}},"id":"stack_overflow_podcast"},{"entity":{"name":"Svelte Radio","nameHtml":"Svelte Radio","nameClean":"Svelte Radio","id":"svelte_radio","tags":["entities","sites","podcasts"],"homepage":{"url":"https://www.svelteradio.com/"}},"id":"svelte_radio"},{"entity":{"name":"DevtoolsFM","nameHtml":"DevtoolsFM","nameClean":"DevtoolsFM","id":"dev_tools_fm","tags":["entities","sites","podcasts"],"homepage":{"url":"https://www.devtools.fm/"}},"id":"dev_tools_fm"},{"entity":{"name":"DejaVue","nameHtml":"DejaVue","nameClean":"DejaVue","id":"deja_vue","tags":["entities","sites","podcasts"],"homepage":{"url":"https://dejavue.fm/"}},"id":"deja_vue"},{"entity":{"name":"Off The Main Thread","nameHtml":"Off The Main Thread","nameClean":"Off The Main Thread","id":"off_the_main_thread","tags":["entities","sites","podcasts"],"homepage":{"url":"https://offthemainthread.tech/"}},"id":"off_the_main_thread"},{"entity":{"name":"Theo Browne","nameHtml":"Theo Browne","nameClean":"Theo Browne","alias":"Theo","id":"theo_browne","tags":["entities","people","youtube","video_creators","podcasts"],"homepage":{"url":"https://t3.gg/"},"youtube":{"url":"https://www.youtube.com/@t3dotgg"},"twitter":{"url":"https://twitter.com/theo"},"bluesky":{"url":"https://bsky.app/profile/t3.gg"},"twitch":{"url":"https://www.twitch.tv/theo"}},"id":"theo_browne"},{"id":"na"}]},{"id":"video_creators","template":"textList","allowMultiple":true,"options":[{"entity":{"name":"Fireship","nameHtml":"Fireship","nameClean":"Fireship","id":"fireship","tags":["entities","people","video_creators","youtube","newsletters"],"youtube":{"url":"https://www.youtube.com/channel/UCsBjURrPoezykLs9EqgamOA"},"twitter":{"url":"https://twitter.com/fireship_dev"}},"id":"fireship"},{"entity":{"name":"Theo Browne","nameHtml":"Theo Browne","nameClean":"Theo Browne","alias":"Theo","id":"theo_browne","tags":["entities","people","youtube","video_creators","podcasts"],"homepage":{"url":"https://t3.gg/"},"youtube":{"url":"https://www.youtube.com/@t3dotgg"},"twitter":{"url":"https://twitter.com/theo"},"bluesky":{"url":"https://bsky.app/profile/t3.gg"},"twitch":{"url":"https://www.twitch.tv/theo"}},"id":"theo_browne"},{"entity":{"name":"The Primeagen","nameHtml":"The Primeagen","nameClean":"The Primeagen","id":"the_primeagen","tags":["entities","people","video_creators","youtube"],"youtube":{"url":"https://www.youtube.com/c/ThePrimeagen"},"twitter":{"url":"https://twitter.com/ThePrimeagen"},"twitch":{"url":"https://www.twitch.tv/theprimeagen"}},"id":"the_primeagen"},{"entity":{"name":"Midudev","nameHtml":"Midudev","nameClean":"Midudev","alias":"Midudev","id":"miguel_angel_duran","tags":["entities","people","css","youtube","spanish"],"homepage":{"url":"https://midu.dev/"},"youtube":{"url":"https://www.youtube.com/@midudev"},"twitter":{"url":"https://twitter.com/midudev"},"bluesky":{"url":"https://bsky.app/profile/midu.dev"},"twitch":{"url":"https://www.twitch.tv/midudev"}},"id":"miguel_angel_duran"},{"entity":{"name":"Kevin Powell","nameHtml":"Kevin Powell","nameClean":"Kevin Powell","id":"kevin_j_powell","tags":["entities","people","css"],"homepage":{"url":"https://www.kevinpowell.co/"},"youtube":{"url":"https://www.youtube.com/@KevinPowell"},"twitter":{"url":"https://twitter.com/KevinJPowell"},"bluesky":{"url":"https://bsky.app/profile/kevinpowell.co"},"twitch":{"url":"https://www.twitch.tv/KevinPowellCSS"},"mastodon":{"url":"https://front-end.social/@kevinpowell"}},"id":"kevin_j_powell"},{"entity":{"name":"Web Dev Simplified","nameHtml":"Web Dev Simplified","nameClean":"Web Dev Simplified","id":"web_dev_simplified","tags":["entities","people","video_creators","youtube"],"youtube":{"url":"https://www.youtube.com/c/WebDevSimplified/"}},"id":"web_dev_simplified"},{"entity":{"name":"Fernando Herrera","nameHtml":"Fernando Herrera","nameClean":"Fernando Herrera","alias":"DevTalles","id":"fernando_herrera","tags":["entities","people","video_creators","courses","spanish"],"homepage":{"url":"https://fernando-herrera.com/"},"youtube":{"url":"https://www.youtube.com/@DevTalles/"},"twitter":{"url":"https://twitter.com/Fernando_Her85"}},"id":"fernando_herrera"},{"entity":{"name":"Jack Herrington","nameHtml":"Jack Herrington","nameClean":"Jack Herrington","id":"jack_herrington","tags":["entities","people","youtube","video_creators","js"],"homepage":{"url":"https://www.jackherrington.com/"},"youtube":{"url":"https://www.youtube.com/@jherr"},"twitter":{"url":"https://twitter.com/jherr"},"bluesky":{"url":"https://bsky.app/profile/jherr.dev"}},"id":"jack_herrington"},{"entity":{"name":"Matt Pocock","nameHtml":"Matt Pocock","nameClean":"Matt Pocock","id":"matt_pocock","tags":["entities","people","js"],"homepage":{"url":"https://www.mattpocock.com/"},"youtube":{"url":"https://www.youtube.com/@mattpocockuk"},"twitter":{"url":"https://twitter.com/mattpocockuk"},"bluesky":{"url":"https://bsky.app/profile/mattpocock.com"}},"id":"matt_pocock"},{"entity":{"name":"Gentleman Programming","nameHtml":"Gentleman Programming","nameClean":"Gentleman Programming","id":"gentleman_programming","tags":["entities","people","video_creators","spanish"],"youtube":{"url":"https://www.youtube.com/c/GentlemanProgramming"},"twitch":{"url":"https://www.twitch.tv/gentleman_programming"}},"id":"gentleman_programming"},{"entity":{"name":"Syntax","nameHtml":"Syntax","nameClean":"Syntax","id":"syntaxfm","tags":["entities","sites","podcasts","video_creators"],"homepage":{"url":"https://syntax.fm/"}},"id":"syntaxfm"},{"entity":{"name":"Fazt","nameHtml":"Fazt","nameClean":"Fazt","id":"fazt","tags":["entities","people","video_creators","youtube","spanish"],"youtube":{"url":"https://www.youtube.com/c/FaztTech/videos"}},"id":"fazt"},{"entity":{"name":"Alexander Lichter","nameHtml":"Alexander Lichter","nameClean":"Alexander Lichter","id":"alexander_lichter","tags":["entities","people","state_of_js_sources"],"homepage":{"url":"https://www.lichter.io/"},"youtube":{"url":"https://www.youtube.com/channel/UCVJ5qp8Vw8gXQ9RkuNdYWMw"},"bluesky":{"url":"https://bsky.app/profile/thealexlichter.com"},"twitch":{"url":"https://www.twitch.tv/TheAlexLichter"}},"id":"alexander_lichter"},{"entity":{"name":"Josh Morony","nameHtml":"Josh Morony","nameClean":"Josh Morony","id":"josh_morony","tags":["entities","people","js","youtube","video_creators"],"homepage":{"url":"https://www.joshmorony.com/"},"youtube":{"url":"https://www.youtube.com/@JoshuaMorony"},"twitter":{"url":"https://twitter.com/joshuamorony"},"bluesky":{"url":"https://bsky.app/profile/joshmorony.com"}},"id":"josh_morony"},{"entity":{"name":"Ryan Carniato","nameHtml":"Ryan Carniato","nameClean":"Ryan Carniato","id":"ryan_carniato","tags":["entities","people","js"],"homepage":{"url":"https://dev.to/ryansolid"},"twitter":{"url":"https://twitter.com/ryancarniato"},"bluesky":{"url":"https://bsky.app/profile/ryansolid.bsky.social"}},"id":"ryan_carniato"},{"entity":{"name":"Wes Bos","nameHtml":"Wes Bos","nameClean":"Wes Bos","id":"wes_bos","tags":["entities","people","courses","css"],"homepage":{"url":"https://wesbos.com/"},"youtube":{"url":"https://www.youtube.com/wesbos"},"twitter":{"url":"https://twitter.com/wesbos"},"bluesky":{"url":"https://bsky.app/profile/wesbos.com"}},"id":"wes_bos"},{"entity":{"name":"Joy of Code","nameHtml":"Joy of Code","nameClean":"Joy of Code","id":"joy_of_code","tags":["entities","people","video_creators","youtube"],"youtube":{"url":"https://www.youtube.com/c/joyofcodedev"}},"id":"joy_of_code"},{"entity":{"name":"Brais Moure (MoureDev)","nameHtml":"Brais Moure (MoureDev)","nameClean":"Brais Moure (MoureDev)","id":"brais_moure","tags":["entities","people","video_creators","spanish"],"homepage":{"url":"https://www.youtube.com/@mouredev/podcasts"},"youtube":{"url":"https://www.youtube.com/@mouredev"},"twitter":{"url":"https://twitter.com/mouredev"},"bluesky":{"url":"https://bsky.app/profile/moure.dev"},"twitch":{"url":"https://www.twitch.tv/MoureDev"}},"id":"brais_moure"},{"entity":{"name":"Low Level","nameHtml":"Low Level","nameClean":"Low Level","id":"low_level_learning","tags":["entities","people","video_creators"],"homepage":{"url":"https://lowlevel.tv/"},"youtube":{"url":"https://www.youtube.com/lowlevellearning"}},"id":"low_level_learning"}]},{"id":"people","template":"textList","allowMultiple":true,"options":[{"entity":{"name":"Midudev","nameHtml":"Midudev","nameClean":"Midudev","alias":"Midudev","id":"miguel_angel_duran","tags":["entities","people","css","youtube","spanish"],"homepage":{"url":"https://midu.dev/"},"youtube":{"url":"https://www.youtube.com/@midudev"},"twitter":{"url":"https://twitter.com/midudev"},"bluesky":{"url":"https://bsky.app/profile/midu.dev"},"twitch":{"url":"https://www.twitch.tv/midudev"}},"id":"miguel_angel_duran"},{"entity":{"name":"Fernando Herrera","nameHtml":"Fernando Herrera","nameClean":"Fernando Herrera","alias":"DevTalles","id":"fernando_herrera","tags":["entities","people","video_creators","courses","spanish"],"homepage":{"url":"https://fernando-herrera.com/"},"youtube":{"url":"https://www.youtube.com/@DevTalles/"},"twitter":{"url":"https://twitter.com/Fernando_Her85"}},"id":"fernando_herrera"},{"entity":{"name":"Josh W. Comeau","nameHtml":"Josh W. Comeau","nameClean":"Josh W. Comeau","id":"josh_comeau","tags":["entities","people","blogs","css","js"],"homepage":{"url":"https://joshwcomeau.com/"},"twitter":{"url":"https://twitter.com/JoshWComeau"},"bluesky":{"url":"https://bsky.app/profile/joshwcomeau.com"}},"id":"josh_comeau"},{"entity":{"name":"Evan You","nameHtml":"Evan You","nameClean":"Evan You","id":"evan_you","tags":["entities","people","javascript","vue"],"homepage":{"url":"https://evanyou.me/"},"twitter":{"url":"https://twitter.com/youyuxi"},"bluesky":{"url":"https://bsky.app/profile/evanyou.me"}},"id":"evan_you"},{"entity":{"name":"Rich Harris","nameHtml":"Rich Harris","nameClean":"Rich Harris","id":"rich_harris","tags":["entities","people"],"twitter":{"url":"https://twitter.com/Rich_Harris"},"bluesky":{"url":"https://bsky.app/profile/rich-harris.dev"},"mastodon":{"url":"https://toot.cafe/@rich_harris"}},"id":"rich_harris"},{"entity":{"name":"Matt Pocock","nameHtml":"Matt Pocock","nameClean":"Matt Pocock","id":"matt_pocock","tags":["entities","people","js"],"homepage":{"url":"https://www.mattpocock.com/"},"youtube":{"url":"https://www.youtube.com/@mattpocockuk"},"twitter":{"url":"https://twitter.com/mattpocockuk"},"bluesky":{"url":"https://bsky.app/profile/mattpocock.com"}},"id":"matt_pocock"},{"entity":{"name":"Kent C. Dodds","nameHtml":"Kent C. Dodds","nameClean":"Kent C. Dodds","id":"kent_c_dodds","tags":["entities","people","youtube","js","react","blogs"],"homepage":{"url":"https://kentcdodds.com/"},"youtube":{"url":"https://www.youtube.com/@KentCDodds-vids"},"twitter":{"url":"https://twitter.com/kentcdodds"},"bluesky":{"url":"https://bsky.app/profile/kentcdodds.com"}},"id":"kent_c_dodds"},{"entity":{"name":"Dan Abramov","nameHtml":"Dan Abramov","nameClean":"Dan Abramov","id":"dan_abramov","tags":["entities","people","js","react","blogs"],"homepage":{"url":"https://overreacted.io/"},"bluesky":{"url":"https://bsky.app/profile/danabra.mov"}},"id":"dan_abramov"},{"entity":{"name":"Anthony Fu","nameHtml":"Anthony Fu","nameClean":"Anthony Fu","id":"anthony_fu","tags":["entities","people","css"],"homepage":{"url":"https://antfu.me/"},"youtube":{"url":"https://www.youtube.com/@antfu"},"twitter":{"url":"https://twitter.com/antfu7"},"mastodon":{"url":"https://webtoo.ls/@antfu"}},"id":"anthony_fu"},{"entity":{"name":"Theo Browne","nameHtml":"Theo Browne","nameClean":"Theo Browne","alias":"Theo","id":"theo_browne","tags":["entities","people","youtube","video_creators","podcasts"],"homepage":{"url":"https://t3.gg/"},"youtube":{"url":"https://www.youtube.com/@t3dotgg"},"twitter":{"url":"https://twitter.com/theo"},"bluesky":{"url":"https://bsky.app/profile/t3.gg"},"twitch":{"url":"https://www.twitch.tv/theo"}},"id":"theo_browne"},{"entity":{"name":"The Primeagen","nameHtml":"The Primeagen","nameClean":"The Primeagen","id":"the_primeagen","tags":["entities","people","video_creators","youtube"],"youtube":{"url":"https://www.youtube.com/c/ThePrimeagen"},"twitter":{"url":"https://twitter.com/ThePrimeagen"},"twitch":{"url":"https://www.twitch.tv/theprimeagen"}},"id":"the_primeagen"},{"entity":{"name":"Daniel Roe","nameHtml":"Daniel Roe","nameClean":"Daniel Roe","id":"daniel_roe","tags":["entities","people"],"homepage":{"url":"https://roe.dev/"},"youtube":{"url":"https://www.youtube.com/@danielroe"},"twitter":{"url":"https://twitter.com/danielcroe"},"bluesky":{"url":"https://bsky.app/profile/danielroe.dev"},"threads":{"url":"https://www.threads.net/@daniel.c.roe"},"twitch":{"url":"https://www.twitch.tv/danielroe"},"mastodon":{"url":"https://undefined/@daniel"}},"id":"daniel_roe"},{"entity":{"name":"Ryan Carniato","nameHtml":"Ryan Carniato","nameClean":"Ryan Carniato","id":"ryan_carniato","tags":["entities","people","js"],"homepage":{"url":"https://dev.to/ryansolid"},"twitter":{"url":"https://twitter.com/ryancarniato"},"bluesky":{"url":"https://bsky.app/profile/ryansolid.bsky.social"}},"id":"ryan_carniato"},{"entity":{"name":"Jeff Delaney","nameHtml":"Jeff Delaney","nameClean":"Jeff Delaney","alias":"Fireship","id":"jeff_delaney","tags":["entities","people","js"],"homepage":{"url":"https://jeffdelaney.me/"},"youtube":{"url":"https://www.youtube.com/@Fireship"},"twitter":{"url":"https://twitter.com/jeffdelaney23"}},"id":"jeff_delaney"},{"entity":{"name":"Tanner Linsley","nameHtml":"Tanner Linsley","nameClean":"Tanner Linsley","id":"tanner_linsley","tags":["entities","people","js"],"homepage":{"url":"https://tanstack.com/"},"youtube":{"url":"https://www.youtube.com/@tannerlinsley"},"twitter":{"url":"https://twitter.com/tannerlinsley"},"bluesky":{"url":"https://bsky.app/profile/tannerlinsley.com"}},"id":"tanner_linsley"},{"entity":{"name":"Wes Bos","nameHtml":"Wes Bos","nameClean":"Wes Bos","id":"wes_bos","tags":["entities","people","courses","css"],"homepage":{"url":"https://wesbos.com/"},"youtube":{"url":"https://www.youtube.com/wesbos"},"twitter":{"url":"https://twitter.com/wesbos"},"bluesky":{"url":"https://bsky.app/profile/wesbos.com"}},"id":"wes_bos"},{"entity":{"name":"Kevin Powell","nameHtml":"Kevin Powell","nameClean":"Kevin Powell","id":"kevin_j_powell","tags":["entities","people","css"],"homepage":{"url":"https://www.kevinpowell.co/"},"youtube":{"url":"https://www.youtube.com/@KevinPowell"},"twitter":{"url":"https://twitter.com/KevinJPowell"},"bluesky":{"url":"https://bsky.app/profile/kevinpowell.co"},"twitch":{"url":"https://www.twitch.tv/KevinPowellCSS"},"mastodon":{"url":"https://front-end.social/@kevinpowell"}},"id":"kevin_j_powell"},{"entity":{"name":"Gentleman Programming","nameHtml":"Gentleman Programming","nameClean":"Gentleman Programming","id":"gentleman_programming","tags":["entities","people","video_creators","spanish"],"youtube":{"url":"https://www.youtube.com/c/GentlemanProgramming"},"twitch":{"url":"https://www.twitch.tv/gentleman_programming"}},"id":"gentleman_programming"},{"entity":{"name":"Alexander Lichter","nameHtml":"Alexander Lichter","nameClean":"Alexander Lichter","id":"alexander_lichter","tags":["entities","people","state_of_js_sources"],"homepage":{"url":"https://www.lichter.io/"},"youtube":{"url":"https://www.youtube.com/channel/UCVJ5qp8Vw8gXQ9RkuNdYWMw"},"bluesky":{"url":"https://bsky.app/profile/thealexlichter.com"},"twitch":{"url":"https://www.twitch.tv/TheAlexLichter"}},"id":"alexander_lichter"}]},{"id":"other_surveys","template":"multipleWithOther","allowMultiple":true,"allowOther":true,"options":[{"entity":{"name":"State of CSS (Devographics)","nameHtml":"State of CSS (Devographics)","nameClean":"State of CSS (Devographics)","id":"state_of_css_survey","tags":["entities","sites","surveys"],"homepage":{"url":"https://stateofcss.com"}},"id":"state_of_css_survey"},{"entity":{"name":"State of HTML (Devographics)","nameHtml":"State of HTML (Devographics)","nameClean":"State of HTML (Devographics)","id":"state_of_html_survey","tags":["entities","sites","surveys"],"homepage":{"url":"https://stateofhtml.com"}},"id":"state_of_html_survey"},{"entity":{"name":"State of Devs (Devographics)","nameHtml":"State of Devs (Devographics)","nameClean":"State of Devs (Devographics)","id":"state_of_devs_survey","tags":["entities","sites","surveys"],"homepage":{"url":"https://stateofdevs.com"}},"id":"state_of_devs_survey"},{"entity":{"name":"State of Web Dev AI (Devographics)","nameHtml":"State of Web Dev AI (Devographics)","nameClean":"State of Web Dev AI (Devographics)","id":"state_of_ai_survey","tags":["entities","sites","surveys"],"homepage":{"url":"https://stateofai.dev/"}},"id":"state_of_ai_survey"},{"entity":{"name":"State of React (Devographics)","nameHtml":"State of React (Devographics)","nameClean":"State of React (Devographics)","id":"state_of_react_survey","tags":["entities","sites","surveys"],"homepage":{"url":"https://stateofreact.com"}},"id":"state_of_react_survey"},{"entity":{"name":"JetBrains State of Developer Ecosystem","nameHtml":"JetBrains State of Developer Ecosystem","nameClean":"JetBrains State of Developer Ecosystem","id":"jetbrains_survey","tags":["entities","sites","surveys"],"homepage":{"url":"https://www.jetbrains.com/lp/devecosystem-2021/"}},"id":"jetbrains_survey"},{"entity":{"name":"Stack Overflow Annual Developer Survey","nameHtml":"Stack Overflow Annual Developer Survey","nameClean":"Stack Overflow Annual Developer Survey","id":"stack_overflow_survey","tags":["entities","sites","surveys"],"homepage":{"url":"https://insights.stackoverflow.com/survey/"}},"id":"stack_overflow_survey"},{"entity":{"name":"CodinGame Developer Survey","nameHtml":"CodinGame Developer Survey","nameClean":"CodinGame Developer Survey","id":"codingame_survey","tags":["entities","sites","surveys"],"homepage":{"url":"https://www.codingame.com/work/codingame-developer-survey-2021/"}},"id":"codingame_survey"},{"entity":{"name":"Design Tools Survey","nameHtml":"Design Tools Survey","nameClean":"Design Tools Survey","id":"uxtools_survey","tags":["entities","sites","surveys"],"homepage":{"url":"https://uxtools.co/survey-2021/"}},"id":"uxtools_survey"},{"entity":{"name":"Postman State of the API Report","nameHtml":"Postman State of the API Report","nameClean":"Postman State of the API Report","id":"postman_survey","tags":["entities","sites","surveys"],"homepage":{"url":"https://www.postman.com/state-of-api/"}},"id":"postman_survey"},{"entity":{"name":"Netlify Web Development Survey","nameHtml":"Netlify Web Development Survey","nameClean":"Netlify Web Development Survey","id":"netlify_survey","tags":["entities","sites","surveys"],"homepage":{"url":"https://www.netlify.com/blog/announcing-the-2023-web-development-survey/"}},"id":"netlify_survey"},{"entity":{"name":"State of React Native (Software Mansion)","nameHtml":"State of React Native (Software Mansion)","nameClean":"State of React Native (Software Mansion)","id":"state_of_react_native","tags":["entities","sites","surveys"],"homepage":{"url":"https://results.stateofreactnative.com/"}},"id":"state_of_react_native"},{"entity":{"name":"State of Frontend (The Software House)","nameHtml":"State of Frontend (The Software House)","nameClean":"State of Frontend (The Software House)","id":"state_of_frontend","tags":["entities","sites","surveys"],"homepage":{"url":"https://tsh.io/state-of-frontend/"}},"id":"state_of_frontend"},{"id":"na"}]}]},{"id":"user_info","questions":[{"id":"age","template":"age_number","optionsAreNumeric":true,"groups":[{"id":"range_under_20","average":17.5,"lowerBound":0,"upperBound":20},{"id":"range_20_29","average":25,"lowerBound":20,"upperBound":30},{"id":"range_30_39","average":35,"lowerBound":30,"upperBound":40},{"id":"range_40_49","average":45,"lowerBound":40,"upperBound":50},{"id":"range_50_59","average":55,"lowerBound":50,"upperBound":60},{"id":"range_over_60","average":65,"lowerBound":60}]},{"id":"years_of_experience","template":"years","optionsAreNumeric":true,"groups":[{"id":"range_0_4","lowerBound":0,"upperBound":5},{"id":"range_5_9","average":7.5,"lowerBound":5,"upperBound":10},{"id":"range_10_14","average":12.5,"lowerBound":10,"upperBound":15},{"id":"range_15_19","average":17.5,"lowerBound":15,"upperBound":20},{"id":"range_20_24","average":22.5,"lowerBound":20,"upperBound":25},{"id":"range_25_29","average":27.5,"lowerBound":25,"upperBound":30},{"id":"range_over_30","lowerBound":30}]},{"id":"company_size","template":"company_size","optionsAreRange":true,"optionsAreSequential":true,"allowMultiple":false,"options":[{"id":"range_1","average":1,"lowerBound":0,"upperBound":1},{"id":"range_1_5","average":3,"lowerBound":1,"upperBound":5},{"id":"range_5_10","average":7,"lowerBound":5,"upperBound":10},{"id":"range_10_20","average":15,"lowerBound":10,"upperBound":20},{"id":"range_20_50","average":35,"lowerBound":20,"upperBound":50},{"id":"range_50_100","average":75,"lowerBound":50,"upperBound":100},{"id":"range_100_1000","average":550,"lowerBound":100,"upperBound":1000},{"id":"range_more_than_1000","average":1000,"lowerBound":1000},{"id":"na"}]},{"id":"job_title","template":"text","options":[{"id":"software_engineer"},{"id":"developer"},{"id":"frontend_developer"},{"id":"senior_engineer"},{"id":"fullstack_developer"},{"id":"senior_developer"},{"id":"technical_lead"},{"id":"frontend_engineer"},{"id":"cto"},{"id":"software_architect"},{"id":"fullstack_engineer"},{"id":"lead_developer"},{"id":"lead_engineer"},{"id":"consultant"},{"id":"frontend_lead"},{"id":"director_of_engineering"},{"id":"co_founder"},{"id":"backend_developer"},{"id":"student"}]},{"id":"yearly_salary","template":"yearly_salary_v2","optionsAreRange":true,"optionsAreSequential":true,"allowMultiple":false,"options":[{"id":"range_0_20","average":10000,"lowerBound":0,"upperBound":20000},{"id":"range_20_40","average":30000,"lowerBound":20000,"upperBound":40000},{"id":"range_40_60","average":50000,"lowerBound":40000,"upperBound":60000},{"id":"range_60_80","average":70000,"lowerBound":60000,"upperBound":80000},{"id":"range_80_100","average":90000,"lowerBound":80000,"upperBound":100000},{"id":"range_100_150","average":125000,"lowerBound":100000,"upperBound":150000},{"id":"range_150_200","average":175000,"lowerBound":150000,"upperBound":200000},{"id":"range_more_than_200","average":200000,"lowerBound":200000},{"id":"na"}]},{"id":"higher_education_degree","template":"higher_education_degree","allowMultiple":false,"options":[{"id":"no_degree"},{"id":"yes_related"},{"id":"yes_unrelated"}]},{"id":"country","template":"country","doNotCorrelateWith":["country_of_origin","native_languages","other_languages","locale"],"options":[{"id":"AFG"},{"id":"ALA"},{"id":"ALB"},{"id":"DZA"},{"id":"ASM"},{"id":"AND"},{"id":"AGO"},{"id":"AIA"},{"id":"ATA"},{"id":"ATG"},{"id":"ARG"},{"id":"ARM"},{"id":"ABW"},{"id":"AUS"},{"id":"AUT"},{"id":"AZE"},{"id":"BHS"},{"id":"BHR"},{"id":"BGD"},{"id":"BRB"},{"id":"BLR"},{"id":"BEL"},{"id":"BLZ"},{"id":"BEN"},{"id":"BMU"},{"id":"BTN"},{"id":"BOL"},{"id":"BES"},{"id":"BIH"},{"id":"BWA"},{"id":"BVT"},{"id":"BRA"},{"id":"IOT"},{"id":"BRN"},{"id":"BGR"},{"id":"BFA"},{"id":"BDI"},{"id":"CPV"},{"id":"KHM"},{"id":"CMR"},{"id":"CAN"},{"id":"CYM"},{"id":"CAF"},{"id":"TCD"},{"id":"CHL"},{"id":"CHN"},{"id":"CXR"},{"id":"CCK"},{"id":"COL"},{"id":"COM"},{"id":"COG"},{"id":"COD"},{"id":"COK"},{"id":"CRI"},{"id":"CIV"},{"id":"HRV"},{"id":"CUB"},{"id":"CUW"},{"id":"CYP"},{"id":"CZE"},{"id":"DNK"},{"id":"DJI"},{"id":"DMA"},{"id":"DOM"},{"id":"ECU"},{"id":"EGY"},{"id":"SLV"},{"id":"GNQ"},{"id":"ERI"},{"id":"EST"},{"id":"SWZ"},{"id":"ETH"},{"id":"FLK"},{"id":"FRO"},{"id":"FJI"},{"id":"FIN"},{"id":"FRA"},{"id":"GUF"},{"id":"PYF"},{"id":"ATF"},{"id":"GAB"},{"id":"GMB"},{"id":"GEO"},{"id":"DEU"},{"id":"GHA"},{"id":"GIB"},{"id":"GRC"},{"id":"GRL"},{"id":"GRD"},{"id":"GLP"},{"id":"GUM"},{"id":"GTM"},{"id":"GGY"},{"id":"GIN"},{"id":"GNB"},{"id":"GUY"},{"id":"HTI"},{"id":"HMD"},{"id":"VAT"},{"id":"HND"},{"id":"HKG"},{"id":"HUN"},{"id":"ISL"},{"id":"IND"},{"id":"IDN"},{"id":"IRN"},{"id":"IRQ"},{"id":"IRL"},{"id":"IMN"},{"id":"ISR"},{"id":"ITA"},{"id":"JAM"},{"id":"JPN"},{"id":"JEY"},{"id":"JOR"},{"id":"KAZ"},{"id":"KEN"},{"id":"KIR"},{"id":"PRK"},{"id":"KOR"},{"id":"KWT"},{"id":"KGZ"},{"id":"LAO"},{"id":"LVA"},{"id":"LBN"},{"id":"LSO"},{"id":"LBR"},{"id":"LBY"},{"id":"LIE"},{"id":"LTU"},{"id":"LUX"},{"id":"MAC"},{"id":"MDG"},{"id":"MWI"},{"id":"MYS"},{"id":"MDV"},{"id":"MLI"},{"id":"MLT"},{"id":"MHL"},{"id":"MTQ"},{"id":"MRT"},{"id":"MUS"},{"id":"MYT"},{"id":"MEX"},{"id":"FSM"},{"id":"MDA"},{"id":"MCO"},{"id":"MNG"},{"id":"MNE"},{"id":"MSR"},{"id":"MAR"},{"id":"MOZ"},{"id":"MMR"},{"id":"NAM"},{"id":"NRU"},{"id":"NPL"},{"id":"NLD"},{"id":"NCL"},{"id":"NZL"},{"id":"NIC"},{"id":"NER"},{"id":"NGA"},{"id":"NIU"},{"id":"NFK"},{"id":"MKD"},{"id":"MNP"},{"id":"NOR"},{"id":"OMN"},{"id":"PAK"},{"id":"PLW"},{"id":"PSE"},{"id":"PAN"},{"id":"PNG"},{"id":"PRY"},{"id":"PER"},{"id":"PHL"},{"id":"PCN"},{"id":"POL"},{"id":"PRT"},{"id":"PRI"},{"id":"QAT"},{"id":"REU"},{"id":"ROU"},{"id":"RUS"},{"id":"RWA"},{"id":"BLM"},{"id":"SHN"},{"id":"KNA"},{"id":"LCA"},{"id":"MAF"},{"id":"SPM"},{"id":"VCT"},{"id":"WSM"},{"id":"SMR"},{"id":"STP"},{"id":"SAU"},{"id":"SEN"},{"id":"SRB"},{"id":"SYC"},{"id":"SLE"},{"id":"SGP"},{"id":"SXM"},{"id":"SVK"},{"id":"SVN"},{"id":"SLB"},{"id":"SOM"},{"id":"ZAF"},{"id":"SGS"},{"id":"SSD"},{"id":"ESP"},{"id":"LKA"},{"id":"SDN"},{"id":"SUR"},{"id":"SJM"},{"id":"SWE"},{"id":"CHE"},{"id":"SYR"},{"id":"TWN"},{"id":"TJK"},{"id":"TZA"},{"id":"THA"},{"id":"TLS"},{"id":"TGO"},{"id":"TKL"},{"id":"TON"},{"id":"TTO"},{"id":"TUN"},{"id":"TUR"},{"id":"TKM"},{"id":"TCA"},{"id":"TUV"},{"id":"UGA"},{"id":"UKR"},{"id":"ARE"},{"id":"GBR"},{"id":"USA"},{"id":"UMI"},{"id":"URY"},{"id":"UZB"},{"id":"VUT"},{"id":"VEN"},{"id":"VNM"},{"id":"VGB"},{"id":"VIR"},{"id":"WLF"},{"id":"ESH"},{"id":"YEM"},{"id":"ZMB"},{"id":"ZWE"}]},{"id":"gender","template":"gender","allowMultiple":false,"options":[{"id":"male"},{"id":"female"},{"id":"non_binary"},{"id":"not_listed"}]},{"id":"race_ethnicity","template":"race_ethnicity","allowMultiple":true,"allowOther":true,"doNotCorrelateWith":["country","country_of_origin","locale","native_languages","other_languages"],"options":[{"id":"black_african"},{"id":"east_asian"},{"id":"hispanic_latin"},{"id":"middle_eastern"},{"id":"multiracial"},{"id":"native_american_islander_australian"},{"id":"south_asian"},{"id":"white_european"},{"id":"south_east_asian"}]},{"id":"disability_status","template":"disability_status2","allowMultiple":true,"allowOther":true,"options":[{"id":"visual_impairments"},{"id":"hearing_impairments"},{"id":"mobility_impairments"},{"id":"neurodivergent_conditions"},{"id":"mental_health_conditions"},{"id":"chronic_illnesses"},{"id":"na"}]},{"id":"why_did_you_take_the_survey","template":"multipleWithOther","allowMultiple":true,"allowOther":true,"limit":3,"options":[{"id":"stay_informed"},{"id":"interested_in_data"},{"id":"help_with_representation"},{"id":"for_fun"},{"id":"affect_change"},{"id":"gauge_my_knowledge"}]},{"id":"how_did_user_find_out_about_the_survey","template":"text","options":[{"entity":{"name":"State of JavaScript (Devographics)","nameHtml":"State of JavaScript (Devographics)","nameClean":"State of JavaScript (Devographics)","id":"state_of_js_survey","tags":["entities","sites","surveys"],"homepage":{"url":"https://stateofjs.com"}},"id":"state_of_js_survey"},{"entity":{"name":"Twitter/X","nameHtml":"Twitter/X","nameClean":"Twitter/X","id":"twitter","tags":["entities","sites","socialmedia"],"homepage":{"url":"https://twitter.com"}},"id":"twitter"},{"entity":{"name":"Bluesky","nameHtml":"Bluesky","nameClean":"Bluesky","id":"bluesky","tags":["entities","sites","socialmedia"],"homepage":{"url":"https://bsky.app/"}},"id":"bluesky"},{"id":"work"},{"entity":{"name":"YouTube","nameHtml":"YouTube","nameClean":"YouTube","id":"youtube","tags":["entities","sites"],"homepage":{"url":"https://youtube.com"},"youtube":{"url":"https://youtube.com"}},"id":"youtube"},{"entity":{"name":"Angular","nameHtml":"Angular","nameClean":"Angular","id":"angular","tags":["entities","libraries","js_libraries","js_frontend_frameworks","meta_frameworks_pain_points","back_end_frameworks_pain_points","testing_pain_points","build_tools_pain_points","top_js_pain_points","language_pain_points"],"homepage":{"url":"https://angular.dev/"},"github":{"url":"angular/angular"},"npm":{"url":"https://www.npmjs.com/package/@angular/core"}},"id":"angular"},{"entity":{"name":"Midudev","nameHtml":"Midudev","nameClean":"Midudev","alias":"Midudev","id":"miguel_angel_duran","tags":["entities","people","css","youtube","spanish"],"homepage":{"url":"https://midu.dev/"},"youtube":{"url":"https://www.youtube.com/@midudev"},"twitter":{"url":"https://twitter.com/midudev"},"bluesky":{"url":"https://bsky.app/profile/midu.dev"},"twitch":{"url":"https://www.twitch.tv/midudev"}},"id":"miguel_angel_duran"},{"entity":{"name":"Reddit","nameHtml":"Reddit","nameClean":"Reddit","id":"reddit_newsletter","tags":["entities","sites","newsletters"],"homepage":{"url":"https://reddit.com"}},"id":"reddit_newsletter"},{"id":"other_online_sources"},{"entity":{"name":"JavaScript Weekly","nameHtml":"JavaScript Weekly","nameClean":"JavaScript Weekly","id":"js_weekly","tags":["entities","sites","newsletters"],"homepage":{"url":"https://javascriptweekly.com/"}},"id":"js_weekly"},{"entity":{"name":"LinkedIn","nameHtml":"LinkedIn","nameClean":"LinkedIn","id":"linkedin","tags":["entities","sites","socialmedia"],"homepage":{"url":"https://linkedin.com/"}},"id":"linkedin"},{"entity":{"name":"Discord","nameHtml":"Discord","nameClean":"Discord","id":"discord","tags":["entities","other","apps"],"homepage":{"url":"https://discord.com/"}},"id":"discord"},{"entity":{"name":"Web Standards","nameHtml":"Web Standards","nameClean":"Web Standards","id":"web_standards_ru","tags":["entities","sites","podcasts"],"homepage":{"url":"https://web-standards.ru/"}},"id":"web_standards_ru"},{"entity":{"name":"Reddit","nameHtml":"Reddit","nameClean":"Reddit","id":"reddit","tags":["entities","sites","socialmedia"],"homepage":{"url":"https://reddit.com"}},"id":"reddit"},{"id":"word_of_mouth"},{"entity":{"name":"Fernando Herrera","nameHtml":"Fernando Herrera","nameClean":"Fernando Herrera","alias":"DevTalles","id":"fernando_herrera","tags":["entities","people","video_creators","courses","spanish"],"homepage":{"url":"https://fernando-herrera.com/"},"youtube":{"url":"https://www.youtube.com/@DevTalles/"},"twitter":{"url":"https://twitter.com/Fernando_Her85"}},"id":"fernando_herrera"},{"entity":{"name":"Zero To Mastery","nameHtml":"Zero To Mastery","nameClean":"Zero To Mastery","id":"zero_to_mastery","tags":["entities","sites","courses"],"homepage":{"url":"https://zerotomastery.io/"}},"id":"zero_to_mastery"},{"entity":{"name":"DevTalles","nameHtml":"DevTalles","nameClean":"DevTalles","id":"devtalles","tags":["entities","sites","podcasts"],"homepage":{"url":"https://anchor.fm/fernando-her85"}},"id":"devtalles"},{"entity":{"name":"Slack","nameHtml":"Slack","nameClean":"Slack","id":"slack","tags":["entities","other","apps"],"homepage":{"url":"https://slack.com/"}},"id":"slack"}]},{"id":"did_you_run_into_technical_issues","template":"textList","allowMultiple":true,"options":[{"id":"no_issues"},{"id":"None"},{"id":"none"},{"id":"translation_issues"}]},{"id":"missing_questions","template":"textList","allowMultiple":true,"options":[{"id":"None"}]},{"id":"how_can_we_improve","template":"textList","allowMultiple":true,"options":[{"id":"positive_impression"},{"id":"survey_length"},{"id":"dont_know"},{"id":"translations"},{"id":"information_links"},{"id":"light_mode"}]},{"id":"receive_notifications","template":"receive_notifications"},{"id":"referrer","template":"referrer","options":[{"entity":{"name":"Google","nameHtml":"Google","nameClean":"Google","id":"google","parentId":"interop_issues","tags":["entities","sites","common_sources","companies","layout_pain_points","colors_pain_points","interactions_pain_points","other_features_pain_points","css_general_pain_points"],"homepage":{"url":"https://google.com"}},"id":"google"},{"entity":{"name":"State of JavaScript (Devographics)","nameHtml":"State of JavaScript (Devographics)","nameClean":"State of JavaScript (Devographics)","id":"state_of_js_survey","tags":["entities","sites","surveys"],"homepage":{"url":"https://stateofjs.com"}},"id":"state_of_js_survey"},{"entity":{"name":"Angular","nameHtml":"Angular","nameClean":"Angular","id":"angular","tags":["entities","libraries","js_libraries","js_frontend_frameworks","meta_frameworks_pain_points","back_end_frameworks_pain_points","testing_pain_points","build_tools_pain_points","top_js_pain_points","language_pain_points"],"homepage":{"url":"https://angular.dev/"},"github":{"url":"angular/angular"},"npm":{"url":"https://www.npmjs.com/package/@angular/core"}},"id":"angular"},{"entity":{"name":"Twitter/X","nameHtml":"Twitter/X","nameClean":"Twitter/X","id":"twitter","tags":["entities","sites","socialmedia"],"homepage":{"url":"https://twitter.com"}},"id":"twitter"},{"entity":{"name":"LinkedIn","nameHtml":"LinkedIn","nameClean":"LinkedIn","id":"linkedin","tags":["entities","sites","socialmedia"],"homepage":{"url":"https://linkedin.com/"}},"id":"linkedin"},{"entity":{"name":"Reddit","nameHtml":"Reddit","nameClean":"Reddit","id":"reddit_newsletter","tags":["entities","sites","newsletters"],"homepage":{"url":"https://reddit.com"}},"id":"reddit_newsletter"},{"entity":{"name":"YouTube","nameHtml":"YouTube","nameClean":"YouTube","id":"youtube","tags":["entities","sites"],"homepage":{"url":"https://youtube.com"},"youtube":{"url":"https://youtube.com"}},"id":"youtube"},{"entity":{"name":"Bluesky","nameHtml":"Bluesky","nameClean":"Bluesky","id":"bluesky","tags":["entities","sites","socialmedia"],"homepage":{"url":"https://bsky.app/"}},"id":"bluesky"},{"entity":{"name":"Reddit","nameHtml":"Reddit","nameClean":"Reddit","id":"reddit","tags":["entities","sites","socialmedia"],"homepage":{"url":"https://reddit.com"}},"id":"reddit"},{"entity":{"name":"DuckDuckGo Browser","nameHtml":"DuckDuckGo Browser","nameClean":"DuckDuckGo Browser","id":"duckduckgo","parentId":"interop_issues","tags":["entities","apps","browsers","sites"],"homepage":{"url":"https://duckduckgo.com/app"}},"id":"duckduckgo"},{"entity":{"name":"Daily Dev","nameHtml":"Daily Dev","nameClean":"Daily Dev","id":"daily_dev","tags":["entities","sites","news","newsletters"],"homepage":{"url":"https://daily.dev/"}},"id":"daily_dev"},{"entity":{"name":"Microsoft Teams","nameHtml":"Microsoft Teams","nameClean":"Microsoft Teams","id":"microsoft_teams","tags":["entities","sites","socialmedia"],"homepage":{"url":"https://www.microsoft.com/en-us/microsoft-teams/group-chat-software"}},"id":"microsoft_teams"},{"entity":{"name":"JavaScript Weekly","nameHtml":"JavaScript Weekly","nameClean":"JavaScript Weekly","id":"js_weekly","tags":["entities","sites","newsletters"],"homepage":{"url":"https://javascriptweekly.com/"}},"id":"js_weekly"},{"entity":{"name":"Microsoft Bing","nameHtml":"Microsoft Bing","nameClean":"Microsoft Bing","id":"bing","tags":["entities","other","ai_tools"],"homepage":{"url":"https://www.bing.com/?/ai"}},"id":"bing"},{"entity":{"name":"Brave","nameHtml":"Brave","nameClean":"Brave","id":"brave","parentId":"interop_issues","tags":["entities","apps","browsers","common_sources","sources"],"homepage":{"url":"https://brave.com/"}},"id":"brave"},{"entity":{"name":"GitHub","nameHtml":"GitHub","nameClean":"GitHub","id":"github","tags":["entities","sites"],"homepage":{"url":"https://github.com"}},"id":"github"},{"entity":{"name":"Front-End Front","nameHtml":"Front-End Front","nameClean":"Front-End Front","id":"front_end_front","tags":["entities","sites","newsletters"],"homepage":{"url":"https://frontendfront.com/"}},"id":"front_end_front"},{"entity":{"name":"Facebook","nameHtml":"Facebook","nameClean":"Facebook","id":"facebook","tags":["entities","sites","socialmedia"],"homepage":{"url":"https://facebook.com"}},"id":"facebook"},{"entity":{"name":"Ecosia","nameHtml":"Ecosia","nameClean":"Ecosia","id":"ecosia","tags":["entities","sites"],"homepage":{"url":"https://www.ecosia.org/"}},"id":"ecosia"}]},{"id":"sourcetag","template":"sourcetag","options":[{"entity":{"name":"State of JavaScript (Devographics)","nameHtml":"State of JavaScript (Devographics)","nameClean":"State of JavaScript (Devographics)","id":"state_of_js_survey","tags":["entities","sites","surveys"],"homepage":{"url":"https://stateofjs.com"}},"id":"state_of_js_survey"},{"entity":{"name":"Angular","nameHtml":"Angular","nameClean":"Angular","id":"angular","tags":["entities","libraries","js_libraries","js_frontend_frameworks","meta_frameworks_pain_points","back_end_frameworks_pain_points","testing_pain_points","build_tools_pain_points","top_js_pain_points","language_pain_points"],"homepage":{"url":"https://angular.dev/"},"github":{"url":"angular/angular"},"npm":{"url":"https://www.npmjs.com/package/@angular/core"}},"id":"angular"},{"entity":{"name":"JavaScript Weekly","nameHtml":"JavaScript Weekly","nameClean":"JavaScript Weekly","id":"js_weekly","tags":["entities","sites","newsletters"],"homepage":{"url":"https://javascriptweekly.com/"}},"id":"js_weekly"},{"entity":{"name":"Daily Dev","nameHtml":"Daily Dev","nameClean":"Daily Dev","id":"daily_dev","tags":["entities","sites","news","newsletters"],"homepage":{"url":"https://daily.dev/"}},"id":"daily_dev"},{"entity":{"name":"Twitter/X","nameHtml":"Twitter/X","nameClean":"Twitter/X","id":"twitter","tags":["entities","sites","socialmedia"],"homepage":{"url":"https://twitter.com"}},"id":"twitter"},{"id":"r_javascript"},{"entity":{"name":"Bluesky","nameHtml":"Bluesky","nameClean":"Bluesky","id":"bluesky","tags":["entities","sites","socialmedia"],"homepage":{"url":"https://bsky.app/"}},"id":"bluesky"},{"entity":{"name":"This Week In React","nameHtml":"This Week In React","nameClean":"This Week In React","id":"this_week_in_react","tags":["entities","sites","newsletters"],"homepage":{"url":"https://thisweekinreact.com/"}},"id":"this_week_in_react"},{"entity":{"name":"Alexander Lichter","nameHtml":"Alexander Lichter","nameClean":"Alexander Lichter","id":"alexander_lichter","tags":["entities","people","state_of_js_sources"],"homepage":{"url":"https://www.lichter.io/"},"youtube":{"url":"https://www.youtube.com/channel/UCVJ5qp8Vw8gXQ9RkuNdYWMw"},"bluesky":{"url":"https://bsky.app/profile/thealexlichter.com"},"twitch":{"url":"https://www.twitch.tv/TheAlexLichter"}},"id":"alexander_lichter"},{"entity":{"name":"Nuxt","nameHtml":"Nuxt","nameClean":"Nuxt","id":"nuxt","tags":["entities","libraries","js_libraries","js_backend_frameworks","state_of_js_sources","meta_frameworks_pain_points","testing_pain_points"],"homepage":{"url":"https://nuxt.com/"},"github":{"url":"nuxt/nuxt.js"},"npm":{"url":"https://www.npmjs.com/package/nuxt"}},"id":"nuxt"},{"entity":{"name":"Snowball Sampling","nameHtml":"Snowball Sampling","nameClean":"Snowball Sampling","id":"referral_5n0w","tags":["entities","sites","other"],"homepage":{"url":"https://github.com/Devographics/surveys/issues/258"}},"id":"referral_5n0w"},{"entity":{"name":"ECMAScript News","nameHtml":"ECMAScript News","nameClean":"ECMAScript News","id":"ecmascript_news","tags":["entities","sites","newsletters"],"homepage":{"url":"https://ecmascript.news/"}},"id":"ecmascript_news"},{"entity":{"name":"Dmytro Mezhenskyi","nameHtml":"Dmytro Mezhenskyi","nameClean":"Dmytro Mezhenskyi","id":"dmytro_mezhenskyi","tags":["entities","people","youtube"],"homepage":{"url":"https://www.decodedfrontend.io/"},"youtube":{"url":"https://www.youtube.com/@DecodedFrontend"},"twitter":{"url":"https://twitter.com/DecodedFrontend"}},"id":"dmytro_mezhenskyi"},{"entity":{"name":"ConvertKit","nameHtml":"ConvertKit","nameClean":"ConvertKit","id":"convertkit","tags":["entities","sites","newsletters"],"homepage":{"url":"https://convertkit.com/"}},"id":"convertkit"},{"entity":{"name":"Web.dev","nameHtml":"Web.dev","nameClean":"Web.dev","id":"web_dev","parentId":"baseline_awareness","tags":["entities","sites"],"homepage":{"url":"https://web.dev/"}},"id":"web_dev"},{"entity":{"name":"Theo Browne","nameHtml":"Theo Browne","nameClean":"Theo Browne","alias":"Theo","id":"theo_browne","tags":["entities","people","youtube","video_creators","podcasts"],"homepage":{"url":"https://t3.gg/"},"youtube":{"url":"https://www.youtube.com/@t3dotgg"},"twitter":{"url":"https://twitter.com/theo"},"bluesky":{"url":"https://bsky.app/profile/t3.gg"},"twitch":{"url":"https://www.twitch.tv/theo"}},"id":"theo_browne"},{"entity":{"name":"State of CSS (Devographics)","nameHtml":"State of CSS (Devographics)","nameClean":"State of CSS (Devographics)","id":"state_of_css_survey","tags":["entities","sites","surveys"],"homepage":{"url":"https://stateofcss.com"}},"id":"state_of_css_survey"},{"entity":{"name":"Frontend Focus","nameHtml":"Frontend Focus","nameClean":"Frontend Focus","id":"frontend_focus","tags":["entities","sites","newsletters"],"homepage":{"url":"https://frontendfoc.us/"}},"id":"frontend_focus"},{"entity":{"name":"afor digital","nameHtml":"afor digital","nameClean":"afor digital","id":"afor_digital","tags":["entities","people","video_creators","women","spanish"],"homepage":{"url":"https://www.twitch.tv/afor_digital"},"youtube":{"url":"https://www.youtube.com/@afor_lives"},"twitter":{"url":"https://twitter.com/afor_digital"},"twitch":{"url":"https://www.twitch.tv/afor_digital"}},"id":"afor_digital"}]}]},{"id":"data_explorer","questions":[{"id":"data_explorer","template":"data_explorer"}]},{"id":"reading_list","questions":[{"id":"reading_list","template":"reading_list","options":[{"entity":{"name":"Svelte","nameHtml":"Svelte","nameClean":"Svelte","id":"svelte","tags":["entities","libraries","js_libraries","js_frontend_frameworks","accessibility_tools","languages","meta_frameworks_pain_points","testing_pain_points","build_tools_pain_points","language_pain_points"],"homepage":{"url":"https://svelte.dev"},"github":{"url":"sveltejs/svelte"}},"id":"svelte"},{"entity":{"name":"Solid","nameHtml":"Solid","nameClean":"Solid","id":"solid","tags":["entities","libraries","js_libraries","js_frontend_frameworks","build_tools_pain_points"],"homepage":{"url":"https://www.solidjs.com/"},"github":{"url":"solidjs/solid"},"npm":{"url":"https://www.npmjs.com/package/solid-js"}},"id":"solid"},{"entity":{"name":"Astro","nameHtml":"Astro","nameClean":"Astro","id":"astro","tags":["entities","libraries","js_libraries","js_meta_frameworks","language_pain_points"],"homepage":{"url":"https://astro.build/"},"github":{"url":"withastro/astro"},"npm":{"url":"https://www.npmjs.com/package/astro"}},"id":"astro"},{"entity":{"name":"SvelteKit","nameHtml":"SvelteKit","nameClean":"SvelteKit","id":"sveltekit","tags":["entities","libraries","js_libraries","js_meta_frameworks"],"homepage":{"url":"https://kit.svelte.dev/"},"github":{"url":"sveltejs/kit"},"npm":{"url":"https://www.npmjs.com/package/@sveltejs/kit"}},"id":"sveltekit"},{"entity":{"name":"Bun","nameHtml":"Bun","nameClean":"Bun","id":"bun","tags":["entities","other","runtimes","libraries","js_libraries","back_end_frameworks_pain_points","testing_pain_points","build_tools_pain_points","language_pain_points"],"homepage":{"url":"https://bun.sh/"}},"id":"bun"},{"entity":{"name":"HTMX","nameHtml":"HTMX","nameClean":"HTMX","id":"htmx","tags":["entities","libraries","js_libraries","js_frontend_frameworks","meta_frameworks_pain_points"],"homepage":{"url":"https://htmx.org/"}},"id":"htmx"},{"entity":{"name":"Rolldown","nameHtml":"Rolldown","nameClean":"Rolldown","id":"rolldown","tags":["entities","libraries","js_libraries","js_build_tools"],"homepage":{"url":"https://rolldown.rs/"}},"id":"rolldown"},{"entity":{"name":"tRPC","nameHtml":"tRPC","nameClean":"tRPC","id":"trpc","tags":["entities","libraries","js_libraries","js_data_layer","data_fetching","meta_frameworks_pain_points","back_end_frameworks_pain_points"],"homepage":{"url":"https://trpc.io/"}},"id":"trpc"},{"entity":{"name":"`error.cause`","nameHtml":"<code>error.cause</code>","nameClean":"error.cause","description":"Indicate the specific original cause of the error.","descriptionHtml":"Indicate the specific original cause of the error.","descriptionClean":"Indicate the specific original cause of the error.","id":"error_cause","tags":["entities","features","js_features","js_other","has_web_features_id"],"example":{"language":"js","code":"try {\n  connectToDatabase();\n} catch (err) {\n  throw new Error('Connecting to database failed.', { cause: err });\n}\n","codeHighlighted":"<span class=\"hljs-keyword\">try</span> {\n  <span class=\"hljs-title function_\">connectToDatabase</span>();\n} <span class=\"hljs-keyword\">catch</span> (err) {\n  <span class=\"hljs-keyword\">throw</span> <span class=\"hljs-keyword\">new</span> <span class=\"hljs-title class_\">Error</span>(<span class=\"hljs-string\">&#x27;Connecting to database failed.&#x27;</span>, { <span class=\"hljs-attr\">cause</span>: err });\n}"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause"},"webFeature":{"id":"error-cause","description_html":"The <code>cause</code> property of errors records the specific original cause of the error, particularly for errors that have been re-thrown.","group":["javascript"],"name":"Error cause","spec":["https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-installerrorcause"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/error-cause/","status":{"baseline":"high","baseline_low_date":"2021-09-20","support":{"chrome":"93","chrome_android":"93","edge":"93","firefox":"91","firefox_android":"91","safari":"15","safari_ios":"15"}}}},"id":"error_cause"},{"entity":{"name":"`bun test`","nameHtml":"<code>bun test</code>","nameClean":"bun test","id":"bun_test","tags":["entities","libraries","js_libraries","js_testing"],"homepage":{"url":"https://bun.com/docs/cli/test"}},"id":"bun_test"},{"entity":{"name":"Vue.js","nameHtml":"Vue.js","nameClean":"Vue.js","id":"vuejs","tags":["entities","libraries","js_libraries","js_frontend_frameworks","meta_frameworks_pain_points","testing_pain_points","build_tools_pain_points"],"homepage":{"url":"http://vuejs.org"},"github":{"url":"vuejs/vue"},"npm":{"url":"https://www.npmjs.com/package/vue"}},"id":"vuejs"},{"entity":{"name":"Deno Fresh","nameHtml":"Deno Fresh","nameClean":"Deno Fresh","id":"fresh","tags":["entities","libraries","js_libraries","js_meta_frameworks"],"homepage":{"url":"https://fresh.deno.dev/"}},"id":"fresh"},{"entity":{"name":"Hono","nameHtml":"Hono","nameClean":"Hono","id":"hono","tags":["entities","libraries","js_libraries","js_backend_frameworks"],"homepage":{"url":"https://hono.dev/"},"github":{"url":"honojs/hono"}},"id":"hono"},{"entity":{"name":"Logical Assignment","nameHtml":"Logical Assignment","nameClean":"Logical Assignment","description":"Operators to assign a value to a variable based on its own truthy/falsy status.","descriptionHtml":"Operators to assign a value to a variable based on its own truthy/falsy status.","descriptionClean":"Operators to assign a value to a variable based on its own truthy/falsy status.","id":"logical_assignment","tags":["entities","features","js_features","js_other","has_web_features_id"],"example":{"language":"js","code":"const a = { duration: 50, title: '' };\n\na.duration ||= 10;\nconsole.log(a.duration);\n// expected output: 50\n\na.title ||= 'title is empty.';\nconsole.log(a.title);\n// expected output: \"title is empty\"\n","codeHighlighted":"<span class=\"hljs-keyword\">const</span> a = { <span class=\"hljs-attr\">duration</span>: <span class=\"hljs-number\">50</span>, <span class=\"hljs-attr\">title</span>: <span class=\"hljs-string\">&#x27;&#x27;</span> };\n\na.<span class=\"hljs-property\">duration</span> ||= <span class=\"hljs-number\">10</span>;\n<span class=\"hljs-variable language_\">console</span>.<span class=\"hljs-title function_\">log</span>(a.<span class=\"hljs-property\">duration</span>);\n<span class=\"hljs-comment\">// expected output: 50</span>\n\na.<span class=\"hljs-property\">title</span> ||= <span class=\"hljs-string\">&#x27;title is empty.&#x27;</span>;\n<span class=\"hljs-variable language_\">console</span>.<span class=\"hljs-title function_\">log</span>(a.<span class=\"hljs-property\">title</span>);\n<span class=\"hljs-comment\">// expected output: &quot;title is empty&quot;</span>"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_OR_assignment"},"caniuse":{"url":"https://caniuse.com/mdn-javascript_operators_logical_and_assignment"},"webFeature":{"id":"logical-assignments","description_html":"The logical AND assignment (<code>&#x26;&#x26;=</code>) and the logical OR assignment (<code>||=</code>) operators short-circuit the respective binary logical operators.","group":["javascript"],"name":"Logical assignments","spec":["https://tc39.es/ecma262/multipage/ecmascript-language-expressions.html#sec-assignment-operators"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/logical-assignments/","status":{"baseline":"high","baseline_low_date":"2020-09-16","support":{"chrome":"85","chrome_android":"85","edge":"85","firefox":"79","firefox_android":"79","safari":"14","safari_ios":"14"}}}},"id":"logical_assignment"},{"entity":{"name":"Nuxt","nameHtml":"Nuxt","nameClean":"Nuxt","id":"nuxt","tags":["entities","libraries","js_libraries","js_backend_frameworks","state_of_js_sources","meta_frameworks_pain_points","testing_pain_points"],"homepage":{"url":"https://nuxt.com/"},"github":{"url":"nuxt/nuxt.js"},"npm":{"url":"https://www.npmjs.com/package/nuxt"}},"id":"nuxt"},{"entity":{"name":"`Object.groupBy()`","nameHtml":"<code>Object.groupBy()</code>","nameClean":"Object.groupBy()","description":"Group the elements of a given iterable according to the string values returned by a provided function.","descriptionHtml":"Group the elements of a given iterable according to the string values returned by a provided function.","descriptionClean":"Group the elements of a given iterable according to the string values returned by a provided function.","id":"object_group_by","tags":["entities","features","js_features","js_other","has_web_features_id"],"example":{"language":"js","code":"const inventory = [\n  { name: \"salad\", type: \"vegetables\" },\n  { name: \"banana\", type: \"fruit\" },\n  { name: \"apple\", type: \"fruit\" },\n];\n\nconst result = Object.groupBy(inventory, ({ type }) => type);\n\n/*\n{\n  vegetables: [\n    { name: 'salad', type: 'vegetables' },\n  ],\n  fruit: [\n    { name: \"banana\", type: \"fruit\" },\n    { name: \"apple\", type: \"fruit\" }\n  ]\n}\n*/\n","codeHighlighted":"<span class=\"hljs-keyword\">const</span> inventory = [\n  { <span class=\"hljs-attr\">name</span>: <span class=\"hljs-string\">&quot;salad&quot;</span>, <span class=\"hljs-attr\">type</span>: <span class=\"hljs-string\">&quot;vegetables&quot;</span> },\n  { <span class=\"hljs-attr\">name</span>: <span class=\"hljs-string\">&quot;banana&quot;</span>, <span class=\"hljs-attr\">type</span>: <span class=\"hljs-string\">&quot;fruit&quot;</span> },\n  { <span class=\"hljs-attr\">name</span>: <span class=\"hljs-string\">&quot;apple&quot;</span>, <span class=\"hljs-attr\">type</span>: <span class=\"hljs-string\">&quot;fruit&quot;</span> },\n];\n\n<span class=\"hljs-keyword\">const</span> result = <span class=\"hljs-title class_\">Object</span>.<span class=\"hljs-title function_\">groupBy</span>(inventory, <span class=\"hljs-function\">(<span class=\"hljs-params\">{ type }</span>) =&gt;</span> type);\n\n<span class=\"hljs-comment\">/*\n{\n  vegetables: [\n    { name: &#x27;salad&#x27;, type: &#x27;vegetables&#x27; },\n  ],\n  fruit: [\n    { name: &quot;banana&quot;, type: &quot;fruit&quot; },\n    { name: &quot;apple&quot;, type: &quot;fruit&quot; }\n  ]\n}\n*/</span>"},"mdn":{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/union"},"webFeature":{"id":"set-methods","description_html":"The <code>difference()</code>, <code>intersection()</code>, <code>isDisjointFrom()</code>, <code>isSubsetOf()</code>, <code>isSupersetOf()</code>, <code>symmetricDifference()</code>, and <code>union()</code> methods of the JavaScript <code>Set</code> object performs operations between two sets.","group":["sets"],"name":"Set methods","spec":["https://tc39.es/ecma262/multipage/keyed-collections.html#sec-properties-of-the-set-prototype-object"],"url":"https://web-platform-dx.github.io/web-features-explorer/features/set-methods/","status":{"baseline":"low","baseline_low_date":"2024-06-11","support":{"chrome":"122","chrome_android":"122","edge":"122","firefox":"127","firefox_android":"127","safari":"17","safari_ios":"17"}}}},"id":"object_group_by"},{"entity":{"name":"Remix","nameHtml":"Remix","nameClean":"Remix","id":"remix","tags":["entities","libraries","js_libraries","js_meta_frameworks"],"homepage":{"url":"https://remix.run/"},"github":{"url":"remix-run/remix"},"npm":{"url":"https://www.npmjs.com/package/create-remix"}},"id":"remix"},{"entity":{"name":"Qwik","nameHtml":"Qwik","nameClean":"Qwik","id":"qwik","tags":["entities","libraries","js_libraries","js_frontend_frameworks","meta_frameworks_pain_points"],"homepage":{"url":"https://qwik.builder.io/"},"github":{"url":"builderIO/Qwik"}},"id":"qwik"},{"entity":{"name":"Preact","nameHtml":"Preact","nameClean":"Preact","description":"Fast 3kB React alternative with the same modern API. Components & Virtual DOM.","descriptionHtml":"Fast 3kB React alternative with the same modern API. Components &amp; Virtual DOM.","descriptionClean":"Fast 3kB React alternative with the same modern API. Components & Virtual DOM.","id":"preact","tags":["entities","libraries","js_libraries","js_frontend_frameworks"],"homepage":{"url":"https://preactjs.com"},"github":{"url":"preactjs/preact"},"npm":{"url":"https://www.npmjs.com/package/preact"}},"id":"preact"}]}]},{"id":"_user_metadata","questions":[{"id":"locale","template":"locale"},{"id":"completion_stats","template":"completion_stats","optionsAreNumeric":true,"optionsAreRange":true,"optionsAreSequential":true,"groups":[{"id":"range_0_10","average":5,"lowerBound":0,"upperBound":10},{"id":"range_10_20","average":15,"lowerBound":10,"upperBound":20},{"id":"range_20_30","average":25,"lowerBound":20,"upperBound":30},{"id":"range_30_40","average":35,"lowerBound":30,"upperBound":40},{"id":"range_40_50","average":45,"lowerBound":40,"upperBound":50},{"id":"range_50_60","average":55,"lowerBound":50,"upperBound":60},{"id":"range_60_70","average":65,"lowerBound":60,"upperBound":70},{"id":"range_70_80","average":75,"lowerBound":70,"upperBound":80},{"id":"range_80_90","average":85,"lowerBound":80,"upperBound":90},{"id":"range_90_100","average":95,"lowerBound":90,"upperBound":100}]},{"id":"skipped","template":"skipped","options":[{"id":"browser_apis_pain_points"},{"id":"missing_questions"},{"id":"language_pain_points"},{"id":"how_can_we_improve"},{"id":"back_end_frameworks_pain_points"},{"id":"meta_frameworks_pain_points"},{"id":"mobile_desktop_pain_points"},{"id":"monorepo_tools_pain_points"},{"id":"back_end_frameworks_others"},{"id":"testing_pain_points"},{"id":"front_end_frameworks_pain_points"},{"id":"build_tools_pain_points"},{"id":"non_js_languages_features"},{"id":"mobile_desktop_others"},{"id":"build_tools_others"},{"id":"testing_others"},{"id":"meta_frameworks_others"},{"id":"front_end_frameworks_others"},{"id":"monorepo_tools_others"}]},{"id":"source","template":"source","options":[{"entity":{"name":"State of JavaScript (Devographics)","nameHtml":"State of JavaScript (Devographics)","nameClean":"State of JavaScript (Devographics)","id":"state_of_js_survey","tags":["entities","sites","surveys"],"homepage":{"url":"https://stateofjs.com"}},"id":"state_of_js_survey"},{"entity":{"name":"Angular","nameHtml":"Angular","nameClean":"Angular","id":"angular","tags":["entities","libraries","js_libraries","js_frontend_frameworks","meta_frameworks_pain_points","back_end_frameworks_pain_points","testing_pain_points","build_tools_pain_points","top_js_pain_points","language_pain_points"],"homepage":{"url":"https://angular.dev/"},"github":{"url":"angular/angular"},"npm":{"url":"https://www.npmjs.com/package/@angular/core"}},"id":"angular"},{"entity":{"name":"Google","nameHtml":"Google","nameClean":"Google","id":"google","parentId":"interop_issues","tags":["entities","sites","common_sources","companies","layout_pain_points","colors_pain_points","interactions_pain_points","other_features_pain_points","css_general_pain_points"],"homepage":{"url":"https://google.com"}},"id":"google"},{"entity":{"name":"Twitter/X","nameHtml":"Twitter/X","nameClean":"Twitter/X","id":"twitter","tags":["entities","sites","socialmedia"],"homepage":{"url":"https://twitter.com"}},"id":"twitter"},{"entity":{"name":"Bluesky","nameHtml":"Bluesky","nameClean":"Bluesky","id":"bluesky","tags":["entities","sites","socialmedia"],"homepage":{"url":"https://bsky.app/"}},"id":"bluesky"},{"entity":{"name":"JavaScript Weekly","nameHtml":"JavaScript Weekly","nameClean":"JavaScript Weekly","id":"js_weekly","tags":["entities","sites","newsletters"],"homepage":{"url":"https://javascriptweekly.com/"}},"id":"js_weekly"},{"entity":{"name":"YouTube","nameHtml":"YouTube","nameClean":"YouTube","id":"youtube","tags":["entities","sites"],"homepage":{"url":"https://youtube.com"},"youtube":{"url":"https://youtube.com"}},"id":"youtube"},{"entity":{"name":"LinkedIn","nameHtml":"LinkedIn","nameClean":"LinkedIn","id":"linkedin","tags":["entities","sites","socialmedia"],"homepage":{"url":"https://linkedin.com/"}},"id":"linkedin"},{"entity":{"name":"Reddit","nameHtml":"Reddit","nameClean":"Reddit","id":"reddit_newsletter","tags":["entities","sites","newsletters"],"homepage":{"url":"https://reddit.com"}},"id":"reddit_newsletter"},{"id":"work"},{"entity":{"name":"Daily Dev","nameHtml":"Daily Dev","nameClean":"Daily Dev","id":"daily_dev","tags":["entities","sites","news","newsletters"],"homepage":{"url":"https://daily.dev/"}},"id":"daily_dev"},{"entity":{"name":"Midudev","nameHtml":"Midudev","nameClean":"Midudev","alias":"Midudev","id":"miguel_angel_duran","tags":["entities","people","css","youtube","spanish"],"homepage":{"url":"https://midu.dev/"},"youtube":{"url":"https://www.youtube.com/@midudev"},"twitter":{"url":"https://twitter.com/midudev"},"bluesky":{"url":"https://bsky.app/profile/midu.dev"},"twitch":{"url":"https://www.twitch.tv/midudev"}},"id":"miguel_angel_duran"},{"id":"r_javascript"},{"entity":{"name":"Frontend Focus","nameHtml":"Frontend Focus","nameClean":"Frontend Focus","id":"frontend_focus","tags":["entities","sites","newsletters"],"homepage":{"url":"https://frontendfoc.us/"}},"id":"frontend_focus"},{"entity":{"name":"Discord","nameHtml":"Discord","nameClean":"Discord","id":"discord","tags":["entities","other","apps"],"homepage":{"url":"https://discord.com/"}},"id":"discord"},{"entity":{"name":"This Week In React","nameHtml":"This Week In React","nameClean":"This Week In React","id":"this_week_in_react","tags":["entities","sites","newsletters"],"homepage":{"url":"https://thisweekinreact.com/"}},"id":"this_week_in_react"},{"entity":{"name":"Alexander Lichter","nameHtml":"Alexander Lichter","nameClean":"Alexander Lichter","id":"alexander_lichter","tags":["entities","people","state_of_js_sources"],"homepage":{"url":"https://www.lichter.io/"},"youtube":{"url":"https://www.youtube.com/channel/UCVJ5qp8Vw8gXQ9RkuNdYWMw"},"bluesky":{"url":"https://bsky.app/profile/thealexlichter.com"},"twitch":{"url":"https://www.twitch.tv/TheAlexLichter"}},"id":"alexander_lichter"},{"id":"other_online_sources"},{"entity":{"name":"Nuxt","nameHtml":"Nuxt","nameClean":"Nuxt","id":"nuxt","tags":["entities","libraries","js_libraries","js_backend_frameworks","state_of_js_sources","meta_frameworks_pain_points","testing_pain_points"],"homepage":{"url":"https://nuxt.com/"},"github":{"url":"nuxt/nuxt.js"},"npm":{"url":"https://www.npmjs.com/package/nuxt"}},"id":"nuxt"}]},{"id":"device","template":"device","options":[{"entity":{"name":"Desktop","nameHtml":"Desktop","nameClean":"Desktop","id":"desktop","parentId":"environments_consumers","tags":["entities","other","device"]},"id":"desktop"},{"entity":{"name":"Mobile","nameHtml":"Mobile","nameClean":"Mobile","id":"mobile","parentId":"environments_consumers","tags":["entities","other","device"]},"id":"mobile"},{"entity":{"name":"Tablet","nameHtml":"Tablet","nameClean":"Tablet","id":"tablet","parentId":"environments_consumers","tags":["entities","other","device"]},"id":"tablet"}]},{"id":"browser","template":"browser"},{"id":"version","template":"version"},{"id":"os","template":"os","options":[{"id":"macOS"},{"id":"Windows"},{"id":"Android"},{"id":"iOS"},{"id":"Linux"}]},{"id":"past_surveys","template":"past_surveys","options":[{"id":"state_of_js"},{"id":"state_of_css"},{"id":"state_of_html"},{"id":"state_of_react"},{"id":"state_of_graphql"}]},{"id":"past_editions","template":"past_editions","options":[{"id":"js2023"},{"id":"css2024"},{"id":"js2022"},{"id":"html2023"},{"id":"js2020"},{"id":"react2024"},{"id":"html2024"},{"id":"js2019"},{"id":"js2021"},{"id":"react2023"},{"id":"css2023"},{"id":"css2020"},{"id":"css2021"},{"id":"css2022"},{"id":"graphql2022"}]},{"id":"past_same_survey_count","template":"past_same_survey_count"},{"id":"future_surveys","template":"future_surveys","options":[{"id":"state_of_js"},{"id":"state_of_css"},{"id":"state_of_react"},{"id":"state_of_html"}]},{"id":"future_editions","template":"future_editions","options":[{"id":"js2024"},{"id":"css2024"},{"id":"react2024"},{"id":"html2024"}]},{"id":"future_same_survey_count","template":"future_same_survey_count"},{"id":"created_at_date","template":"created_at_date"},{"id":"authmode","template":"authmode","options":[{"id":"anonymous"},{"id":"passwordless"}]},{"id":"referrer","template":"referrer","options":[{"entity":{"name":"Google","nameHtml":"Google","nameClean":"Google","id":"google","parentId":"interop_issues","tags":["entities","sites","common_sources","companies","layout_pain_points","colors_pain_points","interactions_pain_points","other_features_pain_points","css_general_pain_points"],"homepage":{"url":"https://google.com"}},"id":"google"},{"entity":{"name":"State of JavaScript (Devographics)","nameHtml":"State of JavaScript (Devographics)","nameClean":"State of JavaScript (Devographics)","id":"state_of_js_survey","tags":["entities","sites","surveys"],"homepage":{"url":"https://stateofjs.com"}},"id":"state_of_js_survey"},{"entity":{"name":"Angular","nameHtml":"Angular","nameClean":"Angular","id":"angular","tags":["entities","libraries","js_libraries","js_frontend_frameworks","meta_frameworks_pain_points","back_end_frameworks_pain_points","testing_pain_points","build_tools_pain_points","top_js_pain_points","language_pain_points"],"homepage":{"url":"https://angular.dev/"},"github":{"url":"angular/angular"},"npm":{"url":"https://www.npmjs.com/package/@angular/core"}},"id":"angular"},{"entity":{"name":"Twitter/X","nameHtml":"Twitter/X","nameClean":"Twitter/X","id":"twitter","tags":["entities","sites","socialmedia"],"homepage":{"url":"https://twitter.com"}},"id":"twitter"},{"entity":{"name":"LinkedIn","nameHtml":"LinkedIn","nameClean":"LinkedIn","id":"linkedin","tags":["entities","sites","socialmedia"],"homepage":{"url":"https://linkedin.com/"}},"id":"linkedin"},{"entity":{"name":"Reddit","nameHtml":"Reddit","nameClean":"Reddit","id":"reddit_newsletter","tags":["entities","sites","newsletters"],"homepage":{"url":"https://reddit.com"}},"id":"reddit_newsletter"},{"entity":{"name":"YouTube","nameHtml":"YouTube","nameClean":"YouTube","id":"youtube","tags":["entities","sites"],"homepage":{"url":"https://youtube.com"},"youtube":{"url":"https://youtube.com"}},"id":"youtube"},{"entity":{"name":"Bluesky","nameHtml":"Bluesky","nameClean":"Bluesky","id":"bluesky","tags":["entities","sites","socialmedia"],"homepage":{"url":"https://bsky.app/"}},"id":"bluesky"},{"entity":{"name":"Reddit","nameHtml":"Reddit","nameClean":"Reddit","id":"reddit","tags":["entities","sites","socialmedia"],"homepage":{"url":"https://reddit.com"}},"id":"reddit"},{"entity":{"name":"DuckDuckGo Browser","nameHtml":"DuckDuckGo Browser","nameClean":"DuckDuckGo Browser","id":"duckduckgo","parentId":"interop_issues","tags":["entities","apps","browsers","sites"],"homepage":{"url":"https://duckduckgo.com/app"}},"id":"duckduckgo"},{"entity":{"name":"Daily Dev","nameHtml":"Daily Dev","nameClean":"Daily Dev","id":"daily_dev","tags":["entities","sites","news","newsletters"],"homepage":{"url":"https://daily.dev/"}},"id":"daily_dev"},{"entity":{"name":"Microsoft Teams","nameHtml":"Microsoft Teams","nameClean":"Microsoft Teams","id":"microsoft_teams","tags":["entities","sites","socialmedia"],"homepage":{"url":"https://www.microsoft.com/en-us/microsoft-teams/group-chat-software"}},"id":"microsoft_teams"},{"entity":{"name":"JavaScript Weekly","nameHtml":"JavaScript Weekly","nameClean":"JavaScript Weekly","id":"js_weekly","tags":["entities","sites","newsletters"],"homepage":{"url":"https://javascriptweekly.com/"}},"id":"js_weekly"},{"entity":{"name":"Microsoft Bing","nameHtml":"Microsoft Bing","nameClean":"Microsoft Bing","id":"bing","tags":["entities","other","ai_tools"],"homepage":{"url":"https://www.bing.com/?/ai"}},"id":"bing"},{"entity":{"name":"Brave","nameHtml":"Brave","nameClean":"Brave","id":"brave","parentId":"interop_issues","tags":["entities","apps","browsers","common_sources","sources"],"homepage":{"url":"https://brave.com/"}},"id":"brave"},{"entity":{"name":"GitHub","nameHtml":"GitHub","nameClean":"GitHub","id":"github","tags":["entities","sites"],"homepage":{"url":"https://github.com"}},"id":"github"},{"entity":{"name":"Front-End Front","nameHtml":"Front-End Front","nameClean":"Front-End Front","id":"front_end_front","tags":["entities","sites","newsletters"],"homepage":{"url":"https://frontendfront.com/"}},"id":"front_end_front"},{"entity":{"name":"Facebook","nameHtml":"Facebook","nameClean":"Facebook","id":"facebook","tags":["entities","sites","socialmedia"],"homepage":{"url":"https://facebook.com"}},"id":"facebook"},{"entity":{"name":"Ecosia","nameHtml":"Ecosia","nameClean":"Ecosia","id":"ecosia","tags":["entities","sites"],"homepage":{"url":"https://www.ecosia.org/"}},"id":"ecosia"}]},{"id":"sourcetag","template":"sourcetag","options":[{"entity":{"name":"State of JavaScript (Devographics)","nameHtml":"State of JavaScript (Devographics)","nameClean":"State of JavaScript (Devographics)","id":"state_of_js_survey","tags":["entities","sites","surveys"],"homepage":{"url":"https://stateofjs.com"}},"id":"state_of_js_survey"},{"entity":{"name":"Angular","nameHtml":"Angular","nameClean":"Angular","id":"angular","tags":["entities","libraries","js_libraries","js_frontend_frameworks","meta_frameworks_pain_points","back_end_frameworks_pain_points","testing_pain_points","build_tools_pain_points","top_js_pain_points","language_pain_points"],"homepage":{"url":"https://angular.dev/"},"github":{"url":"angular/angular"},"npm":{"url":"https://www.npmjs.com/package/@angular/core"}},"id":"angular"},{"entity":{"name":"JavaScript Weekly","nameHtml":"JavaScript Weekly","nameClean":"JavaScript Weekly","id":"js_weekly","tags":["entities","sites","newsletters"],"homepage":{"url":"https://javascriptweekly.com/"}},"id":"js_weekly"},{"entity":{"name":"Daily Dev","nameHtml":"Daily Dev","nameClean":"Daily Dev","id":"daily_dev","tags":["entities","sites","news","newsletters"],"homepage":{"url":"https://daily.dev/"}},"id":"daily_dev"},{"entity":{"name":"Twitter/X","nameHtml":"Twitter/X","nameClean":"Twitter/X","id":"twitter","tags":["entities","sites","socialmedia"],"homepage":{"url":"https://twitter.com"}},"id":"twitter"},{"id":"r_javascript"},{"entity":{"name":"Bluesky","nameHtml":"Bluesky","nameClean":"Bluesky","id":"bluesky","tags":["entities","sites","socialmedia"],"homepage":{"url":"https://bsky.app/"}},"id":"bluesky"},{"entity":{"name":"This Week In React","nameHtml":"This Week In React","nameClean":"This Week In React","id":"this_week_in_react","tags":["entities","sites","newsletters"],"homepage":{"url":"https://thisweekinreact.com/"}},"id":"this_week_in_react"},{"entity":{"name":"Alexander Lichter","nameHtml":"Alexander Lichter","nameClean":"Alexander Lichter","id":"alexander_lichter","tags":["entities","people","state_of_js_sources"],"homepage":{"url":"https://www.lichter.io/"},"youtube":{"url":"https://www.youtube.com/channel/UCVJ5qp8Vw8gXQ9RkuNdYWMw"},"bluesky":{"url":"https://bsky.app/profile/thealexlichter.com"},"twitch":{"url":"https://www.twitch.tv/TheAlexLichter"}},"id":"alexander_lichter"},{"entity":{"name":"Nuxt","nameHtml":"Nuxt","nameClean":"Nuxt","id":"nuxt","tags":["entities","libraries","js_libraries","js_backend_frameworks","state_of_js_sources","meta_frameworks_pain_points","testing_pain_points"],"homepage":{"url":"https://nuxt.com/"},"github":{"url":"nuxt/nuxt.js"},"npm":{"url":"https://www.npmjs.com/package/nuxt"}},"id":"nuxt"},{"entity":{"name":"Snowball Sampling","nameHtml":"Snowball Sampling","nameClean":"Snowball Sampling","id":"referral_5n0w","tags":["entities","sites","other"],"homepage":{"url":"https://github.com/Devographics/surveys/issues/258"}},"id":"referral_5n0w"},{"entity":{"name":"ECMAScript News","nameHtml":"ECMAScript News","nameClean":"ECMAScript News","id":"ecmascript_news","tags":["entities","sites","newsletters"],"homepage":{"url":"https://ecmascript.news/"}},"id":"ecmascript_news"},{"entity":{"name":"Dmytro Mezhenskyi","nameHtml":"Dmytro Mezhenskyi","nameClean":"Dmytro Mezhenskyi","id":"dmytro_mezhenskyi","tags":["entities","people","youtube"],"homepage":{"url":"https://www.decodedfrontend.io/"},"youtube":{"url":"https://www.youtube.com/@DecodedFrontend"},"twitter":{"url":"https://twitter.com/DecodedFrontend"}},"id":"dmytro_mezhenskyi"},{"entity":{"name":"ConvertKit","nameHtml":"ConvertKit","nameClean":"ConvertKit","id":"convertkit","tags":["entities","sites","newsletters"],"homepage":{"url":"https://convertkit.com/"}},"id":"convertkit"},{"entity":{"name":"Web.dev","nameHtml":"Web.dev","nameClean":"Web.dev","id":"web_dev","parentId":"baseline_awareness","tags":["entities","sites"],"homepage":{"url":"https://web.dev/"}},"id":"web_dev"},{"entity":{"name":"Theo Browne","nameHtml":"Theo Browne","nameClean":"Theo Browne","alias":"Theo","id":"theo_browne","tags":["entities","people","youtube","video_creators","podcasts"],"homepage":{"url":"https://t3.gg/"},"youtube":{"url":"https://www.youtube.com/@t3dotgg"},"twitter":{"url":"https://twitter.com/theo"},"bluesky":{"url":"https://bsky.app/profile/t3.gg"},"twitch":{"url":"https://www.twitch.tv/theo"}},"id":"theo_browne"},{"entity":{"name":"State of CSS (Devographics)","nameHtml":"State of CSS (Devographics)","nameClean":"State of CSS (Devographics)","id":"state_of_css_survey","tags":["entities","sites","surveys"],"homepage":{"url":"https://stateofcss.com"}},"id":"state_of_css_survey"},{"entity":{"name":"Frontend Focus","nameHtml":"Frontend Focus","nameClean":"Frontend Focus","id":"frontend_focus","tags":["entities","sites","newsletters"],"homepage":{"url":"https://frontendfoc.us/"}},"id":"frontend_focus"},{"entity":{"name":"afor digital","nameHtml":"afor digital","nameClean":"afor digital","id":"afor_digital","tags":["entities","people","video_creators","women","spanish"],"homepage":{"url":"https://www.twitch.tv/afor_digital"},"youtube":{"url":"https://www.youtube.com/@afor_lives"},"twitter":{"url":"https://twitter.com/afor_digital"},"twitch":{"url":"https://www.twitch.tv/afor_digital"}},"id":"afor_digital"}]}]},{"id":"_all_features","questions":[{"id":"_items","template":"_items"}]},{"id":"_all_libraries","questions":[{"id":"_items","template":"_items"}]}]},"currentEditionStats":{"totalRespondents":13002},"pageData":{"dataAPI":{"highlight_astro":{"id":"astro","name":"Astro","nameHtml":"Astro","nameClean":"Astro","entityType":"library","homepage":{"url":"https://astro.build/"},"github":{"url":"withastro/astro"},"npm":{"url":"https://www.npmjs.com/package/astro"}},"surveys":{"state_of_js":{"js2025":{"meta_frameworks":{"meta_frameworks_ratios":[{"id":"nextjs","entity":{"name":"Next.js","nameClean":"Next.js","nameHtml":"Next.js","entityType":"library","homepage":{"url":"https://nextjs.org"}},"responses":{"allEditions":[{"year":2018,"editionId":"js2018","ratios":{"awareness":0.63,"interest":0.65,"usage":0.09,"retention":0.88,"positivity":0.43,"positivityRelative":0.69,"appreciation":0.22},"completion":{"count":19677,"percentageSurvey":97.09,"total":20267},"buckets":[{"id":"never_heard","count":7234},{"id":"heard","count":10516},{"id":"used","count":1927}]},{"year":2019,"editionId":"js2019","ratios":{"awareness":0.86,"interest":0.73,"usage":0.27,"retention":0.9,"positivity":0.67,"positivityRelative":0.78,"appreciation":0.17},"completion":{"count":19892,"percentageSurvey":91.62,"total":21711},"buckets":[{"id":"never_heard","count":2781},{"id":"heard","count":11689},{"id":"used","count":5422}]},{"year":2020,"editionId":"js2020","ratios":{"awareness":0.92,"interest":0.71,"usage":0.36,"retention":0.92,"positivity":0.74,"positivityRelative":0.79,"appreciation":0.2},"completion":{"count":21323,"percentageSurvey":89.74,"total":23760},"buckets":[{"id":"never_heard","count":1517},{"id":"heard","count":11985},{"id":"used","count":7821}]},{"year":2021,"editionId":"js2021","ratios":{"awareness":0.97,"interest":0.65,"usage":0.44,"retention":0.91,"positivity":0.75,"positivityRelative":0.77,"appreciation":0.25},"completion":{"count":13411,"percentageSurvey":83.41,"total":16078},"buckets":[{"id":"never_heard","count":386},{"id":"heard","count":7008},{"id":"used","count":6017}]},{"year":2022,"editionId":"js2022","ratios":{"awareness":0.97,"interest":0.65,"usage":0.48,"retention":0.89,"positivity":0.75,"positivityRelative":0.77,"appreciation":0.24},"completion":{"count":32597,"percentageSurvey":82.59,"total":39469},"buckets":[{"id":"never_heard","count":735},{"id":"heard","count":16038},{"id":"used","count":15824}]},{"year":2023,"editionId":"js2023","ratios":{"awareness":0.98,"interest":0.53,"usage":0.57,"retention":0.76,"positivity":0.66,"positivityRelative":0.66,"appreciation":0.23},"completion":{"count":20826,"percentageSurvey":88.48,"total":23538},"buckets":[{"id":"never_heard","count":233},{"id":"heard","count":8710},{"id":"used","count":11883}]},{"year":2024,"editionId":"js2024","ratios":{"awareness":0.99,"interest":0.43,"usage":0.54,"retention":0.68,"positivity":0.32,"positivityRelative":0.58,"appreciation":0.25},"completion":{"count":12754,"percentageSurvey":91,"total":14015},"buckets":[{"id":"never_heard","count":112},{"id":"heard","count":5643},{"id":"used","count":6892}]},{"year":2025,"editionId":"js2025","ratios":{"awareness":0.99,"interest":0.33,"usage":0.59,"retention":0.55,"positivity":0.27,"positivityRelative":0.47,"appreciation":0.22},"completion":{"count":11845,"percentageSurvey":91.1,"total":13002},"buckets":[{"id":"never_heard","count":107},{"id":"heard","count":4695},{"id":"used","count":6943}]}]}},{"id":"nuxt","entity":{"name":"Nuxt","nameClean":"Nuxt","nameHtml":"Nuxt","entityType":"library","homepage":{"url":"https://nuxt.com/"}},"responses":{"allEditions":[{"year":2020,"editionId":"js2020","ratios":{"awareness":0.72,"interest":0.47,"usage":0.16,"retention":0.87,"positivity":0.41,"positivityRelative":0.56,"appreciation":0.4},"completion":{"count":21413,"percentageSurvey":90.12,"total":23760},"buckets":[{"id":"never_heard","count":5934},{"id":"heard","count":11877},{"id":"used","count":3602}]},{"year":2021,"editionId":"js2021","ratios":{"awareness":0.83,"interest":0.46,"usage":0.19,"retention":0.81,"positivity":0.45,"positivityRelative":0.54,"appreciation":0.35},"completion":{"count":13452,"percentageSurvey":83.67,"total":16078},"buckets":[{"id":"never_heard","count":2225},{"id":"heard","count":8565},{"id":"used","count":2662}]},{"year":2022,"editionId":"js2022","ratios":{"awareness":0.84,"interest":0.45,"usage":0.18,"retention":0.79,"positivity":0.44,"positivityRelative":0.53,"appreciation":0.33},"completion":{"count":32548,"percentageSurvey":82.46,"total":39469},"buckets":[{"id":"never_heard","count":5064},{"id":"heard","count":21618},{"id":"used","count":5866}]},{"year":2023,"editionId":"js2023","ratios":{"awareness":0.9,"interest":0.42,"usage":0.23,"retention":0.76,"positivity":0.46,"positivityRelative":0.51,"appreciation":0.34},"completion":{"count":20804,"percentageSurvey":88.38,"total":23538},"buckets":[{"id":"never_heard","count":2020},{"id":"heard","count":13906},{"id":"used","count":4878}]},{"year":2024,"editionId":"js2024","ratios":{"awareness":0.89,"interest":0.39,"usage":0.22,"retention":0.81,"positivity":0.24,"positivityRelative":0.52,"appreciation":0.42},"completion":{"count":12691,"percentageSurvey":90.55,"total":14015},"buckets":[{"id":"never_heard","count":1352},{"id":"heard","count":8397},{"id":"used","count":2865}]},{"year":2025,"editionId":"js2025","ratios":{"awareness":0.91,"interest":0.38,"usage":0.23,"retention":0.8,"positivity":0.24,"positivityRelative":0.52,"appreciation":0.41},"completion":{"count":11811,"percentageSurvey":90.84,"total":13002},"buckets":[{"id":"never_heard","count":1018},{"id":"heard","count":7937},{"id":"used","count":2792}]}]}},{"id":"gatsby","entity":{"name":"Gatsby","nameClean":"Gatsby","nameHtml":"Gatsby","entityType":"library","homepage":{"url":"https://www.gatsbyjs.com"}},"responses":{"allEditions":[{"year":2019,"editionId":"js2019","ratios":{"awareness":0.77,"interest":0.66,"usage":0.24,"retention":0.88,"positivity":0.56,"positivityRelative":0.73,"appreciation":0.22},"completion":{"count":19838,"percentageSurvey":91.37,"total":21711},"buckets":[{"id":"never_heard","count":4431},{"id":"heard","count":10481},{"id":"used","count":4926}]},{"year":2020,"editionId":"js2020","ratios":{"awareness":0.84,"interest":0.54,"usage":0.28,"retention":0.69,"positivity":0.5,"positivityRelative":0.59,"appreciation":0.14},"completion":{"count":21453,"percentageSurvey":90.29,"total":23760},"buckets":[{"id":"never_heard","count":3401},{"id":"heard","count":12021},{"id":"used","count":6031}]},{"year":2021,"editionId":"js2021","ratios":{"awareness":0.87,"interest":0.39,"usage":0.26,"retention":0.5,"positivity":0.37,"positivityRelative":0.42,"appreciation":0.11},"completion":{"count":13448,"percentageSurvey":83.64,"total":16078},"buckets":[{"id":"never_heard","count":1720},{"id":"heard","count":8130},{"id":"used","count":3598}]},{"year":2022,"editionId":"js2022","ratios":{"awareness":0.84,"interest":0.31,"usage":0.22,"retention":0.38,"positivity":0.28,"positivityRelative":0.33,"appreciation":0.06},"completion":{"count":32526,"percentageSurvey":82.41,"total":39469},"buckets":[{"id":"never_heard","count":5049},{"id":"heard","count":20027},{"id":"used","count":7450}]},{"year":2023,"editionId":"js2023","ratios":{"awareness":0.86,"interest":0.2,"usage":0.22,"retention":0.21,"positivity":0.18,"positivityRelative":0.21,"appreciation":0.01},"completion":{"count":20772,"percentageSurvey":88.25,"total":23538},"buckets":[{"id":"never_heard","count":2837},{"id":"heard","count":13158},{"id":"used","count":4777}]},{"year":2024,"editionId":"js2024","ratios":{"awareness":0.83,"interest":0.12,"usage":0.19,"retention":0.27,"positivity":0.07,"positivityRelative":0.17,"appreciation":0.14},"completion":{"count":12675,"percentageSurvey":90.44,"total":14015},"buckets":[{"id":"never_heard","count":2031},{"id":"heard","count":8109},{"id":"used","count":2464}]},{"year":2025,"editionId":"js2025","ratios":{"awareness":0.83,"interest":0.12,"usage":0.2,"retention":0.24,"positivity":0.07,"positivityRelative":0.16,"appreciation":0.12},"completion":{"count":11789,"percentageSurvey":90.67,"total":13002},"buckets":[{"id":"never_heard","count":1993},{"id":"heard","count":7386},{"id":"used","count":2347}]}]}},{"id":"remix","entity":{"name":"Remix","nameClean":"Remix","nameHtml":"Remix","entityType":"library","homepage":{"url":"https://remix.run/"}},"responses":{"allEditions":[{"year":2021,"editionId":"js2021","ratios":{"awareness":0.55,"interest":0.68,"usage":0.04,"retention":0.9,"positivity":0.39,"positivityRelative":0.7,"appreciation":0.22},"completion":{"count":13480,"percentageSurvey":83.84,"total":16078},"buckets":[{"id":"never_heard","count":6024},{"id":"heard","count":6791},{"id":"used","count":665}]},{"year":2022,"editionId":"js2022","ratios":{"awareness":0.73,"interest":0.56,"usage":0.07,"retention":0.81,"positivity":0.43,"positivityRelative":0.59,"appreciation":0.25},"completion":{"count":32507,"percentageSurvey":82.36,"total":39469},"buckets":[{"id":"never_heard","count":8526},{"id":"heard","count":21448},{"id":"used","count":2533}]},{"year":2023,"editionId":"js2023","ratios":{"awareness":0.79,"interest":0.48,"usage":0.1,"retention":0.73,"positivity":0.41,"positivityRelative":0.51,"appreciation":0.24},"completion":{"count":20773,"percentageSurvey":88.25,"total":23538},"buckets":[{"id":"never_heard","count":4317},{"id":"heard","count":14292},{"id":"used","count":2164}]},{"year":2024,"editionId":"js2024","ratios":{"awareness":0.79,"interest":0.48,"usage":0.11,"retention":0.8,"positivity":0.21,"positivityRelative":0.5,"appreciation":0.31},"completion":{"count":12666,"percentageSurvey":90.37,"total":14015},"buckets":[{"id":"never_heard","count":2625},{"id":"heard","count":8503},{"id":"used","count":1474}]},{"year":2025,"editionId":"js2025","ratios":{"awareness":0.8,"interest":0.34,"usage":0.14,"retention":0.68,"positivity":0.16,"positivityRelative":0.39,"appreciation":0.33},"completion":{"count":11789,"percentageSurvey":90.67,"total":13002},"buckets":[{"id":"never_heard","count":2343},{"id":"heard","count":7723},{"id":"used","count":1670}]}]}},{"id":"astro","entity":{"name":"Astro","nameClean":"Astro","nameHtml":"Astro","entityType":"library","homepage":{"url":"https://astro.build/"}},"responses":{"allEditions":[{"year":2021,"editionId":"js2021","ratios":{"awareness":0.3,"interest":0.66,"usage":0.03,"retention":0.91,"positivity":0.2,"positivityRelative":0.68,"appreciation":0.25},"completion":{"count":13477,"percentageSurvey":83.82,"total":16078},"buckets":[{"id":"never_heard","count":9362},{"id":"heard","count":3678},{"id":"used","count":437}]},{"year":2022,"editionId":"js2022","ratios":{"awareness":0.63,"interest":0.67,"usage":0.08,"retention":0.92,"positivity":0.45,"positivityRelative":0.7,"appreciation":0.25},"completion":{"count":32502,"percentageSurvey":82.35,"total":39469},"buckets":[{"id":"never_heard","count":11716},{"id":"heard","count":17927},{"id":"used","count":2859}]},{"year":2023,"editionId":"js2023","ratios":{"awareness":0.78,"interest":0.63,"usage":0.19,"retention":0.9,"positivity":0.55,"positivityRelative":0.69,"appreciation":0.27},"completion":{"count":20775,"percentageSurvey":88.26,"total":23538},"buckets":[{"id":"never_heard","count":4430},{"id":"heard","count":12386},{"id":"used","count":3959}]},{"year":2024,"editionId":"js2024","ratios":{"awareness":0.82,"interest":0.67,"usage":0.23,"retention":0.94,"positivity":0.34,"positivityRelative":0.73,"appreciation":0.27},"completion":{"count":12661,"percentageSurvey":90.34,"total":14015},"buckets":[{"id":"never_heard","count":2255},{"id":"heard","count":7463},{"id":"used","count":2905}]},{"year":2025,"editionId":"js2025","ratios":{"awareness":0.84,"interest":0.64,"usage":0.27,"retention":0.94,"positivity":0.36,"positivityRelative":0.73,"appreciation":0.29},"completion":{"count":11784,"percentageSurvey":90.63,"total":13002},"buckets":[{"id":"never_heard","count":1789},{"id":"heard","count":6707},{"id":"used","count":3245}]}]}},{"id":"sveltekit","entity":{"name":"SvelteKit","nameClean":"SvelteKit","nameHtml":"SvelteKit","entityType":"library","homepage":{"url":"https://kit.svelte.dev/"}},"responses":{"allEditions":[{"year":2021,"editionId":"js2021","ratios":{"awareness":0.54,"interest":0.7,"usage":0.09,"retention":0.95,"positivity":0.41,"positivityRelative":0.75,"appreciation":0.24},"completion":{"count":13492,"percentageSurvey":83.92,"total":16078},"buckets":[{"id":"never_heard","count":6086},{"id":"heard","count":6078},{"id":"used","count":1328}]},{"year":2022,"editionId":"js2022","ratios":{"awareness":0.71,"interest":0.66,"usage":0.11,"retention":0.92,"positivity":0.5,"positivityRelative":0.7,"appreciation":0.26},"completion":{"count":32497,"percentageSurvey":82.34,"total":39469},"buckets":[{"id":"never_heard","count":9159},{"id":"heard","count":19482},{"id":"used","count":3856}]},{"year":2023,"editionId":"js2023","ratios":{"awareness":0.82,"interest":0.6,"usage":0.17,"retention":0.89,"positivity":0.54,"positivityRelative":0.66,"appreciation":0.29},"completion":{"count":20753,"percentageSurvey":88.17,"total":23538},"buckets":[{"id":"never_heard","count":3621},{"id":"heard","count":13439},{"id":"used","count":3693}]},{"year":2024,"editionId":"js2024","ratios":{"awareness":0.82,"interest":0.55,"usage":0.16,"retention":0.9,"positivity":0.27,"positivityRelative":0.61,"appreciation":0.35},"completion":{"count":12664,"percentageSurvey":90.36,"total":14015},"buckets":[{"id":"never_heard","count":2168},{"id":"heard","count":8349},{"id":"used","count":2097}]},{"year":2025,"editionId":"js2025","ratios":{"awareness":0.85,"interest":0.52,"usage":0.17,"retention":0.88,"positivity":0.26,"positivityRelative":0.6,"appreciation":0.36},"completion":{"count":11794,"percentageSurvey":90.71,"total":13002},"buckets":[{"id":"never_heard","count":1713},{"id":"heard","count":7939},{"id":"used","count":2082}]}]}},{"id":"docusaurus","entity":{"name":"Docusaurus","nameClean":"Docusaurus","nameHtml":"Docusaurus","entityType":"library","homepage":{"url":"https://docusaurus.io/"}},"responses":{"allEditions":[{"year":2022,"editionId":"js2022","ratios":{"awareness":0.39,"interest":0.55,"usage":0.08,"retention":0.82,"positivity":0.24,"positivityRelative":0.6,"appreciation":0.27},"completion":{"count":32446,"percentageSurvey":82.21,"total":39469},"buckets":[{"id":"never_heard","count":19539},{"id":"heard","count":10194},{"id":"used","count":2713}]},{"year":2023,"editionId":"js2023","ratios":{"awareness":0.47,"interest":0.46,"usage":0.1,"retention":0.7,"positivity":0.24,"positivityRelative":0.51,"appreciation":0.24},"completion":{"count":20677,"percentageSurvey":87.85,"total":23538},"buckets":[{"id":"never_heard","count":10753},{"id":"heard","count":7795},{"id":"used","count":2129}]},{"year":2024,"editionId":"js2024","ratios":{"awareness":0.49,"interest":0.43,"usage":0.1,"retention":0.73,"positivity":0.14,"positivityRelative":0.42,"appreciation":0.3},"completion":{"count":12625,"percentageSurvey":90.08,"total":14015},"buckets":[{"id":"never_heard","count":6366},{"id":"heard","count":4847},{"id":"used","count":1342}]},{"year":2025,"editionId":"js2025","ratios":{"awareness":0.52,"interest":0.4,"usage":0.12,"retention":0.69,"positivity":0.14,"positivityRelative":0.41,"appreciation":0.29},"completion":{"count":11763,"percentageSurvey":90.47,"total":13002},"buckets":[{"id":"never_heard","count":5559},{"id":"heard","count":4718},{"id":"used","count":1412}]}]}},{"id":"solidstart","entity":{"name":"SolidStart","nameClean":"SolidStart","nameHtml":"SolidStart","entityType":"library","homepage":{"url":"https://start.solidjs.com/"}},"responses":{"allEditions":[{"year":2023,"editionId":"js2023","ratios":{"awareness":0.34,"interest":0.53,"usage":0.02,"retention":0.85,"positivity":0.19,"positivityRelative":0.56,"appreciation":0.31},"completion":{"count":20655,"percentageSurvey":87.75,"total":23538},"buckets":[{"id":"never_heard","count":13522},{"id":"heard","count":6533},{"id":"used","count":600}]},{"year":2024,"editionId":"js2024","ratios":{"awareness":0.36,"interest":0.48,"usage":0.02,"retention":0.8,"positivity":0.12,"positivityRelative":0.37,"appreciation":0.32},"completion":{"count":12612,"percentageSurvey":89.99,"total":14015},"buckets":[{"id":"never_heard","count":7926},{"id":"heard","count":4273},{"id":"used","count":372}]},{"year":2025,"editionId":"js2025","ratios":{"awareness":0.41,"interest":0.45,"usage":0.03,"retention":0.8,"positivity":0.12,"positivityRelative":0.37,"appreciation":0.34},"completion":{"count":11773,"percentageSurvey":90.55,"total":13002},"buckets":[{"id":"never_heard","count":6853},{"id":"heard","count":4418},{"id":"used","count":452}]}]}},{"id":"fresh","entity":{"name":"Deno Fresh","nameClean":"Deno Fresh","nameHtml":"Deno Fresh","entityType":"library","homepage":{"url":"https://fresh.deno.dev/"}},"responses":{"allEditions":[{"year":2023,"editionId":"js2023","ratios":{"awareness":0.4,"interest":0.47,"usage":0.02,"retention":0.73,"positivity":0.2,"positivityRelative":0.49,"appreciation":0.25},"completion":{"count":20643,"percentageSurvey":87.7,"total":23538},"buckets":[{"id":"never_heard","count":12213},{"id":"heard","count":7821},{"id":"used","count":609}]},{"year":2024,"editionId":"js2024","ratios":{"awareness":0.38,"interest":0.52,"usage":0.02,"retention":0.78,"positivity":0.15,"positivityRelative":0.45,"appreciation":0.26},"completion":{"count":12613,"percentageSurvey":90,"total":14015},"buckets":[{"id":"never_heard","count":7762},{"id":"heard","count":4500},{"id":"used","count":325}]},{"year":2025,"editionId":"js2025","ratios":{"awareness":0.39,"interest":0.46,"usage":0.03,"retention":0.75,"positivity":0.13,"positivityRelative":0.39,"appreciation":0.29},"completion":{"count":11759,"percentageSurvey":90.44,"total":13002},"buckets":[{"id":"never_heard","count":7053},{"id":"heard","count":4283},{"id":"used","count":377}]}]}},{"id":"analog","entity":{"name":"Analog","nameClean":"Analog","nameHtml":"Analog","entityType":"library","homepage":{"url":"https://analogjs.org/"}},"responses":{"allEditions":[{"year":2025,"editionId":"js2025","ratios":{"awareness":0.15,"interest":0.33,"usage":0.01,"retention":0.77,"positivity":0.09,"positivityRelative":0.3,"appreciation":0.43},"completion":{"count":11758,"percentageSurvey":90.43,"total":13002},"buckets":[{"id":"never_heard","count":9913},{"id":"heard","count":1635},{"id":"used","count":157}]}]}},{"id":"quasar","entity":{"name":"Quasar","nameClean":"Quasar","nameHtml":"Quasar","entityType":"library","description":"Responsive Single Page Apps, Server-side Render Apps, Progressive Web Apps, Hybrid Mobile Apps (that look native!) & Electron Apps, all using the same codebase.","descriptionClean":"Responsive Single Page Apps, Server-side Render Apps, Progressive Web Apps, Hybrid Mobile Apps (that look native!) & Electron Apps, all using the same codebase.","descriptionHtml":"Responsive Single Page Apps, Server-side Render Apps, Progressive Web Apps, Hybrid Mobile Apps (that look native!) &amp; Electron Apps, all using the same codebase.","homepage":{"url":"https://quasar.dev"}},"responses":{"allEditions":[{"year":2020,"editionId":"js2020","ratios":{"awareness":0.19,"interest":0.36,"usage":0.03,"retention":0.69,"positivity":0.08,"positivityRelative":0.42,"appreciation":0.33},"completion":{"count":21093,"percentageSurvey":88.78,"total":23760},"buckets":[{"id":"never_heard","count":17069},{"id":"heard","count":3281},{"id":"used","count":743}]},{"year":2021,"editionId":"js2021","ratios":{"awareness":0.22,"interest":0.31,"usage":0.04,"retention":0.65,"positivity":0.08,"positivityRelative":0.38,"appreciation":0.33},"completion":{"count":13071,"percentageSurvey":81.3,"total":16078},"buckets":[{"id":"never_heard","count":10074},{"id":"heard","count":2411},{"id":"used","count":586}]},{"year":2022,"editionId":"js2022","ratios":{"awareness":0.21,"interest":0.28,"usage":0.04,"retention":0.64,"positivity":0.07,"positivityRelative":0.35,"appreciation":0.36},"completion":{"count":31317,"percentageSurvey":79.35,"total":39469},"buckets":[{"id":"never_heard","count":24706},{"id":"heard","count":5329},{"id":"used","count":1282}]},{"year":2023,"editionId":"js2023","ratios":{"awareness":0.27,"interest":0.29,"usage":0.05,"retention":0.55,"positivity":0.09,"positivityRelative":0.34,"appreciation":0.25},"completion":{"count":19195,"percentageSurvey":81.55,"total":23538},"buckets":[{"id":"never_heard","count":13956},{"id":"heard","count":4189},{"id":"used","count":1050}]},{"year":2024,"editionId":"js2024","ratios":{"awareness":0.25,"interest":0.22,"usage":0.04,"retention":0.7,"positivity":0.06,"positivityRelative":0.24,"appreciation":0.47},"completion":{"count":11901,"percentageSurvey":84.92,"total":14015},"buckets":[{"id":"never_heard","count":8854},{"id":"heard","count":2469},{"id":"used","count":542}]},{"year":2025,"editionId":"js2025","ratios":{"awareness":0.21,"interest":0.18,"usage":0.03,"retention":0.62,"positivity":0.08,"positivityRelative":0.27,"appreciation":0.43},"completion":{"count":11752,"percentageSurvey":90.39,"total":13002},"buckets":[{"id":"never_heard","count":9161},{"id":"heard","count":2106},{"id":"used","count":447}]}]}}],"meta_frameworks_others":{"id":"meta_frameworks_others","comments":{"currentEdition":{"count":36}},"_correlations":{"questionCorrelations":[{"kind1":"cardinality","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","questionId2":"non_js_languages_features","sectionId2":"other_tools","optionId2":"feature_structs","n":124,"correlation":0.3148,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"cardinality","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","questionId2":"people","sectionId2":"resources","optionId2":"evan_you","n":158,"correlation":0.2297,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"cardinality","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","questionId2":"non_js_languages_features","sectionId2":"other_tools","optionId2":"pattern_matching","n":124,"correlation":-0.2191,"sameSection":false,"strength":"moderate","direction":"negative"},{"kind1":"cardinality","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","questionId2":"language_pain_points","sectionId2":"features","optionId2":"tooling_issues","n":216,"correlation":0.215,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"cardinality","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","questionId2":"podcasts","sectionId2":"resources","optionId2":"podrocket","n":382,"correlation":0.2071,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"cardinality","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","questionId2":"front_end_frameworks_others","sectionId2":"front_end_frameworks","optionId2":"ripple","n":104,"correlation":0.1879,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"cardinality","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","questionId2":"browser_apis_pain_points","sectionId2":"features","optionId2":"storage","n":140,"correlation":0.1828,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"cardinality","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","questionId2":"front_end_frameworks_others","sectionId2":"front_end_frameworks","optionId2":"astro","n":104,"correlation":-0.1808,"sameSection":false,"strength":"moderate","direction":"negative"},{"kind1":"cardinality","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","questionId2":"version","sectionId2":"_user_metadata","optionId2":"141.0.7390.96","n":223,"correlation":0.1779,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"cardinality","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","questionId2":"non_js_languages_features","sectionId2":"other_tools","optionId2":"pipe_operator","n":124,"correlation":-0.1715,"sameSection":false,"strength":"moderate","direction":"negative"},{"kind1":"cardinality","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","questionId2":"non_js_languages_features","sectionId2":"other_tools","optionId2":"feature_option_result","n":124,"correlation":0.165,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"cardinality","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","questionId2":"locale","sectionId2":"_user_metadata","optionId2":"ru-RU","n":461,"correlation":0.1624,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"cardinality","kind2":"cardinality","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","questionId2":"front_end_frameworks_others","sectionId2":"front_end_frameworks","n":104,"correlation":0.1572,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"cardinality","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","questionId2":"other_surveys","sectionId2":"resources","optionId2":"codingame_survey","n":334,"correlation":0.1567,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"cardinality","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","questionId2":"locale","sectionId2":"_user_metadata","optionId2":"ja-JP","n":461,"correlation":0.1538,"sameSection":false,"strength":"moderate","direction":"positive"}],"optionCorrelations":[{"id":"tanstack_start","correlations":[{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","optionId1":"tanstack_start","questionId2":"trpc","sectionId2":"back_end_frameworks","optionId2":"never_heard","n":461,"correlation":-0.4126,"sameSection":false,"strength":"very_strong","direction":"negative"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","optionId1":"tanstack_start","questionId2":"libraries","sectionId2":"other_tools","optionId2":"zod","n":439,"correlation":0.3462,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","optionId1":"tanstack_start","questionId2":"source","sectionId2":"_user_metadata","optionId2":"twitter","n":418,"correlation":0.3293,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","optionId1":"tanstack_start","questionId2":"turbopack","sectionId2":"build_tools","optionId2":"used","n":448,"correlation":0.3177,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","optionId1":"tanstack_start","questionId2":"solidstart","sectionId2":"meta_frameworks","optionId2":"never_heard","n":469,"correlation":-0.3003,"sameSection":true,"strength":"strong","direction":"negative"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","optionId1":"tanstack_start","questionId2":"graphics_animation","sectionId2":"other_tools","optionId2":"framer_motion","n":410,"correlation":0.2999,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"question","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","optionId1":"tanstack_start","questionId2":"js_ts_balance","sectionId2":"usage","n":441,"correlation":0.2973,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","optionId1":"tanstack_start","questionId2":"hono","sectionId2":"back_end_frameworks","optionId2":"never_heard","n":462,"correlation":-0.2864,"sameSection":false,"strength":"strong","direction":"negative"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","optionId1":"tanstack_start","questionId2":"nextjs","sectionId2":"meta_frameworks","optionId2":"used","n":471,"correlation":0.2855,"sameSection":true,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","optionId1":"tanstack_start","questionId2":"nextjs","sectionId2":"meta_frameworks","optionId2":"heard","n":471,"correlation":-0.283,"sameSection":true,"strength":"strong","direction":"negative"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","optionId1":"tanstack_start","questionId2":"turbopack","sectionId2":"build_tools","optionId2":"never_heard","n":448,"correlation":-0.2805,"sameSection":false,"strength":"strong","direction":"negative"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","optionId1":"tanstack_start","questionId2":"podcasts","sectionId2":"resources","optionId2":"theo_browne","n":382,"correlation":0.2753,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","optionId1":"tanstack_start","questionId2":"video_creators","sectionId2":"resources","optionId2":"theo_browne","n":201,"correlation":0.2718,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","optionId1":"tanstack_start","questionId2":"swc","sectionId2":"build_tools","optionId2":"never_heard","n":446,"correlation":-0.2547,"sameSection":false,"strength":"strong","direction":"negative"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","optionId1":"tanstack_start","questionId2":"runtimes","sectionId2":"other_tools","optionId2":"bun","n":444,"correlation":0.2497,"sameSection":false,"strength":"moderate","direction":"positive"}]},{"id":"tanstack_router","correlations":[{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","optionId1":"tanstack_router","questionId2":"front_end_frameworks_others","sectionId2":"front_end_frameworks","optionId2":"ripple","n":104,"correlation":0.3448,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","optionId1":"tanstack_router","questionId2":"non_js_languages_features","sectionId2":"other_tools","optionId2":"feature_option_result","n":124,"correlation":0.2641,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","optionId1":"tanstack_router","questionId2":"non_js_languages_features","sectionId2":"other_tools","optionId2":"elixir","n":124,"correlation":0.2636,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","optionId1":"tanstack_router","questionId2":"people","sectionId2":"resources","optionId2":"evan_you","n":158,"correlation":0.2379,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","optionId1":"tanstack_router","questionId2":"version","sectionId2":"_user_metadata","optionId2":"139.0.0.0","n":223,"correlation":0.2199,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","optionId1":"tanstack_router","questionId2":"version","sectionId2":"_user_metadata","optionId2":"140.0.7339.122","n":223,"correlation":0.2199,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","optionId1":"tanstack_router","questionId2":"non_js_languages_features","sectionId2":"other_tools","optionId2":"kotlin","n":124,"correlation":0.194,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","optionId1":"tanstack_router","questionId2":"language_pain_points","sectionId2":"features","optionId2":"package_management","n":216,"correlation":0.1916,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","optionId1":"tanstack_router","questionId2":"podcasts","sectionId2":"resources","optionId2":"front_end_happy_hour","n":382,"correlation":0.1872,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","optionId1":"tanstack_router","questionId2":"non_js_languages_features","sectionId2":"other_tools","optionId2":"feature_structs","n":124,"correlation":0.1852,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","optionId1":"tanstack_router","questionId2":"country","sectionId2":"user_info","optionId2":"PRT","n":335,"correlation":0.1654,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","optionId1":"tanstack_router","questionId2":"country","sectionId2":"user_info","optionId2":"SWE","n":335,"correlation":0.1647,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","optionId1":"tanstack_router","questionId2":"nextjs","sectionId2":"meta_frameworks","optionId2":"never_heard","n":471,"correlation":0.1646,"sameSection":true,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","optionId1":"tanstack_router","questionId2":"industry_sector","sectionId2":"usage","optionId2":"automotive","n":412,"correlation":0.1645,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_others","sectionId1":"meta_frameworks","optionId1":"tanstack_router","questionId2":"front_end_frameworks_pain_points","sectionId2":"front_end_frameworks","optionId2":"maintenance","n":221,"correlation":0.1642,"sameSection":false,"strength":"moderate","direction":"positive"}]}]},"prenormalized":{"allEditions":[{"_metadata":{"axis1Sort":{"property":"count","order":"desc"},"limit":10,"cutoff":10},"editionId":"js2024","year":2024,"completion":{"count":404,"percentageSurvey":2.88,"total":14015},"buckets":[{"id":"analog","count":108,"index":0,"percentageQuestion":26.73,"percentageSurvey":0.77,"entity":{"name":"Analog","nameHtml":"Analog","nameClean":"Analog","id":"analog","entityType":"library","tags":["entities","libraries","js_libraries","js_meta_frameworks"],"homepage":{"url":"https://analogjs.org/"}}},{"id":"eleventy","count":27,"index":1,"percentageQuestion":6.68,"percentageSurvey":0.19,"entity":{"name":"Eleventy","nameHtml":"Eleventy","nameClean":"Eleventy","id":"eleventy","entityType":"library","tags":["entities","libraries","js_libraries","js_meta_frameworks","tokens","sources","common_sources"],"homepage":{"url":"https://www.11ty.dev/"},"github":{"url":"11ty/eleventy"},"npm":{"url":"https://www.npmjs.com/package/@11ty/eleventy"}}},{"id":"quasar","count":27,"index":2,"percentageQuestion":6.68,"percentageSurvey":0.19,"entity":{"name":"Quasar","nameHtml":"Quasar","nameClean":"Quasar","description":"Responsive Single Page Apps, Server-side Render Apps, Progressive Web Apps, Hybrid Mobile Apps (that look native!) & Electron Apps, all using the same codebase.","descriptionHtml":"Responsive Single Page Apps, Server-side Render Apps, Progressive Web Apps, Hybrid Mobile Apps (that look native!) &amp; Electron Apps, all using the same codebase.","descriptionClean":"Responsive Single Page Apps, Server-side Render Apps, Progressive Web Apps, Hybrid Mobile Apps (that look native!) & Electron Apps, all using the same codebase.","id":"quasar","entityType":"library","tags":["entities","libraries","js_libraries","js_mobile_desktop"],"homepage":{"url":"https://quasar.dev"},"github":{"url":"quasarframework/quasar"}}},{"id":"tanstack_router","count":23,"index":3,"percentageQuestion":5.69,"percentageSurvey":0.16,"entity":{"name":"TanStack Router","nameHtml":"TanStack Router","nameClean":"TanStack Router","id":"tanstack_router","entityType":"library","tags":["entities","libraries","js_libraries","js_other_tools"],"homepage":{"url":"https://tanstack.com/router/"}}},{"id":"meteor","count":17,"index":4,"percentageQuestion":4.21,"percentageSurvey":0.12,"entity":{"name":"Meteor","nameHtml":"Meteor","nameClean":"Meteor","description":"Meteor, the JavaScript App Platform","descriptionHtml":"Meteor, the JavaScript App Platform","descriptionClean":"Meteor, the JavaScript App Platform","id":"meteor","entityType":"library","tags":["entities","libraries","js_libraries","js_backend_frameworks"],"homepage":{"url":"https://www.meteor.com"},"github":{"url":"meteor/meteor"}}},{"id":"nest","count":17,"index":5,"percentageQuestion":4.21,"percentageSurvey":0.12,"entity":{"name":"NestJS","nameHtml":"NestJS","nameClean":"NestJS","description":"A progressive Node.js framework for building efficient, scalable, and enterprise-grade server-side applications on top of TypeScript & JavaScript (ES6, ES7, ES8)","descriptionHtml":"A progressive Node.js framework for building efficient, scalable, and enterprise-grade server-side applications on top of TypeScript &amp; JavaScript (ES6, ES7, ES8)","descriptionClean":"A progressive Node.js framework for building efficient, scalable, and enterprise-grade server-side applications on top of TypeScript & JavaScript (ES6, ES7, ES8)","id":"nest","entityType":"library","tags":["entities","libraries","js_libraries","js_backend_frameworks","graphql_api_generators"],"homepage":{"url":"https://nestjs.com"},"github":{"url":"nestjs/nest"},"npm":{"url":"https://www.npmjs.com/package/@nestjs/core"}}},{"id":"vitepress","count":16,"index":6,"percentageQuestion":3.96,"percentageSurvey":0.11,"entity":{"name":"VitePress","nameHtml":"VitePress","nameClean":"VitePress","id":"vitepress","entityType":"library","tags":["entities","libraries","js_libraries","js_meta_frameworks"],"homepage":{"url":"https://vitepress.dev/"}}},{"id":"vike","count":10,"index":7,"percentageQuestion":2.48,"percentageSurvey":0.07,"entity":{"name":"Vike","nameHtml":"Vike","nameClean":"Vike","id":"vike","entityType":"library","tags":["entities","libraries","js_libraries","js_meta_frameworks"],"homepage":{"url":"https://vike.dev/"}}},{"id":"other_answers","count":208,"index":8,"percentageQuestion":51.71,"percentageSurvey":1.6}]},{"_metadata":{"axis1Sort":{"property":"count","order":"desc"},"limit":10,"cutoff":10},"editionId":"js2025","year":2025,"completion":{"count":472,"percentageSurvey":3.63,"total":13002},"buckets":[{"id":"tanstack_start","count":235,"index":0,"percentageQuestion":49.79,"percentageSurvey":1.81,"entity":{"name":"TanStack Start","nameHtml":"TanStack Start","nameClean":"TanStack Start","id":"tanstack_start","entityType":"library","tags":["entities","libraries","js_libraries","js_meta_frameworks"],"homepage":{"url":"https://tanstack.com/start/latest"}}},{"id":"tanstack_router","count":41,"index":1,"percentageQuestion":8.69,"percentageSurvey":0.32,"entity":{"name":"TanStack Router","nameHtml":"TanStack Router","nameClean":"TanStack Router","id":"tanstack_router","entityType":"library","tags":["entities","libraries","js_libraries","js_other_tools"],"homepage":{"url":"https://tanstack.com/router/"}}},{"id":"react_router","count":29,"index":2,"percentageQuestion":6.14,"percentageSurvey":0.22,"entity":{"name":"React Router","nameHtml":"React Router","nameClean":"React Router","description":"Declarative routing for React","descriptionHtml":"Declarative routing for React","descriptionClean":"Declarative routing for React","id":"react_router","entityType":"library","tags":["entities","libraries","react_libraries","react_routers"],"homepage":{"url":"https://reacttraining.com/react-router/"},"github":{"url":"ReactTraining/react-router"},"npm":{"url":"https://www.npmjs.com/package/react-router"}}},{"id":"meteor","count":13,"index":3,"percentageQuestion":2.75,"percentageSurvey":0.1,"entity":{"name":"Meteor","nameHtml":"Meteor","nameClean":"Meteor","description":"Meteor, the JavaScript App Platform","descriptionHtml":"Meteor, the JavaScript App Platform","descriptionClean":"Meteor, the JavaScript App Platform","id":"meteor","entityType":"library","tags":["entities","libraries","js_libraries","js_backend_frameworks"],"homepage":{"url":"https://www.meteor.com"},"github":{"url":"meteor/meteor"}}},{"id":"expo","count":12,"index":4,"percentageQuestion":2.54,"percentageSurvey":0.09,"entity":{"name":"Expo","nameHtml":"Expo","nameClean":"Expo","description":"An open-source platform for making universal native apps with React. Expo runs on Android, iOS, and the web.","descriptionHtml":"An open-source platform for making universal native apps with React. Expo runs on Android, iOS, and the web.","descriptionClean":"An open-source platform for making universal native apps with React. Expo runs on Android, iOS, and the web.","id":"expo","entityType":"library","tags":["entities","libraries","js_libraries","js_mobile_desktop"],"homepage":{"url":"https://docs.expo.io"},"github":{"url":"expo/expo"},"npm":{"url":"https://www.npmjs.com/package/expo"}}},{"id":"vike","count":12,"index":5,"percentageQuestion":2.54,"percentageSurvey":0.09,"entity":{"name":"Vike","nameHtml":"Vike","nameClean":"Vike","id":"vike","entityType":"library","tags":["entities","libraries","js_libraries","js_meta_frameworks"],"homepage":{"url":"https://vike.dev/"}}},{"id":"eleventy","count":11,"index":6,"percentageQuestion":2.33,"percentageSurvey":0.08,"entity":{"name":"Eleventy","nameHtml":"Eleventy","nameClean":"Eleventy","id":"eleventy","entityType":"library","tags":["entities","libraries","js_libraries","js_meta_frameworks","tokens","sources","common_sources"],"homepage":{"url":"https://www.11ty.dev/"},"github":{"url":"11ty/eleventy"},"npm":{"url":"https://www.npmjs.com/package/@11ty/eleventy"}}},{"id":"inertiajs","count":11,"index":7,"percentageQuestion":2.33,"percentageSurvey":0.08},{"id":"redwood_sdk","count":10,"index":8,"percentageQuestion":2.12,"percentageSurvey":0.08,"entity":{"name":"Redwood SDK","nameHtml":"Redwood SDK","nameClean":"Redwood SDK","id":"redwood_sdk","entityType":"library","tags":["entities","libraries","js_libraries","js_backend_frameworks"],"homepage":{"url":"https://rwsdk.com/"},"github":{"url":"https://github.com/redwoodjs/sdk"}}},{"id":"other_answers","count":189,"index":9,"percentageQuestion":39.91,"percentageSurvey":1.61}]}]}},"meta_frameworks_cardinalities":[{"id":"heard","responses":{"allEditions":[{"_metadata":{"axis1Sort":{"property":"id","order":"asc"},"limit":50,"cutoff":1},"editionId":"js2025","year":2025,"completion":{"count":13002,"percentageSurvey":100,"total":13002},"average":4.6,"percentiles":{"p50":5},"buckets":[{"id":"0","count":1333,"value":0,"index":0,"percentageQuestion":10.25,"percentageSurvey":10.25},{"id":"1","count":511,"value":1,"index":1,"percentageQuestion":3.93,"percentageSurvey":3.93},{"id":"2","count":823,"value":2,"index":2,"percentageQuestion":6.33,"percentageSurvey":6.33},{"id":"3","count":1308,"value":3,"index":3,"percentageQuestion":10.06,"percentageSurvey":10.06},{"id":"4","count":1890,"value":4,"index":4,"percentageQuestion":14.54,"percentageSurvey":14.54},{"id":"5","count":2197,"value":5,"index":5,"percentageQuestion":16.9,"percentageSurvey":16.9},{"id":"6","count":1949,"value":6,"index":6,"percentageQuestion":14.99,"percentageSurvey":14.99},{"id":"7","count":1427,"value":7,"index":7,"percentageQuestion":10.98,"percentageSurvey":10.98},{"id":"8","count":892,"value":8,"index":8,"percentageQuestion":6.86,"percentageSurvey":6.86},{"id":"9","count":414,"value":9,"index":9,"percentageQuestion":3.18,"percentageSurvey":3.18},{"id":"10","count":185,"value":10,"index":10,"percentageQuestion":1.42,"percentageSurvey":1.42},{"id":"11","count":73,"value":11,"index":11,"percentageQuestion":0.56,"percentageSurvey":0.56}]}]}},{"id":"used","responses":{"allEditions":[{"_metadata":{"axis1Sort":{"property":"id","order":"asc"},"limit":50,"cutoff":1},"editionId":"js2025","year":2025,"completion":{"count":13002,"percentageSurvey":100,"total":13002},"average":1.7,"percentiles":{"p50":1},"buckets":[{"id":"0","count":3485,"value":0,"index":0,"percentageQuestion":26.8,"percentageSurvey":26.8},{"id":"1","count":3360,"value":1,"index":1,"percentageQuestion":25.84,"percentageSurvey":25.84},{"id":"2","count":2699,"value":2,"index":2,"percentageQuestion":20.76,"percentageSurvey":20.76},{"id":"3","count":1717,"value":3,"index":3,"percentageQuestion":13.21,"percentageSurvey":13.21},{"id":"4","count":963,"value":4,"index":4,"percentageQuestion":7.41,"percentageSurvey":7.41},{"id":"5","count":475,"value":5,"index":5,"percentageQuestion":3.65,"percentageSurvey":3.65},{"id":"6","count":186,"value":6,"index":6,"percentageQuestion":1.43,"percentageSurvey":1.43},{"id":"7","count":74,"value":7,"index":7,"percentageQuestion":0.57,"percentageSurvey":0.57},{"id":"8","count":26,"value":8,"index":8,"percentageQuestion":0.2,"percentageSurvey":0.2},{"id":"9","count":11,"value":9,"index":9,"percentageQuestion":0.08,"percentageSurvey":0.08},{"id":"10","count":2,"value":10,"index":10,"percentageQuestion":0.02,"percentageSurvey":0.02},{"id":"11","count":4,"value":11,"index":11,"percentageQuestion":0.03,"percentageSurvey":0.03}]}]}}],"meta_frameworks_happiness":{"id":"meta_frameworks_happiness","comments":{"currentEdition":{"count":74}},"_correlations":{"questionCorrelations":[{"kind1":"question","kind2":"question","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","questionId2":"front_end_frameworks_happiness","sectionId2":"front_end_frameworks","n":11382,"correlation":0.5112,"sameSection":false,"strength":"very_strong","direction":"positive"},{"kind1":"question","kind2":"question","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","questionId2":"state_of_the_web_happiness","sectionId2":"usage","n":10397,"correlation":0.3681,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"question","kind2":"question","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","questionId2":"back_end_frameworks_happiness","sectionId2":"back_end_frameworks","n":10819,"correlation":0.359,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"question","kind2":"question","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","questionId2":"state_of_js_happiness","sectionId2":"usage","n":10485,"correlation":0.3292,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"question","kind2":"question","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","questionId2":"build_tools_happiness","sectionId2":"build_tools","n":10464,"correlation":0.3168,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"question","kind2":"question","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","questionId2":"testing_happiness","sectionId2":"testing","n":10604,"correlation":0.2363,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"question","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","questionId2":"front_end_frameworks_others","sectionId2":"front_end_frameworks","optionId2":"astro","n":591,"correlation":0.218,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"question","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","questionId2":"build_tools_others","sectionId2":"build_tools","optionId2":"tsdown","n":149,"correlation":0.2085,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"question","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","questionId2":"js_app_patterns","sectionId2":"usage","optionId2":"server_side_rendering","n":10292,"correlation":0.1886,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"question","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","questionId2":"front_end_frameworks_others","sectionId2":"front_end_frameworks","optionId2":"elm","n":591,"correlation":-0.1846,"sameSection":false,"strength":"moderate","direction":"negative"},{"kind1":"question","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","questionId2":"hosting","sectionId2":"other_tools","optionId2":"vercel","n":10504,"correlation":0.1813,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"question","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","questionId2":"meta_frameworks_pain_points","sectionId2":"meta_frameworks","optionId2":"excessive_complexity","n":2055,"correlation":-0.1803,"sameSection":true,"strength":"moderate","direction":"negative"},{"kind1":"question","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","questionId2":"nitro","sectionId2":"back_end_frameworks","optionId2":"used","n":11146,"correlation":0.1726,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"question","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","questionId2":"edge_runtimes","sectionId2":"other_tools","optionId2":"vercel_functions","n":9372,"correlation":0.1715,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"question","kind2":"cardinality","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","questionId2":"js_app_patterns","sectionId2":"usage","n":10292,"correlation":0.1659,"sameSection":false,"strength":"moderate","direction":"positive"}],"optionCorrelations":[{"id":"0","correlations":[{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"0","questionId2":"front_end_frameworks_happiness","sectionId2":"front_end_frameworks","optionId2":"0","n":11382,"correlation":0.4205,"sameSection":false,"strength":"very_strong","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"0","questionId2":"back_end_frameworks_happiness","sectionId2":"back_end_frameworks","optionId2":"0","n":10819,"correlation":0.3362,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"0","questionId2":"state_of_the_web_happiness","sectionId2":"usage","optionId2":"0","n":10397,"correlation":0.2501,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"0","questionId2":"build_tools_happiness","sectionId2":"build_tools","optionId2":"0","n":10464,"correlation":0.2493,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"0","questionId2":"state_of_js_happiness","sectionId2":"usage","optionId2":"0","n":10485,"correlation":0.2339,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"question","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"0","questionId2":"front_end_frameworks_happiness","sectionId2":"front_end_frameworks","n":11382,"correlation":-0.224,"sameSection":false,"strength":"moderate","direction":"negative"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"0","questionId2":"testing_happiness","sectionId2":"testing","optionId2":"0","n":10604,"correlation":0.2004,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"0","questionId2":"build_tools_others","sectionId2":"build_tools","optionId2":"deno","n":149,"correlation":0.1884,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"0","questionId2":"front_end_frameworks_others","sectionId2":"front_end_frameworks","optionId2":"elm","n":591,"correlation":0.1551,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"question","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"0","questionId2":"state_of_the_web_happiness","sectionId2":"usage","n":10397,"correlation":-0.155,"sameSection":false,"strength":"moderate","direction":"negative"}]},{"id":"1","correlations":[{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"1","questionId2":"front_end_frameworks_happiness","sectionId2":"front_end_frameworks","optionId2":"1","n":11382,"correlation":0.2732,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"question","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"1","questionId2":"front_end_frameworks_happiness","sectionId2":"front_end_frameworks","n":11382,"correlation":-0.2479,"sameSection":false,"strength":"moderate","direction":"negative"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"1","questionId2":"back_end_frameworks_happiness","sectionId2":"back_end_frameworks","optionId2":"1","n":10819,"correlation":0.1842,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"cardinality","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"1","questionId2":"build_tools_others","sectionId2":"build_tools","n":149,"correlation":0.1692,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"question","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"1","questionId2":"state_of_the_web_happiness","sectionId2":"usage","n":10397,"correlation":-0.1606,"sameSection":false,"strength":"moderate","direction":"negative"},{"kind1":"option","kind2":"question","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"1","questionId2":"state_of_js_happiness","sectionId2":"usage","n":10485,"correlation":-0.1592,"sameSection":false,"strength":"moderate","direction":"negative"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"1","questionId2":"build_tools_others","sectionId2":"build_tools","optionId2":"tsdown","n":149,"correlation":-0.1506,"sameSection":false,"strength":"moderate","direction":"negative"}]},{"id":"2","correlations":[{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"2","questionId2":"back_end_frameworks_happiness","sectionId2":"back_end_frameworks","optionId2":"2","n":10819,"correlation":0.2734,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"2","questionId2":"front_end_frameworks_happiness","sectionId2":"front_end_frameworks","optionId2":"2","n":11382,"correlation":0.264,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"cardinality","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"2","questionId2":"js_app_patterns","sectionId2":"usage","n":10292,"correlation":-0.2241,"sameSection":false,"strength":"moderate","direction":"negative"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"2","questionId2":"build_tools_happiness","sectionId2":"build_tools","optionId2":"2","n":10464,"correlation":0.2218,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"question","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"2","questionId2":"back_end_frameworks_happiness","sectionId2":"back_end_frameworks","n":10819,"correlation":-0.2138,"sameSection":false,"strength":"moderate","direction":"negative"},{"kind1":"option","kind2":"question","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"2","questionId2":"build_tools_happiness","sectionId2":"build_tools","n":10464,"correlation":-0.2096,"sameSection":false,"strength":"moderate","direction":"negative"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"2","questionId2":"js_app_patterns","sectionId2":"usage","optionId2":"server_side_rendering","n":10292,"correlation":-0.2091,"sameSection":false,"strength":"moderate","direction":"negative"},{"kind1":"option","kind2":"question","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"2","questionId2":"front_end_frameworks_happiness","sectionId2":"front_end_frameworks","n":11382,"correlation":-0.1957,"sameSection":false,"strength":"moderate","direction":"negative"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"2","questionId2":"hosting","sectionId2":"other_tools","optionId2":"vercel","n":10504,"correlation":-0.1893,"sameSection":false,"strength":"moderate","direction":"negative"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"2","questionId2":"nextjs","sectionId2":"meta_frameworks","optionId2":"used","n":11368,"correlation":-0.1872,"sameSection":true,"strength":"moderate","direction":"negative"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"2","questionId2":"nextjs","sectionId2":"meta_frameworks","optionId2":"heard","n":11368,"correlation":0.1816,"sameSection":true,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"2","questionId2":"turbopack","sectionId2":"build_tools","optionId2":"never_heard","n":10883,"correlation":0.1783,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"2","questionId2":"state_of_the_web_happiness","sectionId2":"usage","optionId2":"2","n":10397,"correlation":0.1756,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"2","questionId2":"libraries","sectionId2":"other_tools","optionId2":"zod","n":10556,"correlation":-0.1728,"sameSection":false,"strength":"moderate","direction":"negative"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"2","questionId2":"astro","sectionId2":"meta_frameworks","optionId2":"never_heard","n":11323,"correlation":0.1643,"sameSection":true,"strength":"moderate","direction":"positive"}]},{"id":"3","correlations":[{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"3","questionId2":"front_end_frameworks_happiness","sectionId2":"front_end_frameworks","optionId2":"3","n":11382,"correlation":0.3068,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"question","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"3","questionId2":"front_end_frameworks_happiness","sectionId2":"front_end_frameworks","n":11382,"correlation":0.2577,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"3","questionId2":"back_end_frameworks_happiness","sectionId2":"back_end_frameworks","optionId2":"3","n":10819,"correlation":0.2484,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"question","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"3","questionId2":"back_end_frameworks_happiness","sectionId2":"back_end_frameworks","n":10819,"correlation":0.2194,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"3","questionId2":"build_tools_happiness","sectionId2":"build_tools","optionId2":"3","n":10464,"correlation":0.2023,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"3","questionId2":"front_end_frameworks_others","sectionId2":"front_end_frameworks","optionId2":"astro","n":591,"correlation":0.197,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"question","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"3","questionId2":"state_of_the_web_happiness","sectionId2":"usage","n":10397,"correlation":0.1874,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"question","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"3","questionId2":"build_tools_happiness","sectionId2":"build_tools","n":10464,"correlation":0.1854,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"question","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"3","questionId2":"state_of_js_happiness","sectionId2":"usage","n":10485,"correlation":0.1683,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"3","questionId2":"js_app_patterns","sectionId2":"usage","optionId2":"server_side_rendering","n":10292,"correlation":0.1639,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"3","questionId2":"hosting","sectionId2":"other_tools","optionId2":"vercel","n":10504,"correlation":0.1631,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"cardinality","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"3","questionId2":"js_app_patterns","sectionId2":"usage","n":10292,"correlation":0.1625,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"3","questionId2":"testing_happiness","sectionId2":"testing","optionId2":"3","n":10604,"correlation":0.1581,"sameSection":false,"strength":"moderate","direction":"positive"}]},{"id":"4","correlations":[{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"4","questionId2":"front_end_frameworks_happiness","sectionId2":"front_end_frameworks","optionId2":"4","n":11382,"correlation":0.4754,"sameSection":false,"strength":"very_strong","direction":"positive"},{"kind1":"option","kind2":"question","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"4","questionId2":"front_end_frameworks_happiness","sectionId2":"front_end_frameworks","n":11382,"correlation":0.3481,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"4","questionId2":"back_end_frameworks_happiness","sectionId2":"back_end_frameworks","optionId2":"4","n":10819,"correlation":0.3458,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"4","questionId2":"state_of_the_web_happiness","sectionId2":"usage","optionId2":"4","n":10397,"correlation":0.3163,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"4","questionId2":"build_tools_happiness","sectionId2":"build_tools","optionId2":"4","n":10464,"correlation":0.3024,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"4","questionId2":"state_of_js_happiness","sectionId2":"usage","optionId2":"4","n":10485,"correlation":0.272,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"question","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"4","questionId2":"state_of_the_web_happiness","sectionId2":"usage","n":10397,"correlation":0.2613,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"4","questionId2":"testing_happiness","sectionId2":"testing","optionId2":"4","n":10604,"correlation":0.2589,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"question","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"4","questionId2":"back_end_frameworks_happiness","sectionId2":"back_end_frameworks","n":10819,"correlation":0.24,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"question","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"4","questionId2":"build_tools_happiness","sectionId2":"build_tools","n":10464,"correlation":0.2371,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"question","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"4","questionId2":"state_of_js_happiness","sectionId2":"usage","n":10485,"correlation":0.2254,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"4","questionId2":"build_tools_others","sectionId2":"build_tools","optionId2":"tsdown","n":149,"correlation":0.1797,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"4","questionId2":"video_creators","sectionId2":"resources","optionId2":"alexander_lichter","n":2983,"correlation":0.1607,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"question","questionId1":"meta_frameworks_happiness","sectionId1":"meta_frameworks","optionId1":"4","questionId2":"testing_happiness","sectionId2":"testing","n":10604,"correlation":0.158,"sameSection":false,"strength":"moderate","direction":"positive"}]}]},"combined":{"allEditions":[{"_metadata":{"axis1Sort":{"property":"options","order":"desc"},"limit":50,"cutoff":10},"editionId":"js2022","year":2022,"completion":{"count":31843,"percentageSurvey":80.68,"total":39469},"average":3.6,"percentiles":{"p50":4},"buckets":[{"id":"0","count":521,"value":1,"index":0,"percentageQuestion":1.64,"percentageSurvey":1.32},{"id":"1","count":1185,"value":2,"index":1,"percentageQuestion":3.72,"percentageSurvey":3},{"id":"2","count":11972,"value":3,"index":2,"percentageQuestion":37.6,"percentageSurvey":30.33},{"id":"3","count":13584,"value":4,"index":3,"percentageQuestion":42.66,"percentageSurvey":34.42},{"id":"4","count":4581,"value":5,"index":4,"percentageQuestion":14.39,"percentageSurvey":11.61},{"id":"no_answer","count":7626,"index":5,"percentageQuestion":0,"percentageSurvey":19.32}]},{"_metadata":{"axis1Sort":{"property":"options","order":"desc"},"limit":50,"cutoff":10},"editionId":"js2023","year":2023,"completion":{"count":20073,"percentageSurvey":85.28,"total":23538},"average":3.4,"percentiles":{"p50":3},"buckets":[{"id":"0","count":599,"value":1,"index":0,"percentageQuestion":2.98,"percentageSurvey":2.54},{"id":"1","count":1435,"value":2,"index":1,"percentageQuestion":7.15,"percentageSurvey":6.1},{"id":"2","count":8753,"value":3,"index":2,"percentageQuestion":43.61,"percentageSurvey":37.19},{"id":"3","count":7013,"value":4,"index":3,"percentageQuestion":34.94,"percentageSurvey":29.79},{"id":"4","count":2273,"value":5,"index":4,"percentageQuestion":11.32,"percentageSurvey":9.66},{"id":"no_answer","count":3465,"index":5,"percentageQuestion":0,"percentageSurvey":14.72}]},{"_metadata":{"axis1Sort":{"property":"options","order":"desc"},"limit":50,"cutoff":10},"editionId":"js2024","year":2024,"completion":{"count":12044,"percentageSurvey":85.94,"total":14015},"average":3.4,"percentiles":{"p50":3},"buckets":[{"id":"0","count":376,"value":1,"index":0,"percentageQuestion":3.12,"percentageSurvey":2.68},{"id":"1","count":1014,"value":2,"index":1,"percentageQuestion":8.42,"percentageSurvey":7.24},{"id":"2","count":5228,"value":3,"index":2,"percentageQuestion":43.41,"percentageSurvey":37.3},{"id":"3","count":4180,"value":4,"index":3,"percentageQuestion":34.71,"percentageSurvey":29.83},{"id":"4","count":1246,"value":5,"index":4,"percentageQuestion":10.35,"percentageSurvey":8.89},{"id":"no_answer","count":1971,"index":5,"percentageQuestion":0,"percentageSurvey":14.06}]},{"_metadata":{"axis1Sort":{"property":"options","order":"desc"},"limit":50,"cutoff":10},"editionId":"js2025","year":2025,"completion":{"count":11411,"percentageSurvey":87.76,"total":13002},"average":3.3,"percentiles":{"p50":3},"buckets":[{"id":"0","count":335,"value":1,"index":0,"percentageQuestion":2.94,"percentageSurvey":2.58},{"id":"1","count":1156,"value":2,"index":1,"percentageQuestion":10.13,"percentageSurvey":8.89},{"id":"2","count":5462,"value":3,"index":2,"percentageQuestion":47.87,"percentageSurvey":42.01},{"id":"3","count":3628,"value":4,"index":3,"percentageQuestion":31.79,"percentageSurvey":27.9},{"id":"4","count":830,"value":5,"index":4,"percentageQuestion":7.27,"percentageSurvey":6.38},{"id":"no_answer","count":1591,"index":5,"percentageQuestion":0,"percentageSurvey":12.24}]}]}},"meta_frameworks_pain_points":{"id":"meta_frameworks_pain_points","comments":{"currentEdition":{"count":2}},"_correlations":{"questionCorrelations":[{"kind1":"cardinality","kind2":"cardinality","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","questionId2":"front_end_frameworks_pain_points","sectionId2":"front_end_frameworks","n":1595,"correlation":0.2872,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"cardinality","kind2":"cardinality","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","questionId2":"back_end_frameworks_pain_points","sectionId2":"back_end_frameworks","n":649,"correlation":0.26,"sameSection":false,"strength":"strong","direction":"positive"}],"optionCorrelations":[{"id":"nextjs_issues","correlations":[{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"nextjs_issues","questionId2":"front_end_frameworks_pain_points","sectionId2":"front_end_frameworks","optionId2":"framework_issues","n":1595,"correlation":0.3144,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"nextjs_issues","questionId2":"front_end_frameworks_pain_points","sectionId2":"front_end_frameworks","optionId2":"react","n":1595,"correlation":0.3144,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"nextjs_issues","questionId2":"front_end_frameworks_pain_points","sectionId2":"front_end_frameworks","optionId2":"ecosystem","n":1595,"correlation":0.29,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"nextjs_issues","questionId2":"back_end_frameworks_pain_points","sectionId2":"back_end_frameworks","optionId2":"nest","n":649,"correlation":0.2622,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"nextjs_issues","questionId2":"nextjs","sectionId2":"meta_frameworks","optionId2":"used","n":2063,"correlation":0.2024,"sameSection":true,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"nextjs_issues","questionId2":"nextjs","sectionId2":"meta_frameworks","optionId2":"heard","n":2063,"correlation":-0.2,"sameSection":true,"strength":"moderate","direction":"negative"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"nextjs_issues","questionId2":"build_tools_pain_points","sectionId2":"build_tools","optionId2":"webpack","n":693,"correlation":0.1982,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"nextjs_issues","questionId2":"people","sectionId2":"resources","optionId2":"tanner_linsley","n":659,"correlation":0.1867,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"nextjs_issues","questionId2":"testing_pain_points","sectionId2":"testing","optionId2":"jest","n":751,"correlation":0.1698,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"cardinality","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"nextjs_issues","questionId2":"front_end_frameworks_pain_points","sectionId2":"front_end_frameworks","n":1595,"correlation":0.1684,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"nextjs_issues","questionId2":"graphics_animation","sectionId2":"other_tools","optionId2":"framer_motion","n":1808,"correlation":0.1548,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"nextjs_issues","questionId2":"build_tools_pain_points","sectionId2":"build_tools","optionId2":"vite","n":693,"correlation":0.1543,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"cardinality","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"nextjs_issues","questionId2":"back_end_frameworks_others","sectionId2":"back_end_frameworks","n":101,"correlation":0.1523,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"nextjs_issues","questionId2":"people","sectionId2":"resources","optionId2":"kent_c_dodds","n":659,"correlation":0.1506,"sameSection":false,"strength":"moderate","direction":"positive"}]},{"id":"excessive_complexity","correlations":[{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"excessive_complexity","questionId2":"front_end_frameworks_others","sectionId2":"front_end_frameworks","optionId2":"elm","n":202,"correlation":0.2295,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"excessive_complexity","questionId2":"front_end_frameworks_pain_points","sectionId2":"front_end_frameworks","optionId2":"cognitive_overload","n":1595,"correlation":0.2177,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"question","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"excessive_complexity","questionId2":"meta_frameworks_happiness","sectionId2":"meta_frameworks","n":2055,"correlation":-0.1803,"sameSection":true,"strength":"moderate","direction":"negative"}]},{"id":"ssr","correlations":[{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"ssr","questionId2":"front_end_frameworks_others","sectionId2":"front_end_frameworks","optionId2":"tanstack_start","n":202,"correlation":0.268,"sameSection":false,"strength":"strong","direction":"positive"}]},{"id":"lack_of_documentation","correlations":[{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"lack_of_documentation","questionId2":"build_tools_pain_points","sectionId2":"build_tools","optionId2":"documentation","n":693,"correlation":0.2948,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"lack_of_documentation","questionId2":"front_end_frameworks_pain_points","sectionId2":"front_end_frameworks","optionId2":"educational_issues","n":1595,"correlation":0.1823,"sameSection":false,"strength":"moderate","direction":"positive"}]},{"id":"deployment","correlations":[{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"deployment","questionId2":"testing_pain_points","sectionId2":"testing","optionId2":"lack_of_documentation","n":751,"correlation":0.1506,"sameSection":false,"strength":"moderate","direction":"positive"}]},{"id":"speed_of_change","correlations":[{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"speed_of_change","questionId2":"video_creators","sectionId2":"resources","optionId2":"dreams_of_code","n":879,"correlation":0.1661,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"speed_of_change","questionId2":"meta_frameworks_others","sectionId2":"meta_frameworks","optionId2":"tanstack_router","n":210,"correlation":0.1587,"sameSection":true,"strength":"moderate","direction":"positive"}]},{"id":"server_client_issues","correlations":[{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"server_client_issues","questionId2":"back_end_frameworks_others","sectionId2":"back_end_frameworks","optionId2":"orpc","n":101,"correlation":0.1965,"sameSection":false,"strength":"moderate","direction":"positive"}]},{"id":"too_much_magic","correlations":[{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"too_much_magic","questionId2":"front_end_frameworks_others","sectionId2":"front_end_frameworks","optionId2":"ripple","n":202,"correlation":0.2063,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"too_much_magic","questionId2":"browser_apis_pain_points","sectionId2":"features","optionId2":"performance","n":936,"correlation":0.1612,"sameSection":false,"strength":"moderate","direction":"positive"}]},{"id":"too_many_choices","correlations":[{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"too_many_choices","questionId2":"back_end_frameworks_pain_points","sectionId2":"back_end_frameworks","optionId2":"cognitive_overload","n":649,"correlation":0.2846,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"too_many_choices","questionId2":"front_end_frameworks_others","sectionId2":"front_end_frameworks","optionId2":"astro","n":202,"correlation":0.2097,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"too_many_choices","questionId2":"front_end_frameworks_pain_points","sectionId2":"front_end_frameworks","optionId2":"cognitive_overload","n":1595,"correlation":0.1737,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"too_many_choices","questionId2":"meta_frameworks_others","sectionId2":"meta_frameworks","optionId2":"tanstack_start","n":210,"correlation":-0.155,"sameSection":true,"strength":"moderate","direction":"negative"}]},{"id":"too_opinionated","correlations":[{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"too_opinionated","questionId2":"people","sectionId2":"resources","optionId2":"kevin_j_powell","n":659,"correlation":0.1677,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"too_opinionated","questionId2":"non_js_languages_features","sectionId2":"other_tools","optionId2":"feature_list_comprehension","n":789,"correlation":0.1631,"sameSection":false,"strength":"moderate","direction":"positive"}]},{"id":"maintenance","correlations":[{"kind1":"option","kind2":"cardinality","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"maintenance","questionId2":"back_end_frameworks_others","sectionId2":"back_end_frameworks","n":101,"correlation":0.3897,"sameSection":false,"strength":"strong","direction":"positive"}]},{"id":"cognitive_overload","correlations":[{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"cognitive_overload","questionId2":"front_end_frameworks_pain_points","sectionId2":"front_end_frameworks","optionId2":"excessive_complexity","n":1595,"correlation":0.2654,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"cognitive_overload","questionId2":"back_end_frameworks_pain_points","sectionId2":"back_end_frameworks","optionId2":"too_many_choices","n":649,"correlation":0.2127,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"cognitive_overload","questionId2":"front_end_frameworks_pain_points","sectionId2":"front_end_frameworks","optionId2":"too_many_choices","n":1595,"correlation":0.1721,"sameSection":false,"strength":"moderate","direction":"positive"}]},{"id":"react_server_components","correlations":[{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"react_server_components","questionId2":"front_end_frameworks_others","sectionId2":"front_end_frameworks","optionId2":"ripple","n":202,"correlation":0.2574,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"react_server_components","questionId2":"people","sectionId2":"resources","optionId2":"dan_abramov","n":659,"correlation":0.1527,"sameSection":false,"strength":"moderate","direction":"positive"}]},{"id":"lack_of_flexibility","correlations":[{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"lack_of_flexibility","questionId2":"front_end_frameworks_others","sectionId2":"front_end_frameworks","optionId2":"elm","n":202,"correlation":0.2523,"sameSection":false,"strength":"strong","direction":"positive"},{"kind1":"option","kind2":"cardinality","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"lack_of_flexibility","questionId2":"front_end_frameworks_others","sectionId2":"front_end_frameworks","n":202,"correlation":0.1603,"sameSection":false,"strength":"moderate","direction":"positive"}]},{"id":"rendering_modes","correlations":[{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"rendering_modes","questionId2":"back_end_frameworks_others","sectionId2":"back_end_frameworks","optionId2":"orpc","n":101,"correlation":0.2435,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"rendering_modes","questionId2":"people","sectionId2":"resources","optionId2":"evan_you","n":659,"correlation":0.1606,"sameSection":false,"strength":"moderate","direction":"positive"}]},{"id":"educational_issues","correlations":[{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"educational_issues","questionId2":"front_end_frameworks_pain_points","sectionId2":"front_end_frameworks","optionId2":"lack_of_documentation","n":1595,"correlation":0.2013,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"educational_issues","questionId2":"build_tools_pain_points","sectionId2":"build_tools","optionId2":"lack_of_documentation","n":693,"correlation":0.192,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"educational_issues","questionId2":"build_tools_pain_points","sectionId2":"build_tools","optionId2":"documentation","n":693,"correlation":0.1831,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"educational_issues","questionId2":"testing_pain_points","sectionId2":"testing","optionId2":"writing_tests","n":751,"correlation":0.1641,"sameSection":false,"strength":"moderate","direction":"positive"}]},{"id":"debugging_issues","correlations":[{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"debugging_issues","questionId2":"front_end_frameworks_others","sectionId2":"front_end_frameworks","optionId2":"ember","n":202,"correlation":0.2005,"sameSection":false,"strength":"moderate","direction":"positive"}]},{"id":"stability","correlations":[{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"stability","questionId2":"testing_pain_points","sectionId2":"testing","optionId2":"integration_with_tools","n":751,"correlation":0.1879,"sameSection":false,"strength":"moderate","direction":"positive"}]},{"id":"configuration","correlations":[{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"configuration","questionId2":"front_end_frameworks_others","sectionId2":"front_end_frameworks","optionId2":"ember","n":202,"correlation":0.1673,"sameSection":false,"strength":"moderate","direction":"positive"}]},{"id":"server_client_boundary","correlations":[{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"server_client_boundary","questionId2":"back_end_frameworks_pain_points","sectionId2":"back_end_frameworks","optionId2":"end_to_end_type_safety","n":649,"correlation":0.1665,"sameSection":false,"strength":"moderate","direction":"positive"}]},{"id":"tooling_issues","correlations":[{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"tooling_issues","questionId2":"front_end_frameworks_others","sectionId2":"front_end_frameworks","optionId2":"ripple","n":202,"correlation":0.1607,"sameSection":false,"strength":"moderate","direction":"positive"}]},{"id":"ecosystem","correlations":[{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"ecosystem","questionId2":"front_end_frameworks_pain_points","sectionId2":"front_end_frameworks","optionId2":"framework_issues","n":1595,"correlation":0.1546,"sameSection":false,"strength":"moderate","direction":"positive"},{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"ecosystem","questionId2":"front_end_frameworks_pain_points","sectionId2":"front_end_frameworks","optionId2":"react","n":1595,"correlation":0.1546,"sameSection":false,"strength":"moderate","direction":"positive"}]},{"id":"tough_learning_curve","correlations":[{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"tough_learning_curve","questionId2":"back_end_frameworks_pain_points","sectionId2":"back_end_frameworks","optionId2":"educational_issues","n":649,"correlation":0.1531,"sameSection":false,"strength":"moderate","direction":"positive"}]},{"id":"lock_in","correlations":[{"kind1":"option","kind2":"option","questionId1":"meta_frameworks_pain_points","sectionId1":"meta_frameworks","optionId1":"lock_in","questionId2":"back_end_frameworks_others","sectionId2":"back_end_frameworks","optionId2":"orpc","n":101,"correlation":-0.1517,"sameSection":false,"strength":"moderate","direction":"negative"}]}]},"freeform":{"allEditions":[{"_metadata":{"axis1Sort":{"property":"count","order":"desc"},"limit":25,"cutoff":5},"_cardinalities":{"buckets":[{"answerCount":1,"count":1243,"percentage":62.9049},{"answerCount":2,"count":476,"percentage":24.0891},{"answerCount":3,"count":166,"percentage":8.4008},{"answerCount":4,"count":69,"percentage":3.4919},{"answerCount":5,"count":15,"percentage":0.7591},{"answerCount":6,"count":5,"percentage":0.253},{"answerCount":7,"count":2,"percentage":0.1012}],"max":7,"mean":1.5628,"n":1976},"editionId":"js2024","year":2024,"completion":{"count":1976,"percentageSurvey":14.1,"total":14015},"buckets":[{"id":"nextjs_issues","count":242,"index":0,"percentageQuestion":12.25,"percentageSurvey":1.73,"entity":{"name":"Next.js issues","nameHtml":"Next.js issues","nameClean":"Next.js issues","id":"nextjs_issues","entityType":"token","tags":["tokens","pain_points","js_pain_points","meta_frameworks_pain_points"]},"nestedBuckets":[{"id":"nextjs_app_router_issues","count":17,"index":0,"percentageQuestion":0.86,"percentageSurvey":0.12,"entity":{"name":"Next.js app router","nameHtml":"Next.js app router","nameClean":"Next.js app router","id":"nextjs_app_router_issues","parentId":"nextjs_issues","entityType":"token","tags":["tokens","pain_points","js_pain_points","meta_frameworks_pain_points"]}},{"id":"nextjs_cache_issues","count":9,"index":1,"percentageQuestion":0.46,"percentageSurvey":0.06,"entity":{"name":"Next.js cache","nameHtml":"Next.js cache","nameClean":"Next.js cache","id":"nextjs_cache_issues","parentId":"nextjs_issues","entityType":"token","tags":["tokens","pain_points","js_pain_points","meta_frameworks_pain_points"]}},{"id":"nextjs_13_issues","count":5,"index":2,"percentageQuestion":0.25,"percentageSurvey":0.04,"entity":{"name":"Next.js 13","nameHtml":"Next.js 13","nameClean":"Next.js 13","id":"nextjs_13_issues","parentId":"nextjs_issues","entityType":"token","tags":["tokens","pain_points","js_pain_points","meta_frameworks_pain_points"]}}]},{"id":"excessive_complexity","count":210,"index":1,"percentageQuestion":10.63,"percentageSurvey":1.5,"entity":{"name":"Excessive complexity","nameHtml":"Excessive complexity","nameClean":"Excessive complexity","id":"excessive_complexity","parentId":"cognitive_overload","entityType":"token","tags":["tokens","pain_points","common_pain_points","cognitive_overload_issues"]}},{"id":"version_updates","count":132,"index":2,"percentageQuestion":6.68,"percentageSurvey":0.94,"entity":{"name":"Breaking changes","nameHtml":"Breaking changes","nameClean":"Breaking changes","description":"Breaking changes and other updating issues","descriptionHtml":"Breaking changes and other updating issues","descriptionClean":"Breaking changes and other updating issues","id":"version_updates","entityType":"token","tags":["tokens","pain_points","common_pain_points","cognitive_overload_issues"]}},{"id":"ssr","count":112,"index":3,"percentageQuestion":5.67,"percentageSurvey":0.8,"entity":{"name":"SSR","nameHtml":"SSR","nameClean":"SSR","description":"Lack of SSR","descriptionHtml":"Lack of SSR","descriptionClean":"Lack of SSR","id":"ssr","entityType":"token","tags":["tokens","pain_points","common_pain_points","html_pain_points","using_web_components_pain_points"]}},{"id":"performance","count":87,"index":4,"percentageQuestion":4.4,"percentageSurvey":0.62,"entity":{"name":"Performance","nameHtml":"Performance","nameClean":"Performance","description":"Performance issues","descriptionHtml":"Performance issues","descriptionClean":"Performance issues","id":"performance","entityType":"token","tags":["tokens","pain_points","common_pain_points","performance_pain_points","ai_common_pain_points"]}},{"id":"lack_of_documentation","count":82,"index":5,"percentageQuestion":4.15,"percentageSurvey":0.59,"entity":{"name":"Lack of documentation","nameHtml":"Lack of documentation","nameClean":"Lack of documentation","description":"Issues due to missing, incomplete, unclear, or outdated documentation or code examples.","descriptionHtml":"Issues due to missing, incomplete, unclear, or outdated documentation or code examples.","descriptionClean":"Issues due to missing, incomplete, unclear, or outdated documentation or code examples.","id":"lack_of_documentation","parentId":"educational_issues","entityType":"token","tags":["tokens","pain_points","common_pain_points","educational_issues"]}},{"id":"deployment","count":80,"index":6,"percentageQuestion":4.05,"percentageSurvey":0.57,"entity":{"name":"Deployment","nameHtml":"Deployment","nameClean":"Deployment","id":"deployment","entityType":"token","tags":["tokens","pain_points","common_pain_points"]}},{"id":"speed_of_change","count":71,"index":7,"percentageQuestion":3.59,"percentageSurvey":0.51,"entity":{"name":"Speed of change","nameHtml":"Speed of change","nameClean":"Speed of change","description":"Features, libraries, and APIs changing too fast","descriptionHtml":"Features, libraries, and APIs changing too fast","descriptionClean":"Features, libraries, and APIs changing too fast","id":"speed_of_change","parentId":"cognitive_overload","entityType":"token","tags":["tokens","pain_points","common_pain_points","cognitive_overload_issues"]}},{"id":"server_client_issues","count":64,"index":8,"percentageQuestion":3.24,"percentageSurvey":0.46,"entity":{"name":"Server-client communication","nameHtml":"Server-client communication","nameClean":"Server-client communication","description":"Issues around server-client integration & communication, server-side rendering, etc.","descriptionHtml":"Issues around server-client integration &amp; communication, server-side rendering, etc.","descriptionClean":"Issues around server-client integration & communication, server-side rendering, etc.","id":"server_client_issues","entityType":"token","tags":["tokens","pain_points","common_pain_points"]}},{"id":"vercel","count":62,"index":9,"percentageQuestion":3.14,"percentageSurvey":0.44,"entity":{"name":"Vercel","nameHtml":"Vercel","nameClean":"Vercel","id":"vercel","entityType":"default","tags":["entities","sites","services","companies","react_usage_pain_points"],"homepage":{"url":"https://vercel.com/"}}},{"id":"too_many_choices","count":58,"index":10,"percentageQuestion":2.94,"percentageSurvey":0.41,"entity":{"name":"Choice overload","nameHtml":"Choice overload","nameClean":"Choice overload","description":"Overwhelming amount of options and choices","descriptionHtml":"Overwhelming amount of options and choices","descriptionClean":"Overwhelming amount of options and choices","id":"too_many_choices","parentId":"cognitive_overload","entityType":"token","tags":["tokens","pain_points","common_pain_points","cognitive_overload_issues","front_end_frameworks_pain_points"]}},{"id":"too_opinionated","count":47,"index":11,"percentageQuestion":2.38,"percentageSurvey":0.34,"entity":{"name":"Too opinionated","nameHtml":"Too opinionated","nameClean":"Too opinionated","id":"too_opinionated","entityType":"token","tags":["tokens","pain_points","common_pain_points"]}},{"id":"tough_learning_curve","count":44,"index":12,"percentageQuestion":2.23,"percentageSurvey":0.31,"entity":{"name":"Tough learning curve","nameHtml":"Tough learning curve","nameClean":"Tough learning curve","id":"tough_learning_curve","parentId":"educational_issues","entityType":"token","tags":["tokens","pain_points","common_pain_points","educational_issues"]}},{"id":"lock_in","count":43,"index":13,"percentageQuestion":2.18,"percentageSurvey":0.31,"entity":{"name":"Lock-in","nameHtml":"Lock-in","nameClean":"Lock-in","description":"Too much lock-in","descriptionHtml":"Too much lock-in","descriptionClean":"Too much lock-in","id":"lock_in","entityType":"token","tags":["tokens","pain_points","common_pain_points"]}},{"id":"configuration","count":41,"index":14,"percentageQuestion":2.07,"percentageSurvey":0.29,"entity":{"name":"Configuration","nameHtml":"Configuration","nameClean":"Configuration","description":"Difficulties with set-up and configuration","descriptionHtml":"Difficulties with set-up and configuration","descriptionClean":"Difficulties with set-up and configuration","id":"configuration","entityType":"token","tags":["tokens","pain_points","common_pain_points"]}},{"id":"server_components_issues","count":41,"index":15,"percentageQuestion":2.07,"percentageSurvey":0.29},{"id":"cache_issues","count":39,"index":16,"percentageQuestion":1.97,"percentageSurvey":0.28},{"id":"authentication","count":34,"index":17,"percentageQuestion":1.72,"percentageSurvey":0.24,"entity":{"name":"Authentication","nameHtml":"Authentication","nameClean":"Authentication","id":"authentication","entityType":"token","tags":["tokens","pain_points","common_pain_points"]}},{"id":"debugging","count":34,"index":18,"percentageQuestion":1.72,"percentageSurvey":0.24},{"id":"nuxt","count":34,"index":19,"percentageQuestion":1.72,"percentageSurvey":0.24,"entity":{"name":"Nuxt","nameHtml":"Nuxt","nameClean":"Nuxt","id":"nuxt","entityType":"library","tags":["entities","libraries","js_libraries","js_backend_frameworks","state_of_js_sources"],"homepage":{"url":"https://nuxt.com/"},"github":{"url":"nuxt/nuxt.js"},"npm":{"url":"https://www.npmjs.com/package/nuxt"}}},{"id":"too_much_magic","count":34,"index":20,"percentageQuestion":1.72,"percentageSurvey":0.24,"entity":{"name":"Too much magic","nameHtml":"Too much magic","nameClean":"Too much magic","id":"too_much_magic","entityType":"token","tags":["tokens","pain_points","common_pain_points"]}},{"id":"hydration","count":32,"index":21,"percentageQuestion":1.62,"percentageSurvey":0.23,"entity":{"name":"Hydration","nameHtml":"Hydration","nameClean":"Hydration","description":"Hydration issues","descriptionHtml":"Hydration issues","descriptionClean":"Hydration issues","id":"hydration","entityType":"token","tags":["tokens","pain_points","common_pain_points"]}},{"id":"routing","count":32,"index":22,"percentageQuestion":1.62,"percentageSurvey":0.23,"entity":{"name":"Routing","nameHtml":"Routing","nameClean":"Routing","id":"routing","entityType":"token","tags":["tokens","pain_points","js_pain_points","front_end_frameworks_pain_points","meta_frameworks_pain_points"]}},{"id":"dependencies","count":30,"index":23,"percentageQuestion":1.52,"percentageSurvey":0.21,"entity":{"name":"Dependencies","nameHtml":"Dependencies","nameClean":"Dependencies","description":"Too many dependencies","descriptionHtml":"Too many dependencies","descriptionClean":"Too many dependencies","id":"dependencies","entityType":"token","tags":["tokens","pain_points","common_pain_points"]}},{"id":"bloat","count":29,"index":24,"percentageQuestion":1.47,"percentageSurvey":0.21,"entity":{"name":"Bloat","nameHtml":"Bloat","nameClean":"Bloat","id":"bloat","entityType":"token","tags":["tokens","pain_points","common_pain_points"]}},{"id":"no_answer","count":12039,"index":25,"percentageQuestion":0,"percentageSurvey":85.9},{"id":"other_answers","count":1431,"index":26,"percentageQuestion":72.38,"percentageSurvey":10.24}]},{"_metadata":{"axis1Sort":{"property":"count","order":"desc"},"limit":25,"cutoff":5},"_cardinalities":{"buckets":[{"answerCount":1,"count":656,"percentage":31.0165},{"answerCount":2,"count":668,"percentage":31.5839},{"answerCount":3,"count":397,"percentage":18.7707},{"answerCount":4,"count":195,"percentage":9.2199},{"answerCount":5,"count":102,"percentage":4.8227},{"answerCount":6,"count":52,"percentage":2.4586},{"answerCount":7,"count":15,"percentage":0.7092},{"answerCount":8,"count":10,"percentage":0.4728},{"answerCount":9,"count":11,"percentage":0.5201},{"answerCount":10,"count":5,"percentage":0.2364},{"answerCount":11,"count":1,"percentage":0.0473},{"answerCount":12,"count":1,"percentage":0.0473},{"answerCount":14,"count":1,"percentage":0.0473},{"answerCount":18,"count":1,"percentage":0.0473}],"max":18,"mean":2.4463,"n":2115},"editionId":"js2025","year":2025,"completion":{"count":2110,"percentageSurvey":16.23,"total":13002},"buckets":[{"id":"cognitive_overload","count":462,"index":0,"percentageQuestion":21.9,"percentageSurvey":3.55,"entity":{"name":"Cognitive overload","nameHtml":"Cognitive overload","nameClean":"Cognitive overload","id":"cognitive_overload","entityType":"token","tags":["tokens","pain_points","common_pain_points","cognitive_overload_issues"]},"nestedBuckets":[{"id":"excessive_complexity","count":284,"index":0,"percentageQuestion":13.46,"percentageSurvey":2.18,"entity":{"name":"Excessive complexity","nameHtml":"Excessive complexity","nameClean":"Excessive complexity","id":"excessive_complexity","parentId":"cognitive_overload","entityType":"token","tags":["tokens","pain_points","common_pain_points","cognitive_overload_issues"]}},{"id":"too_many_choices","count":86,"index":1,"percentageQuestion":4.08,"percentageSurvey":0.66,"entity":{"name":"Choice overload","nameHtml":"Choice overload","nameClean":"Choice overload","description":"Overwhelming amount of options and choices","descriptionHtml":"Overwhelming amount of options and choices","descriptionClean":"Overwhelming amount of options and choices","id":"too_many_choices","parentId":"cognitive_overload","entityType":"token","tags":["tokens","pain_points","common_pain_points","cognitive_overload_issues","front_end_frameworks_pain_points"]}},{"id":"speed_of_change","count":61,"index":2,"percentageQuestion":2.89,"percentageSurvey":0.47,"entity":{"name":"Speed of change","nameHtml":"Speed of change","nameClean":"Speed of change","description":"Features, libraries, and APIs changing too fast","descriptionHtml":"Features, libraries, and APIs changing too fast","descriptionClean":"Features, libraries, and APIs changing too fast","id":"speed_of_change","parentId":"cognitive_overload","entityType":"token","tags":["tokens","pain_points","common_pain_points","cognitive_overload_issues"]}},{"id":"reinventing_the_wheel","count":13,"index":3,"percentageQuestion":0.62,"percentageSurvey":0.1,"entity":{"name":"Reinventing the wheel","nameHtml":"Reinventing the wheel","nameClean":"Reinventing the wheel","description":"Constantly having to re-learn or re-implement the same concepts","descriptionHtml":"Constantly having to re-learn or re-implement the same concepts","descriptionClean":"Constantly having to re-learn or re-implement the same concepts","id":"reinventing_the_wheel","parentId":"cognitive_overload","entityType":"token","tags":["tokens","pain_points","common_pain_points","cognitive_overload_issues"]}},{"id":"too_much_boilerplate","count":8,"index":4,"percentageQuestion":0.38,"percentageSurvey":0.06,"entity":{"name":"Excessive boilerplate","nameHtml":"Excessive boilerplate","nameClean":"Excessive boilerplate","description":"Too much boilerplate required","descriptionHtml":"Too much boilerplate required","descriptionClean":"Too much boilerplate required","id":"too_much_boilerplate","parentId":"cognitive_overload","entityType":"token","tags":["tokens","pain_points","common_pain_points"]}},{"id":"poor_learnability","count":7,"index":5,"percentageQuestion":0.33,"percentageSurvey":0.05,"entity":{"name":"Poor learnability","nameHtml":"Poor learnability","nameClean":"Poor learnability","description":"High learning curve, requires too much knowledge to get started, or too much information to memorize.","descriptionHtml":"High learning curve, requires too much knowledge to get started, or too much information to memorize.","descriptionClean":"High learning curve, requires too much knowledge to get started, or too much information to memorize.","id":"poor_learnability","parentId":"cognitive_overload","entityType":"token","tags":["tokens","pain_points","common_pain_points","cognitive_overload_issues"]}},{"id":"too_much_to_learn","count":7,"index":6,"percentageQuestion":0.33,"percentageSurvey":0.05,"entity":{"name":"Too much to learn","nameHtml":"Too much to learn","nameClean":"Too much to learn","description":"Wide API surface, too many things to learn.","descriptionHtml":"Wide API surface, too many things to learn.","descriptionClean":"Wide API surface, too many things to learn.","id":"too_much_to_learn","parentId":"cognitive_overload","entityType":"token","tags":["tokens","pain_points","common_pain_points","cognitive_overload_issues"]}},{"id":"foot_guns","count":7,"index":7,"percentageQuestion":0.33,"percentageSurvey":0.05,"entity":{"name":"Footguns","nameHtml":"Footguns","nameClean":"Footguns","description":"Features that make it too easy to commit mistakes.","descriptionHtml":"Features that make it too easy to commit mistakes.","descriptionClean":"Features that make it too easy to commit mistakes.","id":"foot_guns","parentId":"cognitive_overload","entityType":"token","tags":["tokens","pain_points","common_pain_points","cognitive_overload_issues"]}}]},{"id":"nextjs_issues","count":302,"index":1,"percentageQuestion":14.31,"percentageSurvey":2.32,"entity":{"name":"Next.js issues","nameHtml":"Next.js issues","nameClean":"Next.js issues","id":"nextjs_issues","entityType":"token","tags":["tokens","pain_points","js_pain_points","meta_frameworks_pain_points"]},"nestedBuckets":[{"id":"nextjs_vendor_lock_in_issues","count":49,"index":0,"percentageQuestion":2.32,"percentageSurvey":0.38,"entity":{"name":"Next.js vendor lock-in","nameHtml":"Next.js vendor lock-in","nameClean":"Next.js vendor lock-in","id":"nextjs_vendor_lock_in_issues","parentId":"nextjs_issues","entityType":"token","tags":["tokens","pain_points","js_pain_points","meta_frameworks_pain_points"]}},{"id":"nextjs_app_router_issues","count":17,"index":1,"percentageQuestion":0.81,"percentageSurvey":0.13,"entity":{"name":"Next.js app router","nameHtml":"Next.js app router","nameClean":"Next.js app router","id":"nextjs_app_router_issues","parentId":"nextjs_issues","entityType":"token","tags":["tokens","pain_points","js_pain_points","meta_frameworks_pain_points"]}},{"id":"nextjs_cache_issues","count":10,"index":2,"percentageQuestion":0.47,"percentageSurvey":0.08,"entity":{"name":"Next.js cache","nameHtml":"Next.js cache","nameClean":"Next.js cache","id":"nextjs_cache_issues","parentId":"nextjs_issues","entityType":"token","tags":["tokens","pain_points","js_pain_points","meta_frameworks_pain_points"]}}]},{"id":"server_client_issues","count":202,"index":2,"percentageQuestion":9.57,"percentageSurvey":1.55,"entity":{"name":"Server-client communication","nameHtml":"Server-client communication","nameClean":"Server-client communication","description":"Issues around server-client integration & communication, server-side rendering, etc.","descriptionHtml":"Issues around server-client integration &amp; communication, server-side rendering, etc.","descriptionClean":"Issues around server-client integration & communication, server-side rendering, etc.","id":"server_client_issues","entityType":"token","tags":["tokens","pain_points","common_pain_points"]},"nestedBuckets":[{"id":"server_client_boundary","count":112,"index":0,"percentageQuestion":5.31,"percentageSurvey":0.86,"entity":{"name":"Server/Client Boundary","nameHtml":"Server/Client Boundary","nameClean":"Server/Client Boundary","description":"Confusion about where code runs (server, client, or edge), blurred boundaries between them, and accidental leakage of code or data across them.","descriptionHtml":"Confusion about where code runs (server, client, or edge), blurred boundaries between them, and accidental leakage of code or data across them.","descriptionClean":"Confusion about where code runs (server, client, or edge), blurred boundaries between them, and accidental leakage of code or data across them.","id":"server_client_boundary","parentId":"server_client_issues","entityType":"token","tags":["tokens","pain_points","common_pain_points"]}},{"id":"rendering_modes","count":44,"index":1,"percentageQuestion":2.09,"percentageSurvey":0.34,"entity":{"name":"Rendering Modes","nameHtml":"Rendering Modes","nameClean":"Rendering Modes","description":"Choosing between and reasoning about SSR, SSG, ISR, CSR, streaming, and hybrid rendering, and the complexity of having so many modes.","descriptionHtml":"Choosing between and reasoning about SSR, SSG, ISR, CSR, streaming, and hybrid rendering, and the complexity of having so many modes.","descriptionClean":"Choosing between and reasoning about SSR, SSG, ISR, CSR, streaming, and hybrid rendering, and the complexity of having so many modes.","id":"rendering_modes","parentId":"server_client_issues","entityType":"token","tags":["tokens","pain_points","common_pain_points"]},"nestedBuckets":[{"id":"static_site_generation","count":12,"index":0,"percentageQuestion":0.57,"percentageSurvey":0.09,"entity":{"name":"Static Site Generation","nameHtml":"Static Site Generation","nameClean":"Static Site Generation","description":"Pain points with static site generation (SSG), build-time rendering, and static export limitations.","descriptionHtml":"Pain points with static site generation (SSG), build-time rendering, and static export limitations.","descriptionClean":"Pain points with static site generation (SSG), build-time rendering, and static export limitations.","id":"static_site_generation","parentId":"rendering_modes","entityType":"token","tags":["tokens","pain_points","common_pain_points"]}}]},{"id":"api_routes","count":19,"index":2,"percentageQuestion":0.9,"percentageSurvey":0.15,"entity":{"name":"API Routes & Middleware","nameHtml":"API Routes &amp; Middleware","nameClean":"API Routes & Middleware","description":"Limitations of a meta-framework's built-in backend features, such as API routes, route handlers, and middleware, compared with a dedicated backend.","descriptionHtml":"Limitations of a meta-framework's built-in backend features, such as API routes, route handlers, and middleware, compared with a dedicated backend.","descriptionClean":"Limitations of a meta-framework's built-in backend features, such as API routes, route handlers, and middleware, compared with a dedicated backend.","id":"api_routes","parentId":"server_client_issues","entityType":"token","tags":["tokens","pain_points","common_pain_points"]}},{"id":"ssr_hydration","count":15,"index":3,"percentageQuestion":0.71,"percentageSurvey":0.12,"entity":{"name":"SSR & hydration","nameHtml":"SSR &amp; hydration","nameClean":"SSR & hydration","description":"Performance bottlenecks related to the process of making server-rendered HTML interactive on the client using JavaScript frameworks.","descriptionHtml":"Performance bottlenecks related to the process of making server-rendered HTML interactive on the client using JavaScript frameworks.","descriptionClean":"Performance bottlenecks related to the process of making server-rendered HTML interactive on the client using JavaScript frameworks.","id":"ssr_hydration","parentId":"server_client_issues","entityType":"token","tags":["tokens","pain_points","common_pain_points"]}},{"id":"streaming","count":8,"index":4,"percentageQuestion":0.38,"percentageSurvey":0.06,"entity":{"name":"Streaming","nameHtml":"Streaming","nameClean":"Streaming","description":"Issues related to streaming HTML content from the server to the client, including browser inconsistencies, performance challenges, and hooking up interactivity to streamed content.","descriptionHtml":"Issues related to streaming HTML content from the server to the client, including browser inconsistencies, performance challenges, and hooking up interactivity to streamed content.","descriptionClean":"Issues related to streaming HTML content from the server to the client, including browser inconsistencies, performance challenges, and hooking up interactivity to streamed content.","id":"streaming","parentId":"server_client_issues","entityType":"token","tags":["tokens","pain_points","html_pain_points","audio_video_pain_points"]}},{"id":"non_js_backend_integration","count":8,"index":5,"percentageQuestion":0.38,"percentageSurvey":0.06,"entity":{"name":"Non-JS Backend Integration","nameHtml":"Non-JS Backend Integration","nameClean":"Non-JS Backend Integration","description":"Difficulty using front-end frameworks, including server-side rendering, with non-JavaScript backends such as PHP, Python, Ruby, or .NET stacks and CMSs.","descriptionHtml":"Difficulty using front-end frameworks, including server-side rendering, with non-JavaScript backends such as PHP, Python, Ruby, or .NET stacks and CMSs.","descriptionClean":"Difficulty using front-end frameworks, including server-side rendering, with non-JavaScript backends such as PHP, Python, Ruby, or .NET stacks and CMSs.","id":"non_js_backend_integration","parentId":"server_client_issues","entityType":"token","tags":["tokens","pain_points","common_pain_points"]}}]},{"id":"educational_issues","count":148,"index":3,"percentageQuestion":7.01,"percentageSurvey":1.14,"entity":{"name":"Education","nameHtml":"Education","nameClean":"Education","description":"Issues related to learning new technologies","descriptionHtml":"Issues related to learning new technologies","descriptionClean":"Issues related to learning new technologies","id":"educational_issues","entityType":"token","tags":["tokens","pain_points","common_pain_points","educational_issues"]},"nestedBuckets":[{"id":"lack_of_documentation","count":75,"index":0,"percentageQuestion":3.55,"percentageSurvey":0.58,"entity":{"name":"Lack of documentation","nameHtml":"Lack of documentation","nameClean":"Lack of documentation","description":"Issues due to missing, incomplete, unclear, or outdated documentation or code examples.","descriptionHtml":"Issues due to missing, incomplete, unclear, or outdated documentation or code examples.","descriptionClean":"Issues due to missing, incomplete, unclear, or outdated documentation or code examples.","id":"lack_of_documentation","parentId":"educational_issues","entityType":"token","tags":["tokens","pain_points","common_pain_points","educational_issues"]}},{"id":"tough_learning_curve","count":58,"index":1,"percentageQuestion":2.75,"percentageSurvey":0.45,"entity":{"name":"Tough learning curve","nameHtml":"Tough learning curve","nameClean":"Tough learning curve","id":"tough_learning_curve","parentId":"educational_issues","entityType":"token","tags":["tokens","pain_points","common_pain_points","educational_issues"]}},{"id":"lack_of_best_practices","count":7,"index":2,"percentageQuestion":0.33,"percentageSurvey":0.05,"entity":{"name":"Lack of best practices","nameHtml":"Lack of best practices","nameClean":"Lack of best practices","description":"Issues arising from the absence of clear, established best practices.","descriptionHtml":"Issues arising from the absence of clear, established best practices.","descriptionClean":"Issues arising from the absence of clear, established best practices.","id":"lack_of_best_practices","parentId":"educational_issues","entityType":"token","tags":["tokens","pain_points","common_pain_points","educational_issues"]}},{"id":"lack_of_knowledge","count":5,"index":3,"percentageQuestion":0.24,"percentageSurvey":0.04,"entity":{"name":"Lack of knowledge","nameHtml":"Lack of knowledge","nameClean":"Lack of knowledge","id":"lack_of_knowledge","parentId":"educational_issues","entityType":"token","tags":["tokens","pain_points","common_pain_points","educational_issues"]}}]},{"id":"version_updates","count":115,"index":4,"percentageQuestion":5.45,"percentageSurvey":0.88,"entity":{"name":"Breaking changes","nameHtml":"Breaking changes","nameClean":"Breaking changes","description":"Breaking changes and other updating issues","descriptionHtml":"Breaking changes and other updating issues","descriptionClean":"Breaking changes and other updating issues","id":"version_updates","entityType":"token","tags":["tokens","pain_points","common_pain_points","cognitive_overload_issues"]}},{"id":"lock_in","count":107,"index":5,"percentageQuestion":5.07,"percentageSurvey":0.82,"entity":{"name":"Lock-in","nameHtml":"Lock-in","nameClean":"Lock-in","description":"Too much lock-in","descriptionHtml":"Too much lock-in","descriptionClean":"Too much lock-in","id":"lock_in","entityType":"token","tags":["tokens","pain_points","common_pain_points"]}},{"id":"deployment","count":99,"index":6,"percentageQuestion":4.69,"percentageSurvey":0.76,"entity":{"name":"Deployment","nameHtml":"Deployment","nameClean":"Deployment","id":"deployment","entityType":"token","tags":["tokens","pain_points","common_pain_points"]},"nestedBuckets":[{"id":"deployment_adapters","count":18,"index":0,"percentageQuestion":0.85,"percentageSurvey":0.14,"entity":{"name":"Deployment Adapters","nameHtml":"Deployment Adapters","nameClean":"Deployment Adapters","description":"Needing per-platform adapters to deploy the same app to different hosts, and features that only work fully on one platform.","descriptionHtml":"Needing per-platform adapters to deploy the same app to different hosts, and features that only work fully on one platform.","descriptionClean":"Needing per-platform adapters to deploy the same app to different hosts, and features that only work fully on one platform.","id":"deployment_adapters","parentId":"deployment","entityType":"token","tags":["tokens","pain_points","common_pain_points"]}}]},{"id":"ecosystem","count":97,"index":7,"percentageQuestion":4.6,"percentageSurvey":0.75,"entity":{"name":"Ecosystem issues","nameHtml":"Ecosystem issues","nameClean":"Ecosystem issues","id":"ecosystem","entityType":"token","tags":["tokens","pain_points","common_pain_points"]},"nestedBuckets":[{"id":"framework_issues","count":39,"index":0,"percentageQuestion":1.85,"percentageSurvey":0.3,"entity":{"name":"Framework compatibility","nameHtml":"Framework compatibility","nameClean":"Framework compatibility","description":"Issues around compatibility with JS frameworks.","descriptionHtml":"Issues around compatibility with JS frameworks.","descriptionClean":"Issues around compatibility with JS frameworks.","id":"framework_issues","parentId":"ecosystem","entityType":"token","tags":["tokens","pain_points","common_pain_points"]},"nestedBuckets":[{"id":"react","count":36,"index":0,"percentageQuestion":1.71,"percentageSurvey":0.28,"entity":{"name":"React","nameHtml":"React","nameClean":"React","id":"react","parentId":"framework_issues","entityType":"library","tags":["entities","libraries","js_libraries","js_frontend_frameworks","language_pain_points"],"homepage":{"url":"https://reactjs.org/"},"github":{"url":"facebook/react"},"npm":{"url":"https://www.npmjs.com/package/react"}},"nestedBuckets":[{"id":"react_dominance","count":11,"index":0,"percentageQuestion":0.52,"percentageSurvey":0.08,"entity":{"name":"Excessive dominance","nameHtml":"Excessive dominance","nameClean":"Excessive dominance","id":"react_dominance","parentId":"react","entityType":"token","tags":["tokens","pain_points","js_pain_points","front_end_frameworks_pain_points"]}}]}]},{"id":"meta_framework_coupling","count":16,"index":1,"percentageQuestion":0.76,"percentageSurvey":0.12,"entity":{"name":"Meta-framework Coupling","nameHtml":"Meta-framework Coupling","nameClean":"Meta-framework Coupling","description":"Frameworks steering users toward a full-stack meta-framework or server-first patterns (e.g. React toward Next.js and RSC) instead of supporting standalone client-side use.","descriptionHtml":"Frameworks steering users toward a full-stack meta-framework or server-first patterns (e.g. React toward Next.js and RSC) instead of supporting standalone client-side use.","descriptionClean":"Frameworks steering users toward a full-stack meta-framework or server-first patterns (e.g. React toward Next.js and RSC) instead of supporting standalone client-side use.","id":"meta_framework_coupling","parentId":"ecosystem","entityType":"token","tags":["tokens","pain_points","common_pain_points"]}},{"id":"framework_dominance","count":14,"index":2,"percentageQuestion":0.66,"percentageSurvey":0.11,"entity":{"name":"Framework Dominance","nameHtml":"Framework Dominance","nameClean":"Framework Dominance","description":"Pain points arising from the dominance of specific JavaScript frameworks, leading to a monoculture, abstracting away platform features, and making it difficult to use or advocate for HTML-first approaches.","descriptionHtml":"Pain points arising from the dominance of specific JavaScript frameworks, leading to a monoculture, abstracting away platform features, and making it difficult to use or advocate for HTML-first approaches.","descriptionClean":"Pain points arising from the dominance of specific JavaScript frameworks, leading to a monoculture, abstracting away platform features, and making it difficult to use or advocate for HTML-first approaches.","id":"framework_dominance","parentId":"ecosystem","entityType":"token","tags":["tokens","pain_points","common_pain_points"]}},{"id":"small_ecosystem","count":11,"index":3,"percentageQuestion":0.52,"percentageSurvey":0.08,"entity":{"name":"Small Ecosystem","nameHtml":"Small Ecosystem","nameClean":"Small Ecosystem","description":"Smaller frameworks (Vue, Svelte, Solid, Lit, Qwik, …) lacking the libraries, component kits, tooling, examples, and community support that React has.","descriptionHtml":"Smaller frameworks (Vue, Svelte, Solid, Lit, Qwik, …) lacking the libraries, component kits, tooling, examples, and community support that React has.","descriptionClean":"Smaller frameworks (Vue, Svelte, Solid, Lit, Qwik, …) lacking the libraries, component kits, tooling, examples, and community support that React has.","id":"small_ecosystem","parentId":"ecosystem","entityType":"token","tags":["tokens","pain_points","common_pain_points"]}}]},{"id":"performance","count":95,"index":8,"percentageQuestion":4.5,"percentageSurvey":0.73,"entity":{"name":"Performance","nameHtml":"Performance","nameClean":"Performance","description":"Performance issues","descriptionHtml":"Performance issues","descriptionClean":"Performance issues","id":"performance","entityType":"token","tags":["tokens","pain_points","common_pain_points","performance_pain_points","ai_common_pain_points"]}},{"id":"ssr","count":92,"index":9,"percentageQuestion":4.36,"percentageSurvey":0.71,"entity":{"name":"SSR","nameHtml":"SSR","nameClean":"SSR","description":"Lack of SSR","descriptionHtml":"Lack of SSR","descriptionClean":"Lack of SSR","id":"ssr","entityType":"token","tags":["tokens","pain_points","common_pain_points","html_pain_points","using_web_components_pain_points"]}},{"id":"too_much_magic","count":87,"index":10,"percentageQuestion":4.12,"percentageSurvey":0.67,"entity":{"name":"Too much magic","nameHtml":"Too much magic","nameClean":"Too much magic","id":"too_much_magic","entityType":"token","tags":["tokens","pain_points","common_pain_points"]}},{"id":"bloat","count":83,"index":11,"percentageQuestion":3.93,"percentageSurvey":0.64,"entity":{"name":"Bloat","nameHtml":"Bloat","nameClean":"Bloat","id":"bloat","entityType":"token","tags":["tokens","pain_points","common_pain_points"]}},{"id":"too_opinionated","count":73,"index":12,"percentageQuestion":3.46,"percentageSurvey":0.56,"entity":{"name":"Too opinionated","nameHtml":"Too opinionated","nameClean":"Too opinionated","id":"too_opinionated","entityType":"token","tags":["tokens","pain_points","common_pain_points"]}},{"id":"lack_of_flexibility","count":66,"index":13,"percentageQuestion":3.13,"percentageSurvey":0.51,"entity":{"name":"Lack of flexibility","nameHtml":"Lack of flexibility","nameClean":"Lack of flexibility","id":"lack_of_flexibility","entityType":"token","tags":["tokens","pain_points","common_pain_points"]}},{"id":"vercel","count":57,"index":14,"percentageQuestion":2.7,"percentageSurvey":0.44,"entity":{"name":"Vercel","nameHtml":"Vercel","nameClean":"Vercel","id":"vercel","entityType":"default","tags":["entities","sites","services","companies","react_usage_pain_points"],"homepage":{"url":"https://vercel.com/"}}},{"id":"configuration","count":50,"index":15,"percentageQuestion":2.37,"percentageSurvey":0.38,"entity":{"name":"Configuration","nameHtml":"Configuration","nameClean":"Configuration","description":"Difficulties with set-up and configuration","descriptionHtml":"Difficulties with set-up and configuration","descriptionClean":"Difficulties with set-up and configuration","id":"configuration","entityType":"token","tags":["tokens","pain_points","common_pain_points"]}},{"id":"maintenance","count":50,"index":16,"percentageQuestion":2.37,"percentageSurvey":0.38,"entity":{"name":"Maintenance","nameHtml":"Maintenance","nameClean":"Maintenance","id":"maintenance","entityType":"token","tags":["tokens","pain_points","common_pain_points"]}},{"id":"react_server_components","count":50,"index":17,"percentageQuestion":2.37,"percentageSurvey":0.38,"entity":{"name":"React Server Components","nameHtml":"React Server Components","nameClean":"React Server Components","id":"react_server_components","entityType":"feature","tags":["entities","features","react_features","react_apis"],"homepage":{"url":"https://nextjs.org/docs/getting-started/react-essentials#server-components"},"resources":[{"url":"https://www.joshwcomeau.com/react/server-components/","title":"Making Sense of React Server Components"}]}},{"id":"debugging_issues","count":49,"index":18,"percentageQuestion":2.32,"percentageSurvey":0.38,"entity":{"name":"Debugging","nameHtml":"Debugging","nameClean":"Debugging","description":"Issues around difficulty finding and eliminating bugs, regardless of the cause.","descriptionHtml":"Issues around difficulty finding and eliminating bugs, regardless of the cause.","descriptionClean":"Issues around difficulty finding and eliminating bugs, regardless of the cause.","id":"debugging_issues","entityType":"token","tags":["tokens","pain_points","common_pain_points"]},"nestedBuckets":[{"id":"testing_issues","count":11,"index":0,"percentageQuestion":0.52,"percentageSurvey":0.08,"entity":{"name":"Testing","nameHtml":"Testing","nameClean":"Testing","description":"Things being hard to test, unclear how to test them, difficulty procuring the right tools or resources to test, etc.","descriptionHtml":"Things being hard to test, unclear how to test them, difficulty procuring the right tools or resources to test, etc.","descriptionClean":"Things being hard to test, unclear how to test them, difficulty procuring the right tools or resources to test, etc.","id":"testing_issues","parentId":"debugging_issues","entityType":"token","tags":["tokens","pain_points","common_pain_points","mobile_web_apps_pain_points","mobile_desktop_pain_points","accessibility_pain_poins"]}}]},{"id":"tooling_issues","count":46,"index":19,"percentageQuestion":2.18,"percentageSurvey":0.35,"entity":{"name":"Tooling","nameHtml":"Tooling","nameClean":"Tooling","description":"Issues around third party tools, or lack thereof, including tooling in the browser (extensions, devtools, etc.).","descriptionHtml":"Issues around third party tools, or lack thereof, including tooling in the browser (extensions, devtools, etc.).","descriptionClean":"Issues around third party tools, or lack thereof, including tooling in the browser (extensions, devtools, etc.).","id":"tooling_issues","entityType":"token","tags":["tokens","pain_points","common_pain_points","tooling_issues"]},"nestedBuckets":[{"id":"typescript_issues","count":13,"index":0,"percentageQuestion":0.62,"percentageSurvey":0.1,"entity":{"name":"TypeScript issues","nameHtml":"TypeScript issues","nameClean":"TypeScript issues","id":"typescript_issues","parentId":"tooling_issues","entityType":"token","tags":["tokens","pain_points","js_pain_points","language_pain_points","front_end_frameworks_pain_points"]}}]},{"id":"stability","count":39,"index":20,"percentageQuestion":1.85,"percentageSurvey":0.3,"entity":{"name":"Lack of stability","nameHtml":"Lack of stability","nameClean":"Lack of stability","id":"stability","entityType":"token","tags":["tokens","pain_points","common_pain_points"]}},{"id":"hydration","count":38,"index":21,"percentageQuestion":1.8,"percentageSurvey":0.29,"entity":{"name":"Hydration","nameHtml":"Hydration","nameClean":"Hydration","description":"Hydration issues","descriptionHtml":"Hydration issues","descriptionClean":"Hydration issues","id":"hydration","entityType":"token","tags":["tokens","pain_points","common_pain_points"]}},{"id":"routing","count":37,"index":22,"percentageQuestion":1.75,"percentageSurvey":0.28,"entity":{"name":"Routing","nameHtml":"Routing","nameClean":"Routing","id":"routing","entityType":"token","tags":["tokens","pain_points","js_pain_points","front_end_frameworks_pain_points","meta_frameworks_pain_points"]}},{"id":"architecture_issues","count":36,"index":23,"percentageQuestion":1.71,"percentageSurvey":0.28,"entity":{"name":"Architecture issues","nameHtml":"Architecture issues","nameClean":"Architecture issues","id":"architecture_issues","entityType":"token","tags":["tokens","pain_points","js_pain_points","front_end_frameworks_pain_points"]},"nestedBuckets":[{"id":"project_structure","count":11,"index":0,"percentageQuestion":0.52,"percentageSurvey":0.08,"entity":{"name":"Project Structure","nameHtml":"Project Structure","nameClean":"Project Structure","description":"Uncertainty or inconsistency about how to organize folders, files, and code in framework projects.","descriptionHtml":"Uncertainty or inconsistency about how to organize folders, files, and code in framework projects.","descriptionClean":"Uncertainty or inconsistency about how to organize folders, files, and code in framework projects.","id":"project_structure","parentId":"architecture_issues","entityType":"token","tags":["tokens","pain_points","js_pain_points","front_end_frameworks_pain_points"]}}]},{"id":"dependencies","count":36,"index":24,"percentageQuestion":1.71,"percentageSurvey":0.28,"entity":{"name":"Dependencies","nameHtml":"Dependencies","nameClean":"Dependencies","description":"Too many dependencies","descriptionHtml":"Too many dependencies","descriptionClean":"Too many dependencies","id":"dependencies","entityType":"token","tags":["tokens","pain_points","common_pain_points"]}},{"id":"no_answer","count":10926,"index":25,"percentageQuestion":0,"percentageSurvey":84.03},{"id":"other_answers","count":1435,"index":26,"percentageQuestion":68.05,"percentageSurvey":11.4}]}]}}}}}},"entity_declan_chidlow":{"id":"declan_chidlow","homepage":{"url":"https://vale.rocks/"},"name":"Declan Chidlow","nameClean":"Declan Chidlow"}}},"blockErrors":{},"locale":{"completion":100,"id":"en-US","label":"English","active":true,"strings":[{"key":"homepage.hand_coded","t":"Hand-coded in Japan."},{"key":"homepage.leave_issue","t":"Report an issue"},{"key":"homepage.get_in_touch","t":"Get in touch"},{"key":"homepage.previous_years","t":"Previous Years:"},{"key":"homepage.take_survey","t":"Take Survey"},{"key":"homepage.view_results","t":"View Results"},{"key":"homepage.results_coming_soon","t":"Results Coming Soon…"},{"key":"share.help_spread","t":"Help Spread the Word!"},{"key":"homepage.other_surveys","t":"Other Surveys:"},{"key":"homepage.survey_open_now","t":"Currently Open"},{"key":"homepage.survey_preview","t":"Preview Survey"},{"key":"homepage.most_recent_survey","t":"Most Recent"},{"key":"homepage.current_survey","t":"Current Survey"},{"key":"homepage.past_surveys","t":"Past Surveys"},{"key":"homepage.view_questions","t":"View Questions"},{"key":"homepage.preview_questions","t":"Preview Questions"},{"key":"newsletter.stay_tuned","t":"Don't Miss the Next Survey!"},{"key":"newsletter.leave_your_email","t":"Leave us your email and we’ll let you know when the next survey takes place."},{"key":"newsletter.email","t":"Your Email"},{"key":"newsletter.submit","t":"Notify Me"},{"key":"newsletter.thanks","t":"Thanks for signing up!"},{"key":"languages.available_languages","t":"Available languages:"},{"key":"languages.help_us_translate","t":"Help us translate the survey in your language →"},{"key":"homepage.with_support_from","t":"With Special Support From"},{"key":"homepage.made_by_devographics","t":"Made by <a href=\"{link}\">Devographics</a>","tHtml":"Made by <a href=\"{link}\">Devographics</a>","tClean":"Made by Devographics"},{"key":"homepage.netlify_link","t":"Hosted on <a href=\"{link}\">Netlify</a>.","tHtml":"Hosted on <a href=\"{link}\">Netlify</a>.","tClean":"Hosted on Netlify."},{"key":"homepage.join_discord","t":"Join us on <a href=\"{link}\">Discord</a>.","tHtml":"Join us on <a href=\"{link}\">Discord</a>.","tClean":"Join us on Discord."},{"key":"homepage.astro_link","t":"Powered by [Astro](https://astro.build/)","tHtml":"Powered by <a href=\"https://astro.build/\">Astro</a>","tClean":"Powered by Astro"},{"key":"creators.heading","t":"Creators We Support"},{"key":"creators.description","t":"Our surveys are only possible because of the developer community's ongoing support, and it's only natural that we also give back when we can. \n\n\nThese are some of the awesome content creators and organizations we support financially, in exchange for raising awareness around the surveys.","tHtml":"<p>Our surveys are only possible because of the developer community's ongoing support, and it's only natural that we also give back when we can. </p>\n<p>These are some of the awesome content creators and organizations we support financially, in exchange for raising awareness around the surveys.</p>\n","tClean":"Our surveys are only possible because of the developer community's ongoing support, and it's only natural that we also give back when we can. \nThese are some of the awesome content creators and organizations we support financially, in exchange for raising awareness around the surveys.\n"},{"key":"creators.stephanie_walter.description","t":"Stéphanie Walter is an accomplished UX Researcher, Designer, and Writer living in Luxembourg with a knack for making otherwise complex topics clear and easy to understand."},{"key":"creators.afor_digital.description","t":"Afor is a key figure in the Spanish-language web development streaming community, and her talent for making programming content compelling have led to her well-deserved success."},{"key":"creators.shruti_kapoor.description","t":"Between blogging, producing YouTube videos, speaking at conferences, and generally being an all-around great person, Shruti has been a mainstay of the React ecosystem for a while now."},{"key":"creators.codebar.description","t":"Codebar is an amazing organization that puts together workshops that would usually cost thousands of dollars, and makes them available for free online in order to build a more inclusive developer community."},{"key":"calendar.heading","t":"{currentYear} Surveys"},{"key":"calendar.feedbackAt","t":"Feedback start"},{"key":"calendar.startedAt","t":"Survey start"},{"key":"calendar.endedAt","t":"Survey end"},{"key":"calendar.releasedAt","t":"Results release"},{"key":"calendar.past_editions","t":"Past Surveys"},{"key":"calendar.ongoing_editions","t":"Ongoing Surveys"},{"key":"calendar.upcoming_editions","t":"Upcoming Surveys"},{"key":"calendar.no_editions","t":"No surveys."},{"key":"calendar.give_feedback","t":"Suggest questions →"},{"key":"calendar.take_survey","t":"Take survey →"},{"key":"calendar.view_results","t":"View results →"},{"key":"general.why_create_account","t":"Why do I need to create an account?"},{"key":"general.create_account_reasons","t":"We ask you to create an account in order to:\n- Avoid duplicate responses\n- Give you access to your data\n- Save your session as you go\n- Notify you when results are live","tHtml":"<p>We ask you to create an account in order to:</p>\n<ul>\n<li>Avoid duplicate responses</li>\n<li>Give you access to your data</li>\n<li>Save your session as you go</li>\n<li>Notify you when results are live</li>\n</ul>\n","tClean":"We ask you to create an account in order to:\n\nAvoid duplicate responses\nGive you access to your data\nSave your session as you go\nNotify you when results are live\n\n"},{"key":"general.survey_closed_detailed","t":"Sorry, the survey is now closed! You can still review your data but you won't be able to modify it."},{"key":"general.survey_read_only","t":"You are currently viewing this survey in read-only mode."},{"key":"general.survey_preview","t":"This survey is in **preview mode**. Its questions are subject to change, and any data you input now **will be deleted** when the survey actually starts.","tHtml":"This survey is in <strong>preview mode</strong>. Its questions are subject to change, and any data you input now <strong>will be deleted</strong> when the survey actually starts.","tClean":"This survey is in preview mode. Its questions are subject to change, and any data you input now will be deleted when the survey actually starts."},{"key":"general.survey_feedback","t":"Leave feedback"},{"key":"general.survey_read_only_back","t":"<a href=\"{link}\">Go back</a> to the main survey page to start or resume a session.","tHtml":"<a href=\"{link}\">Go back</a> to the main survey page to start or resume a session.","tClean":"Go back to the main survey page to start or resume a session."},{"key":"general.take_survey","t":"Take the {name} survey"},{"key":"options.na","t":"🚫 None"},{"key":"general.open_surveys","t":"Open Surveys"},{"key":"general.no_open_surveys","t":"No surveys are currently open."},{"key":"general.closed_surveys","t":"Closed Surveys"},{"key":"general.no_closed_surveys","t":"No surveys are currently closed."},{"key":"general.preview_surveys","t":"Preview Surveys"},{"key":"general.no_preview_surveys","t":"No surveys available to preview."},{"key":"general.start_survey","t":"Start Survey »"},{"key":"general.continue_survey","t":"Continue Survey »"},{"key":"general.completion","t":"{completion}% completed"},{"key":"general.started_on","t":"Started on {createdAt}"},{"key":"general.last_modified_on","t":"Last modified on {updatedAt}"},{"key":"general.review_survey","t":"Review Survey »"},{"key":"general.review_answers","t":"Review Answers »"},{"key":"general.preview_survey","t":"Preview Survey »"},{"key":"general.finish_survey","t":"Finish Survey"},{"key":"general.next_section","t":"Next section"},{"key":"general.previous_section","t":"Previous section"},{"key":"general.survey_closed","t":"This survey is now closed."},{"key":"general.survey_closed_on","t":"This survey closed on {endedAt}."},{"key":"general.survey_results","t":"View Survey Results »"},{"key":"general.surveys_available_languages","t":"Surveys available in:"},{"key":"general.help_us_translate","t":"Help us translate the surveys »"},{"key":"general.translators","t":"Translators"},{"key":"general.translation_help","t":"Translation Help"},{"key":"general.newly_added","t":"Newly added to the survey this year"},{"key":"general.new","t":"New"},{"key":"general.devographics_banner","t":"<a href=\"https://www.devographics.com/\" target=\"_blank\">Devographics</a> is the new name of the collective running the State of JavaScript, CSS, and GraphQL surveys.","tHtml":"<a href=\"https://www.devographics.com/\" target=\"_blank\">Devographics</a> is the new name of the collective running the State of JavaScript, CSS, and GraphQL surveys.","tClean":"Devographics is the new name of the collective running the State of JavaScript, CSS, and GraphQL surveys."},{"key":"general.start_date","t":"Start Date"},{"key":"general.end_date","t":"End Date"},{"key":"general.number_of_respondents","t":"Respondents"},{"key":"general.survey_archive","t":"Survey Archive"},{"key":"general.review_questions","t":"Review Questions"},{"key":"general.get_data","t":"Get Data"},{"key":"general.download_data","t":"Download"},{"key":"credits.thanks","t":"Special Thanks"},{"key":"credits.contributors","t":"Contributors"},{"key":"credits.contributors.description","t":"Special thanks to the following people for helping us design the survey."},{"key":"credits.accessibility","t":"Accessibility Consulting"},{"key":"credits.survey_design","t":"Survey Design"},{"key":"credits.logo_design","t":"Logo Design"},{"key":"credits.mobile_testing","t":"Mobile Testing"},{"key":"credits.data_visualizations","t":"Data Visualizations"},{"key":"credits.repo_architecture","t":"Repo Architecture"},{"key":"credits.code_refactoring","t":"Code Refactoring"},{"key":"credits.data_processing","t":"Data Processing"},{"key":"credits.back_end_development","t":"Back-End Development"},{"key":"credits.survey_review","t":"Survey Review"},{"key":"credits.conclusion","t":"Conclusion"},{"key":"general.support_from","t":"With Support From"},{"key":"general.privacy_policy","t":"Privacy Policy"},{"key":"general.leave_issue","t":"Questions? Found a bug? <a href=\"{link}\" target=\"_blank\">Report an issue</a>.","tHtml":"Questions? Found a bug? <a href=\"{link}\" target=\"_blank\">Report an issue</a>.","tClean":"Questions? Found a bug? Report an issue."},{"key":"general.leave_issue2","t":"Report an issue"},{"key":"general.emoji_icons","t":"Emoji icons by <a target=\"_blank\" rel=\"noreferrer\" href=\"https://icons8.com\">Icons8</a>","tHtml":"Emoji icons by <a target=\"_blank\" href=\"https://icons8.com\">Icons8</a>","tClean":"Emoji icons by Icons8"},{"key":"general.table_of_contents","t":"{sectionCount} sections ({completion}% completed)"},{"key":"general.all_questions_optional","t":"Note: all questions are optional, reaching 100% completion is not required."},{"key":"general.data_is_saved","t":"Your data is saved whenever you navigate to the previous or next section."},{"key":"general.close_nav","t":"Close menu"},{"key":"general.open_nav","t":"Open menu"},{"key":"general.more_actions","t":"More actions"},{"key":"general.skip_to_content","t":"Skip to content"},{"key":"general.back","t":"Back"},{"key":"general.back_to_survey","t":"Back to survey"},{"key":"general.thanks","t":"Thanks for filling out the survey! Your data is saved.\n\nAlso, you can help us get the word out by sharing this survey. Every bit counts, and it'll help make our data even more representative:","tHtml":"<p>Thanks for filling out the survey! Your data is saved.</p>\n<p>Also, you can help us get the word out by sharing this survey. Every bit counts, and it'll help make our data even more representative:</p>\n","tClean":"Thanks for filling out the survey! Your data is saved.\nAlso, you can help us get the word out by sharing this survey. Every bit counts, and it'll help make our data even more representative:\n"},{"key":"general.thanks1","t":"Thanks for filling out the survey! Your data is saved."},{"key":"general.thanks2","t":"Help us get the word out by sharing this survey! Every bit counts, and it'll help make our data even more representative."},{"key":"thanks.learn_more_about","t":"Some of the features you might want to learn more about:"},{"key":"thanks.knowledge_score","t":"Knowledge Score"},{"key":"thanks.features_score","t":"Features Score"},{"key":"thanks.quiz_score","t":"Quiz Score"},{"key":"thanks.score_statistics","t":"Of the {total} features mentioned in the survey, you have used {usage_count} and heard of {awareness_count} more, which puts you in the top {knowledgeRankingFromTop} of all respondents. Well done!"},{"key":"thanks.score_statistics_noranking","t":"Of the {total} features mentioned in the survey, you have used {usage_count} and heard of {awareness_count} more. Well done!"},{"key":"thanks.points","t":"points"},{"key":"thanks.score_awareness_explanation","t":"For fairness, this percentage is calculated over only the {awareness_total} features you could express you knew"},{"key":"thanks.share_on_twitter","t":"Share on Twitter"},{"key":"thanks.share_on_x","t":"Share on X"},{"key":"thanks.share_score_message","t":"I got a {score} points knowledge score on this year’s #{hashtag} survey! I have used {usage_count} features, and knew {awareness_count} more, placing me in the top {rank}% of all respondents. Can you beat my score? {shareUrl}"},{"key":"share.twitter","t":"Share on Twitter"},{"key":"share.x","t":"Share on X"},{"key":"share.bluesky","t":"Share on Bluesky"},{"key":"share.mastodon","t":"Share on Mastodon"},{"key":"share.facebook","t":"Share on Facebook"},{"key":"share.linkedin","t":"Share on LinkedIn"},{"key":"share.email","t":"Share by email"},{"key":"share.image","t":"Get image"},{"key":"share.link","t":"Link to section"},{"key":"share.url","t":"Copy link"},{"key":"general.share_subject","t":"{surveyName} survey"},{"key":"general.share_text","t":"Go take the {surveyName} survey if you have a minute! {link}"},{"key":"forms.select_option","t":"Select option"},{"key":"forms.clear_field","t":"Clear question"},{"key":"forms.more_options","t":"Show more…"},{"key":"forms.less_options","t":"Show less"},{"key":"sponsors.with_support_from","t":"With Special Support From"},{"key":"sponsors.our_partners","t":"Our Partners"},{"key":"sponsors.become_partner","t":"Become a partner"},{"key":"notfound.title","t":"404 Not Found"},{"key":"notfound.description","t":"Sorry, we couldn't find what you were looking for."},{"key":"general.join_discord","t":"Join us on <a href=\"{link}\">Discord</a>.","tHtml":"Join us on <a href=\"{link}\">Discord</a>.","tClean":"Join us on Discord."},{"key":"general.translator_mode","t":"Press option/alt to enable translator mode."},{"key":"general.charts_nivo","t":"Charts built with <a href=\"{link}\">Nivo</a>.","tHtml":"Charts built with <a href=\"{link}\">Nivo</a>.","tClean":"Charts built with Nivo."},{"key":"general.made_by_devographics","t":"Made by <a href=\"{link}\">Devographics</a>","tHtml":"Made by <a href=\"{link}\">Devographics</a>","tClean":"Made by Devographics"},{"key":"general.view_code_example","t":"View Code Example"},{"key":"general.feature_code_example","t":"**{featureName}** Code Example","tHtml":"<strong>{featureName}</strong> Code Example","tClean":"{featureName} Code Example"},{"key":"general.code_example","t":"Code Example"},{"key":"general.language_code","t":"{language} Code"},{"key":"nav.surveys","t":"Surveys"},{"key":"nav.account","t":"Account"},{"key":"sections.overview.title","t":"Overview"},{"key":"sections.user_info.title","t":"About You"},{"key":"sections.user_info.description","t":"Let's get to know the real you."},{"key":"sections.features.title","t":"Features"},{"key":"sections.features.description","t":"Syntax, keywords, and other language features."},{"key":"sections.resources.title","t":"Resources"},{"key":"sections.resources.description","t":"What resources do you consult?"},{"key":"sections.opinions.title","t":"Opinions"},{"key":"sections.opinions.description","t":"How do you feel about the state of things?"},{"key":"opinions.opinions_intro","t":"For the following questions, let us know how much you agree with each statement."},{"key":"sections.other_tools.title","t":"Other Tools"},{"key":"sections.report.title","t":"Trend Report"},{"key":"sections.usage.title","t":"Usage"},{"key":"sections.finish.title","t":"Finish Survey"},{"key":"sections.finish.description","t":"Finish the survey"},{"key":"sections._external_data.title","t":"External Data"},{"key":"sections._external_data.description","t":"Data from external sources"},{"key":"options.0_100_scale.0","t":"0%"},{"key":"options.0_100_scale.1","t":"12.5%"},{"key":"options.0_100_scale.2","t":"25%"},{"key":"options.0_100_scale.3","t":"37.5%"},{"key":"options.0_100_scale.4","t":"50%"},{"key":"options.0_100_scale.5","t":"62.5%"},{"key":"options.0_100_scale.6","t":"75%"},{"key":"options.0_100_scale.7","t":"87.5%"},{"key":"options.0_100_scale.8","t":"100%"},{"key":"options.experience.title","t":"Experience"},{"key":"options.other","t":"Other…"},{"key":"options.other.placeholder","t":"Other option not mentioned above"},{"key":"options.other.placeholder.multiple","t":"Other options not mentioned above, comma-separated"},{"key":"options.features.never_heard","t":"<span aria-hidden=\"true\">🤷</span> Never heard of it/Not sure what it is","tHtml":"<span aria-hidden=\"true\">🤷</span> Never heard of it/Not sure what it is","tClean":"🤷 Never heard of it/Not sure what it is"},{"key":"options.features.heard","t":"<span aria-hidden=\"true\">✅</span> Know what it is, but haven't used it","tHtml":"<span aria-hidden=\"true\">✅</span> Know what it is, but haven't used it","tClean":"✅ Know what it is, but haven't used it"},{"key":"options.features.used","t":"<span aria-hidden=\"true\">👍</span> I've used it","tHtml":"<span aria-hidden=\"true\">👍</span> I've used it","tClean":"👍 I've used it"},{"key":"options.features2.never_heard","t":"<span class=\"option-chip option-main option-main-never_heard\">Never heard of it/Not sure what it is</option>","tHtml":"<span class=\"option-chip option-main option-main-never_heard\">Never heard of it/Not sure what it is</span>","tClean":"Never heard of it/Not sure what it is"},{"key":"options.features2.interested","t":"<span class=\"option-chip option-main option-main-heard\">Heard of it</span> » <span class=\"option-chip option-positive\">Interested</span>","tHtml":"<span class=\"option-chip option-main option-main-heard\">Heard of it</span> » <span class=\"option-chip option-positive\">Interested</span>","tClean":"Heard of it » Interested"},{"key":"options.features2.not_interested","t":"<span class=\"option-chip option-main option-main-heard\">Heard of it</span> » <span class=\"option-chip option-negative\">Not interested</span>","tHtml":"<span class=\"option-chip option-main option-main-heard\">Heard of it</span> » <span class=\"option-chip option-negative\">Not interested</span>","tClean":"Heard of it » Not interested"},{"key":"options.features2.used_positive","t":"<span class=\"option-chip option-main option-main-used\">Used it</span> » <span class=\"option-chip option-positive\">Positive experience</span>","tHtml":"<span class=\"option-chip option-main option-main-used\">Used it</span> » <span class=\"option-chip option-positive\">Positive experience</span>","tClean":"Used it » Positive experience"},{"key":"options.features2.used_negative","t":"<span class=\"option-chip option-main option-main-used\">Used it</span> » <span class=\"option-chip option-negative\">Negative experience</span>","tHtml":"<span class=\"option-chip option-main option-main-used\">Used it</span> » <span class=\"option-chip option-negative\">Negative experience</span>","tClean":"Used it » Negative experience"},{"key":"options.features.na","t":"None"},{"key":"options.features.never_heard.short","t":"Never heard of it"},{"key":"options.features.heard.short","t":"Heard of it"},{"key":"options.features.used.short","t":"Used it"},{"key":"options.experience.never_heard","t":"Never heard of it"},{"key":"options.experience.heard","t":"Heard of it"},{"key":"options.experience.used","t":"Used it"},{"key":"options.experience.never_heard.short","t":"Never heard of it"},{"key":"options.experience.heard.short","t":"Heard of it"},{"key":"options.experience.used.short","t":"Used it"},{"key":"options.features.never_heard.label","t":"Never heard of it/Not sure what it is"},{"key":"options.features.heard.label","t":"Know what it is, but haven't used it"},{"key":"options.features.used.label","t":"Used it"},{"key":"options.features.never_heard.label.short","t":"Never heard of it"},{"key":"options.features.heard.label.short","t":"Heard of it"},{"key":"options.features.used.label.short","t":"Used it"},{"key":"options.experience.never_heard.label.short","t":"Never heard of it"},{"key":"options.experience.heard.label.short","t":"Heard of it"},{"key":"options.experience.used.label.short","t":"Used it"},{"key":"options.experience.never_heard.description","t":"Respondents who have never heard about an item."},{"key":"options.experience.heard.description","t":"Respondents who have heard about an item, but haven't used it."},{"key":"options.experience.used.description","t":"Respondents who have used an item."},{"key":"options.sentiment.title","t":"Sentiment"},{"key":"options.sentiment.positive.label","t":"Positive Sentiment"},{"key":"options.sentiment.neutral.label","t":"Neutral Sentiment"},{"key":"options.sentiment.negative.label","t":"Negative Sentiment"},{"key":"options.sentiment.never_heard.positive.label","t":"Interested"},{"key":"options.sentiment.never_heard.negative.label","t":"Not interested"},{"key":"options.sentiment.heard.positive.label","t":"Interested"},{"key":"options.sentiment.heard.negative.label","t":"Not interested"},{"key":"options.sentiment.used.positive.label","t":"Positive experience"},{"key":"options.sentiment.used.negative.label","t":"Negative experience"},{"key":"options.sentiment.positive.label.short","t":"Positive"},{"key":"options.sentiment.neutral.label.short","t":"Neutral"},{"key":"options.sentiment.negative.label.short","t":"Negative"},{"key":"options.sentiment.positive.short","t":"Positive"},{"key":"options.sentiment.neutral.short","t":"Neutral"},{"key":"options.sentiment.negative.short","t":"Negative"},{"key":"options.sentiment.never_heard.positive.label.short","t":"Interested"},{"key":"options.sentiment.never_heard.negative.label.short","t":"Not interested"},{"key":"options.sentiment.heard.positive.label.short","t":"Interested"},{"key":"options.sentiment.heard.negative.label.short","t":"Not interested"},{"key":"options.sentiment.used.positive.label.short","t":"Positive experience"},{"key":"options.sentiment.used.negative.label.short","t":"Negative experience"},{"key":"options.sentiment.positive.description","t":"Respondents who are interested in learning more about a technology; or are willing to use it again."},{"key":"options.sentiment.neutral.description","t":"Responents who did not indicate any sentiment about a technology."},{"key":"options.sentiment.negative.description","t":"Respondents who are not interested in learning more about a technology; or have used it and had a negative experience."},{"key":"options.experience.comments","t":"Comments"},{"key":"options.patterns.use_never","t":"Almost always avoid"},{"key":"options.patterns.use_sparingly","t":"Use sparingly"},{"key":"options.patterns.use_neutral","t":"Neutral"},{"key":"options.patterns.use_frequently","t":"Use frequently"},{"key":"options.patterns.use_always","t":"Use as much as I can"},{"key":"options.tools.never_heard","t":"<span aria-hidden=\"true\">🤷</span> Never heard of it/Not sure what it is","tHtml":"<span aria-hidden=\"true\">🤷</span> Never heard of it/Not sure what it is","tClean":"🤷 Never heard of it/Not sure what it is"},{"key":"options.tools.interested","t":"<span aria-hidden=\"true\">✅</span> Heard of it > Would like to learn","tHtml":"<span aria-hidden=\"true\">✅</span> Heard of it &gt; Would like to learn","tClean":"✅ Heard of it > Would like to learn"},{"key":"options.tools.not_interested","t":"<span aria-hidden=\"true\">🚫</span> Heard of it > Not interested","tHtml":"<span aria-hidden=\"true\">🚫</span> Heard of it &gt; Not interested","tClean":"🚫 Heard of it > Not interested"},{"key":"options.tools.would_use","t":"<span aria-hidden=\"true\">👍</span> Used it > Would use again","tHtml":"<span aria-hidden=\"true\">👍</span> Used it &gt; Would use again","tClean":"👍 Used it > Would use again"},{"key":"options.tools.would_not_use","t":"<span aria-hidden=\"true\">👎</span> Used it > Would not use again","tHtml":"<span aria-hidden=\"true\">👎</span> Used it &gt; Would not use again","tClean":"👎 Used it > Would not use again"},{"key":"options.tools.never_heard.legend","t":"Never heard of it/Not sure what it is"},{"key":"options.tools.interested.legend","t":"Heard of it > Would like to learn","tHtml":"Heard of it &gt; Would like to learn","tClean":"Heard of it > Would like to learn"},{"key":"options.tools.not_interested.legend","t":"Heard of it > Not interested","tHtml":"Heard of it &gt; Not interested","tClean":"Heard of it > Not interested"},{"key":"options.tools.would_use.legend","t":"Used it > Would use again","tHtml":"Used it &gt; Would use again","tClean":"Used it > Would use again"},{"key":"options.tools.would_not_use.legend","t":"Used it > Would not use again","tHtml":"Used it &gt; Would not use again","tClean":"Used it > Would not use again"},{"key":"options.tools.never_heard.short","t":"Never heard"},{"key":"options.tools.interested.short","t":"Interested"},{"key":"options.tools.not_interested.short","t":"Not interested"},{"key":"options.tools.would_use.short","t":"Would use again"},{"key":"options.tools.would_not_use.short","t":"Would not use"},{"key":"options.happiness.0","t":"Very Unhappy"},{"key":"options.happiness.1","t":"Unhappy"},{"key":"options.happiness.2","t":"Neutral"},{"key":"options.happiness.3","t":"Happy"},{"key":"options.happiness.4","t":"Very Happy"},{"key":"options.happiness.0.short","t":"Very Unhappy"},{"key":"options.happiness.1.short","t":"Unhappy"},{"key":"options.happiness.2.short","t":"Neutral"},{"key":"options.happiness.3.short","t":"Happy"},{"key":"options.happiness.4.short","t":"Very Happy"},{"key":"options.opinions.0","t":"Strongly Disagree"},{"key":"options.opinions.1","t":"Disagree"},{"key":"options.opinions.2","t":"Neutral"},{"key":"options.opinions.3","t":"Agree"},{"key":"options.opinions.4","t":"Strongly Agree"},{"key":"options.age.range_less_than_10","t":"10 years old or under"},{"key":"options.age.range_10_18","t":"11-18 years old"},{"key":"options.age.range_18_24","t":"19-24 years old"},{"key":"options.age.range_25_34","t":"25-34 years old"},{"key":"options.age.range_35_44","t":"35-44 years old"},{"key":"options.age.range_45_54","t":"45-54 years old"},{"key":"options.age.range_55_64","t":"55-64 years old"},{"key":"options.age.range_more_than_65","t":"65 years or older"},{"key":"options.age.range_less_than_10.short","t":"<10","tHtml":"&lt;10","tClean":"<10"},{"key":"options.age.range_10_18.short","t":"11-18"},{"key":"options.age.range_18_24.short","t":"19-24"},{"key":"options.age.range_25_34.short","t":"25-34"},{"key":"options.age.range_35_44.short","t":"35-44"},{"key":"options.age.range_45_54.short","t":"45-54"},{"key":"options.age.range_55_64.short","t":"55-64"},{"key":"options.age.range_more_than_65.short","t":">65","tHtml":"&gt;65","tClean":">65"},{"key":"options.age.range_under_20","t":"19 years old or younger"},{"key":"options.age.range_20_29","t":"20-29 years old"},{"key":"options.age.range_30_39","t":"30-39 years old"},{"key":"options.age.range_40_49","t":"40-49 years old"},{"key":"options.age.range_50_59","t":"50-59 years old"},{"key":"options.age.range_over_60","t":"60 years old or older"},{"key":"options.age.range_under_20.short","t":"<20","tHtml":"&lt;20","tClean":"<20"},{"key":"options.age.range_20_29.short","t":"20-29"},{"key":"options.age.range_30_39.short","t":"30-39"},{"key":"options.age.range_40_49.short","t":"40-49"},{"key":"options.age.range_50_59.short","t":"50-59"},{"key":"options.age.range_over_60.short","t":">60","tHtml":"&gt;60","tClean":">60"},{"key":"options.years_of_experience.range_less_than_1","t":"Less than one year"},{"key":"options.years_of_experience.range_1_2","t":"1 to 2 years"},{"key":"options.years_of_experience.range_2_5","t":"3 to 5 years"},{"key":"options.years_of_experience.range_5_10","t":"6 to 10 years"},{"key":"options.years_of_experience.range_10_20","t":"11 to 20 years"},{"key":"options.years_of_experience.range_more_than_20","t":"More than 20 years"},{"key":"options.years_of_experience.range_less_than_1.short","t":"<1 years","tHtml":"&lt;1 years","tClean":"<1 years"},{"key":"options.years_of_experience.range_1_2.short","t":"1-2 years"},{"key":"options.years_of_experience.range_2_5.short","t":"3-5 years"},{"key":"options.years_of_experience.range_5_10.short","t":"6-10 years"},{"key":"options.years_of_experience.range_10_20.short","t":"11-20 years"},{"key":"options.years_of_experience.range_more_than_20.short","t":">20 years","tHtml":"&gt;20 years","tClean":">20 years"},{"key":"options.years_of_experience.range_under_1","t":"Less than one year"},{"key":"options.years_of_experience.range_1_3","t":"1 to 3 years"},{"key":"options.years_of_experience.range_4_6","t":"4 to 6 years"},{"key":"options.years_of_experience.range_7_9","t":"7 to 9 years"},{"key":"options.years_of_experience.range_10_12","t":"10 to 12 years"},{"key":"options.years_of_experience.range_13_15","t":"13 to 15 years"},{"key":"options.years_of_experience.range_16_20","t":"16 to 20 years"},{"key":"options.years_of_experience.range_over_20","t":"More than 20 years"},{"key":"options.years_of_experience.range_under_1.short","t":"<1 years","tHtml":"&lt;1 years","tClean":"<1 years"},{"key":"options.years_of_experience.range_1_3.short","t":"1-3 years"},{"key":"options.years_of_experience.range_4_6.short","t":"4-6 years"},{"key":"options.years_of_experience.range_7_9.short","t":"7-9 years"},{"key":"options.years_of_experience.range_10_12.short","t":"10-12 years"},{"key":"options.years_of_experience.range_13_15.short","t":"13-15 years"},{"key":"options.years_of_experience.range_16_20.short","t":"16-20 years"},{"key":"options.years_of_experience.range_over_20.short","t":">20 years","tHtml":"&gt;20 years","tClean":">20 years"},{"key":"options.years_of_experience.range_0_4","t":"0-4 years"},{"key":"options.years_of_experience.range_5_9","t":"5-9 years"},{"key":"options.years_of_experience.range_10_14","t":"10-14 years"},{"key":"options.years_of_experience.range_15_19","t":"15-19 years"},{"key":"options.years_of_experience.range_20_24","t":"20-24 years"},{"key":"options.years_of_experience.range_25_29","t":"25-29 years"},{"key":"options.years_of_experience.range_over_30","t":"Over 30 years"},{"key":"options.years.range_0_4","t":"0-4 years"},{"key":"options.years.range_5_9","t":"5-9 years"},{"key":"options.years.range_10_14","t":"10-14 years"},{"key":"options.years.range_15_19","t":"15-19 years"},{"key":"options.years.range_20_24","t":"20-24 years"},{"key":"options.years.range_25_29","t":"25-29 years"},{"key":"options.years.range_over_30","t":"Over 30 years"},{"key":"options.company_size.na","t":"🚫 Not Applicable"},{"key":"options.company_size.range_1","t":"Just me"},{"key":"options.company_size.range_1_5","t":"2 to 5 people"},{"key":"options.company_size.range_5_10","t":"6 to 10 people"},{"key":"options.company_size.range_10_20","t":"11 to 20 people"},{"key":"options.company_size.range_20_50","t":"21 to 50 people"},{"key":"options.company_size.range_50_100","t":"51 to 100 people"},{"key":"options.company_size.range_100_1000","t":"101 to 1000 people"},{"key":"options.company_size.range_more_than_1000","t":"More than 1000 people"},{"key":"options.company_size.na.short","t":"N/A"},{"key":"options.company_size.range_1.short","t":"1"},{"key":"options.company_size.range_1_5.short","t":"2-5"},{"key":"options.company_size.range_5_10.short","t":"6-10"},{"key":"options.company_size.range_10_20.short","t":"11-20"},{"key":"options.company_size.range_20_50.short","t":"21-50"},{"key":"options.company_size.range_50_100.short","t":"51-100"},{"key":"options.company_size.range_100_1000.short","t":"101-1000"},{"key":"options.company_size.range_more_than_1000.short","t":"1000+"},{"key":"options.yearly_salary.na","t":"🚫 Not Applicable"},{"key":"options.yearly_salary.range_work_for_free","t":"I work for free"},{"key":"options.yearly_salary.range_0_10","t":"$0k-$10k"},{"key":"options.yearly_salary.range_10_30","t":"$10k-$30k"},{"key":"options.yearly_salary.range_30_50","t":"$30k-$50k"},{"key":"options.yearly_salary.range_50_100","t":"$50k-$100k"},{"key":"options.yearly_salary.range_100_200","t":"$100k-$200k"},{"key":"options.yearly_salary.range_more_than_200","t":"More than $200k"},{"key":"options.yearly_salary.range_0_20","t":"$0k-$20k"},{"key":"options.yearly_salary.range_20_40","t":"$20k-$40k"},{"key":"options.yearly_salary.range_40_60","t":"$40k-$60k"},{"key":"options.yearly_salary.range_60_80","t":"$60k-$80k"},{"key":"options.yearly_salary.range_80_100","t":"$80k-$100k"},{"key":"options.yearly_salary.range_100_150","t":"$100k-$150k"},{"key":"options.yearly_salary.range_150_200","t":"$150k-$200k"},{"key":"options.yearly_salary.na.short","t":"N/A"},{"key":"options.yearly_salary.range_work_for_free.short","t":"$0"},{"key":"options.yearly_salary.range_0_10.short","t":"$0-$10k"},{"key":"options.yearly_salary.range_10_30.short","t":"$10k-$30k"},{"key":"options.yearly_salary.range_30_50.short","t":"$30k-$50k"},{"key":"options.yearly_salary.range_50_100.short","t":"$50k-$100k"},{"key":"options.yearly_salary.range_100_200.short","t":"$100k-$200k"},{"key":"options.yearly_salary.range_more_than_200.short","t":">$200k","tHtml":"&gt;$200k","tClean":">$200k"},{"key":"options.proficiency.0","t":"None"},{"key":"options.proficiency.1","t":"Beginner"},{"key":"options.proficiency.2","t":"Intermediate"},{"key":"options.proficiency.3","t":"Advanced"},{"key":"options.proficiency.4","t":"Expert"},{"key":"options.gender.female","t":"Woman"},{"key":"options.gender.male","t":"Man"},{"key":"options.gender.non_binary","t":"Non-Binary or Gender Non-Conforming"},{"key":"options.gender.questioning","t":"Questioning"},{"key":"options.gender.prefer_not_to_say","t":"Prefer Not to Say"},{"key":"options.gender.not_listed","t":"Not Listed"},{"key":"options.gender.female.short","t":"Woman"},{"key":"options.gender.male.short","t":"Man"},{"key":"options.gender.non_binary.short","t":"Non-Binary or GNC"},{"key":"options.gender.questioning.short","t":"Questioning"},{"key":"options.gender.prefer_not_to_say.short","t":"Prefer Not to Say"},{"key":"options.gender.not_listed.short","t":"Not Listed"},{"key":"options.race_ethnicity.white_european","t":"White/Caucasian"},{"key":"options.race_ethnicity.south_asian","t":"South Asian"},{"key":"options.race_ethnicity.south_east_asian","t":"South East Asian"},{"key":"options.race_ethnicity.hispanic_latin","t":"Hispanic or Latin"},{"key":"options.race_ethnicity.east_asian","t":"East Asian"},{"key":"options.race_ethnicity.middle_eastern","t":"Middle Eastern"},{"key":"options.race_ethnicity.black_african","t":"Black or of African descent"},{"key":"options.race_ethnicity.multiracial","t":"Multiracial/Multiethnic"},{"key":"options.race_ethnicity.biracial","t":"Biracial"},{"key":"options.race_ethnicity.native_american_islander_australian","t":"Native American, Pacific Islander, or Indigenous Australian"},{"key":"options.race_ethnicity.not_listed","t":"Not listed"},{"key":"options.race_ethnicity.european","t":"European"},{"key":"options.race_ethnicity.indian","t":"Indian"},{"key":"options.race_ethnicity.human","t":"Human"},{"key":"options.race_ethnicity.slav","t":"Slav"},{"key":"options.race_ethnicity.north_african","t":"North African"},{"key":"options.race_ethnicity.jewish","t":"Jewish"},{"key":"options.race_ethnicity.white_european.short","t":"White"},{"key":"options.race_ethnicity.south_asian.short","t":"South Asian"},{"key":"options.race_ethnicity.south_east_asian.short","t":"SE Asian"},{"key":"options.race_ethnicity.hispanic_latin.short","t":"Hispanic/Latin"},{"key":"options.race_ethnicity.east_asian.short","t":"East Asian"},{"key":"options.race_ethnicity.middle_eastern.short","t":"Middle Eastern"},{"key":"options.race_ethnicity.black_african.short","t":"Black/African Descent"},{"key":"options.race_ethnicity.multiracial.short","t":"Multiracial"},{"key":"options.race_ethnicity.biracial.short","t":"Biracial"},{"key":"options.race_ethnicity.native_american_islander_australian.short","t":"Nat. American/Pac. Islander/Ind. Australian"},{"key":"options.race_ethnicity.not_listed.short","t":"Not listed"},{"key":"options.disability_status.na","t":"🚫 None"},{"key":"options.disability_status.visual_impairments","t":"Visual impairments"},{"key":"options.disability_status.visual_impairments.description","t":"Blindness, color blindness, etc."},{"key":"options.disability_status.hearing_impairments","t":"Hearing impairments"},{"key":"options.disability_status.hearing_impairments.description","t":"Deafness, tinnitus, etc."},{"key":"options.disability_status.mobility_impairments","t":"Mobility impairments"},{"key":"options.disability_status.mobility_impairments.description","t":"Arthritis, carpal tunnel, etc."},{"key":"options.disability_status.cognitive_impairments","t":"Cognitive impairments"},{"key":"options.disability_status.cognitive_impairments.description","t":"Anxiety, dyslexia, ADHD, etc."},{"key":"options.disability_status.neurodivergent_conditions","t":"Neurodivergent conditions"},{"key":"options.disability_status.neurodivergent_conditions.description","t":"ADHD, Autism Spectrum Disorder, dyslexia, etc."},{"key":"options.disability_status.mental_health_conditions","t":"Mental health conditions"},{"key":"options.disability_status.mental_health_conditions.description","t":"Anxiety, depression, PTSD, etc."},{"key":"options.disability_status.chronic_illnesses","t":"Chronic illness"},{"key":"options.disability_status.chronic_illnesses.description","t":"Diabetes, autoimmune disorders, etc."},{"key":"options.disability_status.not_listed","t":"Not Listed"},{"key":"options.disability_status.visual_impairments.short","t":"Visual impairments"},{"key":"options.disability_status.hearing_impairments.short","t":"Hearing impairments"},{"key":"options.disability_status.mobility_impairments.short","t":"Mobility impairments"},{"key":"options.disability_status.cognitive_impairments.short","t":"Cognitive impairments"},{"key":"options.disability_status.not_listed.short","t":"Not Listed"},{"t":"Employment Status"},{"t":"Which of the following best describes your current employment status?"},{"t":"Employed, full-time"},{"t":"Independent contractor, freelance, or self-employed"},{"t":"Employed, part-time"},{"t":"Student, full-time"},{"t":"Student, part-time"},{"t":"Not employed, but looking for work"},{"t":"Not employed, and not looking for work"},{"t":"Retired"},{"key":"options.form_factors.desktop","t":"Desktop"},{"key":"options.form_factors.keyboard_only","t":"Desktop with keyboard only"},{"key":"options.form_factors.smartphone","t":"Smartphone"},{"key":"options.form_factors.feature_phone","t":"Feature phone"},{"key":"options.form_factors.tablet","t":"Tablet"},{"key":"options.form_factors.smart_watch","t":"Smartwatch"},{"key":"options.form_factors.tv","t":"TV"},{"key":"options.form_factors.gaming_console","t":"Gaming console"},{"key":"options.form_factors.screen_reader","t":"Screen reader"},{"key":"options.form_factors.print","t":"Print"},{"key":"options.form_factors.testing_tools","t":"Testing Tools (Axe, Lighthouse, etc.)"},{"key":"options.form_factors.vision_simulator","t":"Altered Vision Simulator (color blindness, etc.)"},{"key":"options.form_factors.pdf_export","t":"PDF Export"},{"key":"options.industry_sector.ecommerce","t":"E-commerce & Retail","tHtml":"E-commerce &amp; Retail","tClean":"E-commerce & Retail"},{"key":"options.industry_sector.news_media","t":"News, Media, & Blogging","tHtml":"News, Media, &amp; Blogging","tClean":"News, Media, & Blogging"},{"key":"options.industry_sector.healthcare","t":"Healthcare"},{"key":"options.industry_sector.finance","t":"Finance"},{"key":"options.industry_sector.programming_tools","t":"Programming & Technical Tools","tHtml":"Programming &amp; Technical Tools","tClean":"Programming & Technical Tools"},{"key":"options.industry_sector.socialmedia","t":"Social Media"},{"key":"options.industry_sector.marketing_tools","t":"Marketing/Sales/Analytics Tools"},{"key":"options.industry_sector.education","t":"Education"},{"key":"options.industry_sector.real_estate","t":"Real Estate"},{"key":"options.industry_sector.government","t":"Government"},{"key":"options.industry_sector.entertainment","t":"Entertainment"},{"key":"options.industry_sector.consulting","t":"Consulting & Services","tHtml":"Consulting &amp; Services","tClean":"Consulting & Services"},{"key":"options.industry_sector.travel","t":"Travel"},{"key":"options.industry_sector.tourism","t":"Tourism"},{"key":"options.industry_sector.insurance","t":"Insurance"},{"key":"options.industry_sector.logistics","t":"Logistics"},{"key":"options.industry_sector.energy","t":"Energy"},{"key":"options.industry_sector.telecommunications","t":"Telecommunications"},{"key":"options.industry_sector.student","t":"Student"},{"key":"options.industry_sector.hospitality","t":"Hospitality"},{"key":"options.industry_sector.cyber_security","t":"Cybersecurity"},{"key":"options.industry_sector.construction","t":"Construction"},{"key":"options.industry_sector.automotive","t":"Automotive"},{"key":"options.industry_sector.agriculture","t":"Agriculture"},{"key":"options.industry_sector.transport","t":"Transportation"},{"key":"options.industry_sector.manufacturing","t":"Manufacturing"},{"key":"options.industry_sector.tech_it","t":"Tech & IT","tHtml":"Tech &amp; IT","tClean":"Tech & IT"},{"key":"options.industry_sector.human_resources","t":"Human Resources"},{"key":"options.industry_sector.sports","t":"Sports"},{"key":"options.industry_sector.gaming","t":"Gaming"},{"key":"options.industry_sector.research","t":"Research & Science","tHtml":"Research &amp; Science","tClean":"Research & Science"},{"key":"options.industry_sector.law","t":"Law"},{"key":"options.industry_sector.non_profit","t":"Non-Profit"},{"key":"options.industry_sector.art","t":"Art"},{"key":"options.industry_sector.crypto","t":"Blockchain/Cryptocurrency"},{"key":"options.industry_sector.aerospace","t":"Aerospace"},{"key":"options.industry_sector.web3","t":"Web3"},{"key":"options.industry_sector.iot","t":"IOT"},{"key":"options.industry_sector.gambling","t":"Gambling"},{"key":"options.industry_sector.blockchain","t":"Blockchain"},{"key":"options.industry_sector.design","t":"Design"},{"key":"options.industry_sector.unemployed","t":"Unemployed"},{"key":"options.industry_sector.recruiting","t":"Recruiting"},{"key":"options.industry_sector.agency","t":"Agency"},{"key":"options.industry_sector.business","t":"Business"},{"key":"options.industry_sector.communication","t":"Communication"},{"key":"options.industry_sector.security","t":"Security"},{"key":"options.industry_sector.ai","t":"Artificial Intelligence (AI)"},{"key":"options.industry_sector.advertising","t":"Advertising"},{"key":"options.industry_sector.cloud_computing","t":"Cloud Computing"},{"key":"options.industry_sector.consumer_electronics","t":"Consumer Electronics"},{"key":"options.industry_sector.food","t":"Food"},{"key":"options.industry_sector.hospitality_tourism","t":"Hospitality / Tourism"},{"key":"options.industry_sector.fashion","t":"Fashion"},{"key":"options.industry_sector.robotics","t":"Robotics"},{"key":"options.industry_sector.saas","t":"SaaS (Software as a Service)"},{"key":"options.industry_sector.automation","t":"Automation"},{"key":"options.industry_sector.industrial","t":"Industrial"},{"key":"options.industry_sector.music","t":"Music"},{"key":"options.tool_evaluation.learning_curve_documentation","t":"Documentation"},{"key":"options.tool_evaluation.learning_curve_documentation.description","t":"Is it easy to learn and/or well-documented?"},{"key":"options.tool_evaluation.momentum_popularity","t":"Hype & Momentum","tHtml":"Hype &amp; Momentum","tClean":"Hype & Momentum"},{"key":"options.tool_evaluation.momentum_popularity.description","t":"Is it currently generating a lot of buzz?"},{"key":"options.tool_evaluation.user_base_size","t":"User Base Size"},{"key":"options.tool_evaluation.user_base_size.description","t":"Is it a well-established option with a long track record?"},{"key":"options.tool_evaluation.developer_experience_tooling","t":"Developer Experience"},{"key":"options.tool_evaluation.developer_experience_tooling.description","t":"Does it have good developer tools, a large plugin ecosystem, etc.?"},{"key":"options.tool_evaluation.performance_user_experience","t":"User Experience"},{"key":"options.tool_evaluation.performance_user_experience.description","t":"Does it help you create smooth, performant user experiences?"},{"key":"options.tool_evaluation.creator_team","t":"Creator & Team","tHtml":"Creator &amp; Team","tClean":"Creator & Team"},{"key":"options.tool_evaluation.creator_team.description","t":"Is it backed by a well-known, well-funded, or experienced team?"},{"key":"options.tool_evaluation.accessibility_features","t":"Accessibility Features"},{"key":"options.tool_evaluation.accessibility_features.description","t":"Is it good at creating accessible experiences for all users?"},{"key":"options.tool_evaluation.community_inclusivity","t":"Community & Inclusivity","tHtml":"Community &amp; Inclusivity","tClean":"Community & Inclusivity"},{"key":"options.tool_evaluation.community_inclusivity.description","t":"Does it have a welcoming, vibrant community built around it?"},{"key":"options.accessibility_features.keyboard_navigation","t":"Keyboard navigation"},{"key":"options.accessibility_features.compliant_contrast","t":"WCAG-compliant contrast"},{"key":"options.accessibility_features.focus_indicators","t":"Focus indicators"},{"key":"options.accessibility_features.skip_to_content_link","t":"Skip-to-content link"},{"key":"options.accessibility_features.color_themes","t":"Color themes (dark mode, high-contrast mode, etc.)"},{"key":"options.accessibility_features.prefers_reduced_motion","t":"Prefers-reduced-motion"},{"key":"options.accessibility_features.alt_text","t":"Alt texts"},{"key":"options.accessibility_features.semantic_markup","t":"Semantic markup"},{"key":"options.accessibility_features.aria_attributes","t":"ARIA HTML attributes"},{"key":"options.first_steps.na","t":"🚫 None"},{"key":"options.first_steps.books","t":"Books"},{"key":"options.first_steps.videos","t":"Videos & screencasts","tHtml":"Videos &amp; screencasts","tClean":"Videos & screencasts"},{"key":"options.first_steps.school","t":"School & higher education","tHtml":"School &amp; higher education","tClean":"School & higher education"},{"key":"options.first_steps.courses_free","t":"Online courses (free)"},{"key":"options.first_steps.courses_paid","t":"Online courses (paid)"},{"key":"options.first_steps.podcasts","t":"Podcasts"},{"key":"options.first_steps.bootcamp","t":"Coding bootcamp"},{"key":"options.first_steps.on_the_job","t":"On-the-job training"},{"key":"options.first_steps.self_directed","t":"Self-directed learning (Google, Stack Overflow, etc.)"},{"key":"options.first_steps.mentoring","t":"Mentoring"},{"key":"options.first_steps.documentation","t":"Documentation"},{"key":"options.first_steps.blogs","t":"Blogs"},{"key":"options.first_steps.view_source","t":"View Source"},{"key":"options.first_steps.trial_and_error","t":"Trial & Error","tHtml":"Trial &amp; Error","tClean":"Trial & Error"},{"key":"options.first_steps.forums","t":"Forums"},{"key":"options.first_steps.newsletters","t":"Newsletters"},{"key":"options.first_steps.events","t":"Events"},{"key":"resources.web_platform_resources","t":"Web Platform Resources"},{"key":"resources.web_platform_resources.question","t":"Which of these resources do you consult to stay informed about web platform features?"},{"key":"resources.learning_methods","t":"Learning Methods"},{"key":"options.learning_methods.na","t":"🚫 None"},{"key":"options.learning_methods.books","t":"Books"},{"key":"options.learning_methods.videos","t":"Videos & screencasts","tHtml":"Videos &amp; screencasts","tClean":"Videos & screencasts"},{"key":"options.learning_methods.school","t":"School & higher education","tHtml":"School &amp; higher education","tClean":"School & higher education"},{"key":"options.learning_methods.courses_free","t":"Online courses (free)"},{"key":"options.learning_methods.courses_paid","t":"Online courses (paid)"},{"key":"options.learning_methods.podcasts","t":"Podcasts"},{"key":"options.learning_methods.bootcamp","t":"Coding bootcamp"},{"key":"options.learning_methods.on_the_job","t":"On-the-job training"},{"key":"options.learning_methods.self_directed","t":"Self-directed learning (Google, Stack Overflow, etc.)"},{"key":"options.learning_methods.mentoring","t":"Mentoring"},{"key":"options.learning_methods.documentation","t":"Documentation"},{"key":"options.learning_methods.blogs","t":"Blogs"},{"key":"options.learning_methods.view_source","t":"View Source"},{"key":"options.learning_methods.documentation","t":"Documentation"},{"key":"options.learning_methods.trial_and_error","t":"Trial & Error","tHtml":"Trial &amp; Error","tClean":"Trial & Error"},{"key":"options.learning_methods.forums","t":"Forums"},{"key":"options.learning_methods.newsletters","t":"Newsletters"},{"key":"options.learning_methods.events","t":"Events"},{"key":"options.learning_methods.ai_tools","t":"AI Tools (ChatGPT, Claude, etc.)"},{"key":"options.higher_education_degree.no_degree","t":"No"},{"key":"options.higher_education_degree.yes_related","t":"Yes, in a field related to my current profession"},{"key":"options.higher_education_degree.yes_unrelated","t":"Yes, but in a field unrelated to my current profession"},{"key":"options.higher_education_degree.no_degree.short","t":"No"},{"key":"options.higher_education_degree.yes_related.short","t":"Yes, related field"},{"key":"options.higher_education_degree.yes_unrelated.short","t":"Yes, unrelated field"},{"key":"user_info.employment_status","t":"Employment Status"},{"key":"user_info.employment_status.question","t":"What is your current employment status?"},{"key":"options.employment_status.employed_full_time","t":"Employed, full-time"},{"key":"options.employment_status.freelance","t":"Independent contractor, freelancer, or self-employed"},{"key":"options.employment_status.employed_part_time","t":"Employed, part-time"},{"key":"options.employment_status.student_full_time","t":"Student, full-time"},{"key":"options.employment_status.student_part_time","t":"Student, part-time"},{"key":"options.employment_status.looking_for_job","t":"Not employed, but looking for work"},{"key":"options.employment_status.not_employed_not_looking","t":"Not employed, and not looking for work"},{"key":"options.employment_status.full_time","t":"Full-time"},{"key":"options.employment_status.student","t":"Student"},{"key":"options.employment_status.self_employed","t":"Self-employed"},{"key":"options.employment_status.contractor","t":"Contractor"},{"key":"options.employment_status.part_time","t":"Part-time"},{"key":"options.employment_status.between_jobs","t":"Between jobs"},{"key":"options.employment_status.retired","t":"Retired"},{"key":"options.employment_status.company_employee","t":"Company employee"},{"key":"options.employment_status.unemployed","t":"Unemployed"},{"key":"options.employment_status.ceo_founder","t":"CEO/Founder/Entrepreneur"},{"key":"options.employment_status.freelance.short","t":"Freelancer/self-employed"},{"key":"options.employment_status.professor","t":"Professor"},{"key":"options.bracket.round1","t":"Round 1 wins"},{"key":"options.bracket.round2","t":"Round 2 wins"},{"key":"options.bracket.round3","t":"Round 3 wins"},{"key":"options.bracket.combined","t":"Combined"},{"key":"options.receive_notifications.yes","t":"Yes, email me when the survey results are published"},{"key":"usage.usage_type","t":"Usage Type"},{"key":"options.usage_type.professionally","t":"Professionally"},{"key":"options.usage_type.student","t":"As a student"},{"key":"options.usage_type.hobby","t":"As a hobby"},{"key":"options.percentage_segments.range_0_10","t":"0-10%"},{"key":"options.percentage_segments.range_11_20","t":"11-20%"},{"key":"options.percentage_segments.range_21_30","t":"21-30%"},{"key":"options.percentage_segments.range_31_40","t":"31-40%"},{"key":"options.percentage_segments.range_41_50","t":"41-50%"},{"key":"options.percentage_segments.range_51_60","t":"51-60%"},{"key":"options.percentage_segments.range_61_70","t":"61-70%"},{"key":"options.percentage_segments.range_71_80","t":"71-80%"},{"key":"options.percentage_segments.range_81_90","t":"81-90%"},{"key":"options.percentage_segments.range_91_100","t":"91-100%"},{"key":"options.percentage_segments.range_10_20","t":"10-20%"},{"key":"options.percentage_segments.range_20_30","t":"20-30%"},{"key":"options.percentage_segments.range_30_40","t":"30-40%"},{"key":"options.percentage_segments.range_40_50","t":"40-50%"},{"key":"options.percentage_segments.range_50_60","t":"50-60%"},{"key":"options.percentage_segments.range_60_70","t":"60-70%"},{"key":"options.percentage_segments.range_70_80","t":"70-80%"},{"key":"options.percentage_segments.range_80_90","t":"80-90%"},{"key":"options.percentage_segments.range_90_100","t":"90-100%"},{"key":"options.completion_stats.range_0_10","t":"0-10%"},{"key":"options.completion_stats.range_11_20","t":"11-20%"},{"key":"options.completion_stats.range_21_30","t":"21-30%"},{"key":"options.completion_stats.range_31_40","t":"31-40%"},{"key":"options.completion_stats.range_41_50","t":"41-50%"},{"key":"options.completion_stats.range_51_60","t":"51-60%"},{"key":"options.completion_stats.range_61_70","t":"61-70%"},{"key":"options.completion_stats.range_71_80","t":"71-80%"},{"key":"options.completion_stats.range_81_90","t":"81-90%"},{"key":"options.completion_stats.range_91_100","t":"91-100%"},{"key":"options.completion_stats.range_0_10","t":"0-10%"},{"key":"options.completion_stats.range_10_20","t":"10-20%"},{"key":"options.completion_stats.range_20_30","t":"20-30%"},{"key":"options.completion_stats.range_30_40","t":"30-40%"},{"key":"options.completion_stats.range_40_50","t":"40-50%"},{"key":"options.completion_stats.range_50_60","t":"50-60%"},{"key":"options.completion_stats.range_60_70","t":"60-70%"},{"key":"options.completion_stats.range_70_80","t":"70-80%"},{"key":"options.completion_stats.range_80_90","t":"80-90%"},{"key":"options.completion_stats.range_90_100","t":"90-100%"},{"key":"options.knowledge_score.range_0_10","t":"0-10%"},{"key":"options.knowledge_score.range_11_20","t":"11-20%"},{"key":"options.knowledge_score.range_21_30","t":"21-30%"},{"key":"options.knowledge_score.range_31_40","t":"31-40%"},{"key":"options.knowledge_score.range_41_50","t":"41-50%"},{"key":"options.knowledge_score.range_51_60","t":"51-60%"},{"key":"options.knowledge_score.range_61_70","t":"61-70%"},{"key":"options.knowledge_score.range_71_80","t":"71-80%"},{"key":"options.knowledge_score.range_81_90","t":"81-90%"},{"key":"options.knowledge_score.range_91_100","t":"91-100%"},{"key":"options.source.angular_community","t":"Angular Community"},{"key":"options.source.work","t":"Workplace"},{"key":"options.source.word_of_mouth","t":"Word of Mouth"},{"key":"options.source.podcast","t":"Podcasts"},{"key":"options.source.other_online_sources","t":"Other Online Sources"},{"key":"options.source.blog","t":"Blogs"},{"key":"tools.other_tools","t":"Other Options"},{"key":"tools.other_tools.description","t":"Other options you use for the current section not mentioned above."},{"key":"tools.happiness","t":"Overall Happiness"},{"key":"tools.happiness.question","t":"How happy are you with the current state of things as it relates to the options listed above?"},{"key":"other_tools.ai_browser_apis","t":"Browser APIs"},{"key":"other_tools.ai_browser_apis.question","t":"What AI APIs would you most like to see supported natively in browsers?"},{"key":"options.ai_uses.code_generation","t":"Code generation"},{"key":"options.ai_uses.code_generation.description","t":"Generating or refactoring code based on a prompt."},{"key":"options.ai_uses.translation","t":"Translation"},{"key":"options.ai_uses.translation.description","t":"Translating content from one language to another."},{"key":"options.ai_uses.language_detection","t":"Language detection"},{"key":"options.ai_uses.language_detection.description","t":"Detecting the language a text is written in."},{"key":"options.ai_uses.summarization","t":"Summarization"},{"key":"options.ai_uses.summarization.description","t":"Summarizing a text or dataset into its main themes."},{"key":"options.ai_uses.text_generation","t":"Text generation"},{"key":"options.ai_uses.text_generation.description","t":"Generating a text based on a prompt."},{"key":"options.ai_uses.image_generation","t":"Image generation"},{"key":"options.ai_uses.image_generation.description","t":"Generating an image based on a prompt."},{"key":"options.ai_uses.speech_generation","t":"Speech generation"},{"key":"options.ai_uses.speech_generation.description","t":"Generating speech based on a prompt or a text."},{"key":"options.ai_uses.speech_recognition","t":"Speech recognition"},{"key":"options.ai_uses.speech_recognition.description","t":"Transcribing recorded or real-time speech into text."},{"key":"options.ai_uses.computer_vision","t":"Computer vision"},{"key":"options.ai_uses.computer_vision.description","t":"Detecting items in a photo or video feed."},{"key":"options.ai_uses.sentiment_analysis","t":"Sentiment analysis"},{"key":"options.ai_uses.sentiment_analysis.description","t":"Classifying text data based on sentiment."},{"key":"options.ai_uses.caption_generation","t":"Caption generation"},{"key":"options.ai_uses.caption_generation.description","t":"Generating captions or subtitles for images or videos."},{"key":"options.ai_uses.learning_research","t":"Learning & research","tHtml":"Learning &amp; research","tClean":"Learning & research"},{"key":"options.ai_uses.learning_research.description","t":"Learning new skills or researching a topic."},{"key":"options.ai_uses.no_browser_ai_apis","t":"🚫 None"},{"key":"options.ai_uses.debugging","t":"Debugging"},{"key":"user_info.age","t":"Age"},{"key":"user_info.age.question","t":"How old are you, in years?"},{"key":"user_info.years_of_experience","t":"Years of Experience"},{"key":"user_info.years_of_experience.question","t":"How many years of experience do you have as a developer?"},{"key":"user_info.years_of_experience.prompt","t":"Whether as a professional, student, hobbyist, etc."},{"key":"user_info.company_size","t":"Company Size"},{"key":"user_info.company_size.question","t":"How many people work at your organization, including yourself?"},{"key":"user_info.yearly_salary","t":"Yearly Income"},{"key":"user_info.yearly_salary.question","t":"What is your yearly gross (pre-tax) income in U.S. dollars?"},{"key":"user_info.income_evolution","t":"Income Evolution"},{"key":"user_info.income_evolution.question","t":"How has your total income evolved over the past 12 months?"},{"key":"options.income_evolution.increased","t":"Increased"},{"key":"options.income_evolution.stayed_same","t":"Stayed the same"},{"key":"options.income_evolution.decreased","t":"Decreased"},{"key":"user_info.job_title","t":"Job Title"},{"key":"user_info.job_title.question","t":"What is your job title?"},{"key":"user_info.work_areas","t":"Work Areas"},{"key":"user_info.work_areas.question","t":"Which of these areas of software development are part of your day-to-day work?"},{"key":"options.work_areas.web_dev","t":"Web Development"},{"key":"options.work_areas.native_dev","t":"Native Development"},{"key":"options.work_areas.infrastructure","t":"Infrastructure"},{"key":"options.work_areas.data_ai","t":"Data/AI"},{"key":"options.work_areas.management","t":"Management"},{"key":"options.work_areas.other","t":"Other Areas"},{"key":"options.work_areas.software_engineering","t":"Software Engineering"},{"key":"options.work_areas.front_end","t":"Front-end development"},{"key":"options.work_areas.front_end_js","t":"Front-end development (JS/TS)"},{"key":"options.work_areas.front_end_css","t":"Front-end development (CSS)"},{"key":"options.work_areas.back_end","t":"Back-end development"},{"key":"options.work_areas.mobile","t":"Mobile development"},{"key":"options.work_areas.desktop","t":"Desktop development"},{"key":"options.work_areas.devops","t":"DevOps"},{"key":"options.work_areas.qa_testing","t":"Quality assurance"},{"key":"options.work_areas.sre","t":"Site reliability engineering (SRE)"},{"key":"options.work_areas.platform_engineering","t":"Platform engineering"},{"key":"options.work_areas.data_engineering","t":"Data engineering & processing","tHtml":"Data engineering &amp; processing","tClean":"Data engineering & processing"},{"key":"options.work_areas.ai_llm","t":"AI/LLM application engineering"},{"key":"options.work_areas.machine_learning","t":"Machine learning"},{"key":"options.work_areas.security","t":"Security"},{"key":"options.work_areas.performance","t":"Performance optimization"},{"key":"options.work_areas.embedded_software","t":"Embedded software"},{"key":"options.work_areas.game_development","t":"Game development"},{"key":"options.work_areas.systems_design","t":"Systems design & architecture","tHtml":"Systems design &amp; architecture","tClean":"Systems design & architecture"},{"key":"options.work_areas.devrel","t":"Developer relations"},{"key":"options.work_areas.tooling","t":"Developer tools/tooling"},{"key":"options.work_areas.cloud","t":"Cloud infrastructure"},{"key":"options.work_areas.accessibility","t":"Accessibility testing"},{"key":"options.work_areas.people_management","t":"People management"},{"key":"options.work_areas.technical_leadership","t":"Technical leadership"},{"key":"options.work_areas.project_management","t":"Project management"},{"key":"options.work_areas.product_management","t":"Product management"},{"key":"options.work_areas.hiring_interviewing","t":"Hiring/interviewing"},{"key":"options.work_areas.design","t":"Design"},{"key":"options.work_areas.product_design","t":"Product design"},{"key":"options.work_areas.ui_ux_design","t":"UI/UX design"},{"key":"options.work_areas.user_research","t":"User research"},{"key":"options.work_areas.design_systems","t":"Design systems"},{"key":"options.work_areas.quality_assurance","t":"Quality assurance"},{"key":"options.work_areas.manual_testing","t":"Manual testing"},{"key":"options.work_areas.test_automation","t":"Test automation"},{"key":"options.work_areas.performance_testing","t":"Performance testing"},{"key":"options.work_areas.accessibility_testing","t":"Accessibility testing"},{"key":"options.work_areas.quality_engineering","t":"Quality engineering"},{"key":"user_info.javascript_proficiency","t":"JavaScript Proficiency"},{"key":"user_info.javascript_proficiency.question","t":"How proficient are you at JavaScript?"},{"key":"user_info.css_proficiency","t":"CSS Proficiency"},{"key":"user_info.css_proficiency.question","t":"How proficient are you at CSS?"},{"key":"user_info.backend_proficiency","t":"Back-end Proficiency"},{"key":"user_info.backend_proficiency.question","t":"How proficient are you at back-end development?"},{"key":"user_info.gender","t":"Gender"},{"key":"user_info.gender.question","t":"Which one of the following options describes you?"},{"key":"user_info.gender.note","t":"While we know collecting and publishing diversity data can be a sensitive issue, we do think it's important to obtain this data to help measure and improve the survey's efforts in terms of inclusivity and representativeness."},{"key":"user_info.race_ethnicity","t":"Race & Ethnicity","tHtml":"Race &amp; Ethnicity","tClean":"Race & Ethnicity"},{"key":"user_info.race_ethnicity.question","t":"Which of the following options describe you?"},{"key":"user_info.race_ethnicity.note","t":"While we know collecting and publishing diversity data can be a sensitive issue, we do think it's important to obtain this data to help measure and improve the survey's efforts in terms of inclusivity and representativeness."},{"key":"user_info.race_ethnicity.not_allowed","t":"In order to comply with local policies, the collection of race or ethnicity data has\n  been disabled for your country or region.","tHtml":"<p>In order to comply with local policies, the collection of race or ethnicity data has\n  been disabled for your country or region.</p>\n","tClean":"In order to comply with local policies, the collection of race or ethnicity data has\n  been disabled for your country or region.\n"},{"key":"user_info.race_ethnicity.others","t":"Other Races or Ethnicities"},{"key":"user_info.race_ethnicity_freeform","t":"Other Races or Ethnicities"},{"key":"user_info.disability_status","t":"Disability Status"},{"key":"user_info.disability_status.question","t":"Which of the following disabilities do you experience?"},{"key":"user_info.disability_status.prompt","t":"Note that this can include temporary disabilities or injuries."},{"key":"user_info.disability_status.others","t":"Other Disabilities"},{"key":"user_info.disability_status_freeform","t":"Other Disabilities"},{"key":"user_info.how_did_user_find_out_about_the_survey","t":"Source"},{"key":"user_info.how_did_user_find_out_about_the_survey.question","t":"Where did you hear about this survey?"},{"key":"user_info.email","t":"Your Email"},{"key":"user_info.email.description","t":"You have filled out the survey anonymously. If you'd like, you can optionally enter your email to be able to access your data later on, and be notified when the survey results are published."},{"key":"user_info.email.note","t":"We do not store any personal data, so after you fill in your email address we will use it to generate a unique anonymized identifier and then delete the address itself from our records."},{"key":"user_info.country","t":"Country or Region"},{"key":"user_info.country.question","t":"Where do you currently reside?"},{"key":"user_info.country_of_origin","t":"Country of Origin"},{"key":"user_info.country_of_origin.question","t":"Where were you born?"},{"key":"user_info.migration_experience","t":"Migration Experience"},{"key":"user_info.migration_experience.question","t":"Were you born in your current country of residence?"},{"key":"options.migration_experience.same_country","t":"Yes"},{"key":"options.migration_experience.same_country_immigrant_parents","t":"Yes, to one or more immigrant parents"},{"key":"options.migration_experience.different_country","t":"No, in a different country"},{"key":"options.migration_experience.different_country_immigrant_parents","t":"No, in a different country to one or more immigrant parents"},{"key":"user_info.native_languages","t":"Native Languages"},{"key":"user_info.native_languages.question","t":"What are your native languages?"},{"key":"user_info.native_languages.prompt","t":"Languages you grew up speaking."},{"key":"user_info.other_languages","t":"Other Languages"},{"key":"user_info.other_languages.question","t":"What other languages do you speak?"},{"key":"user_info.other_languages.prompt","t":"Languages you learned to speak at a conversational level or higher."},{"key":"user_info.sexual_orientation","t":"Sexual Orientation"},{"key":"user_info.sexual_orientation.question","t":"What is your sexual orientation?"},{"key":"user_info.sexual_orientation.prompt","t":"Note that while this survey is completely anonymous, we would still recommend skipping this question if sharing this information could put you at risk."},{"key":"options.sexual_orientation.heterosexual","t":"Straight/heterosexual"},{"key":"options.sexual_orientation.gay_or_lesbian","t":"Gay or lesbian"},{"key":"options.sexual_orientation.bisexual","t":"Bisexual"},{"key":"options.sexual_orientation.questioning","t":"Questioning/unsure"},{"key":"user_info.industry_sector","t":"Industry Sector"},{"key":"user_info.industry_sector.question","t":"Which industry sector(s) do you work in?"},{"key":"user_info.industry_sector.others","t":"Other Industry Sectors"},{"key":"user_info.industry_sector.others.description","t":"Other industry sector(s) you work in not mentioned above."},{"key":"usage.industry_sector","t":"Industry Sector"},{"key":"usage.industry_sector.question","t":"Which industry sector(s) do you work in?"},{"key":"usage.industry_sector.others","t":"Other Industry Sectors"},{"key":"usage.industry_sector_freeform","t":"Other Industry Sectors"},{"key":"usage.industry_sector.others.description","t":"Which industry sector(s) do you work in?"},{"key":"user_info.higher_education_degree","t":"Higher Education Degree"},{"key":"user_info.higher_education_degree.question","t":"Do you have a higher education degree?"},{"key":"user_info.receive_notifications","t":"Notifications"},{"key":"user_info.receive_notifications.question","t":"Do you want to be notified when the survey results are released?"},{"key":"user_info.receive_notifications.note","t":"You email address will be added to our mailing list, but it will not be connected to your survey answers in any way."},{"key":"user_info.did_you_run_into_technical_issues","t":"Technical Issues"},{"key":"user_info.did_you_run_into_technical_issues.question","t":"What technical issues did you run into while taking this survey, if any?"},{"key":"user_info.survey_length","t":"Survey Length"},{"key":"user_info.survey_length.question","t":"How do you feel about this survey's length?"},{"key":"user_info.survey_length.lower","t":"too short"},{"key":"user_info.survey_length.higher","t":"too long"},{"key":"options.survey_length.0","t":"I would've answered a lot more questions"},{"key":"options.survey_length.1","t":"I would've answered a few more questions"},{"key":"options.survey_length.2","t":"It was just right"},{"key":"options.survey_length.3","t":"It was slightly too long"},{"key":"options.survey_length.4","t":"It was way too long"},{"key":"user_info.missing_questions","t":"Missing Questions"},{"key":"user_info.missing_questions.question","t":"What other questions do you wish the survey would've asked, if any?"},{"key":"user_info.how_can_we_improve","t":"Survey Improvements"},{"key":"user_info.how_can_we_improve.question","t":"How else could we improve this survey?"},{"key":"user_info.why_did_you_take_the_survey","t":"Survey Motivation"},{"key":"user_info.why_did_you_take_the_survey.question","t":"What are the main benefits you get from taking this survey?"},{"key":"options.why_did_you_take_the_survey.stay_informed","t":"It helps me stay informed and keep up with the ecosystem."},{"key":"options.why_did_you_take_the_survey.interested_in_data","t":"I'm interested in the resulting data and trends."},{"key":"options.why_did_you_take_the_survey.help_with_representation","t":"I want to help make the dataset more representative."},{"key":"options.why_did_you_take_the_survey.for_fun","t":"I take it out of curiosity, or just for fun."},{"key":"options.why_did_you_take_the_survey.affect_change","t":"I want to make my voice heard and influence the developer ecosystem."},{"key":"options.why_did_you_take_the_survey.gauge_my_knowledge","t":"I want to gauge my own current knowledge."},{"key":"usage.ai_risks","t":"AI Risks"},{"key":"usage.ai_risks.question","t":"Which of these general AI risks and issues are you most concerned about?"},{"key":"options.ai_risks.militaristic_uses","t":"Military use of AI"},{"key":"options.ai_risks.militaristic_uses.description","t":"Autonomous drones, AI decision-making, etc."},{"key":"options.ai_risks.environmental_impact","t":"Environmental impact"},{"key":"options.ai_risks.environmental_impact.description","t":"Rising energy costs, impact on global warming, etc."},{"key":"options.ai_risks.reaching_agi","t":"AGI being reached"},{"key":"options.ai_risks.reaching_agi.description","t":"AI becoming self-aware and proving hostile to humans"},{"key":"options.ai_risks.job_displacement","t":"Job displacement"},{"key":"options.ai_risks.job_displacement.description","t":"Economic and social impacts of AI-related job loss"},{"key":"options.ai_risks.security_issues","t":"Security issues"},{"key":"options.ai_risks.security_issues.description","t":"Security issues and exploits in AI-generated code"},{"key":"options.ai_risks.rising_costs","t":"Rising AI costs"},{"key":"options.ai_risks.rising_costs.description","t":"Rising AI costs as AI companies try to recoup their investments"},{"key":"options.ai_risks.entranched_stack_bias","t":"Entrenched stack bias"},{"key":"options.ai_risks.entranched_stack_bias.description","t":"AI bias towards generating code based on popular technologies"},{"key":"options.ai_risks.open_source_disruption","t":"Open-source disruption"},{"key":"options.ai_risks.open_source_disruption.description","t":"AI spam pull requests, slop code, funding being jeopardized, etc."},{"key":"options.ai_risks.ai_overuse","t":"AI overuse"},{"key":"options.ai_risks.ai_overuse.description","t":"AI being overused even in products that don't need it"},{"key":"options.ai_risks.copyright_ethics_issues","t":"Copyright and ethics issues"},{"key":"options.ai_risks.copyright_ethics_issues.description","t":"Plagiarism, unauthorized copying, unauthorized training, etc."},{"key":"options.ai_risks.slop_takeover","t":"AI slop takeover"},{"key":"options.ai_risks.slop_takeover.description","t":"Bots and slop leading to lower-quality internet content"},{"key":"options.ai_risks.cognitive_impact","t":"Negative cognitive impacts"},{"key":"options.ai_risks.cognitive_impact.description","t":"Excessive AI use making users helpless without it"},{"key":"options.ai_risks.ai_career_impact","t":"AI Career Impact"},{"key":"options.ai_risks.junior_pipeline_impact","t":"Junior Pipeline & Education Impact","tHtml":"Junior Pipeline &amp; Education Impact","tClean":"Junior Pipeline & Education Impact"},{"key":"options.ai_risks.career_change_consideration","t":"Career Change / Leaving Industry"},{"key":"options.ai_risks.role_shift_to_reviewer","t":"Role Shift to Reviewer/Overseer"},{"key":"options.ai_risks.ai_developer_impact","t":"Developer impact"},{"key":"options.ai_risks.skill_atrophy","t":"Skill Atrophy & Deskilling","tHtml":"Skill Atrophy &amp; Deskilling","tClean":"Skill Atrophy & Deskilling"},{"key":"options.ai_risks.loss_of_joy_in_coding","t":"Loss of Joy & Meaning","tHtml":"Loss of Joy &amp; Meaning","tClean":"Loss of Joy & Meaning"},{"key":"options.ai_risks.pace_of_change_anxiety","t":"Pace of Change Anxiety"},{"key":"options.ai_risks.unrealistic_productivity_expectations","t":"Unrealistic Productivity Expectations"},{"key":"options.ai_risks.mental_health_impact","t":"Mental Health Impact"},{"key":"options.ai_risks.discourse_fatigue","t":"AI Discourse Fatigue"},{"key":"options.ai_risks.moral_injury","t":"Moral Injury"},{"key":"options.ai_risks.ai_industry_impact","t":"Industry impact"},{"key":"options.ai_risks.economic_collapse","t":"Economic Collapse"},{"key":"options.ai_risks.concentration_of_power","t":"Concentration of Power"},{"key":"options.ai_risks.labor_exploitation","t":"Labor Exploitation"},{"key":"options.ai_risks.forced_adoption_by_management","t":"Forced Adoption by Management"},{"key":"options.ai_risks.management_misunderstanding","t":"Management Misunderstanding"},{"key":"options.ai_risks.vendor_lock_in","t":"Vendor Lock-in & Dependency","tHtml":"Vendor Lock-in &amp; Dependency","tClean":"Vendor Lock-in & Dependency"},{"key":"options.ai_risks.decline_in_human_collaboration","t":"Decline in Human Collaboration"},{"key":"options.ai_risks.false_expertise","t":"False Expertise"},{"key":"options.ai_risks.ai_ethics_impact","t":"Ethics impact"},{"key":"options.ai_risks.creative_industries_impact","t":"Creative Industries Impact"},{"key":"options.ai_risks.social_polarization","t":"Social Polarization"},{"key":"options.ai_risks.ai_misinformation","t":"Misinformation"},{"key":"options.ai_risks.mass_surveillance","t":"Mass Surveillance"},{"key":"options.ai_risks.ai_technical_impact","t":"Technical impact"},{"key":"options.ai_risks.code_review_burden","t":"Review & Testing Burden","tHtml":"Review &amp; Testing Burden","tClean":"Review & Testing Burden"},{"key":"options.ai_risks.correctness_and_hallucination","t":"Correctness & Hallucination","tHtml":"Correctness &amp; Hallucination","tClean":"Correctness & Hallucination"},{"key":"options.ai_risks.technical_debt_and_maintainability","t":"Technical & Comprehension Debt","tHtml":"Technical &amp; Comprehension Debt","tClean":"Technical & Comprehension Debt"},{"key":"options.ai_risks.increased_code_volume","t":"Increased Code Volume"},{"key":"options.ai_risks.non_determinism","t":"Non-Determinism"},{"key":"options.ai_risks.vibe_coding_and_prompt_engineering","t":"Vibe Coding & Prompt Engineering","tHtml":"Vibe Coding &amp; Prompt Engineering","tClean":"Vibe Coding & Prompt Engineering"},{"key":"resources.first_steps","t":"First Learning Methods"},{"key":"resources.first_steps.question","t":"When first starting out, how did you initially learn coding?"},{"key":"resources.first_steps.others","t":"Other First Learning Methods"},{"key":"resources.first_steps.others.description","t":"Other answers (freeform field)."},{"key":"resources.blogs_news_magazines","t":"Blogs & Magazines","tHtml":"Blogs &amp; Magazines","tClean":"Blogs & Magazines"},{"key":"resources.blogs_news_magazines.question","t":"Which blogs/magazines/newsletters/etc. do you read?"},{"key":"resources.blogs_news_magazines.others","t":"Other Blogs & Magazines","tHtml":"Other Blogs &amp; Magazines","tClean":"Other Blogs & Magazines"},{"key":"resources.blogs_news_magazines.others.description","t":"Other answers (freeform field)."},{"key":"options.blogs_news_magazines.na","t":"🚫 None"},{"key":"resources.blogs_news_magazines.placeholder","t":"Blog/newsletter #{index}…"},{"key":"resources.newsletters","t":"Newsletters"},{"key":"resources.newsletters.question","t":"Which newsletters do you read to stay up to date with web development news?"},{"key":"resources.sites_courses","t":"Sites & Courses","tHtml":"Sites &amp; Courses","tClean":"Sites & Courses"},{"key":"resources.sites_courses.question","t":"Which sites/courses/etc. do you consult to learn JavaScript?"},{"key":"resources.sites_courses.others","t":"Other Sites & Courses","tHtml":"Other Sites &amp; Courses","tClean":"Other Sites & Courses"},{"key":"resources.sites_courses.others.description","t":"Other answers (freeform field)."},{"key":"options.sites_courses.na","t":"🚫 None"},{"key":"resources.sites_courses.placeholder","t":"Site/course #{index}…"},{"key":"resources.paid_courses","t":"Paid Courses"},{"key":"resources.paid_courses.question","t":"Which **paid resources** (courses, videos, books, etc.) have you used?","tHtml":"Which <strong>paid resources</strong> (courses, videos, books, etc.) have you used?","tClean":"Which paid resources (courses, videos, books, etc.) have you used?"},{"key":"options.paid_courses.na","t":"🚫 None"},{"key":"resources.paid_courses.placeholder","t":"Course/book #{index}…"},{"key":"resources.courses","t":"Courses & Training Material","tHtml":"Courses &amp; Training Material","tClean":"Courses & Training Material"},{"key":"resources.courses.question","t":"Which courses or training material (videos, books, etc.) have you used to learn JavaScript?"},{"key":"options.courses.na","t":"🚫 None"},{"key":"resources.courses.placeholder","t":"Course/book/etc. #{index}…"},{"key":"resources.podcasts","t":"Podcasts"},{"key":"resources.podcasts.question","t":"Which programming-related podcasts do you listen to?"},{"key":"resources.podcasts.others","t":"Other Podcasts"},{"key":"resources.podcasts.others.description","t":"Other answers (freeform field)."},{"key":"options.podcasts.na","t":"🚫 None"},{"key":"resources.podcasts.placeholder","t":"Podcast #{index}…"},{"key":"resources.people","t":"People"},{"key":"resources.people.question","t":"Which individuals do you read, follow, or just want to highlight?"},{"key":"resources.people.others","t":"People"},{"key":"resources.people.others.description","t":"People you read, follow, or just want to highlight for their work (freeform field, comma-separated names)."},{"key":"options.people.na","t":"🚫 None"},{"key":"resources.people.placeholder","t":"Person #{index}…"},{"key":"resources.other_surveys","t":"Other Surveys"},{"key":"resources.other_surveys.question","t":"Which other developer surveys do you participate in?"},{"key":"resources.other_surveys.others","t":"Additional surveys not mentioned above"},{"key":"options.other_surveys.na","t":"🚫 None"},{"key":"user_info.other_surveys.question","t":"Which other developer surveys do you participate in?"},{"key":"user_info.other_surveys","t":"Other Surveys"},{"key":"user_info.other_surveys.question","t":"Which other developer surveys do you participate in?"},{"key":"resources.video_creators","t":"Video Creators"},{"key":"resources.video_creators.question","t":"Which programming-related video creators do you follow (on YouTube, Twitch, etc.)?"},{"key":"resources.video_creators.others","t":"Other Video Creators"},{"key":"options.video_creators.na","t":"🚫 None"},{"key":"resources.video_creators.placeholder","t":"Video creator #{index}…"},{"key":"followups.button","t":"Tell us more…"},{"key":"followups.description","t":"Optionally, you can tell us more about why you picked this answer:"},{"key":"followups.description.short","t":"Tell us more:"},{"key":"followups.placeholder","t":"Other reason…"},{"key":"followups.want_to_learn_more","t":"I want to learn more"},{"key":"followups.not_interested","t":"I'm not interested"},{"key":"followups.insufficient_browser_support","t":"Insufficient browser support"},{"key":"followups.not_needed","t":"I haven't needed it"},{"key":"followups.hard_to_use","t":"It was hard to use"},{"key":"followups.positive_experience","t":"I had a positive experience"},{"key":"followups.not_powerful","t":"It wasn't powerful enough"},{"key":"followups.sentiment_interested","t":"Interested"},{"key":"followups.sentiment_not_interested","t":"Not interested"},{"key":"followups.sentiment_positive_experience","t":"Positive experience"},{"key":"followups.sentiment_negative_experience","t":"Negative experience"},{"key":"entity.learn_more","t":"Learn more…"},{"key":"baseline.baseline","t":"Baseline:"},{"key":"baseline.learn_more","t":"Learn more"},{"key":"baseline.support.false","t":"Limited Availability"},{"key":"baseline.support.false.description","t":"Only supported in some browsers."},{"key":"baseline.support.low","t":"Newly Available"},{"key":"baseline.support.low.description","t":"Supported in all four major browsers."},{"key":"baseline.support.high","t":"Widely Available"},{"key":"baseline.support.high.description","t":"30 months since becoming newly available."},{"key":"baseline.support.unknown","t":"Unknown"},{"key":"baseline.support.unknown.description","t":"No Baseline data available."},{"key":"feature.experimental","t":"Currently unsupported feature or proposal"},{"key":"options.locale.en-US","t":"English"},{"key":"options.locale.ca-ES","t":"Catalan"},{"key":"options.locale.es-ES","t":"Spanish"},{"key":"options.locale.ru-RU","t":"Russian"},{"key":"options.locale.fr-FR","t":"French"},{"key":"options.locale.zh-Hant","t":"Chinese (Traditional)"},{"key":"options.locale.de-DE","t":"German"},{"key":"options.locale.cs-CZ","t":"Czech"},{"key":"options.locale.pt-PT","t":"Portuguese"},{"key":"options.locale.pt-BR","t":"Portuguese (Brazil)"},{"key":"options.locale.it-IT","t":"Italian"},{"key":"options.locale.sv-SE","t":"Swedish"},{"key":"options.locale.tr-TR","t":"Turkish"},{"key":"options.locale.id-ID","t":"Indonesian"},{"key":"options.locale.hi-IN","t":"Hindi"},{"key":"options.locale.zh-Hans","t":"Chinese (Simplified)"},{"key":"options.locale.ja-JP","t":"Japanese"},{"key":"options.locale.ua-UA","t":"Ukrainian"},{"key":"options.locale.pl-PL","t":"Polish"},{"key":"options.locale.fa-IR","t":"Farsi"},{"key":"options.locale.nl-NL","t":"Dutch"},{"key":"options.locale.ko-KR","t":"Korean"},{"key":"options.locale.ro-RO","t":"Romanian"},{"key":"options.locale.am-ET","t":"Amharic"},{"key":"options.locale.ar-EG","t":"Arabic"},{"key":"options.locale.af","t":"Afrikaans"},{"key":"options.locale.cn","t":"Chinese"},{"key":"options.locale.el-GR","t":"Greek"},{"key":"options.locale.gl-ES","t":"Galician"},{"key":"options.locale.hr-HR","t":"Croatian"},{"key":"options.locale.hu-HU","t":"Hungarian"},{"key":"options.locale.sk-SK","t":"Slovak"},{"key":"options.locale.vi-VN","t":"Vietnamese"},{"key":"options.locale.he-IL","t":"Hebrew"},{"key":"options.locale.da-DK","t":"Danish"},{"key":"options.locale.no-NO","t":"Norwegian"},{"key":"options.locale.sr-RS","t":"Serbian"},{"key":"options.locale.fi-FI","t":"Finnish"},{"key":"options.locale.bg-BG","t":"Bulgarian"},{"key":"options.locale.be-BY","t":"Belarussian"},{"key":"options.locale.zh-mandarin","t":"Mandarin Chinese"},{"key":"worldview.opinions_intro","t":"For the following questions, let us know how much you agree with each statement."},{"key":"options.slider.0.description","t":"0%"},{"key":"options.slider.1.description","t":"12.5%"},{"key":"options.ai_generated_code_balance.1","t":"12.5%"},{"key":"options.css_ai_generated_code_balance.1","t":"12.5%"},{"key":"options.slider.2.description","t":"25%"},{"key":"options.ai_generated_code_balance.2","t":"25%"},{"key":"options.css_ai_generated_code_balance.2","t":"25%"},{"key":"options.slider.3.description","t":"37.5%"},{"key":"options.ai_generated_code_balance.3","t":"37.5%"},{"key":"options.css_ai_generated_code_balance.3","t":"37.5%"},{"key":"options.slider.4.description","t":"50%"},{"key":"options.ai_generated_code_balance.4","t":"50%"},{"key":"options.css_ai_generated_code_balance.4","t":"50%"},{"key":"options.slider.5.description","t":"62.5%"},{"key":"options.ai_generated_code_balance.5","t":"62.5%"},{"key":"options.css_ai_generated_code_balance.5","t":"62.5%"},{"key":"options.slider.6.description","t":"75%"},{"key":"options.ai_generated_code_balance.6","t":"75%"},{"key":"options.css_ai_generated_code_balance.6","t":"75%"},{"key":"options.slider.7.description","t":"87.5%"},{"key":"options.ai_generated_code_balance.7","t":"87.5%"},{"key":"options.css_ai_generated_code_balance.7","t":"87.5%"},{"key":"options.slider.8.description","t":"100%"},{"key":"options.sentiment.comments","t":"Comments"},{"key":"options.opinions.value_0","t":"Strongly Disagree"},{"key":"options.opinions.value_1","t":"Disagree"},{"key":"options.opinions.value_2","t":"Neutral"},{"key":"options.opinions.value_3","t":"Agree"},{"key":"options.opinions.value_4","t":"Strongly Agree"},{"key":"options.industry_sector.health_care","t":"Healthcare"},{"key":"options.industry_sector.transportation","t":"Transportation"},{"key":"options.industry_sector.science","t":"Research & Science","tHtml":"Research &amp; Science","tClean":"Research & Science"},{"key":"other_tools.web_platform_resources","t":"Web Platform Resources"},{"key":"other_tools.web_platform_resources.question","t":"Which of these resources do you consult to stay informed about web platform features?"},{"key":"tools.ai_browser_apis","t":"Browser APIs"},{"key":"usage.ai_browser_apis","t":"Browser APIs"},{"key":"tools.ai_browser_apis.question","t":"What AI APIs would you most like to see supported natively in browsers?"},{"key":"usage.ai_browser_apis.question","t":"What AI APIs would you most like to see supported natively in browsers?"},{"key":"options.ai_browser_apis.code_generation","t":"Code generation"},{"key":"options.ai_browser_apis.code_generation.description","t":"Generating or refactoring code based on a prompt."},{"key":"options.ai_browser_apis.translation","t":"Translation"},{"key":"options.ai_browser_apis.translation.description","t":"Translating content from one language to another."},{"key":"options.ai_browser_apis.language_detection","t":"Language detection"},{"key":"options.ai_browser_apis.language_detection.description","t":"Detecting the language a text is written in."},{"key":"options.ai_browser_apis.summarization","t":"Summarization"},{"key":"options.ai_browser_apis.summarization.description","t":"Summarizing a text or dataset into its main themes."},{"key":"options.ai_browser_apis.text_generation","t":"Text generation"},{"key":"options.ai_browser_apis.text_generation.description","t":"Generating a text based on a prompt."},{"key":"options.ai_browser_apis.image_generation","t":"Image generation"},{"key":"options.ai_browser_apis.image_generation.description","t":"Generating an image based on a prompt."},{"key":"options.ai_browser_apis.speech_generation","t":"Speech generation"},{"key":"options.ai_browser_apis.speech_generation.description","t":"Generating speech based on a prompt or a text."},{"key":"options.ai_browser_apis.speech_recognition","t":"Speech recognition"},{"key":"options.ai_browser_apis.speech_recognition.description","t":"Transcribing recorded or real-time speech into text."},{"key":"options.ai_browser_apis.computer_vision","t":"Computer vision"},{"key":"options.ai_browser_apis.computer_vision.description","t":"Detecting items in a photo or video feed."},{"key":"options.ai_browser_apis.sentiment_analysis","t":"Sentiment analysis"},{"key":"options.ai_browser_apis.sentiment_analysis.description","t":"Classifying text data based on sentiment."},{"key":"options.ai_browser_apis.caption_generation","t":"Caption generation"},{"key":"options.ai_browser_apis.caption_generation.description","t":"Generating captions or subtitles for images or videos."},{"key":"options.ai_browser_apis.learning_research","t":"Learning & research","tHtml":"Learning &amp; research","tClean":"Learning & research"},{"key":"options.ai_browser_apis.learning_research.description","t":"Learning new skills or researching a topic."},{"key":"options.ai_browser_apis.no_browser_ai_apis","t":"🚫 None"},{"key":"options.ai_uses.na","t":"🚫 None"},{"key":"options.ai_browser_apis.na","t":"🚫 None"},{"key":"options.ai_browser_apis.debugging","t":"Debugging"},{"key":"health.age","t":"Age"},{"key":"health.age.question","t":"How old are you, in years?"},{"key":"career.years_of_experience","t":"Years of Experience"},{"key":"career.years_of_experience.question","t":"How many years of experience do you have as a developer?"},{"key":"career.years_of_experience.prompt","t":"Whether as a professional, student, hobbyist, etc."},{"key":"workplace.yearly_salary","t":"Yearly Income"},{"key":"workplace.yearly_salary.question","t":"What is your yearly gross (pre-tax) income in U.S. dollars?"},{"key":"workplace.work_areas","t":"Work Areas"},{"key":"technology.work_areas","t":"Work Areas"},{"key":"workplace.work_areas.question","t":"Which of these areas of software development are part of your day-to-day work?"},{"key":"technology.work_areas.question","t":"Which of these areas of software development are part of your day-to-day work?"},{"key":"health.disability_status","t":"Disability Status"},{"key":"health.disability_status.question","t":"Which of the following disabilities do you experience?"},{"key":"health.disability_status.prompt","t":"Note that this can include temporary disabilities or injuries."},{"key":"career.higher_education_degree","t":"Higher Education Degree"},{"key":"career.higher_education_degree.question","t":"Do you have a higher education degree?"},{"key":"_user_metadata.survey_length","t":"Survey Length"},{"key":"_user_metadata.survey_length.question","t":"How do you feel about this survey's length?"},{"key":"_user_metadata.survey_length.lower","t":"too short"},{"key":"_user_metadata.survey_length.higher","t":"too long"},{"key":"_user_metadata.why_did_you_take_the_survey","t":"Survey Motivation"},{"key":"_user_metadata.why_did_you_take_the_survey.question","t":"What are the main benefits you get from taking this survey?"},{"key":"risks_pain_points.ai_risks","t":"AI Risks"},{"key":"risks_pain_points.ai_risks.question","t":"Which of these general AI risks and issues are you most concerned about?"},{"key":"options.native_languages.english","t":"English"},{"key":"options.other_languages.english","t":"English"},{"key":"options.native_languages.catalan","t":"Catalan"},{"key":"options.other_languages.catalan","t":"Catalan"},{"key":"options.native_languages.spanish","t":"Spanish"},{"key":"options.other_languages.spanish","t":"Spanish"},{"key":"options.native_languages.russian","t":"Russian"},{"key":"options.other_languages.russian","t":"Russian"},{"key":"options.native_languages.french","t":"French"},{"key":"options.other_languages.french","t":"French"},{"key":"options.native_languages.german","t":"German"},{"key":"options.other_languages.german","t":"German"},{"key":"options.native_languages.czech","t":"Czech"},{"key":"options.other_languages.czech","t":"Czech"},{"key":"options.native_languages.portuguese","t":"Portuguese"},{"key":"options.other_languages.portuguese","t":"Portuguese"},{"key":"options.native_languages.portuguese_brazil","t":"Portuguese (Brazil)"},{"key":"options.other_languages.portuguese_brazil","t":"Portuguese (Brazil)"},{"key":"options.native_languages.italian","t":"Italian"},{"key":"options.other_languages.italian","t":"Italian"},{"key":"options.native_languages.swedish","t":"Swedish"},{"key":"options.other_languages.swedish","t":"Swedish"},{"key":"options.native_languages.turkish","t":"Turkish"},{"key":"options.other_languages.turkish","t":"Turkish"},{"key":"options.native_languages.indonesian","t":"Indonesian"},{"key":"options.other_languages.indonesian","t":"Indonesian"},{"key":"options.native_languages.hindi","t":"Hindi"},{"key":"options.other_languages.hindi","t":"Hindi"},{"key":"options.native_languages.japanese","t":"Japanese"},{"key":"options.other_languages.japanese","t":"Japanese"},{"key":"options.native_languages.ukrainian","t":"Ukrainian"},{"key":"options.other_languages.ukrainian","t":"Ukrainian"},{"key":"options.native_languages.polish","t":"Polish"},{"key":"options.other_languages.polish","t":"Polish"},{"key":"options.native_languages.farsi","t":"Farsi"},{"key":"options.other_languages.farsi","t":"Farsi"},{"key":"options.native_languages.dutch","t":"Dutch"},{"key":"options.other_languages.dutch","t":"Dutch"},{"key":"options.native_languages.korean","t":"Korean"},{"key":"options.other_languages.korean","t":"Korean"},{"key":"options.native_languages.romanian","t":"Romanian"},{"key":"options.other_languages.romanian","t":"Romanian"},{"key":"options.native_languages.amharic","t":"Amharic"},{"key":"options.other_languages.amharic","t":"Amharic"},{"key":"options.native_languages.arabic","t":"Arabic"},{"key":"options.other_languages.arabic","t":"Arabic"},{"key":"options.native_languages.afrikaans","t":"Afrikaans"},{"key":"options.other_languages.afrikaans","t":"Afrikaans"},{"key":"options.native_languages.chinese","t":"Chinese"},{"key":"options.other_languages.chinese","t":"Chinese"},{"key":"options.native_languages.greek","t":"Greek"},{"key":"options.other_languages.greek","t":"Greek"},{"key":"options.native_languages.galician","t":"Galician"},{"key":"options.other_languages.galician","t":"Galician"},{"key":"options.native_languages.croatian","t":"Croatian"},{"key":"options.other_languages.croatian","t":"Croatian"},{"key":"options.native_languages.hungarian","t":"Hungarian"},{"key":"options.other_languages.hungarian","t":"Hungarian"},{"key":"options.native_languages.slovak","t":"Slovak"},{"key":"options.other_languages.slovak","t":"Slovak"},{"key":"options.native_languages.vietnamese","t":"Vietnamese"},{"key":"options.other_languages.vietnamese","t":"Vietnamese"},{"key":"options.native_languages.hebrew","t":"Hebrew"},{"key":"options.other_languages.hebrew","t":"Hebrew"},{"key":"options.native_languages.danish","t":"Danish"},{"key":"options.other_languages.danish","t":"Danish"},{"key":"options.native_languages.norwegian","t":"Norwegian"},{"key":"options.other_languages.norwegian","t":"Norwegian"},{"key":"options.native_languages.serbian","t":"Serbian"},{"key":"options.other_languages.serbian","t":"Serbian"},{"key":"options.native_languages.finnish","t":"Finnish"},{"key":"options.other_languages.finnish","t":"Finnish"},{"key":"options.native_languages.bulgarian","t":"Bulgarian"},{"key":"options.other_languages.bulgarian","t":"Bulgarian"},{"key":"options.native_languages.belarussian","t":"Belarussian"},{"key":"options.other_languages.belarussian","t":"Belarussian"},{"key":"options.native_languages.mandarin","t":"Mandarin Chinese"},{"key":"options.other_languages.mandarin","t":"Mandarin Chinese"},{"key":"worldview.opinions_intro","t":"For the following questions, let us know how much you agree with each statement."},{"key":"options.slider.0.description","t":"0%"},{"key":"options.slider.1.description","t":"12.5%"},{"key":"options.ai_generated_code_balance.1","t":"12.5%"},{"key":"options.css_ai_generated_code_balance.1","t":"12.5%"},{"key":"options.slider.2.description","t":"25%"},{"key":"options.ai_generated_code_balance.2","t":"25%"},{"key":"options.css_ai_generated_code_balance.2","t":"25%"},{"key":"options.slider.3.description","t":"37.5%"},{"key":"options.ai_generated_code_balance.3","t":"37.5%"},{"key":"options.css_ai_generated_code_balance.3","t":"37.5%"},{"key":"options.slider.4.description","t":"50%"},{"key":"options.ai_generated_code_balance.4","t":"50%"},{"key":"options.css_ai_generated_code_balance.4","t":"50%"},{"key":"options.slider.5.description","t":"62.5%"},{"key":"options.ai_generated_code_balance.5","t":"62.5%"},{"key":"options.css_ai_generated_code_balance.5","t":"62.5%"},{"key":"options.slider.6.description","t":"75%"},{"key":"options.ai_generated_code_balance.6","t":"75%"},{"key":"options.css_ai_generated_code_balance.6","t":"75%"},{"key":"options.slider.7.description","t":"87.5%"},{"key":"options.ai_generated_code_balance.7","t":"87.5%"},{"key":"options.css_ai_generated_code_balance.7","t":"87.5%"},{"key":"options.slider.8.description","t":"100%"},{"key":"options.sentiment.comments","t":"Comments"},{"key":"options.opinions.value_0","t":"Strongly Disagree"},{"key":"options.opinions.value_1","t":"Disagree"},{"key":"options.opinions.value_2","t":"Neutral"},{"key":"options.opinions.value_3","t":"Agree"},{"key":"options.opinions.value_4","t":"Strongly Agree"},{"key":"options.industry_sector.health_care","t":"Healthcare"},{"key":"options.industry_sector.transportation","t":"Transportation"},{"key":"options.industry_sector.science","t":"Research & Science","tHtml":"Research &amp; Science","tClean":"Research & Science"},{"key":"other_tools.web_platform_resources","t":"Web Platform Resources"},{"key":"other_tools.web_platform_resources.question","t":"Which of these resources do you consult to stay informed about web platform features?"},{"key":"tools.ai_browser_apis","t":"Browser APIs"},{"key":"usage.ai_browser_apis","t":"Browser APIs"},{"key":"tools.ai_browser_apis.question","t":"What AI APIs would you most like to see supported natively in browsers?"},{"key":"usage.ai_browser_apis.question","t":"What AI APIs would you most like to see supported natively in browsers?"},{"key":"options.ai_browser_apis.code_generation","t":"Code generation"},{"key":"options.ai_browser_apis.code_generation.description","t":"Generating or refactoring code based on a prompt."},{"key":"options.ai_browser_apis.translation","t":"Translation"},{"key":"options.ai_browser_apis.translation.description","t":"Translating content from one language to another."},{"key":"options.ai_browser_apis.language_detection","t":"Language detection"},{"key":"options.ai_browser_apis.language_detection.description","t":"Detecting the language a text is written in."},{"key":"options.ai_browser_apis.summarization","t":"Summarization"},{"key":"options.ai_browser_apis.summarization.description","t":"Summarizing a text or dataset into its main themes."},{"key":"options.ai_browser_apis.text_generation","t":"Text generation"},{"key":"options.ai_browser_apis.text_generation.description","t":"Generating a text based on a prompt."},{"key":"options.ai_browser_apis.image_generation","t":"Image generation"},{"key":"options.ai_browser_apis.image_generation.description","t":"Generating an image based on a prompt."},{"key":"options.ai_browser_apis.speech_generation","t":"Speech generation"},{"key":"options.ai_browser_apis.speech_generation.description","t":"Generating speech based on a prompt or a text."},{"key":"options.ai_browser_apis.speech_recognition","t":"Speech recognition"},{"key":"options.ai_browser_apis.speech_recognition.description","t":"Transcribing recorded or real-time speech into text."},{"key":"options.ai_browser_apis.computer_vision","t":"Computer vision"},{"key":"options.ai_browser_apis.computer_vision.description","t":"Detecting items in a photo or video feed."},{"key":"options.ai_browser_apis.sentiment_analysis","t":"Sentiment analysis"},{"key":"options.ai_browser_apis.sentiment_analysis.description","t":"Classifying text data based on sentiment."},{"key":"options.ai_browser_apis.caption_generation","t":"Caption generation"},{"key":"options.ai_browser_apis.caption_generation.description","t":"Generating captions or subtitles for images or videos."},{"key":"options.ai_browser_apis.learning_research","t":"Learning & research","tHtml":"Learning &amp; research","tClean":"Learning & research"},{"key":"options.ai_browser_apis.learning_research.description","t":"Learning new skills or researching a topic."},{"key":"options.ai_browser_apis.no_browser_ai_apis","t":"🚫 None"},{"key":"options.ai_uses.na","t":"🚫 None"},{"key":"options.ai_browser_apis.na","t":"🚫 None"},{"key":"options.ai_browser_apis.debugging","t":"Debugging"},{"key":"health.age","t":"Age"},{"key":"health.age.question","t":"How old are you, in years?"},{"key":"career.years_of_experience","t":"Years of Experience"},{"key":"career.years_of_experience.question","t":"How many years of experience do you have as a developer?"},{"key":"career.years_of_experience.prompt","t":"Whether as a professional, student, hobbyist, etc."},{"key":"workplace.yearly_salary","t":"Yearly Income"},{"key":"workplace.yearly_salary.question","t":"What is your yearly gross (pre-tax) income in U.S. dollars?"},{"key":"workplace.work_areas","t":"Work Areas"},{"key":"technology.work_areas","t":"Work Areas"},{"key":"workplace.work_areas.question","t":"Which of these areas of software development are part of your day-to-day work?"},{"key":"technology.work_areas.question","t":"Which of these areas of software development are part of your day-to-day work?"},{"key":"health.disability_status","t":"Disability Status"},{"key":"health.disability_status.question","t":"Which of the following disabilities do you experience?"},{"key":"health.disability_status.prompt","t":"Note that this can include temporary disabilities or injuries."},{"key":"career.higher_education_degree","t":"Higher Education Degree"},{"key":"career.higher_education_degree.question","t":"Do you have a higher education degree?"},{"key":"_user_metadata.did_you_run_into_technical_issues","t":"Technical Issues"},{"key":"_user_metadata.did_you_run_into_technical_issues.question","t":"What technical issues did you run into while taking this survey, if any?"},{"key":"_user_metadata.survey_length","t":"Survey Length"},{"key":"_user_metadata.survey_length.question","t":"How do you feel about this survey's length?"},{"key":"_user_metadata.survey_length.lower","t":"too short"},{"key":"_user_metadata.survey_length.higher","t":"too long"},{"key":"_user_metadata.missing_questions","t":"Missing Questions"},{"key":"_user_metadata.missing_questions.question","t":"What other questions do you wish the survey would've asked, if any?"},{"key":"_user_metadata.how_can_we_improve","t":"Survey Improvements"},{"key":"_user_metadata.how_can_we_improve.question","t":"How else could we improve this survey?"},{"key":"_user_metadata.why_did_you_take_the_survey","t":"Survey Motivation"},{"key":"_user_metadata.why_did_you_take_the_survey.question","t":"What are the main benefits you get from taking this survey?"},{"key":"risks_pain_points.ai_risks","t":"AI Risks"},{"key":"risks_pain_points.ai_risks.question","t":"Which of these general AI risks and issues are you most concerned about?"},{"key":"options.native_languages.english","t":"English"},{"key":"options.other_languages.english","t":"English"},{"key":"options.native_languages.catalan","t":"Catalan"},{"key":"options.other_languages.catalan","t":"Catalan"},{"key":"options.native_languages.spanish","t":"Spanish"},{"key":"options.other_languages.spanish","t":"Spanish"},{"key":"options.native_languages.russian","t":"Russian"},{"key":"options.other_languages.russian","t":"Russian"},{"key":"options.native_languages.french","t":"French"},{"key":"options.other_languages.french","t":"French"},{"key":"options.native_languages.german","t":"German"},{"key":"options.other_languages.german","t":"German"},{"key":"options.native_languages.czech","t":"Czech"},{"key":"options.other_languages.czech","t":"Czech"},{"key":"options.native_languages.portuguese","t":"Portuguese"},{"key":"options.other_languages.portuguese","t":"Portuguese"},{"key":"options.native_languages.portuguese_brazil","t":"Portuguese (Brazil)"},{"key":"options.other_languages.portuguese_brazil","t":"Portuguese (Brazil)"},{"key":"options.native_languages.italian","t":"Italian"},{"key":"options.other_languages.italian","t":"Italian"},{"key":"options.native_languages.swedish","t":"Swedish"},{"key":"options.other_languages.swedish","t":"Swedish"},{"key":"options.native_languages.turkish","t":"Turkish"},{"key":"options.other_languages.turkish","t":"Turkish"},{"key":"options.native_languages.indonesian","t":"Indonesian"},{"key":"options.other_languages.indonesian","t":"Indonesian"},{"key":"options.native_languages.hindi","t":"Hindi"},{"key":"options.other_languages.hindi","t":"Hindi"},{"key":"options.native_languages.japanese","t":"Japanese"},{"key":"options.other_languages.japanese","t":"Japanese"},{"key":"options.native_languages.ukrainian","t":"Ukrainian"},{"key":"options.other_languages.ukrainian","t":"Ukrainian"},{"key":"options.native_languages.polish","t":"Polish"},{"key":"options.other_languages.polish","t":"Polish"},{"key":"options.native_languages.farsi","t":"Farsi"},{"key":"options.other_languages.farsi","t":"Farsi"},{"key":"options.native_languages.dutch","t":"Dutch"},{"key":"options.other_languages.dutch","t":"Dutch"},{"key":"options.native_languages.korean","t":"Korean"},{"key":"options.other_languages.korean","t":"Korean"},{"key":"options.native_languages.romanian","t":"Romanian"},{"key":"options.other_languages.romanian","t":"Romanian"},{"key":"options.native_languages.amharic","t":"Amharic"},{"key":"options.other_languages.amharic","t":"Amharic"},{"key":"options.native_languages.arabic","t":"Arabic"},{"key":"options.other_languages.arabic","t":"Arabic"},{"key":"options.native_languages.afrikaans","t":"Afrikaans"},{"key":"options.other_languages.afrikaans","t":"Afrikaans"},{"key":"options.native_languages.chinese","t":"Chinese"},{"key":"options.other_languages.chinese","t":"Chinese"},{"key":"options.native_languages.greek","t":"Greek"},{"key":"options.other_languages.greek","t":"Greek"},{"key":"options.native_languages.galician","t":"Galician"},{"key":"options.other_languages.galician","t":"Galician"},{"key":"options.native_languages.croatian","t":"Croatian"},{"key":"options.other_languages.croatian","t":"Croatian"},{"key":"options.native_languages.hungarian","t":"Hungarian"},{"key":"options.other_languages.hungarian","t":"Hungarian"},{"key":"options.native_languages.slovak","t":"Slovak"},{"key":"options.other_languages.slovak","t":"Slovak"},{"key":"options.native_languages.vietnamese","t":"Vietnamese"},{"key":"options.other_languages.vietnamese","t":"Vietnamese"},{"key":"options.native_languages.hebrew","t":"Hebrew"},{"key":"options.other_languages.hebrew","t":"Hebrew"},{"key":"options.native_languages.danish","t":"Danish"},{"key":"options.other_languages.danish","t":"Danish"},{"key":"options.native_languages.norwegian","t":"Norwegian"},{"key":"options.other_languages.norwegian","t":"Norwegian"},{"key":"options.native_languages.serbian","t":"Serbian"},{"key":"options.other_languages.serbian","t":"Serbian"},{"key":"options.native_languages.finnish","t":"Finnish"},{"key":"options.other_languages.finnish","t":"Finnish"},{"key":"options.native_languages.bulgarian","t":"Bulgarian"},{"key":"options.other_languages.bulgarian","t":"Bulgarian"},{"key":"options.native_languages.belarussian","t":"Belarussian"},{"key":"options.other_languages.belarussian","t":"Belarussian"},{"key":"options.native_languages.mandarin","t":"Mandarin Chinese"},{"key":"options.other_languages.mandarin","t":"Mandarin Chinese"},{"key":"worldview.opinions_intro","t":"For the following questions, let us know how much you agree with each statement."},{"key":"options.slider.0.description","t":"0%"},{"key":"options.slider.1.description","t":"12.5%"},{"key":"options.ai_generated_code_balance.1","t":"12.5%"},{"key":"options.css_ai_generated_code_balance.1","t":"12.5%"},{"key":"options.slider.1.description","t":"12.5%"},{"key":"options.ai_generated_code_balance.1","t":"12.5%"},{"key":"options.css_ai_generated_code_balance.1","t":"12.5%"},{"key":"options.slider.1.description","t":"12.5%"},{"key":"options.ai_generated_code_balance.1","t":"12.5%"},{"key":"options.css_ai_generated_code_balance.1","t":"12.5%"},{"key":"options.slider.2.description","t":"25%"},{"key":"options.ai_generated_code_balance.2","t":"25%"},{"key":"options.css_ai_generated_code_balance.2","t":"25%"},{"key":"options.slider.2.description","t":"25%"},{"key":"options.ai_generated_code_balance.2","t":"25%"},{"key":"options.css_ai_generated_code_balance.2","t":"25%"},{"key":"options.slider.2.description","t":"25%"},{"key":"options.ai_generated_code_balance.2","t":"25%"},{"key":"options.css_ai_generated_code_balance.2","t":"25%"},{"key":"options.slider.3.description","t":"37.5%"},{"key":"options.ai_generated_code_balance.3","t":"37.5%"},{"key":"options.css_ai_generated_code_balance.3","t":"37.5%"},{"key":"options.slider.3.description","t":"37.5%"},{"key":"options.ai_generated_code_balance.3","t":"37.5%"},{"key":"options.css_ai_generated_code_balance.3","t":"37.5%"},{"key":"options.slider.3.description","t":"37.5%"},{"key":"options.ai_generated_code_balance.3","t":"37.5%"},{"key":"options.css_ai_generated_code_balance.3","t":"37.5%"},{"key":"options.slider.4.description","t":"50%"},{"key":"options.ai_generated_code_balance.4","t":"50%"},{"key":"options.css_ai_generated_code_balance.4","t":"50%"},{"key":"options.slider.4.description","t":"50%"},{"key":"options.ai_generated_code_balance.4","t":"50%"},{"key":"options.css_ai_generated_code_balance.4","t":"50%"},{"key":"options.slider.4.description","t":"50%"},{"key":"options.ai_generated_code_balance.4","t":"50%"},{"key":"options.css_ai_generated_code_balance.4","t":"50%"},{"key":"options.slider.5.description","t":"62.5%"},{"key":"options.ai_generated_code_balance.5","t":"62.5%"},{"key":"options.css_ai_generated_code_balance.5","t":"62.5%"},{"key":"options.slider.5.description","t":"62.5%"},{"key":"options.ai_generated_code_balance.5","t":"62.5%"},{"key":"options.css_ai_generated_code_balance.5","t":"62.5%"},{"key":"options.slider.5.description","t":"62.5%"},{"key":"options.ai_generated_code_balance.5","t":"62.5%"},{"key":"options.css_ai_generated_code_balance.5","t":"62.5%"},{"key":"options.slider.6.description","t":"75%"},{"key":"options.ai_generated_code_balance.6","t":"75%"},{"key":"options.css_ai_generated_code_balance.6","t":"75%"},{"key":"options.slider.6.description","t":"75%"},{"key":"options.ai_generated_code_balance.6","t":"75%"},{"key":"options.css_ai_generated_code_balance.6","t":"75%"},{"key":"options.slider.6.description","t":"75%"},{"key":"options.ai_generated_code_balance.6","t":"75%"},{"key":"options.css_ai_generated_code_balance.6","t":"75%"},{"key":"options.slider.7.description","t":"87.5%"},{"key":"options.ai_generated_code_balance.7","t":"87.5%"},{"key":"options.css_ai_generated_code_balance.7","t":"87.5%"},{"key":"options.slider.7.description","t":"87.5%"},{"key":"options.ai_generated_code_balance.7","t":"87.5%"},{"key":"options.css_ai_generated_code_balance.7","t":"87.5%"},{"key":"options.slider.7.description","t":"87.5%"},{"key":"options.ai_generated_code_balance.7","t":"87.5%"},{"key":"options.css_ai_generated_code_balance.7","t":"87.5%"},{"key":"options.slider.8.description","t":"100%"},{"key":"options.sentiment.comments","t":"Comments"},{"key":"options.opinions.value_0","t":"Strongly Disagree"},{"key":"options.opinions.value_1","t":"Disagree"},{"key":"options.opinions.value_2","t":"Neutral"},{"key":"options.opinions.value_3","t":"Agree"},{"key":"options.opinions.value_4","t":"Strongly Agree"},{"key":"options.industry_sector.health_care","t":"Healthcare"},{"key":"options.industry_sector.transportation","t":"Transportation"},{"key":"options.industry_sector.science","t":"Research & Science","tHtml":"Research &amp; Science","tClean":"Research & Science"},{"key":"other_tools.web_platform_resources","t":"Web Platform Resources"},{"key":"other_tools.web_platform_resources.question","t":"Which of these resources do you consult to stay informed about web platform features?"},{"key":"tools.ai_browser_apis","t":"Browser APIs"},{"key":"usage.ai_browser_apis","t":"Browser APIs"},{"key":"tools.ai_browser_apis","t":"Browser APIs"},{"key":"usage.ai_browser_apis","t":"Browser APIs"},{"key":"tools.ai_browser_apis.question","t":"What AI APIs would you most like to see supported natively in browsers?"},{"key":"usage.ai_browser_apis.question","t":"What AI APIs would you most like to see supported natively in browsers?"},{"key":"tools.ai_browser_apis.question","t":"What AI APIs would you most like to see supported natively in browsers?"},{"key":"usage.ai_browser_apis.question","t":"What AI APIs would you most like to see supported natively in browsers?"},{"key":"options.ai_browser_apis.code_generation","t":"Code generation"},{"key":"options.ai_browser_apis.code_generation.description","t":"Generating or refactoring code based on a prompt."},{"key":"options.ai_browser_apis.translation","t":"Translation"},{"key":"options.ai_browser_apis.translation.description","t":"Translating content from one language to another."},{"key":"options.ai_browser_apis.language_detection","t":"Language detection"},{"key":"options.ai_browser_apis.language_detection.description","t":"Detecting the language a text is written in."},{"key":"options.ai_browser_apis.summarization","t":"Summarization"},{"key":"options.ai_browser_apis.summarization.description","t":"Summarizing a text or dataset into its main themes."},{"key":"options.ai_browser_apis.text_generation","t":"Text generation"},{"key":"options.ai_browser_apis.text_generation.description","t":"Generating a text based on a prompt."},{"key":"options.ai_browser_apis.image_generation","t":"Image generation"},{"key":"options.ai_browser_apis.image_generation.description","t":"Generating an image based on a prompt."},{"key":"options.ai_browser_apis.speech_generation","t":"Speech generation"},{"key":"options.ai_browser_apis.speech_generation.description","t":"Generating speech based on a prompt or a text."},{"key":"options.ai_browser_apis.speech_recognition","t":"Speech recognition"},{"key":"options.ai_browser_apis.speech_recognition.description","t":"Transcribing recorded or real-time speech into text."},{"key":"options.ai_browser_apis.computer_vision","t":"Computer vision"},{"key":"options.ai_browser_apis.computer_vision.description","t":"Detecting items in a photo or video feed."},{"key":"options.ai_browser_apis.sentiment_analysis","t":"Sentiment analysis"},{"key":"options.ai_browser_apis.sentiment_analysis.description","t":"Classifying text data based on sentiment."},{"key":"options.ai_browser_apis.caption_generation","t":"Caption generation"},{"key":"options.ai_browser_apis.caption_generation.description","t":"Generating captions or subtitles for images or videos."},{"key":"options.ai_browser_apis.learning_research","t":"Learning & research","tHtml":"Learning &amp; research","tClean":"Learning & research"},{"key":"options.ai_browser_apis.learning_research.description","t":"Learning new skills or researching a topic."},{"key":"options.ai_browser_apis.no_browser_ai_apis","t":"🚫 None"},{"key":"options.ai_uses.na","t":"🚫 None"},{"key":"options.ai_browser_apis.na","t":"🚫 None"},{"key":"options.ai_browser_apis.no_browser_ai_apis","t":"🚫 None"},{"key":"options.ai_uses.na","t":"🚫 None"},{"key":"options.ai_browser_apis.na","t":"🚫 None"},{"key":"options.ai_browser_apis.no_browser_ai_apis","t":"🚫 None"},{"key":"options.ai_uses.na","t":"🚫 None"},{"key":"options.ai_browser_apis.na","t":"🚫 None"},{"key":"options.ai_browser_apis.debugging","t":"Debugging"},{"key":"health.age","t":"Age"},{"key":"health.age.question","t":"How old are you, in years?"},{"key":"career.years_of_experience","t":"Years of Experience"},{"key":"career.years_of_experience.question","t":"How many years of experience do you have as a developer?"},{"key":"career.years_of_experience.prompt","t":"Whether as a professional, student, hobbyist, etc."},{"key":"workplace.yearly_salary","t":"Yearly Income"},{"key":"workplace.yearly_salary.question","t":"What is your yearly gross (pre-tax) income in U.S. dollars?"},{"key":"workplace.work_areas","t":"Work Areas"},{"key":"technology.work_areas","t":"Work Areas"},{"key":"workplace.work_areas","t":"Work Areas"},{"key":"technology.work_areas","t":"Work Areas"},{"key":"workplace.work_areas.question","t":"Which of these areas of software development are part of your day-to-day work?"},{"key":"technology.work_areas.question","t":"Which of these areas of software development are part of your day-to-day work?"},{"key":"workplace.work_areas.question","t":"Which of these areas of software development are part of your day-to-day work?"},{"key":"technology.work_areas.question","t":"Which of these areas of software development are part of your day-to-day work?"},{"key":"health.disability_status","t":"Disability Status"},{"key":"health.disability_status.question","t":"Which of the following disabilities do you experience?"},{"key":"health.disability_status.prompt","t":"Note that this can include temporary disabilities or injuries."},{"key":"career.higher_education_degree","t":"Higher Education Degree"},{"key":"career.higher_education_degree.question","t":"Do you have a higher education degree?"},{"key":"_user_metadata.survey_length","t":"Survey Length"},{"key":"_user_metadata.survey_length.question","t":"How do you feel about this survey's length?"},{"key":"_user_metadata.survey_length.lower","t":"too short"},{"key":"_user_metadata.survey_length.higher","t":"too long"},{"key":"_user_metadata.why_did_you_take_the_survey","t":"Survey Motivation"},{"key":"_user_metadata.why_did_you_take_the_survey.question","t":"What are the main benefits you get from taking this survey?"},{"key":"risks_pain_points.ai_risks","t":"AI Risks"},{"key":"risks_pain_points.ai_risks.question","t":"Which of these general AI risks and issues are you most concerned about?"},{"key":"options.native_languages.english","t":"English"},{"key":"options.other_languages.english","t":"English"},{"key":"options.native_languages.english","t":"English"},{"key":"options.other_languages.english","t":"English"},{"key":"options.native_languages.catalan","t":"Catalan"},{"key":"options.other_languages.catalan","t":"Catalan"},{"key":"options.native_languages.catalan","t":"Catalan"},{"key":"options.other_languages.catalan","t":"Catalan"},{"key":"options.native_languages.spanish","t":"Spanish"},{"key":"options.other_languages.spanish","t":"Spanish"},{"key":"options.native_languages.spanish","t":"Spanish"},{"key":"options.other_languages.spanish","t":"Spanish"},{"key":"options.native_languages.russian","t":"Russian"},{"key":"options.other_languages.russian","t":"Russian"},{"key":"options.native_languages.russian","t":"Russian"},{"key":"options.other_languages.russian","t":"Russian"},{"key":"options.native_languages.french","t":"French"},{"key":"options.other_languages.french","t":"French"},{"key":"options.native_languages.french","t":"French"},{"key":"options.other_languages.french","t":"French"},{"key":"options.native_languages.german","t":"German"},{"key":"options.other_languages.german","t":"German"},{"key":"options.native_languages.german","t":"German"},{"key":"options.other_languages.german","t":"German"},{"key":"options.native_languages.czech","t":"Czech"},{"key":"options.other_languages.czech","t":"Czech"},{"key":"options.native_languages.czech","t":"Czech"},{"key":"options.other_languages.czech","t":"Czech"},{"key":"options.native_languages.portuguese","t":"Portuguese"},{"key":"options.other_languages.portuguese","t":"Portuguese"},{"key":"options.native_languages.portuguese","t":"Portuguese"},{"key":"options.other_languages.portuguese","t":"Portuguese"},{"key":"options.native_languages.portuguese_brazil","t":"Portuguese (Brazil)"},{"key":"options.other_languages.portuguese_brazil","t":"Portuguese (Brazil)"},{"key":"options.native_languages.portuguese_brazil","t":"Portuguese (Brazil)"},{"key":"options.other_languages.portuguese_brazil","t":"Portuguese (Brazil)"},{"key":"options.native_languages.italian","t":"Italian"},{"key":"options.other_languages.italian","t":"Italian"},{"key":"options.native_languages.italian","t":"Italian"},{"key":"options.other_languages.italian","t":"Italian"},{"key":"options.native_languages.swedish","t":"Swedish"},{"key":"options.other_languages.swedish","t":"Swedish"},{"key":"options.native_languages.swedish","t":"Swedish"},{"key":"options.other_languages.swedish","t":"Swedish"},{"key":"options.native_languages.turkish","t":"Turkish"},{"key":"options.other_languages.turkish","t":"Turkish"},{"key":"options.native_languages.turkish","t":"Turkish"},{"key":"options.other_languages.turkish","t":"Turkish"},{"key":"options.native_languages.indonesian","t":"Indonesian"},{"key":"options.other_languages.indonesian","t":"Indonesian"},{"key":"options.native_languages.indonesian","t":"Indonesian"},{"key":"options.other_languages.indonesian","t":"Indonesian"},{"key":"options.native_languages.hindi","t":"Hindi"},{"key":"options.other_languages.hindi","t":"Hindi"},{"key":"options.native_languages.hindi","t":"Hindi"},{"key":"options.other_languages.hindi","t":"Hindi"},{"key":"options.native_languages.japanese","t":"Japanese"},{"key":"options.other_languages.japanese","t":"Japanese"},{"key":"options.native_languages.japanese","t":"Japanese"},{"key":"options.other_languages.japanese","t":"Japanese"},{"key":"options.native_languages.ukrainian","t":"Ukrainian"},{"key":"options.other_languages.ukrainian","t":"Ukrainian"},{"key":"options.native_languages.ukrainian","t":"Ukrainian"},{"key":"options.other_languages.ukrainian","t":"Ukrainian"},{"key":"options.native_languages.polish","t":"Polish"},{"key":"options.other_languages.polish","t":"Polish"},{"key":"options.native_languages.polish","t":"Polish"},{"key":"options.other_languages.polish","t":"Polish"},{"key":"options.native_languages.farsi","t":"Farsi"},{"key":"options.other_languages.farsi","t":"Farsi"},{"key":"options.native_languages.farsi","t":"Farsi"},{"key":"options.other_languages.farsi","t":"Farsi"},{"key":"options.native_languages.dutch","t":"Dutch"},{"key":"options.other_languages.dutch","t":"Dutch"},{"key":"options.native_languages.dutch","t":"Dutch"},{"key":"options.other_languages.dutch","t":"Dutch"},{"key":"options.native_languages.korean","t":"Korean"},{"key":"options.other_languages.korean","t":"Korean"},{"key":"options.native_languages.korean","t":"Korean"},{"key":"options.other_languages.korean","t":"Korean"},{"key":"options.native_languages.romanian","t":"Romanian"},{"key":"options.other_languages.romanian","t":"Romanian"},{"key":"options.native_languages.romanian","t":"Romanian"},{"key":"options.other_languages.romanian","t":"Romanian"},{"key":"options.native_languages.amharic","t":"Amharic"},{"key":"options.other_languages.amharic","t":"Amharic"},{"key":"options.native_languages.amharic","t":"Amharic"},{"key":"options.other_languages.amharic","t":"Amharic"},{"key":"options.native_languages.arabic","t":"Arabic"},{"key":"options.other_languages.arabic","t":"Arabic"},{"key":"options.native_languages.arabic","t":"Arabic"},{"key":"options.other_languages.arabic","t":"Arabic"},{"key":"options.native_languages.afrikaans","t":"Afrikaans"},{"key":"options.other_languages.afrikaans","t":"Afrikaans"},{"key":"options.native_languages.afrikaans","t":"Afrikaans"},{"key":"options.other_languages.afrikaans","t":"Afrikaans"},{"key":"options.native_languages.chinese","t":"Chinese"},{"key":"options.other_languages.chinese","t":"Chinese"},{"key":"options.native_languages.chinese","t":"Chinese"},{"key":"options.other_languages.chinese","t":"Chinese"},{"key":"options.native_languages.greek","t":"Greek"},{"key":"options.other_languages.greek","t":"Greek"},{"key":"options.native_languages.greek","t":"Greek"},{"key":"options.other_languages.greek","t":"Greek"},{"key":"options.native_languages.galician","t":"Galician"},{"key":"options.other_languages.galician","t":"Galician"},{"key":"options.native_languages.galician","t":"Galician"},{"key":"options.other_languages.galician","t":"Galician"},{"key":"options.native_languages.croatian","t":"Croatian"},{"key":"options.other_languages.croatian","t":"Croatian"},{"key":"options.native_languages.croatian","t":"Croatian"},{"key":"options.other_languages.croatian","t":"Croatian"},{"key":"options.native_languages.hungarian","t":"Hungarian"},{"key":"options.other_languages.hungarian","t":"Hungarian"},{"key":"options.native_languages.hungarian","t":"Hungarian"},{"key":"options.other_languages.hungarian","t":"Hungarian"},{"key":"options.native_languages.slovak","t":"Slovak"},{"key":"options.other_languages.slovak","t":"Slovak"},{"key":"options.native_languages.slovak","t":"Slovak"},{"key":"options.other_languages.slovak","t":"Slovak"},{"key":"options.native_languages.vietnamese","t":"Vietnamese"},{"key":"options.other_languages.vietnamese","t":"Vietnamese"},{"key":"options.native_languages.vietnamese","t":"Vietnamese"},{"key":"options.other_languages.vietnamese","t":"Vietnamese"},{"key":"options.native_languages.hebrew","t":"Hebrew"},{"key":"options.other_languages.hebrew","t":"Hebrew"},{"key":"options.native_languages.hebrew","t":"Hebrew"},{"key":"options.other_languages.hebrew","t":"Hebrew"},{"key":"options.native_languages.danish","t":"Danish"},{"key":"options.other_languages.danish","t":"Danish"},{"key":"options.native_languages.danish","t":"Danish"},{"key":"options.other_languages.danish","t":"Danish"},{"key":"options.native_languages.norwegian","t":"Norwegian"},{"key":"options.other_languages.norwegian","t":"Norwegian"},{"key":"options.native_languages.norwegian","t":"Norwegian"},{"key":"options.other_languages.norwegian","t":"Norwegian"},{"key":"options.native_languages.serbian","t":"Serbian"},{"key":"options.other_languages.serbian","t":"Serbian"},{"key":"options.native_languages.serbian","t":"Serbian"},{"key":"options.other_languages.serbian","t":"Serbian"},{"key":"options.native_languages.finnish","t":"Finnish"},{"key":"options.other_languages.finnish","t":"Finnish"},{"key":"options.native_languages.finnish","t":"Finnish"},{"key":"options.other_languages.finnish","t":"Finnish"},{"key":"options.native_languages.bulgarian","t":"Bulgarian"},{"key":"options.other_languages.bulgarian","t":"Bulgarian"},{"key":"options.native_languages.bulgarian","t":"Bulgarian"},{"key":"options.other_languages.bulgarian","t":"Bulgarian"},{"key":"options.native_languages.belarussian","t":"Belarussian"},{"key":"options.other_languages.belarussian","t":"Belarussian"},{"key":"options.native_languages.belarussian","t":"Belarussian"},{"key":"options.other_languages.belarussian","t":"Belarussian"},{"key":"options.native_languages.mandarin","t":"Mandarin Chinese"},{"key":"options.other_languages.mandarin","t":"Mandarin Chinese"},{"key":"options.native_languages.mandarin","t":"Mandarin Chinese"},{"key":"options.other_languages.mandarin","t":"Mandarin Chinese"},{"key":"homepage.with_support_from","t":"With Special Support From"},{"key":"homepage.made_by_devographics","t":"Made by <a href=\"{link}\">Devographics</a>","tHtml":"Made by <a href=\"{link}\">Devographics</a>","tClean":"Made by Devographics"},{"key":"homepage.join_discord","t":"Join us on <a href=\"{link}\">Discord</a>.","tHtml":"Join us on <a href=\"{link}\">Discord</a>.","tClean":"Join us on Discord."},{"key":"options.state_of_the_web_happiness.0","t":"Very Unhappy"},{"key":"options.state_of_the_web_happiness.1","t":"Unhappy"},{"key":"options.state_of_the_web_happiness.2","t":"Neutral"},{"key":"options.state_of_the_web_happiness.3","t":"Happy"},{"key":"options.state_of_the_web_happiness.4","t":"Very Happy"},{"key":"options.state_of_css_happiness.0","t":"Very Unhappy"},{"key":"options.state_of_css_happiness.1","t":"Unhappy"},{"key":"options.state_of_css_happiness.2","t":"Neutral"},{"key":"options.state_of_css_happiness.3","t":"Happy"},{"key":"options.state_of_css_happiness.4","t":"Very Happy"},{"key":"resources.sites_courses_css","t":"Sites & Courses","tHtml":"Sites &amp; Courses","tClean":"Sites & Courses"},{"key":"resources.podcasts_css","t":"Podcasts"},{"key":"resources.people_css.others","t":"People"},{"key":"career.employment_status","t":"Employment Status"},{"key":"career.employment_status.question","t":"What is your current employment status?"},{"key":"workplace.company_size","t":"Company Size"},{"key":"workplace.company_size.question","t":"How many people work at your organization, including yourself?"},{"key":"workplace.job_title","t":"Job Title"},{"key":"workplace.job_title.question","t":"What is your job title?"},{"key":"workplace.income_evolution","t":"Income Evolution"},{"key":"workplace.income_evolution.question","t":"How has your total income evolved over the past 12 months?"},{"key":"options.job_happiness.0","t":"Very Unhappy"},{"key":"options.job_happiness.1","t":"Unhappy"},{"key":"options.job_happiness.2","t":"Neutral"},{"key":"options.job_happiness.3","t":"Happy"},{"key":"options.job_happiness.4","t":"Very Happy"},{"key":"ai_usage.ai_risks","t":"AI Risks"},{"key":"ai_usage.ai_risks.question","t":"Which of these general AI risks and issues are you most concerned about?"},{"key":"risks_pain_points.ai_risks","t":"AI Risks"},{"key":"risks_pain_points.ai_risks.question","t":"Which of these general AI risks and issues are you most concerned about?"},{"key":"risks_pain_points.ai_risks","t":"AI Risks"},{"key":"risks_pain_points.ai_risks.question","t":"Which of these general AI risks and issues are you most concerned about?"},{"key":"risks_pain_points.ai_risks","t":"AI Risks"},{"key":"risks_pain_points.ai_risks.question","t":"Which of these general AI risks and issues are you most concerned about?"},{"key":"usage.industry_sector_graphql","t":"Industry Sector"},{"key":"usage.industry_sector_graphql.others","t":"Other Industry Sectors"},{"key":"resources.sites_courses_graphql","t":"Sites & Courses","tHtml":"Sites &amp; Courses","tClean":"Sites & Courses"},{"key":"resources.podcasts_graphql.others","t":"Podcasts"},{"key":"resources.people_graphql.others","t":"People"},{"key":"options.accessibility_is_valued.0","t":"Strongly Disagree"},{"key":"options.accessibility_is_valued.1","t":"Disagree"},{"key":"options.accessibility_is_valued.2","t":"Neutral"},{"key":"options.accessibility_is_valued.3","t":"Agree"},{"key":"options.accessibility_is_valued.4","t":"Strongly Agree"},{"key":"options.keeping_informed_is_challenging.0","t":"Strongly Disagree"},{"key":"options.keeping_informed_is_challenging.1","t":"Disagree"},{"key":"options.keeping_informed_is_challenging.2","t":"Neutral"},{"key":"options.keeping_informed_is_challenging.3","t":"Agree"},{"key":"options.keeping_informed_is_challenging.4","t":"Strongly Agree"},{"key":"options.browser_interoperability_is_obstacle.0","t":"Strongly Disagree"},{"key":"options.browser_interoperability_is_obstacle.1","t":"Disagree"},{"key":"options.browser_interoperability_is_obstacle.2","t":"Neutral"},{"key":"options.browser_interoperability_is_obstacle.3","t":"Agree"},{"key":"options.browser_interoperability_is_obstacle.4","t":"Strongly Agree"},{"key":"options.browser_interoperability_pace.0","t":"Strongly Disagree"},{"key":"options.browser_interoperability_pace.1","t":"Disagree"},{"key":"options.browser_interoperability_pace.2","t":"Neutral"},{"key":"options.browser_interoperability_pace.3","t":"Agree"},{"key":"options.browser_interoperability_pace.4","t":"Strongly Agree"},{"key":"options.web_platform_right_direction.0","t":"Strongly Disagree"},{"key":"options.web_platform_right_direction.1","t":"Disagree"},{"key":"options.web_platform_right_direction.2","t":"Neutral"},{"key":"options.web_platform_right_direction.3","t":"Agree"},{"key":"options.web_platform_right_direction.4","t":"Strongly Agree"},{"key":"options.validation_is_important.0","t":"Strongly Disagree"},{"key":"options.validation_is_important.1","t":"Disagree"},{"key":"options.validation_is_important.2","t":"Neutral"},{"key":"options.validation_is_important.3","t":"Agree"},{"key":"options.validation_is_important.4","t":"Strongly Agree"},{"key":"options.opinions.value_0","t":"Strongly Disagree"},{"key":"options.opinions.value_1","t":"Disagree"},{"key":"options.opinions.value_2","t":"Neutral"},{"key":"options.opinions.value_3","t":"Agree"},{"key":"options.opinions.value_4","t":"Strongly Agree"},{"key":"options.opinions.value_0","t":"Strongly Disagree"},{"key":"options.opinions.value_1","t":"Disagree"},{"key":"options.opinions.value_2","t":"Neutral"},{"key":"options.opinions.value_3","t":"Agree"},{"key":"options.opinions.value_4","t":"Strongly Agree"},{"key":"options.opinions.value_0","t":"Strongly Disagree"},{"key":"options.opinions.value_1","t":"Disagree"},{"key":"options.opinions.value_2","t":"Neutral"},{"key":"options.opinions.value_3","t":"Agree"},{"key":"options.opinions.value_4","t":"Strongly Agree"},{"key":"options.opinions.value_0","t":"Strongly Disagree"},{"key":"options.opinions.value_1","t":"Disagree"},{"key":"options.opinions.value_2","t":"Neutral"},{"key":"options.opinions.value_3","t":"Agree"},{"key":"options.opinions.value_4","t":"Strongly Agree"},{"key":"options.opinions.value_0","t":"Strongly Disagree"},{"key":"options.opinions.value_1","t":"Disagree"},{"key":"options.opinions.value_2","t":"Neutral"},{"key":"options.opinions.value_3","t":"Agree"},{"key":"options.opinions.value_4","t":"Strongly Agree"},{"key":"options.opinions.value_0","t":"Strongly Disagree"},{"key":"options.opinions.value_1","t":"Disagree"},{"key":"options.opinions.value_2","t":"Neutral"},{"key":"options.opinions.value_3","t":"Agree"},{"key":"options.opinions.value_4","t":"Strongly Agree"},{"key":"options.opinions.value_0","t":"Strongly Disagree"},{"key":"options.opinions.value_1","t":"Disagree"},{"key":"options.opinions.value_2","t":"Neutral"},{"key":"options.opinions.value_3","t":"Agree"},{"key":"options.opinions.value_4","t":"Strongly Agree"},{"key":"options.opinions.value_0","t":"Strongly Disagree"},{"key":"options.opinions.value_1","t":"Disagree"},{"key":"options.opinions.value_2","t":"Neutral"},{"key":"options.opinions.value_3","t":"Agree"},{"key":"options.opinions.value_4","t":"Strongly Agree"},{"key":"usage.industry_sector_js","t":"Industry Sector"},{"key":"usage.industry_sector_js.others","t":"Other Industry Sectors"},{"key":"results.start","t":"Start"},{"key":"page.previous","t":"Previous:"},{"key":"page.next","t":"Next:"},{"key":"general.state_of_css_link","t":"State of CSS"},{"key":"general.netlify_link","t":"Hosted on <a href=\"{link}\">Netlify</a>.","tHtml":"Hosted on <a href=\"{link}\">Netlify</a>.","tClean":"Hosted on Netlify."},{"key":"general.completion_percentage","t":"Completion percentage:"},{"key":"sponsors.thanks","t":"Sponsored content from our partners."},{"key":"sponsors.learn_more","t":"Learn more."},{"key":"general.disclaimer.representation","t":"This survey was distributed primarily through online platforms, each of which carry their own inherent demographic biases. As such, it is representative of the makeup of these specific communities, and may not be representative of the developer community at large."},{"key":"results.ongoing_survey","t":"Open Now"},{"key":"general.other_editions","t":"Other Editions"},{"key":"general.previous_editions","t":"Previous Editions"},{"key":"general.other_surveys","t":"Other Surveys"},{"key":"general.all_editions","t":"View more…"},{"key":"general.view_full_results","t":"View Full Results »"},{"key":"tabs.all_respondents","t":"All Respondents"},{"key":"tabs.main_answers","t":"Main Answers"},{"key":"tabs.other_answers","t":"Other Answers"},{"key":"tabs.bracket_wins","t":"Wins"},{"key":"tabs.bracket_matchups","t":"Matchups"},{"key":"tabs.chart","t":"Chart"},{"key":"tabs.data","t":"Data"},{"key":"tabs.share","t":"Share"},{"key":"tabs.debug","t":"Debug"},{"key":"tabs.by_country","t":"By Country"},{"key":"tabs.by_experience","t":"By Experience"},{"key":"tabs.by_degree","t":"By Degree"},{"key":"tabs.by_salary","t":"By Income"},{"key":"tabs.by_salary_experience_fixed","t":"vs. Income (Same Exp.)"},{"key":"tabs.by_gender","t":"By Gender"},{"key":"tabs.by_race_ethnicity","t":"By Race/Ethnicity"},{"key":"tabs.low_vs_high_income","t":"Low vs High Income"},{"key":"tabs.usa_vs_the_world","t":"U.S. vs World"},{"key":"tabs.spanish","t":"Spanish-Language"},{"key":"tabs.outreach","t":"Outreach"},{"key":"tabs.men_vs_non_men","t":"Men vs Non-Men"},{"key":"tabs.white_vs_non_white","t":"White vs Non-White"},{"key":"tabs.by_age","t":"By Age"},{"key":"tabs.vs_age","t":"vs. Age"},{"key":"tabs.by_remote_work_policy","t":"By Remote Work"},{"key":"tabs.vs_job_happiness","t":"vs. Job Happiness"},{"key":"tabs.developers_engineers","t":"Developers vs Engineers"},{"key":"tabs.by_os","t":"By Operating System"},{"key":"tabs.vs_company_size","t":"vs. Company Size"},{"key":"tabs.browsers_not_big_4","t":"Non-Major Browsers"},{"key":"tabs.all_pain_points","t":"All Pain Points"},{"key":"tabs.limitations","t":"Limitations"},{"key":"tabs.browser_support","t":"Browser Support"},{"key":"tabs.features","t":"Features"},{"key":"tabs.all_topics","t":"All Topics"},{"key":"options.experience_ranking.satisfaction","t":"Retention"},{"key":"options.experience_ranking.interest","t":"Interest"},{"key":"options.experience_ranking.usage","t":"Usage"},{"key":"options.experience_ranking.awareness","t":"Awareness"},{"key":"ratios.interest","t":"Interest"},{"key":"ratios.usage","t":"Usage"},{"key":"ratios.awareness","t":"Awareness"},{"key":"ratios.retention","t":"Satisfaction"},{"key":"ratios.positivity","t":"Positivity"},{"key":"ratios.positivityRelative","t":"Positivity"},{"key":"ratios.appreciation","t":"Appreciation"},{"key":"ratios.interest.description","t":"Proportion of **positive sentiment** among respondents having **heard about** an item and expressed a sentiment","tHtml":"Proportion of <strong>positive sentiment</strong> among respondents having <strong>heard about</strong> an item and expressed a sentiment","tClean":"Proportion of positive sentiment among respondents having heard about an item and expressed a sentiment"},{"key":"ratios.usage.description","t":"Proportion of respondents **having used** an item","tHtml":"Proportion of respondents <strong>having used</strong> an item","tClean":"Proportion of respondents having used an item"},{"key":"ratios.awareness.description","t":"Proportion of respondents **having heard about or used** an item","tHtml":"Proportion of respondents <strong>having heard about or used</strong> an item","tClean":"Proportion of respondents having heard about or used an item"},{"key":"ratios.retention.description","t":"Proportion of **positive sentiment** among respondents having **used** an item and expressed a sentiment","tHtml":"Proportion of <strong>positive sentiment</strong> among respondents having <strong>used</strong> an item and expressed a sentiment","tClean":"Proportion of positive sentiment among respondents having used an item and expressed a sentiment"},{"key":"ratios.positivity.description","t":"Proportion of **positive sentiment** among all respondents","tHtml":"Proportion of <strong>positive sentiment</strong> among all respondents","tClean":"Proportion of positive sentiment among all respondents"},{"key":"ratios.positivityRelative.description","t":"Proportion of **positive sentiment** among all respondents who expressed a sentiment, regardless of their experience with the item.","tHtml":"Proportion of <strong>positive sentiment</strong> among all respondents who expressed a sentiment, regardless of their experience with the item.","tClean":"Proportion of positive sentiment among all respondents who expressed a sentiment, regardless of their experience with the item."},{"key":"ratios.appreciation.description","t":"Gap between **interest** (**positive sentiment** among “heard of it” respondents) and **satisfaction** (**positive sentiment** among “used it” respondents), in percentage points. In other words, how much more respondents enjoy an item after using it, compared to when they had only heard about it.","tHtml":"Gap between <strong>interest</strong> (<strong>positive sentiment</strong> among “heard of it” respondents) and <strong>satisfaction</strong> (<strong>positive sentiment</strong> among “used it” respondents), in percentage points. In other words, how much more respondents enjoy an item after using it, compared to when they had only heard about it.","tClean":"Gap between interest (positive sentiment among “heard of it” respondents) and satisfaction (positive sentiment among “used it” respondents), in percentage points. In other words, how much more respondents enjoy an item after using it, compared to when they had only heard about it."},{"key":"modes.rank","t":"Rank"},{"key":"modes.value","t":"Value"},{"key":"modes.rank.description","t":"Place according to rank"},{"key":"modes.value.description","t":"Place according to value"},{"key":"options.features_mode.grouped","t":"Grouped"},{"key":"options.features_mode.awareness_rank","t":"By Awareness"},{"key":"options.features_mode.usage_rank","t":"By Usage"},{"key":"options.features_mode.usage_ratio_rank","t":"By Ratio"},{"key":"options.features_simplified.know_it","t":"Know about it"},{"key":"options.features_simplified.used_it","t":"Have used it"},{"key":"options.features_simplified.usage_ratio","t":"Ratio"},{"key":"options.quadrant.assess","t":"ASSESS"},{"key":"options.quadrant.assess.long","t":"ASSESS: Low usage, high retention. Technologies worth keeping an eye on."},{"key":"options.quadrant.adopt","t":"ADOPT"},{"key":"options.quadrant.adopt.long","t":"ADOPT: High usage, high retention. Safe technologies to adopt."},{"key":"options.quadrant.avoid","t":"AVOID"},{"key":"options.quadrant.avoid.long","t":"AVOID: Low usage, low retention. Technologies probably best avoided currently."},{"key":"options.quadrant.analyze","t":"ANALYZE"},{"key":"options.quadrant.analyze.long","t":"ANALYZE: High usage, low retention. Reassess these technologies if you're currently using them."},{"key":"options.quadrant.1","t":"1"},{"key":"options.quadrant.1.long","t":"1: Low usage, high retention. Technologies worth keeping an eye on."},{"key":"options.quadrant.2","t":"2"},{"key":"options.quadrant.2.long","t":"2: High usage, high retention. Safe technologies to adopt."},{"key":"options.quadrant.3","t":"3"},{"key":"options.quadrant.3.long","t":"3: Low usage, low retention. Technologies that are harder to recommend."},{"key":"options.quadrant.4","t":"4"},{"key":"options.quadrant.4.long","t":"4: High usage, low retention. Reassess these technologies if you're currently using them."},{"key":"ranges.selector.years_of_experience","t":"Experience"},{"key":"ranges.selector.yearly_salary","t":"Income"},{"key":"ranges.selector.company_size","t":"Company Size"},{"key":"options.disability_status_others.adhd","t":"ADHD"},{"key":"options.disability_status_others.autism","t":"Autism"},{"key":"options.disability_status_others.glasses","t":"Glasses"},{"key":"options.disability_status_others.old","t":"Old Age"},{"key":"options.disability_status_others.back_pain","t":"Back Pain"},{"key":"options.disability_status_others.epilepsy","t":"Epilepsy"},{"key":"options.disability_status_others.aspergers","t":"Aspergers"},{"key":"options.disability_status_others.color_blindness","t":"Color Blindness"},{"key":"options.disability_status_others.anxiety","t":"Anxiety"},{"key":"options.disability_status_others.dyslexia","t":"Dyslexia"},{"key":"options.disability_status_others.diabetes","t":"Diabetes"},{"key":"options.disability_status_others.carpal_tunnel","t":"Carpal Tunnel"},{"key":"options.disability_status_others.migraine","t":"Migraine"},{"key":"options.disability_status_others.speech_impairment","t":"Speech Impairment"},{"key":"options.disability_status_others.ocd","t":"OCD"},{"key":"options.disability_status_others.chronic_pain","t":"Chronic Pain"},{"key":"options.disability_status_others.chronic_fatigue","t":"Chronic Fatigue"},{"key":"options.disability_status_others.crohn","t":"Crohn's Disease"},{"key":"options.disability_status_others.depression","t":"Depression"},{"key":"sections.introduction.title","t":"Introduction"},{"key":"sections.demographics.title","t":"Demographics"},{"key":"sections.tshirt.title","t":"T-shirt"},{"key":"sections.technologies.title","t":"Technologies"},{"key":"sections.libraries.title","t":"Libraries"},{"key":"sections.conclusion.title","t":"Conclusion"},{"key":"sections.about.title","t":"About"},{"key":"sections.how_to_help.title","t":"How to Help"},{"key":"sections.support.title","t":"Support Us"},{"key":"sections.support.description","t":"In order to make running the survey sustainable, we’re always looking for partners who can help support us, either financially or by helping us spread the word. If you think you could help in any way, please don’t hesitate to [get in touch](mailto:hello@stateofjs.com)!","tHtml":"In order to make running the survey sustainable, we’re always looking for partners who can help support us, either financially or by helping us spread the word. If you think you could help in any way, please don’t hesitate to <a href=\"mailto:hello@stateofjs.com\">get in touch</a>!","tClean":"In order to make running the survey sustainable, we’re always looking for partners who can help support us, either financially or by helping us spread the word. If you think you could help in any way, please don’t hesitate to get in touch!"},{"key":"sections.awards.title","t":"Awards"},{"key":"sections.awards.description","t":"Things that stood out this year."},{"key":"sections.user_metadata.title","t":"Metadata"},{"key":"sections.user_metadata.description","t":"Additional metadata collected about respondents."},{"key":"sections.correlations.title","t":"Correlations"},{"key":"sections.correlations.description","t":"Explore how different factors are correlated."},{"key":"user_info.locale","t":"Language"},{"key":"user_info.locale.description","t":"The language respondents selected to fill out the survey."},{"key":"user_info.source","t":"Source"},{"key":"user_info.source.description","t":"How respondents found out about the survey."},{"key":"user_info.source.note","t":"Respondent source is computed based on referrer data, URL tracking data, and self-reported answers."},{"key":"options.source.other_answers","t":"Other sources"},{"key":"user_info.source_by_gender","t":"Source by Gender"},{"key":"user_info.source_by_race_ethnicity","t":"Source by Race & Ethnicity","tHtml":"Source by Race &amp; Ethnicity","tClean":"Source by Race & Ethnicity"},{"key":"user_info.gender_by_country","t":"Gender By Country"},{"key":"user_info.gender_by_country.description","t":"Gender distribution by country with at least 100 respondents, sorted by \"mean gender\" (each gender key being assigned an integer value in ascending order) descending.","tHtml":"Gender distribution by country with at least 100 respondents, sorted by \"mean gender\" (each gender key being assigned an integer value in ascending order) descending.","tClean":"Gender distribution by country with at least 100 respondents, sorted by \"mean gender\" (each gender key being assigned an integer value in ascending order) descending."},{"key":"user_info.years_of_experience_by_salary","t":"Years of Experience by Salary Range"},{"key":"user_info.years_of_experience_by_salary.description","t":"Years of experience by salary range."},{"key":"user_info.average_income_by_years_of_experience","t":"Average Income by Years of Experience"},{"key":"user_info.average_income_by_years_of_experience.description","t":"Average income by years of experience."},{"key":"user_info.average_income_by_company_size","t":"Average Income by Company Size"},{"key":"user_info.average_income_by_company_size.description","t":"Average income by company size."},{"key":"user_info.yearly_salary_by_country","t":"Salary By Country"},{"key":"user_info.yearly_salary_by_country.description","t":"Yearly salary distribution by country with at least 100 respondents, sorted by mean salary descending."},{"key":"user_info.yearly_salary_by_degree","t":"Salary By Higher Education Degree"},{"key":"user_info.yearly_salary_by_degree.description","t":"Yearly salary distribution by higher education degree, sorted by mean salary descending."},{"key":"user_info.yearly_salary_by_experience","t":"Salary By Experience"},{"key":"user_info.yearly_salary_by_experience.description","t":"Yearly salary distribution by experience, sorted by mean salary descending."},{"key":"user_info.yearly_salary_usa_vs_the_world","t":"Yearly Income: U.S vs World"},{"key":"user_info.race_ethnicity_by_years_of_experience","t":"Race & Ethnicity by Years of Experience","tHtml":"Race &amp; Ethnicity by Years of Experience","tClean":"Race & Ethnicity by Years of Experience"},{"key":"user_info.race_ethnicity_by_years_of_experience.description","t":"Race & ethnicity distribution by years of experience, sorted by mean experience ascending.","tHtml":"Race &amp; ethnicity distribution by years of experience, sorted by mean experience ascending.","tClean":"Race & ethnicity distribution by years of experience, sorted by mean experience ascending."},{"key":"user_info.higher_education_degree_by_gender","t":"Higher Education Degree by Gender"},{"key":"user_info.higher_education_degree_by_gender.description","t":"Higher education degree distribution by gender."},{"key":"user_metadata.past_surveys","t":"Previous Surveys"},{"key":"user_metadata.past_surveys.description","t":"Previous Devographics surveys taken by respondents."},{"key":"user_metadata.past_surveys.note","t":"Respondents taking the survey as guests shown as “no answer”."},{"key":"user_metadata.past_editions","t":"Previous Editions"},{"key":"user_metadata.past_editions.description","t":"Previous editions of this survey taken by respondents."},{"key":"user_info.completion_stats","t":"Survey Completion"},{"key":"user_info.completion_stats.description","t":"The proportion of the survey filled out by respondents."},{"key":"user_info.skipped","t":"Skipped Questions"},{"key":"user_info.skipped.description","t":"Which questions were the most frequently skipped."},{"key":"user_metadata.past_same_survey_count","t":"Participation Count"},{"key":"user_metadata.past_same_survey_count.description","t":"How many times respondents have taken part in previous editions of this survey."},{"key":"user_metadata.past_same_survey_count.note","t":"Respondents taking the survey as guests shown as “no answer”."},{"key":"user_metadata.created_at_date","t":"Responses Over Time"},{"key":"user_metadata.created_at_date.description","t":"Chronological breakdown of when responses were collected."},{"key":"user_metadata.authmode","t":"Authentication"},{"key":"user_metadata.authmode.description","t":"Whether respondents signed in or filled out the survey as guests."},{"key":"options.authmode.anonymous","t":"Guest Account"},{"key":"options.authmode.passwordless","t":"Logged-in Account"},{"key":"user_metadata.device","t":"Device"},{"key":"user_metadata.device.description","t":"What device was used to take the survey."},{"key":"user_metadata.browser","t":"Browser"},{"key":"user_metadata.browser.description","t":"What browser was used to take the survey."},{"key":"user_metadata.version","t":"Browser Version"},{"key":"user_metadata.version.description","t":"What browser version was used to take the survey."},{"key":"user_metadata.os","t":"OS"},{"key":"user_metadata.os.description","t":"What OS version was used to take the survey."},{"key":"options.job_title.ceo","t":"CEO"},{"key":"options.job_title.co_founder","t":"Founder/Co-Founder"},{"key":"options.job_title.consultant","t":"Consultant"},{"key":"options.job_title.student","t":"Student"},{"key":"options.job_title.freelancer","t":"Freelancer"},{"key":"options.job_title.cto","t":"CTO"},{"key":"options.job_title.engineering_manager","t":"Engineering Manager"},{"key":"options.job_title.director_of_engineering","t":"Director of Engineering"},{"key":"options.job_title.software_development_manager","t":"Software Development Manager"},{"key":"options.job_title.head_of_engineering","t":"Head of Engineering"},{"key":"options.job_title.head_of_development","t":"Head of Development"},{"key":"options.job_title.head_of_product","t":"Head of Product"},{"key":"options.job_title.software_architect","t":"Software Architect"},{"key":"options.job_title.solution_architect","t":"Solution Architect"},{"key":"options.job_title.frontend_architect","t":"Frontend Architect"},{"key":"options.job_title.technical_lead","t":"Technical Lead"},{"key":"options.job_title.frontend_lead","t":"Frontend Lead"},{"key":"options.job_title.lead","t":"Lead"},{"key":"options.job_title.software_engineer","t":"Software Engineer"},{"key":"options.job_title.frontend_engineer","t":"Frontend Engineer"},{"key":"options.job_title.backend_engineer","t":"Backend Engineer"},{"key":"options.job_title.fullstack_engineer","t":"Fullstack Engineer"},{"key":"options.job_title.junior_engineer","t":"Junior Engineer"},{"key":"options.job_title.senior_engineer","t":"Senior Engineer"},{"key":"options.job_title.lead_engineer","t":"Lead Engineer"},{"key":"options.job_title.systems_engineer","t":"Systems Engineer"},{"key":"options.job_title.developer","t":"Developer"},{"key":"options.job_title.frontend_developer","t":"Frontend Developer"},{"key":"options.job_title.backend_developer","t":"Backend Developer"},{"key":"options.job_title.fullstack_developer","t":"Fullstack Developer"},{"key":"options.job_title.junior_developer","t":"Junior Developer"},{"key":"options.job_title.senior_developer","t":"Senior Developer"},{"key":"options.job_title.lead_developer","t":"Lead Developer"},{"key":"options.job_title.programmer","t":"Programmer"},{"key":"options.job_title.senior_programmer","t":"Senior Programmer"},{"key":"options.job_title.manager","t":"Manager"},{"key":"options.job_title.project_manager","t":"Project Manager"},{"key":"options.job_title.product_manager","t":"Product Manager"},{"key":"options.job_title.computer_scientist","t":"Computer Scientist"},{"key":"options.job_title.creative_technologist","t":"Creative Technologist"},{"key":"options.job_title.data_scientist","t":"Data Scientist"},{"key":"options.job_title.designer","t":"Designer"},{"key":"options.job_title.head_of_design","t":"Head of Design"},{"key":"options.job_title.head_of_technology","t":"Head of Technology"},{"key":"options.job_title.principal_engineer","t":"Principal Engineer"},{"key":"features.pain_points","t":"Pain Points"},{"key":"features.pain_points.default","t":"Top pain point topics overall."},{"key":"features.pain_points.limitations","t":"Top pain point topics related to being unable to achieve a goal due to feature or platform limitations."},{"key":"features.pain_points.interop_issues","t":"Top pain point topics related to poor browser support or other browser/platform incompatibilities."},{"key":"features.pain_points.features","t":"Top pain point topics corresponding to specific web platform features."},{"key":"features.all_features","t":"All Features"},{"key":"features.features_ratios_over_time","t":"Features Over Time"},{"key":"features.features_ratios_over_time.description","t":"This chart shows a breakdown of feature trends over the years, organized alongisde six key ratios that are themselves based on experience and sentiment data. \n\nYou can then isolate a sub-segment of the entire feature set, whether by restricting features to a specific section, or by highlighting top/bottom items, or even items with the largest year-over-year increase or decrease for any given metric.","tHtml":"<p>This chart shows a breakdown of feature trends over the years, organized alongisde six key ratios that are themselves based on experience and sentiment data. </p>\n<p>You can then isolate a sub-segment of the entire feature set, whether by restricting features to a specific section, or by highlighting top/bottom items, or even items with the largest year-over-year increase or decrease for any given metric.</p>\n","tClean":"This chart shows a breakdown of feature trends over the years, organized alongisde six key ratios that are themselves based on experience and sentiment data. \nYou can then isolate a sub-segment of the entire feature set, whether by restricting features to a specific section, or by highlighting top/bottom items, or even items with the largest year-over-year increase or decrease for any given metric.\n"},{"key":"features.learn_more","t":"Learn More (MDN)"},{"key":"features.mdn_link","t":"MDN"},{"key":"features.caniuse_link","t":"Can I use"},{"key":"features.specification_link","t":"W3C Specification"},{"key":"features.knowledge_score","t":"Knowledge Score"},{"key":"features.knowledge_score.description","t":"Out of all the features mentioned in the survey, how many did the respondent know about?"},{"key":"tools.all_items.experience","t":"Libraries Experience & Sentiment","tHtml":"Libraries Experience &amp; Sentiment","tClean":"Libraries Experience & Sentiment"},{"key":"tools.all_items.experience.short","t":"Experience & Sentiment","tHtml":"Experience &amp; Sentiment","tClean":"Experience & Sentiment"},{"key":"tools.links","t":"Links"},{"key":"tools.github_link","t":"GitHub"},{"key":"tools.github_stars","t":"stars"},{"key":"tools.homepage_link","t":"Homepage"},{"key":"tools.npm_link","t":"NPM"},{"key":"tools.technology","t":"Technology"},{"key":"tools.all_sections","t":"All Sections"},{"key":"blocks.tools_company_size_heatmap","t":"Usage by Company Size"},{"key":"blocks.tools_company_size_heatmap.description","t":"For each technology, how usage is spread among respondents\nwho picked different company size ranges.","tHtml":"<p>For each technology, how usage is spread among respondents\nwho picked different company size ranges.</p>\n","tClean":"For each technology, how usage is spread among respondents\nwho picked different company size ranges.\n"},{"key":"blocks.tools_yearly_salary_heatmap","t":"Usage by Salary Range"},{"key":"blocks.tools_yearly_salary_heatmap.description","t":"For each technology, how usage is spread among respondents\nwho picked different salary ranges.","tHtml":"<p>For each technology, how usage is spread among respondents\nwho picked different salary ranges.</p>\n","tClean":"For each technology, how usage is spread among respondents\nwho picked different salary ranges.\n"},{"key":"blocks.tools_years_of_experience_heatmap","t":"Usage by Years Of Experience"},{"key":"blocks.tools_years_of_experience_heatmap.description","t":"For each technology, how usage is spread among respondents who picked different experience ranges.\nNote that the experience in question here is general experience, not experience with a specific technology.","tHtml":"<p>For each technology, how usage is spread among respondents who picked different experience ranges.\nNote that the experience in question here is general experience, not experience with a specific technology.</p>\n","tClean":"For each technology, how usage is spread among respondents who picked different experience ranges.\nNote that the experience in question here is general experience, not experience with a specific technology.\n"},{"key":"blocks.entity.homepage_link","t":"Homepage"},{"key":"blocks.entity.github_link","t":"GitHub"},{"key":"blocks.entity.twitter_link","t":"Twitter"},{"key":"blocks.entity.x_link","t":"X"},{"key":"blocks.entity.mastodon_link","t":"Mastodon"},{"key":"blocks.entity.blog_link","t":"Blog"},{"key":"blocks.entity.rss_link","t":"RSS"},{"key":"blocks.entity.twitch_link","t":"Twitch"},{"key":"blocks.entity.npm_link","t":"npm"},{"key":"blocks.entity.youtube_link","t":"YouTube"},{"key":"blocks.entity.mdn_link","t":"MDN"},{"key":"blocks.entity.caniuse_link","t":"CanIUse"},{"key":"blocks.entity.threads_link","t":"Threads"},{"key":"blocks.entity.bluesky_link","t":"Bluesky"},{"key":"blocks.entity.steam_link","t":"Steam"},{"key":"blocks.entity.wikipedia_link","t":"Wikipedia"},{"key":"blocks.entity.amazon_link","t":"Buy on Amazon"},{"key":"blocks.entity.amazon_link.affiliate","t":"Affiliate link"},{"key":"blocks.people.name","t":"Name"},{"key":"blocks.people.social_links","t":"Links"},{"key":"blocks.people.responses","t":"Responses"},{"key":"blocks.all_sections_tools_cardinality_by_user","t":"Technology Usage Cardinality"},{"key":"blocks.all_sections_tools_cardinality_by_user.description","t":"For each section, which percentage of respondents **use**  (defined as having answered “would use again”) one, two, three, etc. technologies. The bottom-most bar represents the sum of all other bars.","tHtml":"For each section, which percentage of respondents <strong>use</strong>  (defined as having answered “would use again”) one, two, three, etc. technologies. The bottom-most bar represents the sum of all other bars.","tClean":"For each section, which percentage of respondents use  (defined as having answered “would use again”) one, two, three, etc. technologies. The bottom-most bar represents the sum of all other bars."},{"key":"blocks.cardinality.max","t":"Most common answer"},{"key":"blocks.tools_arrows","t":"Changes Over Time"},{"key":"blocks.tools_arrows.description","t":"Each line goes from the earliest to the latest available year of data. A higher point means a technology has been used by more people,\nand a point further to the right means more users want to learn it; or have used it and would use it again.","tHtml":"<p>Each line goes from the earliest to the latest available year of data. A higher point means a technology has been used by more people,\nand a point further to the right means more users want to learn it; or have used it and would use it again.</p>\n","tClean":"Each line goes from the earliest to the latest available year of data. A higher point means a technology has been used by more people,\nand a point further to the right means more users want to learn it; or have used it and would use it again.\n"},{"key":"blocks.tools_arrows.note","t":"- Some lines skip years.\n- Technologies with only one year of data are not shown. \n- Velocity formula = (most recent opinion - oldest opinion) + (most recent usage) - (oldest usage)\n- A positive velocity means the usage and/or positive opinions have increased over time.","tHtml":"<ul>\n<li>Some lines skip years.</li>\n<li>Technologies with only one year of data are not shown. </li>\n<li>Velocity formula = (most recent opinion - oldest opinion) + (most recent usage) - (oldest usage)</li>\n<li>A positive velocity means the usage and/or positive opinions have increased over time.</li>\n</ul>\n","tClean":"\nSome lines skip years.\nTechnologies with only one year of data are not shown. \nVelocity formula = (most recent opinion - oldest opinion) + (most recent usage) - (oldest usage)\nA positive velocity means the usage and/or positive opinions have increased over time.\n\n"},{"key":"tools.tools_ratios_over_time","t":"Ratios over Time"},{"key":"blocks.tools_quadrant","t":"Satisfaction vs Usage"},{"key":"blocks.tools_quadrant.description","t":"This chart shows each technology's **retention ratio** over its total **user count**.\nIt can be divided into four quadrants:\n\n  - **1**: Low usage, high retention. Technologies worth keeping an eye on.\n\n  - **2**: High usage, high retention. Safe technologies to adopt.\n\n  - **3**: Low usage, low retention. Technologies that are harder to recommend currently.\n\n  - **4**: High usage, low retention. Reassess these technologies if you're currently using them.","tHtml":"<p>This chart shows each technology's <strong>retention ratio</strong> over its total <strong>user count</strong>.\nIt can be divided into four quadrants:</p>\n<ul>\n<li><p><strong>1</strong>: Low usage, high retention. Technologies worth keeping an eye on.</p>\n</li>\n<li><p><strong>2</strong>: High usage, high retention. Safe technologies to adopt.</p>\n</li>\n<li><p><strong>3</strong>: Low usage, low retention. Technologies that are harder to recommend currently.</p>\n</li>\n<li><p><strong>4</strong>: High usage, low retention. Reassess these technologies if you're currently using them.</p>\n</li>\n</ul>\n","tClean":"This chart shows each technology's retention ratio over its total user count.\nIt can be divided into four quadrants:\n\n1: Low usage, high retention. Technologies worth keeping an eye on.\n\n2: High usage, high retention. Safe technologies to adopt.\n\n3: Low usage, low retention. Technologies that are harder to recommend currently.\n\n4: High usage, low retention. Reassess these technologies if you're currently using them.\n\n\n"},{"key":"blocks.category_other_tools","t":"Other Tools"},{"key":"blocks.category_other_tools.description","t":"Other tools in this category (freeform answers)."},{"key":"blocks.tool_experience","t":"{name} Experience"},{"key":"blocks.tool_experience.description","t":"Respondent's experience with {name}."},{"key":"blocks.tools_experience_marimekko","t":"Positive/Negative Split"},{"key":"blocks.tools_experience_marimekko.description","t":"This chart splits positive (“want to learn”, “would use again”) vs\nnegative (“not interested”, “would not use again”) experiences on\nboth sides of a central axis.\n\nBar thickness represents the number of respondents aware of a technology.","tHtml":"<p>This chart splits positive (“want to learn”, “would use again”) vs\nnegative (“not interested”, “would not use again”) experiences on\nboth sides of a central axis.</p>\n<p>Bar thickness represents the number of respondents aware of a technology.</p>\n","tClean":"This chart splits positive (“want to learn”, “would use again”) vs\nnegative (“not interested”, “would not use again”) experiences on\nboth sides of a central axis.\nBar thickness represents the number of respondents aware of a technology.\n"},{"key":"blocks.tools_tier_list","t":"Library Tier List"},{"key":"blocks.tools_tier_list.note","t":"This chart ranks libraries based on their retention ratio (percentage of users\nwho would use a library again). Note that libraries used by less than 10% of survey \nrespondents are not included.","tHtml":"<p>This chart ranks libraries based on their retention ratio (percentage of users\nwho would use a library again). Note that libraries used by less than 10% of survey \nrespondents are not included.</p>\n","tClean":"This chart ranks libraries based on their retention ratio (percentage of users\nwho would use a library again). Note that libraries used by less than 10% of survey \nrespondents are not included.\n"},{"key":"blocks.tools_tier_list.bounds","t":"{lowerBound}% - {upperBound}%"},{"key":"blocks.tools_section_streams","t":"Experience Over Time"},{"key":"blocks.tools_section_streams.description","t":"Overview of opinions on the technologies surveyed over time."},{"key":"blocks.tools_section_streams.note","t":"Technologies with only one year of data are not included."},{"key":"blocks.tools_section_overview","t":"Category Overview"},{"key":"blocks.tools_section_overview.description","t":"Overview of opinions on the technologies surveyed. Darker segments represent positive opinions,\nwhile lighter segments correspond to negative sentiment.","tHtml":"<p>Overview of opinions on the technologies surveyed. Darker segments represent positive opinions,\nwhile lighter segments correspond to negative sentiment.</p>\n","tClean":"Overview of opinions on the technologies surveyed. Darker segments represent positive opinions,\nwhile lighter segments correspond to negative sentiment.\n"},{"key":"blocks.tools_experience_ranking","t":"Rankings Over Time"},{"key":"blocks.tools_experience_ranking.percentages","t":"Percentages"},{"key":"blocks.tools_experience_ranking.rankings","t":"Rankings"},{"key":"blocks.tools_experience_ranking.description","t":"Retention, interest, usage, and awareness ratio rankings."},{"key":"blocks.tools_experience_ranking.note","t":"Technologies with less than 10% awareness not included. Each ratio is defined as follows:\n\n- Retention: **would use again** / (**would use again** + **would not use again**)\n- Interest: **want to learn** / (**want to learn** + **not interested**)\n- Usage: (**would use again** + **would not use again**) / **total**\n- Awareness: (**total** - **never heard**) / **total**","tHtml":"<p>Technologies with less than 10% awareness not included. Each ratio is defined as follows:</p>\n<ul>\n<li>Retention: <strong>would use again</strong> / (<strong>would use again</strong> + <strong>would not use again</strong>)</li>\n<li>Interest: <strong>want to learn</strong> / (<strong>want to learn</strong> + <strong>not interested</strong>)</li>\n<li>Usage: (<strong>would use again</strong> + <strong>would not use again</strong>) / <strong>total</strong></li>\n<li>Awareness: (<strong>total</strong> - <strong>never heard</strong>) / <strong>total</strong></li>\n</ul>\n","tClean":"Technologies with less than 10% awareness not included. Each ratio is defined as follows:\n\nRetention: would use again / (would use again + would not use again)\nInterest: want to learn / (want to learn + not interested)\nUsage: (would use again + would not use again) / total\nAwareness: (total - never heard) / total\n\n"},{"key":"blocks.tools_experience_linechart","t":"Ratios Over Time"},{"key":"blocks.tools_experience_linechart.description","t":"Retention, interest, usage, and awareness ratio over time."},{"key":"blocks.tools_experience_linechart.note","t":"Technologies with less than 10% awareness not included. Each ratio is defined as follows:\n\n- Retention: **would use again** / (**would use again** + **would not use again**)\n- Interest: **want to learn** / (**want to learn** + **not interested**)\n- Usage: (**would use again** + **would not use again**) / **total**\n- Awareness: (**total** - **never heard**) / **total**","tHtml":"<p>Technologies with less than 10% awareness not included. Each ratio is defined as follows:</p>\n<ul>\n<li>Retention: <strong>would use again</strong> / (<strong>would use again</strong> + <strong>would not use again</strong>)</li>\n<li>Interest: <strong>want to learn</strong> / (<strong>want to learn</strong> + <strong>not interested</strong>)</li>\n<li>Usage: (<strong>would use again</strong> + <strong>would not use again</strong>) / <strong>total</strong></li>\n<li>Awareness: (<strong>total</strong> - <strong>never heard</strong>) / <strong>total</strong></li>\n</ul>\n","tClean":"Technologies with less than 10% awareness not included. Each ratio is defined as follows:\n\nRetention: would use again / (would use again + would not use again)\nInterest: want to learn / (want to learn + not interested)\nUsage: (would use again + would not use again) / total\nAwareness: (total - never heard) / total\n\n"},{"key":"blocks.happiness","t":"Overall Happiness"},{"key":"blocks.happiness.description","t":"On a scale of one (very unhappy) to five (very happy), how happy are developers\nwith the current overall state of this category?","tHtml":"<p>On a scale of one (very unhappy) to five (very happy), how happy are developers\nwith the current overall state of this category?</p>\n","tClean":"On a scale of one (very unhappy) to five (very happy), how happy are developers\nwith the current overall state of this category?\n"},{"key":"blocks.newsletter.title","t":"Stay Tuned"},{"key":"blocks.newsletter.description","t":"If you'd like to know when we release additional results or announce next year's edition,\njust leave us your email below:","tHtml":"<p>If you'd like to know when we release additional results or announce next year's edition,\njust leave us your email below:</p>\n","tClean":"If you'd like to know when we release additional results or announce next year's edition,\njust leave us your email below:\n"},{"key":"blocks.newsletter.email","t":"Your Email"},{"key":"blocks.newsletter.submit","t":"Notify Me"},{"key":"blocks.features_overview","t":"Features Overview"},{"key":"blocks.features_overview.description","t":"The size of the **outer circle** corresponds to the total number of users who know about a feature (*know about it* + *have used it* respondents), while\nthe **inner circle** represents those who have actually used it (*have used it* respondents).\n\nHover on each circle to see detailed stats, including the ratio between both values.","tHtml":"<p>The size of the <strong>outer circle</strong> corresponds to the total number of users who know about a feature (<em>know about it</em> + <em>have used it</em> respondents), while\nthe <strong>inner circle</strong> represents those who have actually used it (<em>have used it</em> respondents).</p>\n<p>Hover on each circle to see detailed stats, including the ratio between both values.</p>\n","tClean":"The size of the outer circle corresponds to the total number of users who know about a feature (know about it + have used it respondents), while\nthe inner circle represents those who have actually used it (have used it respondents).\nHover on each circle to see detailed stats, including the ratio between both values.\n"},{"key":"blocks.features_experience_linechart","t":"Ratios Over Time"},{"key":"blocks.features_experience_linechart.description","t":"Usage and awareness ratios over time for the highest-rating features."},{"key":"blocks.features_experience_linechart.note","t":"Each ratio is defined as follows:\n\n- Usage: (**have used it**) / **total**\n- Awareness: (**have used it** + **know about it **) / **total**","tHtml":"<p>Each ratio is defined as follows:</p>\n<ul>\n<li>Usage: (<strong>have used it</strong>) / <strong>total</strong></li>\n<li>Awareness: (<strong>have used it</strong> + **know about it **) / <strong>total</strong></li>\n</ul>\n","tClean":"Each ratio is defined as follows:\n\nUsage: (have used it) / total\nAwareness: (have used it + **know about it **) / total\n\n"},{"key":"blocks.features_experience_ranking","t":"Rankings Over Time"},{"key":"blocks.features_experience_ranking.description","t":"Usage and awareness rankings over time."},{"key":"blocks.features_experience_ranking.note","t":"Each ratio is defined as follows:\n\n- Usage: (**have used it**) / **total**\n- Awareness: (**have used it** + **know about it **) / **total**","tHtml":"<p>Each ratio is defined as follows:</p>\n<ul>\n<li>Usage: (<strong>have used it</strong>) / <strong>total</strong></li>\n<li>Awareness: (<strong>have used it</strong> + **know about it **) / <strong>total</strong></li>\n</ul>\n","tClean":"Each ratio is defined as follows:\n\nUsage: (have used it) / total\nAwareness: (have used it + **know about it **) / total\n\n"},{"key":"export.export","t":"Export"},{"key":"export.title","t":"Export data for {title}"},{"key":"export.nocsv","t":"Sorry, CSV export is not available for this dataset."},{"key":"export.graphql","t":"You can copy paste this query into our <a target=\"_blank\" rel=\"nofollow\" href=\"https://graphiql.devographics.com/\">public GraphQL API</a>.","tHtml":"You can copy paste this query into our <a target=\"_blank\" href=\"https://graphiql.devographics.com/\">public GraphQL API</a>.","tClean":"You can copy paste this query into our public GraphQL API."},{"key":"export.export_json","t":"JSON Data"},{"key":"export.export_graphql","t":"GraphQL Query"},{"key":"export.export_filters","t":"Filters Code"},{"key":"export.debug","t":"Debug"},{"key":"custom_data.heading","t":"Custom Chart"},{"key":"custom_data.custom_data","t":"Custom Data"},{"key":"custom_data.graphql_query","t":"GraphQL Query"},{"key":"custom_data.chart_title","t":"Custom Chart"},{"key":"custom_data.submit","t":"Submit"},{"key":"custom_data.empty_contents","t":"Please enter some data in the \"Custom Data\" field.","tHtml":"Please enter some data in the \"Custom Data\" field.","tClean":"Please enter some data in the \"Custom Data\" field."},{"key":"custom_data.edit_title","t":"Edit Chart Title"},{"key":"custom_data.customize","t":"Customize Data"},{"key":"custom_data.details","t":"1. Copy the contents of the \"GraphQL Query\" textfield and paste them into the middle panel of the [GraphQL API explorer](https://graphiql.stateofjs.com/).\n2. Modify the query by adding one or more **filters** using the left-hand explorer sidebar. Make sure to keep the overall structure of the data the same.\n3. In the explorer window, click the Play (\"Execute Query\") button.\n4. Copy the results of the modified query (`{ data: … }` ) into the \"Custom Data\" textfield above and submit.","tHtml":"<ol>\n<li>Copy the contents of the \"GraphQL Query\" textfield and paste them into the middle panel of the <a href=\"https://graphiql.stateofjs.com/\">GraphQL API explorer</a>.</li>\n<li>Modify the query by adding one or more <strong>filters</strong> using the left-hand explorer sidebar. Make sure to keep the overall structure of the data the same.</li>\n<li>In the explorer window, click the Play (\"Execute Query\") button.</li>\n<li>Copy the results of the modified query (<code>{ data: … }</code> ) into the \"Custom Data\" textfield above and submit.</li>\n</ol>\n","tClean":"\nCopy the contents of the \"GraphQL Query\" textfield and paste them into the middle panel of the GraphQL API explorer.\nModify the query by adding one or more filters using the left-hand explorer sidebar. Make sure to keep the overall structure of the data the same.\nIn the explorer window, click the Play (\"Execute Query\") button.\nCopy the results of the modified query ({ data: … } ) into the \"Custom Data\" textfield above and submit.\n\n"},{"key":"blocks.tools_usage_variations","t":"Usage Variations"},{"key":"blocks.tools_usage_variations.description","t":"How different factors such as salary range, years of experience\nor company size influence usage (participants who answered either\n“would use again” or “would not use again”).\n\nThe baseline represents the base usage for each tool and the offsets\ncorrespond to the delta from this baseline in each range. Let's say\ntool X has an overall usage of 10% across all respondents (the baseline),\nthen if the percentage of users having from 1 to 2 years of experience\nusing this tool is 13% (compared to all users having from 1 to 2 years\nof experience), then we have a positive delta of +3%.","tHtml":"<p>How different factors such as salary range, years of experience\nor company size influence usage (participants who answered either\n“would use again” or “would not use again”).</p>\n<p>The baseline represents the base usage for each tool and the offsets\ncorrespond to the delta from this baseline in each range. Let's say\ntool X has an overall usage of 10% across all respondents (the baseline),\nthen if the percentage of users having from 1 to 2 years of experience\nusing this tool is 13% (compared to all users having from 1 to 2 years\nof experience), then we have a positive delta of +3%.</p>\n","tClean":"How different factors such as salary range, years of experience\nor company size influence usage (participants who answered either\n“would use again” or “would not use again”).\nThe baseline represents the base usage for each tool and the offsets\ncorrespond to the delta from this baseline in each range. Let's say\ntool X has an overall usage of 10% across all respondents (the baseline),\nthen if the percentage of users having from 1 to 2 years of experience\nusing this tool is 13% (compared to all users having from 1 to 2 years\nof experience), then we have a positive delta of +3%.\n"},{"key":"blocks.tools_usage_variations.note","t":"Please keep in mind that tools having a lower overall usage tends to vary more."},{"key":"blocks.recommended_resources","t":"Recommended Resources"},{"key":"blocks.recommended_events","t":"Recommended Events"},{"key":"tool_evaluation.tool_evaluation_wins","t":"Library Evaluation Rankings"},{"key":"tool_evaluation.tool_evaluation_wins.description","t":"Which factors do you prioritize when evaluating a new library? Results are ranked by number of tournament rounds won."},{"key":"tool_evaluation.tool_evaluation_matchups","t":"Library Evaluation Rankings (Matchups)"},{"key":"tool_evaluation.tool_evaluation_matchups.description","t":"Which factors do you prioritize when evaluating a new library? Percentage of rounds won by left-hand item against top-side item."},{"key":"blocks.freeform","t":"Freeform"},{"key":"blocks.multiple","t":"Multiple"},{"key":"blocks.option_limit","t":"Limited"},{"key":"features.reading_list","t":"Reading List"},{"key":"features.reading_list.note","t":"How many time each item was added to respondent's Reading List, a feature that lets people learn more about specific topics as they take the survey."},{"key":"chart_units.respondents","t":"**{count}** question respondents out of **{total}** survey participants (**{percentage}%** completion percentage)","tHtml":"<strong>{count}</strong> question respondents out of <strong>{total}</strong> survey participants (<strong>{percentage}%</strong> completion percentage)","tClean":"{count} question respondents out of {total} survey participants ({percentage}% completion percentage)"},{"key":"chart_units.percentage","t":"Percents"},{"key":"chart_units.count","t":"Count"},{"key":"chart_units.percentage_question","t":"% of question respondents"},{"key":"chart_units.percentageQuestion","t":"% of question respondents"},{"key":"chart_units.percentage_survey","t":"% of survey respondents"},{"key":"chart_units.percentageSurvey","t":"% of survey respondents"},{"key":"chart_units.percentage_bucket","t":"Percentages"},{"key":"chart_units.percentageBucket","t":"Percentages"},{"key":"chart_units.medianByFacet","t":"Median"},{"key":"chart_units.average","t":"Average"},{"key":"chart_units.averageByFacet","t":"Average"},{"key":"chart_units.facetCounts","t":"Counts"},{"key":"chart_units.percentilesByFacet","t":"Percentiles"},{"key":"charts.average","t":"Average {axis}"},{"key":"charts.mean","t":"Mean"},{"key":"charts.all_respondents","t":"All Respondents"},{"key":"charts.overall","t":"All Respondents"},{"key":"charts.facet_responses","t":"{count} responses"},{"key":"charts.facet_respondents","t":"({count} respondents)"},{"key":"charts.facet_detail","t":"({count} out of {totalRespondents} respondents)"},{"key":"charts.facet_detail_answers","t":"({count} out of {totalAnswers} answers)"},{"key":"charts.average.used","t":"“Used” average"},{"key":"charts.average.positive","t":"“Positive” average"},{"key":"charts.average.negative","t":"“Negative” average"},{"key":"charts.nth_percentile","t":"{percentile}th percentile"},{"key":"charts.nth_percentile_value","t":"{percentile}th percentile: {value}"},{"key":"charts.average_value","t":"Average: {value}"},{"key":"charts.freeform_data_indicator","t":"(freeform answers)"},{"key":"charts.insufficient_data","t":"Insufficient Data"},{"key":"charts.insufficient_data.description","t":"Segments with fewer than {value} respondents are not included in the results."},{"key":"charts.axis_legends.years_of_experience","t":"Years of Experience"},{"key":"charts.axis_legends.yearly_salary","t":"Salary Range (USD)"},{"key":"charts.axis_legends.company_size","t":"Organization Size"},{"key":"charts.axis_legends.backend_proficiency","t":"Back-end Proficiency"},{"key":"charts.axis_legends.css_proficiency","t":"CSS Proficiency"},{"key":"charts.axis_legends.javascript_proficiency","t":"JavaScript Proficiency"},{"key":"charts.axis_legends.users_percentage","t":"Percentage of Users"},{"key":"charts.axis_legends.users_count","t":"User Count"},{"key":"charts.axis_legends.users_average","t":"Average {axis}"},{"key":"charts.axis_legends.average_value","t":"Average {axis}"},{"key":"charts.axis_legends.interest_percentage","t":"Interest %"},{"key":"charts.axis_legends.satisfaction_percentage","t":"Satisfaction %"},{"key":"charts.axis_legends.retention_percentage","t":"Satisfaction %"},{"key":"charts.axis_legends.usage_percentage","t":"Usage %"},{"key":"charts.axis_legends.awareness_percentage","t":"Awareness %"},{"key":"charts.axis_legends.r2","t":"R2: {r2}"},{"key":"charts.axis_legends.r2.description","t":"R² (the coefficient of determination) measures how closely the points hug the trend line, from 0 (no relationship) to 1 (a perfect straight-line fit)."},{"key":"chart_units.interest_percentage","t":"Interest %"},{"key":"chart_units.satisfaction_percentage","t":"Satisfaction %"},{"key":"chart_units.usage_percentage","t":"Usage %"},{"key":"chart_units.awareness_percentage","t":"Awareness %"},{"key":"charts.axis_legends.happiness","t":"Happiness"},{"key":"charts.axis_legends.knowledge_score","t":"Known Features"},{"key":"charts.axis_legends.frequency","t":"Frequency"},{"key":"charts.axis_legends.age","t":"Age"},{"key":"charts.axis_legends.users_percentage_survey","t":"% of survey respondents"},{"key":"charts.axis_legends.users_percentageSurvey","t":"% of survey respondents"},{"key":"charts.axis_legends.users_percentage_question","t":"% of question respondents"},{"key":"charts.axis_legends.users_percentageQuestion","t":"% of question respondents"},{"key":"charts.axis_legends.users_percentage_bucket","t":"% of bucket respondents"},{"key":"charts.axis_legends.users_percentageBucket","t":"% of bucket respondents"},{"key":"charts.axis_legends.users_averageByFacet","t":"Average"},{"key":"charts.axis_legends.users_percentilesByFacet","t":"Percentiles"},{"key":"charts.ranges_multiple_diverging_lines.baseline","t":"baseline"},{"key":"charts.ranges_multiple_diverging_lines.positive_offset","t":"positive offset"},{"key":"charts.ranges_multiple_diverging_lines.negative_offset","t":"negative offset"},{"key":"charts.tools_arrows.negative_opinion","t":"Negative opinions"},{"key":"charts.tools_arrows.positive_opinion","t":"Positive opinions"},{"key":"charts.tools_arrows.have_not_used","t":"Have not used"},{"key":"charts.tools_arrows.have_used","t":"Have used"},{"key":"charts.tools_arrows.x_axis","t":"X-axis range"},{"key":"charts.tools_arrows.y_axis","t":"Y-axis range"},{"key":"charts.tools_arrows.legend","t":"Legend"},{"key":"charts.tools_arrows.velocity","t":"Velocity"},{"key":"charts.tools_arrows.velocity_positive","t":"Overall more positive opinions and/or usage over time"},{"key":"charts.tools_arrows.velocity_negative","t":"Overall more negative opinions and/or less usage over time"},{"key":"charts.tools_arrows.opinions_positive","t":"Mostly positive opinions"},{"key":"charts.tools_arrows.opinions_negative","t":"Mostly negative opinions"},{"key":"charts.tools_arrows.low_usage","t":"Low usage"},{"key":"charts.tools_arrows.high_usage","t":"High usage"},{"key":"charts.tools_arrows.popularity_positive","t":"Rising popularity"},{"key":"charts.tools_arrows.popularity_negative","t":"Falling popularity"},{"key":"charts.no_answer","t":"No Answer"},{"key":"charts.no_answer.short","t":"No Answer"},{"key":"charts.no_match","t":"Unmatched Answers"},{"key":"charts.no_match.short","t":"Unmatched Answers"},{"key":"charts.no_match.description","t":"Freeform answers that could not be matched to a specific datapoint"},{"key":"charts.cutoff_answers","t":"Cutoff Answers"},{"key":"charts.cutoff_answers.short","t":"Cutoff Answers"},{"key":"charts.cutoff_answers.description","t":"Items that got fewer than {cutoff} answers"},{"key":"charts.other_answers","t":"Other Answers"},{"key":"charts.other_answers.short","t":"Other Answers"},{"key":"charts.other_answers.description","t":"Other answers not included above"},{"key":"charts.overlimit_answers","t":"Over Limit"},{"key":"charts.overlimit_answers.short","t":"Over Limit"},{"key":"charts.overlimit_answers.description","t":"Items that ranked lower than the defined limit of {limit} rows."},{"key":"charts.freeform_data","t":"Freeform Data"},{"key":"charts.freeform_data.description","t":"Respondents typed their answers using a freeform text field"},{"key":"charts.multiple_data","t":"Multiple Choice"},{"key":"charts.multiple_data.description","t":"Respondents could submit more than one answer for this question"},{"key":"charts.option_limit","t":"Option Limit"},{"key":"charts.option_limit.description","t":"Respondents were limited to picking {limit} options for this question"},{"key":"charts.tick.links","t":"Links"},{"key":"charts.resources","t":"Useful Links"},{"key":"charts.facets_clarification","t":"Note that the percentages shown above are influenced by how many respondents overall belong to each group."},{"key":"charts.average_clarification","t":"Note that averages are calculated by taking the midpoint value of each range as an approximate representative value."},{"key":"charts.share","t":"Share Chart…"},{"key":"charts.export","t":"Export Data…"},{"key":"charts.mode","t":"Mode:"},{"key":"charts.view","t":"View:"},{"key":"charts.no_data","t":"Sorry, this query did not return any data."},{"key":"charts.show_neutral_sentiment","t":"Show neutral"},{"key":"charts.other_bucket.previous_edition.percents.positive","t":"+{value}% higher compared to last survey"},{"key":"charts.other_bucket.previous_edition.percents.negative","t":"-{value}% lower compared to last survey"},{"key":"charts.other_bucket.different_serie.percents.positive","t":"+{value}% higher compared to left-hand chart"},{"key":"charts.other_bucket.different_serie.percents.negative","t":"-{value}% lower compared to left-hand chart"},{"key":"charts.other_bucket.ranks.positive","t":"+{value} ranks gained"},{"key":"charts.other_bucket.ranks.negative","t":"-{value} ranks lost"},{"key":"charts.subsets.filters","t":"Filters:"},{"key":"charts.subsets.presets","t":"Presets:"},{"key":"charts.subsets.top_items","t":"Top Items"},{"key":"charts.subsets.top_items.description","t":"Highlight items that scored the highest this year"},{"key":"charts.subsets.bottom_items","t":"Bottom Items"},{"key":"charts.subsets.bottom_items.description","t":"Highlight items that scored the lowest this year"},{"key":"charts.subsets.largest_increase","t":"Largest Increase"},{"key":"charts.subsets.largest_increase.description","t":"Highlight items that saw the largest increase over the past year"},{"key":"charts.subsets.largest_decrease","t":"Largest Decrease"},{"key":"charts.subsets.largest_decrease.description","t":"Highlight items that saw the largest decrease over the past year"},{"key":"charts.subsets.sections","t":"Sections:"},{"key":"charts.nested_toggle","t":"View:"},{"key":"charts.nested_toggle.nested","t":"Nested"},{"key":"charts.nested_toggle.flat","t":"Flat"},{"key":"comments.comments","t":"Comments"},{"key":"comments.comments_for","t":"Comments for “{name}”"},{"key":"comments.description","t":"These comments were submitted as part of the survey \nthrough an optional freeform text field next to the main question.","tHtml":"<p>These comments were submitted as part of the survey \nthrough an optional freeform text field next to the main question.</p>\n","tClean":"These comments were submitted as part of the survey \nthrough an optional freeform text field next to the main question.\n"},{"key":"comments.report_abuse","t":"Report this comment"},{"key":"comments.share","t":"Share Comment"},{"key":"comments.filter.experience","t":"Experience:"},{"key":"comments.filter.sentiment","t":"Sentiment:"},{"key":"comments.filter.all","t":"All"},{"key":"comments.filter.clear","t":"Clear"},{"key":"comments.filter.no_items","t":"No items."},{"key":"comment.like.description","t":"Like this comment"},{"key":"comments.filter.show","t":"Show Filters"},{"key":"comments.filter.hide","t":"Hide Filters"},{"key":"comments.filter.by_keyword","t":"Top Keywords"},{"key":"comments.filter.by_keyword.description","t":"Filter based on top keywords mentioned."},{"key":"comments.filter.by_token","t":"Other Topics"},{"key":"comments.filter.by_token.description","t":"Filter based on other topics mentioned."},{"key":"comments.filter.by_search","t":"Search"},{"key":"comments.filter.by_search.description","t":"Search using a custom keyword."},{"key":"comments.filter.by_answer","t":"Selected Answer"},{"key":"comments.filter.by_answer.description","t":"Filter based on the answer(s) selected by respondents."},{"key":"comments.filter.by_experience","t":"Experience"},{"key":"comments.filter.by_experience.description","t":"Filter based on respondent's experience with the main item."},{"key":"comments.filter.by_sentiment","t":"Sentiment"},{"key":"comments.filter.by_sentiment.description","t":"Filter based on respondent's sentiments about the main item."},{"key":"comments.download","t":"Download JSON"},{"key":"comments.download.description","t":"Download a JSON file containing these items."},{"key":"share.share","t":"Share"},{"key":"share.options","t":"Share Options"},{"key":"share.preview","t":"Social media preview"},{"key":"share.site.title","t":"Discover the {siteTitle} results"},{"key":"share.site.twitter_text","t":"Discover the {siteTitle} results {link}"},{"key":"share.site.x_text","t":"Discover the {siteTitle} results {link}"},{"key":"share.site.subject","t":"{siteTitle} Survey Results"},{"key":"share.site.body","t":"Here are some interesting survey results: {link}"},{"key":"share.block.twitter_text","t":"{siteTitle}: {title}"},{"key":"share.block.subject","t":"{siteTitle} Survey Results"},{"key":"share.block.body","t":"Here are some interesting survey results ({title}): {link}"},{"key":"share.close","t":"Close"},{"key":"views.viz","t":"Graph"},{"key":"views.table","t":"Table"},{"key":"table.label","t":"Label"},{"key":"table.item","t":"Item"},{"key":"table.percentage_survey","t":"% of survey respondents"},{"key":"table.percentageSurvey","t":"% of survey respondents"},{"key":"table.percentage_question","t":"% of question respondents"},{"key":"table.percentageQuestion","t":"% of question respondents"},{"key":"table.percentage_facet","t":"% of facet respondents"},{"key":"table.percentageFacet","t":"% of facet respondents"},{"key":"table.count","t":"Count"},{"key":"table.year","t":"Year"},{"key":"table.mean","t":"Mean"},{"key":"table.usage","t":"Have used it"},{"key":"table.awareness","t":"Know about it"},{"key":"table.usage_ratio","t":"Ratio"},{"key":"table.usage_count","t":"User Count"},{"key":"table.satisfaction_percentage","t":"Satisfaction %"},{"key":"table.interest_percentage","t":"Interest %"},{"key":"table.usage_percentage","t":"Usage %"},{"key":"table.awareness_percentage","t":"Awareness %"},{"key":"table.percentages_table","t":"Percentages"},{"key":"table.rankings_table","t":"Rankings"},{"key":"table.satisfaction_rank","t":"Retention Rank"},{"key":"table.interest_rank","t":"Interest Rank"},{"key":"table.usage_rank","t":"Usage Rank"},{"key":"table.awareness_rank","t":"Awareness Rank"},{"key":"table.would_not_use_percentage","t":"Would not use %"},{"key":"table.not_interested_percentage","t":"Not interested %"},{"key":"table.would_use_percentage","t":"Would use again %"},{"key":"table.interested_percentage","t":"Interested %"},{"key":"table.not_available","t":"No datatable available."},{"key":"awards.runner_ups","t":"Runner Ups"},{"key":"award.feature_adoption_award.title","t":"Most Used Feature"},{"key":"award.feature_adoption_award.description","t":"Awarded to the most adopted feature."},{"key":"award.feature_adoption_delta_award.title","t":"Most Adopted Feature"},{"key":"award.feature_adoption_delta_award.description","t":"Awarded to the feature with the largest year-over-year ”have used” progression."},{"key":"award.tool_usage_award.title","t":"Most Used Technology"},{"key":"award.tool_usage_award.description","t":"Awarded to the technology with the largest user base."},{"key":"award.tool_usage_delta_award.title","t":"Most Adopted Technology"},{"key":"award.tool_usage_delta_award.description","t":"Awarded to the technology with the largest year-over-year usage progression."},{"key":"award.tool_retention_award.title","t":"Highest Satisfaction"},{"key":"award.tool_retention_award.description","t":"Awarded to the technology with the highest percentage of satisfied users."},{"key":"award.tool_satisfaction_award.title","t":"Highest Satisfaction"},{"key":"award.tool_satisfaction_award.description","t":"Awarded to the technology with the highest percentage of satisfied users."},{"key":"award.tool_interest_award.title","t":"Highest Interest"},{"key":"award.tool_interest_award.description","t":"Awarded to the technology developers are most interested in learning once they are aware of it."},{"key":"award.resource_usage_award.title","t":"Most Used Resource"},{"key":"award.resource_usage_award.description","t":"Awarded to the resource with the largest user base."},{"key":"award.prediction_award.title","t":"Prediction Award"},{"key":"award.prediction_award.description","t":"Awarded to an up-and-coming technology that might take over… or not?"},{"key":"award.most_write_ins_award.title","t":"Most Write-Ins"},{"key":"award.most_write_ins_award.description","t":"Awarded to the item with the most write-in answers"},{"key":"award.most_commented_feature_award.title","t":"Most Commented Feature"},{"key":"award.most_commented_feature_award.description","t":"Awarded to the feature which received the most comments."},{"key":"award.most_commented_tool_award.title","t":"Most Commented Library"},{"key":"award.most_commented_tool_award.description","t":"Awarded to the library which received the most comments."},{"key":"award.most_loved_tool_award.title","t":"Most Loved Library"},{"key":"award.most_loved_tool_award.description","t":"Awarded to the technology with the highest proportion of positive opinions."},{"key":"award.most_used_feature_award.title","t":"Most Used Feature"},{"key":"award.most_used_feature_award.description","t":"Awarded to the feature with the highest proportion of users."},{"key":"award.least_used_feature_award.title","t":"Least Used Feature"},{"key":"award.least_used_feature_award.description","t":"Awarded to the feature with the lowest proportion of users."},{"key":"award.most_loved_feature_award.title","t":"Most Loved Feature"},{"key":"award.most_loved_feature_award.description","t":"Awarded to the feature with the highest proportion of positive opinions."},{"key":"award.most_hated_feature_award.title","t":"Most Hated Feature"},{"key":"award.most_hated_feature_award.description","t":"Awarded to the feature with the highest proportion of negative opinions."},{"key":"award.largest_awareness_progression_award.title","t":"Largest Awareness Increase"},{"key":"award.largest_awareness_progression_award.description","t":"Awarded to the feature with the largest year-over-year awareness increase."},{"key":"award.largest_usage_progression_award.title","t":"Largest Usage Increase"},{"key":"award.largest_usage_progression_award.description","t":"Awarded to the feature with the largest year-over-year usage increase."},{"key":"hints.hint_hint","t":"You'll find little hints like this one throughout the survey results that will point out extra features and details."},{"key":"hints.units_switcher_hint","t":"You can use the segmented control at the bottom of each block to switch  between different units to get an alternate view of the same data."},{"key":"hints.export_hint","t":"The <span class=\"hint-icon hint-export-button\">Data</span> tab lets you view the raw  data for any chart, view it as JSON, or get a GraphQL query you can  run against our public API.","tHtml":"The <span class=\"hint-icon hint-export-button\">Data</span> tab lets you view the raw  data for any chart, view it as JSON, or get a GraphQL query you can  run against our public API.","tClean":"The Data tab lets you view the raw  data for any chart, view it as JSON, or get a GraphQL query you can  run against our public API."},{"key":"hints.completion_hint","t":"Since all questions are optional, some of them got fewer responses than others.  The completion indicator (<span class=\"hint-completion-indicator\">◕</span>) tells you exactly how many people answered any given question.","tHtml":"Since all questions are optional, some of them got fewer responses than others.  The completion indicator (<span class=\"hint-completion-indicator\">◕</span>) tells you exactly how many people answered any given question.","tClean":"Since all questions are optional, some of them got fewer responses than others.  The completion indicator (◕) tells you exactly how many people answered any given question."},{"key":"hints.tool_modal_hint","t":"You can click on any technology name to get extra details and  a more in-depth look at its related data."},{"key":"hints.rankings_modes_hint","t":"The Experience Over Time chart can be toggled between retention, interest, usage, and awareness to give you a fuller picture of a category."},{"key":"hints.sharing_hint","t":"Sharing this survey on Twitter, Facebook, or by email is scientifically proven to  improve your coding performance by up to 15%."},{"key":"hints.tshirt_hint","t":"Another guaranteed scientific finding: buying our t-shirt will  increase your programming skills by over 9000!"},{"key":"hints.variants_hint","t":"Some charts feature additional tabs that offer complementary breakdowns of the same data, or related data. Make sure to check them out!"},{"key":"hints.share_hint","t":"The <span class=\"hint-icon hint-share-button\">Share</span> tab makes it easy to share any chart,  or even download it as an image.","tHtml":"The <span class=\"hint-icon hint-share-button\">Share</span> tab makes it easy to share any chart,  or even download it as an image.","tClean":"The Share tab makes it easy to share any chart,  or even download it as an image."},{"key":"hints.bracket_hint","t":"<span class=\"hint-bracket\"><span class=\"hint-text\">The following chart provides the results of a tournament-style 8-player bracket in which respondents were tasked with picking the winner of each match-up until a single winner remained.</span><span class=\"hint-diagram\"/></span>","tHtml":"<span class=\"hint-bracket\"><span class=\"hint-text\">The following chart provides the results of a tournament-style 8-player bracket in which respondents were tasked with picking the winner of each match-up until a single winner remained.</span><span class=\"hint-diagram\"></span></span>","tClean":"The following chart provides the results of a tournament-style 8-player bracket in which respondents were tasked with picking the winner of each match-up until a single winner remained."},{"key":"hints.comments_hint","t":"The <span class=\"hint-icon hint-comment-button\">Comment</span> tab lets you view comments left by survey respondents as they were filling out the survey.","tHtml":"The <span class=\"hint-icon hint-comment-button\">Comment</span> tab lets you view comments left by survey respondents as they were filling out the survey.","tClean":"The Comment tab lets you view comments left by survey respondents as they were filling out the survey."},{"key":"sections.sponsor_finish.title","t":"Thanks"},{"key":"sponsor.sponsor_finish","t":"Thanks for supporting the survey. Your avatar should appear next to the chart you picked within the next hour or so. If it doesn't, please [get in touch](mailto:chartsponsor@stateofjs.com).","tHtml":"Thanks for supporting the survey. Your avatar should appear next to the chart you picked within the next hour or so. If it doesn't, please <a href=\"mailto:chartsponsor@stateofjs.com\">get in touch</a>.","tClean":"Thanks for supporting the survey. Your avatar should appear next to the chart you picked within the next hour or so. If it doesn't, please get in touch."},{"key":"sponsor.sponsored_by","t":"**{name}** donated **${amount}** to sponsor this chart","tHtml":"<strong>{name}</strong> donated <strong>${amount}</strong> to sponsor this chart","tClean":"{name} donated ${amount} to sponsor this chart"},{"key":"sponsor.sponsor_button","t":"Sponsor This Chart"},{"key":"sponsor.sponsor_chart.title","t":"Sponsor Chart \"{title}\"","tHtml":"Sponsor Chart \"{title}\"","tClean":"Sponsor Chart \"{title}\""},{"key":"sponsor.sponsor_chart.description","t":"Support this survey financially by donating $10 or more, and get your Twitter avatar featured next to a chart!"},{"key":"sponsor.chart_id","t":"Chart ID:"},{"key":"sponsor.sponsor_this_chart","t":"Sponsor This Chart (${baseAmount}+)"},{"key":"sponsor.how_it_works.title","t":"How It Works"},{"key":"sponsor.how_it_works.description","t":"1. When you **click the \"Sponsor This Chart\" button**, you will be redirected to our partner [SendOwl](https://www.sendowl.com/)'s checkout page. \n\n2. You can then **adjust the amount** you'd like to sponsor the survey for, starting at USD10.  \n\n3. Once you checkout, you will be able to **provide your Twitter username**. \n\n4. You will see a **File Download** page, but you can safely ignore it. \n\n5. The site will rebuild in the background and your username and donation will **appear next to the chart within the next hour**.","tHtml":"<ol>\n<li><p>When you <strong>click the \"Sponsor This Chart\" button</strong>, you will be redirected to our partner <a href=\"https://www.sendowl.com/\">SendOwl</a>'s checkout page. </p>\n</li>\n<li><p>You can then <strong>adjust the amount</strong> you'd like to sponsor the survey for, starting at USD10.  </p>\n</li>\n<li><p>Once you checkout, you will be able to <strong>provide your Twitter username</strong>. </p>\n</li>\n<li><p>You will see a <strong>File Download</strong> page, but you can safely ignore it. </p>\n</li>\n<li><p>The site will rebuild in the background and your username and donation will <strong>appear next to the chart within the next hour</strong>.</p>\n</li>\n</ol>\n","tClean":"\nWhen you click the \"Sponsor This Chart\" button, you will be redirected to our partner SendOwl's checkout page. \n\nYou can then adjust the amount you'd like to sponsor the survey for, starting at USD10.  \n\nOnce you checkout, you will be able to provide your Twitter username. \n\nYou will see a File Download page, but you can safely ignore it. \n\nThe site will rebuild in the background and your username and donation will appear next to the chart within the next hour.\n\n\n"},{"key":"sponsor.faq.title","t":"F.A.Q."},{"key":"sponsor.faq.usage.title","t":"What will my donation be used for?"},{"key":"sponsor.faq.usage.description","t":"Your donation will help support survey maintainers, as well as help hire more contributors (illustrators, accessibilty and diversity experts, etc.)."},{"key":"sponsor.faq.public.title","t":"Will my donation be public?"},{"key":"sponsor.faq.public.description","t":"Yes. Your **Twitter username** as well as the **amount you donated** will be displayed publicly next to the chart.","tHtml":"Yes. Your <strong>Twitter username</strong> as well as the <strong>amount you donated</strong> will be displayed publicly next to the chart.","tClean":"Yes. Your Twitter username as well as the amount you donated will be displayed publicly next to the chart."},{"key":"sponsor.faq.refund.title","t":"What's your refund policy?"},{"key":"sponsor.faq.refund.description","t":"All donations are refundable within a 1-week period, minus transaction fees."},{"key":"sponsor.faq.influence.title","t":"Do donations influence the survey contents?"},{"key":"sponsor.faq.influence.description","t":"Donations take place once the survey is already published, and donors to not have any influence on the contents of the survey."},{"key":"sponsor.faq.feedback.title","t":"Where can I leave feedback/ask questions?"},{"key":"sponsor.faq.feedback.description","t":"You can do so [on GitHub](https://github.com/StateOfJS/Monorepo/issues/69) or [in our Discord](https://discord.gg/tuWRUWVyJs).","tHtml":"You can do so <a href=\"https://github.com/StateOfJS/Monorepo/issues/69\">on GitHub</a> or <a href=\"https://discord.gg/tuWRUWVyJs\">in our Discord</a>.","tClean":"You can do so on GitHub or in our Discord."},{"key":"sections.data_explorer.title","t":"Data Explorer"},{"key":"sections.data_explorer.description","t":"Dynamically explore the survey's audience by picking two questions, and seeing how\nrespondents are distributed between them.","tHtml":"<p>Dynamically explore the survey's audience by picking two questions, and seeing how\nrespondents are distributed between them.</p>\n","tClean":"Dynamically explore the survey's audience by picking two questions, and seeing how\nrespondents are distributed between them.\n"},{"key":"hints.data_explorer","t":"This is a preview version of our new Data Explorer. If you find any issues or data inconsistencies please [let us know]({issueLink}).","tHtml":"This is a preview version of our new Data Explorer. If you find any issues or data inconsistencies please <a href=\"{issueLink}\">let us know</a>.","tClean":"This is a preview version of our new Data Explorer. If you find any issues or data inconsistencies please let us know."},{"key":"explorer.main_heading","t":"“{xAxisLabel}” vs “{yAxisLabel}”"},{"key":"explorer.total_respondents","t":"(**{totalCount}** total respondents)","tHtml":"(<strong>{totalCount}</strong> total respondents)","tClean":"({totalCount} total respondents)"},{"key":"explorer.count_per_dot","t":"{respondentsPerDot} Respondents"},{"key":"explorer.percentage_per_dot","t":"{percentsPerDot}%"},{"key":"explorer.extra_respondents","t":"Extra Respondents"},{"key":"explorer.missing_respondents","t":"Missing Respondents"},{"key":"explorer.count_per_dot.tooltip","t":"1 dot represents {respondentsPerDot} respondents"},{"key":"explorer.percentage_per_dot.tooltip","t":"1 dot represents {percentsPerDot}% of respondents"},{"key":"explorer.extra_respondents.tooltip","t":"Highlighted dots indicate higher-than-expected results."},{"key":"explorer.missing_respondents.tooltip","t":"Empty dots indicate lower-than-expected results."},{"key":"explorer.units_count","t":"Count"},{"key":"explorer.units_percentage","t":"% of Row"},{"key":"explorer.edit","t":"Edit Parameters…"},{"key":"explorer.get_data","t":"Get Data…"},{"key":"explorer.loading.1","t":"Querying API…"},{"key":"explorer.loading.2","t":"Waiting for a response…"},{"key":"explorer.loading.3","t":"Still working…"},{"key":"explorer.loading.4","t":"Hang on just a little bit longer…"},{"key":"explorer.loading.5","t":"Sorry, this is taking a while. You can try waiting a little longer, or [report an issue]({issueLink}).","tHtml":"Sorry, this is taking a while. You can try waiting a little longer, or <a href=\"{issueLink}\">report an issue</a>.","tClean":"Sorry, this is taking a while. You can try waiting a little longer, or report an issue."},{"key":"explorer.timeout","t":"Timeout"},{"key":"explorer.timeout.description","t":"The API didn't respond in time. Please try again later, or [report an issue]({issueLink}).","tHtml":"The API didn't respond in time. Please try again later, or <a href=\"{issueLink}\">report an issue</a>.","tClean":"The API didn't respond in time. Please try again later, or report an issue."},{"key":"explorer.share","t":"Share…"},{"key":"explorer.share.title","t":"Share “{xAxisLabel}” vs “{yAxisLabel}”"},{"key":"explorer.share.tweet","t":"“{xAxisLabel}” vs “{yAxisLabel}” from the {surveyName} {year} survey"},{"key":"explorer.axis_total","t":"{totalCount} respondents"},{"key":"explorer.axis_percent","t":"{percentCount}% of respondents"},{"key":"explorer.x_axis_details","t":"Out of all respondents who completed question “{yAxisLabel}”, **{totalCount}** survey respondents picked “{xQuestionLabel}” for “{xAxisLabel}”","tHtml":"Out of all respondents who completed question “{yAxisLabel}”, <strong>{totalCount}</strong> survey respondents picked “{xQuestionLabel}” for “{xAxisLabel}”","tClean":"Out of all respondents who completed question “{yAxisLabel}”, {totalCount} survey respondents picked “{xQuestionLabel}” for “{xAxisLabel}”"},{"key":"explorer.y_axis_details","t":"**{totalCount}** survey respondents picked “{yQuestionLabel}”","tHtml":"<strong>{totalCount}</strong> survey respondents picked “{yQuestionLabel}”","tClean":"{totalCount} survey respondents picked “{yQuestionLabel}”"},{"key":"explorer.main_legend_count","t":"**{totalCount}** respondents, **1** dot = **{respondentsPerDot}** respondents, **{dotsPerLine}** dots per line","tHtml":"<strong>{totalCount}</strong> respondents, <strong>1</strong> dot = <strong>{respondentsPerDot}</strong> respondents, <strong>{dotsPerLine}</strong> dots per line","tClean":"{totalCount} respondents, 1 dot = {respondentsPerDot} respondents, {dotsPerLine} dots per line"},{"key":"explorer.dots_per_line","t":"Dots per line"},{"key":"explorer.respondents_per_dot","t":"Respondents per dot"},{"key":"explorer.show_cell_counts","t":"Show cell counts"},{"key":"explorer.show_no_answer","t":"Show “No Answer” cells"},{"key":"explorer.all_fields","t":"All fields"},{"key":"explorer.select_item","t":"Select item"},{"key":"explorer.count_details.1","t":"**{xAxisTotal}** “{xAxisLabel}” respondents selected “{xAnswerLabel}”.","tHtml":"<strong>{xAxisTotal}</strong> “{xAxisLabel}” respondents selected “{xAnswerLabel}”.","tClean":"{xAxisTotal} “{xAxisLabel}” respondents selected “{xAnswerLabel}”."},{"key":"explorer.count_details.2","t":"**{yAxisPercentage}%** of “{yAxisLabel}” respondents selected “{yAnswerLabel}”.","tHtml":"<strong>{yAxisPercentage}%</strong> of “{yAxisLabel}” respondents selected “{yAnswerLabel}”.","tClean":"{yAxisPercentage}% of “{yAxisLabel}” respondents selected “{yAnswerLabel}”."},{"key":"explorer.count_details.3","t":"Applying that percentage to the previous **{xAxisTotal}** respondents figure \ngives us an expected baseline of **{normalizedCount}** respondents in this intersection.","tHtml":"<p>Applying that percentage to the previous <strong>{xAxisTotal}</strong> respondents figure \ngives us an expected baseline of <strong>{normalizedCount}</strong> respondents in this intersection.</p>\n","tClean":"Applying that percentage to the previous {xAxisTotal} respondents figure \ngives us an expected baseline of {normalizedCount} respondents in this intersection.\n"},{"key":"explorer.count_details.4_extra","t":"The actual count is **{cellCount}**, and those extra **{normalizedCountDelta}** respondents are *highlighted*.","tHtml":"The actual count is <strong>{cellCount}</strong>, and those extra <strong>{normalizedCountDelta}</strong> respondents are <em>highlighted</em>.","tClean":"The actual count is {cellCount}, and those extra {normalizedCountDelta} respondents are highlighted."},{"key":"explorer.count_details.4_missing","t":"The actual count is **{cellCount}**, and those missing **{normalizedCountDelta}** respondents appear as empty dots.","tHtml":"The actual count is <strong>{cellCount}</strong>, and those missing <strong>{normalizedCountDelta}</strong> respondents appear as empty dots.","tClean":"The actual count is {cellCount}, and those missing {normalizedCountDelta} respondents appear as empty dots."},{"key":"explorer.percentage_details.1_extra","t":"Overall, **{xAxisPercentage}%** of “{xAxisLabel}” respondents selected “{xAnswerLabel}”, but\nwithin **“{yAxisLabel}” respondents who selected “{yAnswerLabel}”** that percentage climbs to  **{bucketPercentage}%**.","tHtml":"<p>Overall, <strong>{xAxisPercentage}%</strong> of “{xAxisLabel}” respondents selected “{xAnswerLabel}”, but\nwithin <strong>“{yAxisLabel}” respondents who selected “{yAnswerLabel}”</strong> that percentage climbs to  <strong>{bucketPercentage}%</strong>.</p>\n","tClean":"Overall, {xAxisPercentage}% of “{xAxisLabel}” respondents selected “{xAnswerLabel}”, but\nwithin “{yAxisLabel}” respondents who selected “{yAnswerLabel}” that percentage climbs to  {bucketPercentage}%.\n"},{"key":"explorer.percentage_details.1_missing","t":"Overall, **{xAxisPercentage}%** of “{xAxisLabel}” respondents selected “{xAnswerLabel}”, but\nwithin **“{yAxisLabel}” respondents who selected “{yAnswerLabel}”** that percentage drops to  **{bucketPercentage}%**.","tHtml":"<p>Overall, <strong>{xAxisPercentage}%</strong> of “{xAxisLabel}” respondents selected “{xAnswerLabel}”, but\nwithin <strong>“{yAxisLabel}” respondents who selected “{yAnswerLabel}”</strong> that percentage drops to  <strong>{bucketPercentage}%</strong>.</p>\n","tClean":"Overall, {xAxisPercentage}% of “{xAxisLabel}” respondents selected “{xAnswerLabel}”, but\nwithin “{yAxisLabel}” respondents who selected “{yAnswerLabel}” that percentage drops to  {bucketPercentage}%.\n"},{"key":"explorer.percentage_details.2_extra","t":"Those extra **{normalizedPercentageDelta}%** respondents are *highlighted*.","tHtml":"Those extra <strong>{normalizedPercentageDelta}%</strong> respondents are <em>highlighted</em>.","tClean":"Those extra {normalizedPercentageDelta}% respondents are highlighted."},{"key":"explorer.percentage_details.2_missing","t":"Those missing **{normalizedPercentageDelta}%** respondents appear as empty dots.","tHtml":"Those missing <strong>{normalizedPercentageDelta}%</strong> respondents appear as empty dots.","tClean":"Those missing {normalizedPercentageDelta}% respondents appear as empty dots."},{"key":"explorer.extra_missing_respondents","t":"### Extra & Missing Respondents\n\nThe chart above aims to identify areas showing higher-than-expected \nor lower-than-expected values compared to a calculated baseline. \n\nFor example, assuming there are 1000 CSS Grid users, and that 50% of survey respondents work in a large company, \nyou'd expect to find 500 CSS Grid users working in large companies. \n\nAny deviation above or below that expected total could potentially indicate an interesting\ncorrelation between both variables, and is highlighted on the chart with either colored \ndots (for extra respondents above the baseline) or empty dots (for missing respondents).","tHtml":"<h3>Extra &amp; Missing Respondents</h3>\n<p>The chart above aims to identify areas showing higher-than-expected \nor lower-than-expected values compared to a calculated baseline. </p>\n<p>For example, assuming there are 1000 CSS Grid users, and that 50% of survey respondents work in a large company, \nyou'd expect to find 500 CSS Grid users working in large companies. </p>\n<p>Any deviation above or below that expected total could potentially indicate an interesting\ncorrelation between both variables, and is highlighted on the chart with either colored \ndots (for extra respondents above the baseline) or empty dots (for missing respondents).</p>\n","tClean":"Extra & Missing Respondents\nThe chart above aims to identify areas showing higher-than-expected \nor lower-than-expected values compared to a calculated baseline. \nFor example, assuming there are 1000 CSS Grid users, and that 50% of survey respondents work in a large company, \nyou'd expect to find 500 CSS Grid users working in large companies. \nAny deviation above or below that expected total could potentially indicate an interesting\ncorrelation between both variables, and is highlighted on the chart with either colored \ndots (for extra respondents above the baseline) or empty dots (for missing respondents).\n"},{"key":"filters.compare_data","t":"Compare Data"},{"key":"filters.customize_chart","t":"Query Builder…"},{"key":"filters.docs","t":"Documentation"},{"key":"filters.compare_chart","t":"Customize “{chartName}”"},{"key":"filters.edit_variant_with_name","t":"Edit “{name}”"},{"key":"filters.edit_name","t":"Edit Name"},{"key":"filters.edit_name.description","t":"Edit chart variant name:"},{"key":"filters.create_variant","t":"Create New Variant"},{"key":"filters.delete_variant","t":"Delete Chart"},{"key":"filters.delete_variant_confirm","t":"Delete chart variant “{name}”?"},{"key":"filters.edit_variant","t":"Edit Options…"},{"key":"filters.filters.description","t":"Define a combination of filters to compare multiple versions of the same chart side-by-side"},{"key":"filters.facets.description","t":"Pick a variable and use it to further break down each row of a chart into segments."},{"key":"filters.grid_mode","t":"Filters"},{"key":"filters.combined_mode","t":"Combined"},{"key":"filters.facet_mode","t":"Facets"},{"key":"filters.facet","t":"Facet:"},{"key":"filters.optional","t":"(optional)"},{"key":"filters.axis1","t":"Variable 1"},{"key":"filters.axis2","t":"Variable 2"},{"key":"filters.axis1.description","t":"Pick the main variable you want to analyze (vertical axis)."},{"key":"filters.axis2.description","t":"Pick another variable to compare the first one to (horizontal axis)."},{"key":"filters.facet_view","t":"Segmented bars"},{"key":"filters.grid_view","t":"Side-by-side grid"},{"key":"filters.series.heading","t":"Series {index}"},{"key":"filters.series.add","t":"Add Series…"},{"key":"filters.series.delete","t":"Delete Series"},{"key":"filters.series.year","t":"{year} data"},{"key":"filters.series.show_default","t":"Show default series"},{"key":"filters.series.no_data","t":"No data"},{"key":"filters.condition.add","t":"Add Filter"},{"key":"filters.condition.delete","t":"Delete Filter"},{"key":"filters.condition.and","t":"and"},{"key":"filters.operators.eq","t":"is"},{"key":"filters.operators.in","t":"is one of"},{"key":"filters.operators.nin","t":"is not one of"},{"key":"filters.operators.lt","t":"is lower than"},{"key":"filters.operators.gt","t":"is greater than"},{"key":"filters.value.add","t":"Add Value"},{"key":"filters.value.delete","t":"Delete Value"},{"key":"filters.legend.default","t":"Default"},{"key":"filters.cancel","t":"Cancel"},{"key":"filters.submit","t":"Update Chart"},{"key":"filters.copy_link","t":"Copy link to filters"},{"key":"filters.code","t":"Filters Code"},{"key":"filters.get_code","t":"Get Code"},{"key":"filters.import_code","t":"Import Code"},{"key":"filters.paste_filters_code","t":"Paste filters code here"},{"key":"filters.presets.title","t":"Presets:"},{"key":"filters.presets.save","t":"Save current filters as preset…"},{"key":"filters.presets.delete","t":"Delete Preset"},{"key":"filters.presets.enter_name","t":"Enter a name for your new preset:"},{"key":"filters.presets.previous_years","t":"Previous Years"},{"key":"filters.presets.gender","t":"Gender"},{"key":"filters.presets.top_countries","t":"Top Countries"},{"key":"filters.presets.salary_low_high","t":"Low vs High Salary"},{"key":"filters.presets.experience_low_high","t":"Low vs High Experience"},{"key":"filters.presets.company_size_low_high","t":"Small vs Large Company"},{"key":"filters.facet.select","t":"Select a facet…"},{"key":"filters.by_x","t":"By {name}"},{"key":"filters.vs_x","t":"Vs. {name}"},{"key":"dataloader.failed_request","t":"Oh no! The API request failed with the following message:"},{"key":"dataloader.submit_report_prompt","t":"Submit a bug report to let us know about this issue, and we'll do our best to fix it:"},{"key":"dataloader.submit_issue","t":"Submit Issue"},{"key":"filters.advanced_options","t":"Advanced Options"},{"key":"filters.options.cutoff","t":"Cutoff Threshold"},{"key":"filters.options.cutoff.description","t":"Exclude any value under this threshold from the data"},{"key":"filters.options.limit","t":"Limit"},{"key":"filters.options.limit.description","t":"Limit the results to the first n items"},{"key":"filters.options.showDefaultSeries","t":"Show default series"},{"key":"filters.options.showDefaultSeries.description","t":"Show the default (unfiltered) data series when using Grid mode"},{"key":"filters.bucketsFilter.eq","t":"Items that are “{value}”"},{"key":"filters.bucketsFilter.in","t":"Items that are one of “{value}”"},{"key":"filters.bucketsFilter.nin","t":"Items that are not one of “{value}”"},{"key":"filters.bucketsFilter.hasTags","t":"Items tagged “{value}”"},{"key":"charts.group_by","t":"Group by:"},{"key":"charts.group.experience","t":"Experience"},{"key":"charts.group.sentiment","t":"Sentiment"},{"key":"charts.grouped_by_group","t":"Grouped by \"**{group}**\"\"","tHtml":"Grouped by \"<strong>{group}</strong>\"\"","tClean":"Grouped by \"{group}\"\""},{"key":"charts.group_by_group","t":"Group by \"**{group}**\"\"","tHtml":"Group by \"<strong>{group}</strong>\"\"","tClean":"Group by \"{group}\"\""},{"key":"charts.display_mode","t":"Display mode:"},{"key":"charts.display_mode.split","t":"Split View"},{"key":"charts.display_mode.stacked","t":"Stacked View"},{"key":"charts.order","t":"Sort order"},{"key":"charts.sort_by","t":"Sort by:"},{"key":"charts.sort_by_sort","t":"Sort by \"**{sort}**\"","tHtml":"Sort by \"<strong>{sort}</strong>\"","tClean":"Sort by \"{sort}\""},{"key":"charts.sorted_by_sort_order","t":"Sorted by \"**{sort}**\", **{order}**","tHtml":"Sorted by \"<strong>{sort}</strong>\", <strong>{order}</strong>","tClean":"Sorted by \"{sort}\", {order}"},{"key":"charts.order.asc","t":"Ascending"},{"key":"charts.order.desc","t":"Descending"},{"key":"charts.actions.customize","t":"Query Builder…"},{"key":"charts.actions.data","t":"Get Chart Data"},{"key":"charts.actions.share","t":"Share Chart"},{"key":"charts.vs","t":"vs."},{"key":"charts.facet_median","t":"(median)"},{"key":"charts.facet_average","t":"(average)"},{"key":"charts.custom_variant","t":"Variant {index}"},{"key":"charts.new_variant_name_prompt","t":"Enter a short descriptive name for your new chart (e.g. “vs. Income”, “by Gender”, etc.)"},{"key":"charts.show_all_rows","t":"Show All"},{"key":"charts.show_all_rows.x_hidden","t":"Show All ({count} hidden)"},{"key":"charts.metadata.completion","t":"**{value}** completion rate (out of {total} survey participants)","tHtml":"<strong>{value}</strong> completion rate (out of {total} survey participants)","tClean":"{value} completion rate (out of {total} survey participants)"},{"key":"charts.metadata.respondents","t":"**{value}** question respondents","tHtml":"<strong>{value}</strong> question respondents","tClean":"{value} question respondents"},{"key":"charts.metadata.answers","t":"**{value}** question answers","tHtml":"<strong>{value}</strong> question answers","tClean":"{value} question answers"},{"key":"charts.metadata.average","t":"**{value}** mean (average) value","tHtml":"<strong>{value}</strong> mean (average) value","tClean":"{value} mean (average) value"},{"key":"charts.metadata.median","t":"**{value}** median value","tHtml":"<strong>{value}</strong> median value","tClean":"{value} median value"},{"key":"charts.metadata.limit","t":"Showing the top **{value}** items","tHtml":"Showing the top <strong>{value}</strong> items","tClean":"Showing the top {value} items"},{"key":"charts.metadata.cutoff","t":"Only showing items with more than **{value}** answers","tHtml":"Only showing items with more than <strong>{value}</strong> answers","tClean":"Only showing items with more than {value} answers"},{"key":"charts.metadata.sort_asc","t":"Sorted by **{value}**, **ascending**","tHtml":"Sorted by <strong>{value}</strong>, <strong>ascending</strong>","tClean":"Sorted by {value}, ascending"},{"key":"charts.metadata.sort_desc","t":"Sorted by **{value}**, **descending**","tHtml":"Sorted by <strong>{value}</strong>, <strong>descending</strong>","tClean":"Sorted by {value}, descending"},{"key":"charts.metadata.averageCardinality","t":"Respondents selected **{value}** options on average","tHtml":"Respondents selected <strong>{value}</strong> options on average","tClean":"Respondents selected {value} options on average"},{"key":"charts.average.marker","t":"Average: **{value}**","tHtml":"Average: <strong>{value}</strong>","tClean":"Average: {value}"},{"key":"charts.median.marker","t":"Median: **{value}**","tHtml":"Median: <strong>{value}</strong>","tClean":"Median: {value}"},{"key":"charts.marker.toggle.average","t":"Toggle median"},{"key":"charts.marker.toggle.median","t":"Toggle average"},{"key":"charts.filter_by","t":"Filter by:"},{"key":"charts.all_filters","t":"All"},{"key":"charts.all_filters.description","t":"Show All"},{"key":"charts.filter_by_value","t":"Filter by “{value}”"},{"key":"charts.filtered_by_value","t":"Filtered by “{value}”"},{"key":"charts.filter_by.sections","t":"Category:"},{"key":"charts.filter_by.baseline","t":"Baseline Status:"},{"key":"charts.toggle_view","t":"Show"},{"key":"charts.multiexp.cell_group_tooltip.experience","t":"**{count}** respondents (**{value}%**) answered \"**{answer}**\"","tHtml":"<strong>{count}</strong> respondents (<strong>{value}%</strong>) answered \"<strong>{answer}</strong>\"","tClean":"{count} respondents ({value}%) answered \"{answer}\""},{"key":"charts.multiexp.cell_group_tooltip.sentiment","t":"**{count}** respondents (**{value}%**) had a **{answer}** sentiment","tHtml":"<strong>{count}</strong> respondents (<strong>{value}%</strong>) had a <strong>{answer}</strong> sentiment","tClean":"{count} respondents ({value}%) had a {answer} sentiment"},{"key":"charts.multiexp.cell_tooltip","t":"**{count}** respondents (**{value}%**) answered \"**{experience}**\" and had a **{sentiment}** sentiment","tHtml":"<strong>{count}</strong> respondents (<strong>{value}%</strong>) answered \"<strong>{experience}</strong>\" and had a <strong>{sentiment}</strong> sentiment","tClean":"{count} respondents ({value}%) answered \"{experience}\" and had a {sentiment} sentiment"},{"key":"charts.multiexp.cell_tooltip_neutral","t":"**{count}** respondents (**{value}%**) answered \"**{experience}**\" and did not pick any sentiment","tHtml":"<strong>{count}</strong> respondents (<strong>{value}%</strong>) answered \"<strong>{experience}</strong>\" and did not pick any sentiment","tClean":"{count} respondents ({value}%) answered \"{experience}\" and did not pick any sentiment"},{"key":"answers.answers","t":"Freeform Answers"},{"key":"answers.answers_for","t":"Answers matching “{name}”"},{"key":"answers.answers_for_count","t":"{count} answers matching “{name}”"},{"key":"answers.description","t":"These freeform answers were matched to the **{name}** topic through a combination of\nautomated and manual data processing.","tHtml":"<p>These freeform answers were matched to the <strong>{name}</strong> topic through a combination of\nautomated and manual data processing.</p>\n","tClean":"These freeform answers were matched to the {name} topic through a combination of\nautomated and manual data processing.\n"},{"key":"answers.report_abuse","t":"Report this answer"},{"key":"answers.alphabetical","t":"Alphabetical Order"},{"key":"answers.length","t":"Answer Length"},{"key":"answers.keyword","t":"Keyword:"},{"key":"answers.keyword_count","t":"{count} results"},{"key":"answers.download","t":"Download Answers"},{"key":"banner.html2024","t":"The State of HTML 2024 survey is currently open! Take the survey now →"},{"key":"tools.cardinalities","t":"Number of Items"},{"key":"tools.cardinalities.description","t":"How many items in this category respondents have used."},{"key":"highlight.heading.feature","t":"Feature Highlight:"},{"key":"highlight.heading.library","t":"Library Highlight:"},{"key":"highlight.description","t":"We're highlighting interesting features or libraries we think you should know about."},{"key":"highlight.resources","t":"Useful Resources"},{"key":"correlations.correlations_trigger","t":"Found {count} correlations with other variables"},{"key":"correlations.heading.trend","t":"Correlations for scoring <span class=\"correlation-direction\">{directionLabel}</span> on **“{questionLabel}”**","tHtml":"Correlations for scoring <span class=\"correlation-direction\">{directionLabel}</span> on <strong>“{questionLabel}”</strong>","tClean":"Correlations for scoring {directionLabel} on “{questionLabel}”"},{"key":"correlations.heading.option","t":"Correlations for picking **“{optionLabel}”** for **“{questionLabel}”**","tHtml":"Correlations for picking <strong>“{optionLabel}”</strong> for <strong>“{questionLabel}”</strong>","tClean":"Correlations for picking “{optionLabel}” for “{questionLabel}”"},{"key":"correlations.heading.cardinality","t":"Correlations for selecting <span class=\"correlation-direction\">more</span> items for **“{questionLabel}”**","tHtml":"Correlations for selecting <span class=\"correlation-direction\">more</span> items for <strong>“{questionLabel}”</strong>","tClean":"Correlations for selecting more items for “{questionLabel}”"},{"key":"correlations.exclusions","t":"Excluded:"},{"key":"correlations.exclusions.description","t":"Some correlation pairs are manually filtered out when considered too obvious or not relevant."},{"key":"correlations.note","t":"Questions and individual answers are compared against one another using [Spearman's rank correlation](https://en.wikipedia.org/wiki/Spearman%27s_rank_correlation_coefficient). Only correlations based on enough responses and above a minimum strength threshold are shown, and trivial correlations (e.g. “living in Spain is correlated with speaking Spanish”) may be automatically excluded. \n\nPlease note that [correlation does not imply causation](https://en.wikipedia.org/wiki/Correlation_does_not_imply_causation), and these are automatically-generated raw associations with no [controls for other factors](https://en.wikipedia.org/wiki/Confounding). And with thousands of pairs compared, some correlations may also be [due to chance](https://en.wikipedia.org/wiki/Multiple_comparisons_problem).","tHtml":"<p>Questions and individual answers are compared against one another using <a href=\"https://en.wikipedia.org/wiki/Spearman%27s_rank_correlation_coefficient\">Spearman's rank correlation</a>. Only correlations based on enough responses and above a minimum strength threshold are shown, and trivial correlations (e.g. “living in Spain is correlated with speaking Spanish”) may be automatically excluded. </p>\n<p>Please note that <a href=\"https://en.wikipedia.org/wiki/Correlation_does_not_imply_causation\">correlation does not imply causation</a>, and these are automatically-generated raw associations with no <a href=\"https://en.wikipedia.org/wiki/Confounding\">controls for other factors</a>. And with thousands of pairs compared, some correlations may also be <a href=\"https://en.wikipedia.org/wiki/Multiple_comparisons_problem\">due to chance</a>.</p>\n","tClean":"Questions and individual answers are compared against one another using Spearman's rank correlation. Only correlations based on enough responses and above a minimum strength threshold are shown, and trivial correlations (e.g. “living in Spain is correlated with speaking Spanish”) may be automatically excluded. \nPlease note that correlation does not imply causation, and these are automatically-generated raw associations with no controls for other factors. And with thousands of pairs compared, some correlations may also be due to chance.\n"},{"key":"correlations.takeaway.with_question","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with scoring {directionLabel} for “{questionLabel}”."},{"key":"correlations.takeaway.with_option","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting **“{optionLabel}”** for **“{questionLabel}”**","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting <strong>“{optionLabel}”</strong> for <strong>“{questionLabel}”</strong>","tClean":"{strengthLevelLabel} {directionLabel} correlation with selecting “{optionLabel}” for “{questionLabel}”"},{"key":"correlations.takeaway.with_cardinality","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with selecting {directionLabel} items for “{questionLabel}”."},{"key":"correlations.respondent_count.description","t":"Based on a sample of {respondentCount} respondents having answered both questions"},{"key":"correlations.strength_levels","t":"Correlation Strength Levels"},{"key":"correlations.strength_levels.description","t":"Stronger correlations don't always mean better insights."},{"key":"correlations.option.subheading","t":"Selected “{optionLabel}”"},{"key":"correlations.trend.subheading","t":"Overall trend"},{"key":"correlations.cardinality.subheading","t":"Number of items selected"},{"key":"correlations.cardinality.negative","t":"fewer"},{"key":"correlations.cardinality.positive","t":"more"},{"key":"correlations.strength","t":"Strength"},{"key":"correlations.strength.description","t":"How strong the correlation is"},{"key":"correlations.strength.very_strong","t":"Very strong"},{"key":"correlations.strength.strong","t":"Strong"},{"key":"correlations.strength.moderate","t":"Moderate"},{"key":"correlations.strength.weak","t":"Weak"},{"key":"correlations.direction","t":"Direction"},{"key":"correlations.direction.description","t":"Whether the two variables move together or in opposite ways"},{"key":"correlations.direction.positive","t":"positive"},{"key":"correlations.direction.positive.title","t":"Positive Correlations"},{"key":"correlations.direction.positive.description","t":"When variable A increase, variable B **increases**.","tHtml":"When variable A increase, variable B <strong>increases</strong>.","tClean":"When variable A increase, variable B increases."},{"key":"correlations.direction.negative","t":"negative"},{"key":"correlations.direction.negative.title","t":"Negative Correlations"},{"key":"correlations.direction.negative.description","t":"When variable A increase, variable B **decreases**.","tHtml":"When variable A increase, variable B <strong>decreases</strong>.","tClean":"When variable A increase, variable B decreases."},{"key":"correlations.direction.lower","t":"lower"},{"key":"correlations.direction.higher","t":"higher"},{"key":"correlations.value","t":"Value"},{"key":"correlations.value.description","t":"The correlation coefficient"},{"key":"correlations.variable","t":"Variable"},{"key":"correlations.variable.description","t":"Which variable is correlated"},{"key":"correlations.sample_size","t":"Sample size:"},{"key":"correlations.sample_size.description","t":"The sample size of the subset of respondents the correlation is based on"},{"key":"correlations.respondents","t":"{n} respondents"},{"key":"sections.download.title","t":"Download Dataset"},{"key":"sections.download.description","t":"You can apply to receive the full CSV dataset for free by [joining our Discord group](https://discord.gg/2E7bbgnrJJ) and asking in the **#general** channel.","tHtml":"You can apply to receive the full CSV dataset for free by <a href=\"https://discord.gg/2E7bbgnrJJ\">joining our Discord group</a> and asking in the <strong>#general</strong> channel.","tClean":"You can apply to receive the full CSV dataset for free by joining our Discord group and asking in the #general channel."},{"key":"help.title","t":"Feature Spotlight:"},{"key":"help.description","t":"Learn more about the survey's features"},{"key":"help.correlations","t":"Correlations"},{"key":"help.correlations.description","t":"These auto-generated scores help highlight whenever two items are correlated in the dataset, based on metrics such as scoring **higher** on a question, selecting **more items** for a question, or selecting a **specific answer**.","tHtml":"These auto-generated scores help highlight whenever two items are correlated in the dataset, based on metrics such as scoring <strong>higher</strong> on a question, selecting <strong>more items</strong> for a question, or selecting a <strong>specific answer</strong>.","tClean":"These auto-generated scores help highlight whenever two items are correlated in the dataset, based on metrics such as scoring higher on a question, selecting more items for a question, or selecting a specific answer."},{"key":"help.query_builder","t":"Query Builder"},{"key":"help.query_builder.description","t":"The query builder lets you add filters to the current chart to dynamically query the Devographics API and return a custom variant."},{"key":"help.export_data","t":"Export Data"},{"key":"help.export_data.description","t":"You can export the raw JSON data used to generate the chart, or get the GraphQL query used to obtain the data in the first place."},{"key":"help.comments","t":"Comments"},{"key":"help.comments.description","t":"During the survey, respondents had the option to give feedback on each question through a separate freeform comment field."},{"key":"help.freeform_answers","t":"Freeform Answers"},{"key":"help.freeform_answers.description","t":"Answers for freeform textfield questions are matched to specific keywords (in this case **{topic}**) through a combination of automated and manual data processing.","tHtml":"Answers for freeform textfield questions are matched to specific keywords (in this case <strong>{topic}</strong>) through a combination of automated and manual data processing.","tClean":"Answers for freeform textfield questions are matched to specific keywords (in this case {topic}) through a combination of automated and manual data processing."},{"key":"help.boxplot","t":"Boxplot Chart"},{"key":"help.boxplot.description","t":"Boxplot charts show the 10th, 25th, 50th (a.k.a. **median**), 75th, and 90th [percentiles](https://www.mathsisfun.com/data/percentiles.html) of a dataset. You can also use the built-in controls to show the **average** (or **mean**) instead.","tHtml":"Boxplot charts show the 10th, 25th, 50th (a.k.a. <strong>median</strong>), 75th, and 90th <a href=\"https://www.mathsisfun.com/data/percentiles.html\">percentiles</a> of a dataset. You can also use the built-in controls to show the <strong>average</strong> (or <strong>mean</strong>) instead.","tClean":"Boxplot charts show the 10th, 25th, 50th (a.k.a. median), 75th, and 90th percentiles of a dataset. You can also use the built-in controls to show the average (or mean) instead."},{"key":"help.stacked_bar","t":"Stacked Bar Chart"},{"key":"help.stacked_bar.description","t":"Stacked bar charts take a question, and then further break down each bar to show how that sub-group answered a different question. You can use the legend to toggle sorting and ordering."},{"key":"help.two_series_scatterplot","t":"Scatterplot Chart"},{"key":"help.two_series_scatterplot.description","t":"Scatterplot charts take a set of items and then map them on a grid along with a [trend line](https://www.mathsisfun.com/definitions/trend-line.html), which each axis corresponding to a different variable.","tHtml":"Scatterplot charts take a set of items and then map them on a grid along with a <a href=\"https://www.mathsisfun.com/definitions/trend-line.html\">trend line</a>, which each axis corresponding to a different variable.","tClean":"Scatterplot charts take a set of items and then map them on a grid along with a trend line, which each axis corresponding to a different variable."},{"key":"sponsors.neon.description","t":"Unleash cutting-edge AI applications with Postgres."},{"key":"sponsors.frontendmasters.description","t":"Advance your skills with in-depth, modern front-end engineering courses."},{"key":"sponsors.polypane.description","t":"The browser for ambitious devs. Build responsive, accessible and fast websites with ease."},{"key":"sponsors.nijibox.description","t":"UX and Product Development consulting in the heart of Tokyo."},{"key":"sponsors.renderatl.description","t":"The largest tech conference with a dedicated Design & CSS track.","tHtml":"The largest tech conference with a dedicated Design &amp; CSS track.","tClean":"The largest tech conference with a dedicated Design & CSS track."},{"key":"sponsors.google_chrome.description","t":"Thanks to the Google Chrome team for supporting our work."},{"key":"sponsors.tokyodev.description","t":"Find your dream developer job in Japan today."},{"key":"sponsors.gitnation.description","t":"Learn the latest trends directly from early-adopters and tech authors."},{"key":"sponsors.algolia.description","t":"Deploy fast and scalable AI search anywhere with Algolia's API-first design"},{"key":"sponsors.storyblok.description","t":"Make bigger, faster market impact with the CMS that gets out of your way."},{"key":"sponsors.jetbrains.description","t":"A rich suite of tools that provide an exceptional developer experience."},{"key":"sponsors.webstorm.description","t":"Enjoy more productive coding with the JavaScript IDE that has everything you need."},{"key":"sponsors.sentry.description","t":"The application monitoring platform loved by developers worldwide."},{"key":"sponsors.clerk.description","t":"Full stack auth and user management that lets you launch faster and scale easier."},{"key":"sponsors.certificates_dev.description","t":"Developer certifications built with the framework creators themselves."},{"key":"sponsors.reactsummit.description","t":"The biggest React conference worldwide. Stay ahead of trends with 50+ speakers, network and party with 1,500 developers, enjoy the Amsterdam summer, and much more!"},{"key":"sponsors.reactparis.description","t":"The premier two-day, single-track React conference you don't need to miss in 2025."},{"key":"sponsors.nhost.description","t":"Nhost is an open source Firebase alternative with GraphQL."},{"key":"sponsors.apollo.description","t":"Apollo's supergraph empowers product and engineering teams to quickly create incredible experiences for their customers."},{"key":"sponsors.the_guild.description","t":"The Guild's open-source tools and ecosystem provides everything you need for evolving your APIs."},{"key":"sponsors.hasura.description","t":"Run Hasura locally or in the cloud, and connect it to your new or existing databases to instantly get a production-grade GraphQL API."},{"key":"sponsors.graphql_wtf.description","t":"Learn something new with GraphQL, every week. Get new episodes directly to your inbox."},{"key":"sponsors.grafbase.description","t":"Instant serverless GraphQL backends. Grafbase provides the best developer experience to deploy GraphQL APIs."},{"key":"tokyodev.relocation","t":"Find Work in Japan"},{"key":"tokyodev.relocation.description","t":"Relocating to Japan doesn't just have to be a dream. TokyoDev's Developer’s Crash Course in Coming to Japan covers things like what it is like to work for a Japanese company, how much you can expect to make, what visas are available and how hard they are to obtain."},{"key":"frontendmasters.learning_path","t":"Your Path to Becoming a Senior Web Developer"},{"key":"frontendmasters.learning_path.description","t":"Want to upgrade your career? Deep-dive into JavaScript, React, Web performance, CSS, deploying websites, TypeScript, and functional programming to go from junior to senior today."},{"key":"storyblok.technologies","t":"React? Vue? Astro? JS?"},{"key":"storyblok.technologies.description","t":"Doesn't matter, we speak JSON. Storyblok is a Headless CMS that works with all modern frameworks and platforms so you are completely free to choose the best option for your project. Get started in a matter of minutes!"},{"key":"sections._user_metadata.title","t":"Metadata"},{"key":"sections._user_metadata.description","t":"Additional metadata collected about respondents."},{"key":"user_metadata.locale","t":"Language"},{"key":"_user_metadata.locale","t":"Language"},{"key":"user_metadata.locale.description","t":"The language respondents selected to fill out the survey."},{"key":"_user_metadata.locale.description","t":"The language respondents selected to fill out the survey."},{"key":"user_metadata.source","t":"Source"},{"key":"_user_metadata.source","t":"Source"},{"key":"user_metadata.source.description","t":"How respondents found out about the survey."},{"key":"_user_metadata.source.description","t":"How respondents found out about the survey."},{"key":"user_metadata.source.note","t":"Respondent source is computed based on referrer data, URL tracking data, and self-reported answers."},{"key":"_user_metadata.source.note","t":"Respondent source is computed based on referrer data, URL tracking data, and self-reported answers."},{"key":"_user_metadata.past_surveys","t":"Previous Surveys"},{"key":"_user_metadata.past_surveys.description","t":"Previous Devographics surveys taken by respondents."},{"key":"_user_metadata.past_surveys.note","t":"Respondents taking the survey as guests shown as “no answer”."},{"key":"_user_metadata.past_editions","t":"Previous Editions"},{"key":"_user_metadata.past_editions.description","t":"Previous editions of this survey taken by respondents."},{"key":"user_metadata.completion_stats","t":"Survey Completion"},{"key":"_user_metadata.completion_stats","t":"Survey Completion"},{"key":"user_metadata.completion_stats.description","t":"The proportion of the survey filled out by respondents."},{"key":"_user_metadata.completion_stats.description","t":"The proportion of the survey filled out by respondents."},{"key":"_user_metadata.skipped","t":"Skipped Questions"},{"key":"_user_metadata.skipped.description","t":"Which questions were the most frequently skipped."},{"key":"_user_metadata.past_same_survey_count","t":"Participation Count"},{"key":"_user_metadata.past_same_survey_count.description","t":"How many times respondents have taken part in previous editions of this survey."},{"key":"_user_metadata.created_at_date","t":"Responses Over Time"},{"key":"_user_metadata.created_at_date.description","t":"Chronological breakdown of when responses were collected."},{"key":"_user_metadata.authmode","t":"Authentication"},{"key":"_user_metadata.authmode.description","t":"Whether respondents signed in or filled out the survey as guests."},{"key":"_user_metadata.device","t":"Device"},{"key":"_user_metadata.device.description","t":"What device was used to take the survey."},{"key":"_user_metadata.browser","t":"Browser"},{"key":"_user_metadata.browser.description","t":"What browser was used to take the survey."},{"key":"_user_metadata.version","t":"Browser Version"},{"key":"_user_metadata.version.description","t":"What browser version was used to take the survey."},{"key":"_user_metadata.os","t":"OS"},{"key":"_user_metadata.os.description","t":"What OS version was used to take the survey."},{"key":"libraries.all_tools_experience","t":"Libraries Experience & Sentiment","tHtml":"Libraries Experience &amp; Sentiment","tClean":"Libraries Experience & Sentiment"},{"key":"libraries.tools_ratios_over_time","t":"Ratios over Time"},{"key":"tools.scatterplot_overview","t":"Satisfaction vs Usage"},{"key":"libraries.scatterplot_overview","t":"Satisfaction vs Usage"},{"key":"comments.filter.by_download","t":"Download JSON"},{"key":"comments.filter.by_download.description","t":"Download a JSON file containing these items."},{"key":"correlations.takeaway.shape1","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with scoring {directionLabel} for “{questionLabel}”."},{"key":"correlations.takeaway.shape2","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with scoring {directionLabel} for “{questionLabel}”."},{"key":"correlations.takeaway.shape7","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with scoring {directionLabel} for “{questionLabel}”."},{"key":"correlations.takeaway.shape3","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting **“{optionLabel}”** for **“{questionLabel}”**","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting <strong>“{optionLabel}”</strong> for <strong>“{questionLabel}”</strong>","tClean":"{strengthLevelLabel} {directionLabel} correlation with selecting “{optionLabel}” for “{questionLabel}”"},{"key":"correlations.takeaway.shape4","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting **“{optionLabel}”** for **“{questionLabel}”**","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting <strong>“{optionLabel}”</strong> for <strong>“{questionLabel}”</strong>","tClean":"{strengthLevelLabel} {directionLabel} correlation with selecting “{optionLabel}” for “{questionLabel}”"},{"key":"correlations.takeaway.shape8","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting **“{optionLabel}”** for **“{questionLabel}”**","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting <strong>“{optionLabel}”</strong> for <strong>“{questionLabel}”</strong>","tClean":"{strengthLevelLabel} {directionLabel} correlation with selecting “{optionLabel}” for “{questionLabel}”"},{"key":"correlations.takeaway.shape5","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with selecting {directionLabel} items for “{questionLabel}”."},{"key":"correlations.takeaway.shape6","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with selecting {directionLabel} items for “{questionLabel}”."},{"key":"correlations.takeaway.shape9","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with selecting {directionLabel} items for “{questionLabel}”."},{"key":"libraries.all_libraries","t":"Libraries Experience & Sentiment","tHtml":"Libraries Experience &amp; Sentiment","tClean":"Libraries Experience & Sentiment"},{"key":"sections._user_metadata.title","t":"Metadata"},{"key":"sections._user_metadata.description","t":"Additional metadata collected about respondents."},{"key":"user_metadata.locale","t":"Language"},{"key":"_user_metadata.locale","t":"Language"},{"key":"user_metadata.locale.description","t":"The language respondents selected to fill out the survey."},{"key":"_user_metadata.locale.description","t":"The language respondents selected to fill out the survey."},{"key":"user_metadata.source","t":"Source"},{"key":"_user_metadata.source","t":"Source"},{"key":"user_metadata.source.description","t":"How respondents found out about the survey."},{"key":"_user_metadata.source.description","t":"How respondents found out about the survey."},{"key":"user_metadata.source.note","t":"Respondent source is computed based on referrer data, URL tracking data, and self-reported answers."},{"key":"_user_metadata.source.note","t":"Respondent source is computed based on referrer data, URL tracking data, and self-reported answers."},{"key":"_user_metadata.past_surveys","t":"Previous Surveys"},{"key":"_user_metadata.past_surveys.description","t":"Previous Devographics surveys taken by respondents."},{"key":"_user_metadata.past_surveys.note","t":"Respondents taking the survey as guests shown as “no answer”."},{"key":"_user_metadata.past_editions","t":"Previous Editions"},{"key":"_user_metadata.past_editions.description","t":"Previous editions of this survey taken by respondents."},{"key":"user_metadata.completion_stats","t":"Survey Completion"},{"key":"_user_metadata.completion_stats","t":"Survey Completion"},{"key":"user_metadata.completion_stats.description","t":"The proportion of the survey filled out by respondents."},{"key":"_user_metadata.completion_stats.description","t":"The proportion of the survey filled out by respondents."},{"key":"_user_metadata.skipped","t":"Skipped Questions"},{"key":"_user_metadata.skipped.description","t":"Which questions were the most frequently skipped."},{"key":"_user_metadata.past_same_survey_count","t":"Participation Count"},{"key":"_user_metadata.past_same_survey_count.description","t":"How many times respondents have taken part in previous editions of this survey."},{"key":"_user_metadata.past_surveys.note","t":"Respondents taking the survey as guests shown as “no answer”."},{"key":"_user_metadata.created_at_date","t":"Responses Over Time"},{"key":"_user_metadata.created_at_date.description","t":"Chronological breakdown of when responses were collected."},{"key":"_user_metadata.authmode","t":"Authentication"},{"key":"_user_metadata.authmode.description","t":"Whether respondents signed in or filled out the survey as guests."},{"key":"_user_metadata.device","t":"Device"},{"key":"_user_metadata.device.description","t":"What device was used to take the survey."},{"key":"_user_metadata.browser","t":"Browser"},{"key":"_user_metadata.browser.description","t":"What browser was used to take the survey."},{"key":"_user_metadata.version","t":"Browser Version"},{"key":"_user_metadata.version.description","t":"What browser version was used to take the survey."},{"key":"_user_metadata.os","t":"OS"},{"key":"_user_metadata.os.description","t":"What OS version was used to take the survey."},{"key":"libraries.all_tools_experience","t":"Libraries Experience & Sentiment","tHtml":"Libraries Experience &amp; Sentiment","tClean":"Libraries Experience & Sentiment"},{"key":"libraries.tools_ratios_over_time","t":"Ratios over Time"},{"key":"tools.scatterplot_overview","t":"Satisfaction vs Usage"},{"key":"libraries.scatterplot_overview","t":"Satisfaction vs Usage"},{"key":"comments.filter.by_download","t":"Download JSON"},{"key":"comments.filter.by_download.description","t":"Download a JSON file containing these items."},{"key":"correlations.takeaway.shape1","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with scoring {directionLabel} for “{questionLabel}”."},{"key":"correlations.takeaway.shape2","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with scoring {directionLabel} for “{questionLabel}”."},{"key":"correlations.takeaway.shape7","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with scoring {directionLabel} for “{questionLabel}”."},{"key":"correlations.takeaway.shape3","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting **“{optionLabel}”** for **“{questionLabel}”**","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting <strong>“{optionLabel}”</strong> for <strong>“{questionLabel}”</strong>","tClean":"{strengthLevelLabel} {directionLabel} correlation with selecting “{optionLabel}” for “{questionLabel}”"},{"key":"correlations.takeaway.shape4","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting **“{optionLabel}”** for **“{questionLabel}”**","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting <strong>“{optionLabel}”</strong> for <strong>“{questionLabel}”</strong>","tClean":"{strengthLevelLabel} {directionLabel} correlation with selecting “{optionLabel}” for “{questionLabel}”"},{"key":"correlations.takeaway.shape8","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting **“{optionLabel}”** for **“{questionLabel}”**","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting <strong>“{optionLabel}”</strong> for <strong>“{questionLabel}”</strong>","tClean":"{strengthLevelLabel} {directionLabel} correlation with selecting “{optionLabel}” for “{questionLabel}”"},{"key":"correlations.takeaway.shape5","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with selecting {directionLabel} items for “{questionLabel}”."},{"key":"correlations.takeaway.shape6","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with selecting {directionLabel} items for “{questionLabel}”."},{"key":"correlations.takeaway.shape9","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with selecting {directionLabel} items for “{questionLabel}”."},{"key":"sections._user_metadata.title","t":"Metadata"},{"key":"sections._user_metadata.description","t":"Additional metadata collected about respondents."},{"key":"user_metadata.locale","t":"Language"},{"key":"_user_metadata.locale","t":"Language"},{"key":"user_metadata.locale","t":"Language"},{"key":"_user_metadata.locale","t":"Language"},{"key":"user_metadata.locale.description","t":"The language respondents selected to fill out the survey."},{"key":"_user_metadata.locale.description","t":"The language respondents selected to fill out the survey."},{"key":"user_metadata.locale.description","t":"The language respondents selected to fill out the survey."},{"key":"_user_metadata.locale.description","t":"The language respondents selected to fill out the survey."},{"key":"user_metadata.source","t":"Source"},{"key":"_user_metadata.source","t":"Source"},{"key":"user_metadata.source","t":"Source"},{"key":"_user_metadata.source","t":"Source"},{"key":"user_metadata.source.description","t":"How respondents found out about the survey."},{"key":"_user_metadata.source.description","t":"How respondents found out about the survey."},{"key":"user_metadata.source.description","t":"How respondents found out about the survey."},{"key":"_user_metadata.source.description","t":"How respondents found out about the survey."},{"key":"user_metadata.source.note","t":"Respondent source is computed based on referrer data, URL tracking data, and self-reported answers."},{"key":"_user_metadata.source.note","t":"Respondent source is computed based on referrer data, URL tracking data, and self-reported answers."},{"key":"user_metadata.source.note","t":"Respondent source is computed based on referrer data, URL tracking data, and self-reported answers."},{"key":"_user_metadata.source.note","t":"Respondent source is computed based on referrer data, URL tracking data, and self-reported answers."},{"key":"_user_metadata.past_surveys","t":"Previous Surveys"},{"key":"_user_metadata.past_surveys.description","t":"Previous Devographics surveys taken by respondents."},{"key":"_user_metadata.past_surveys.note","t":"Respondents taking the survey as guests shown as “no answer”."},{"key":"_user_metadata.past_editions","t":"Previous Editions"},{"key":"_user_metadata.past_editions.description","t":"Previous editions of this survey taken by respondents."},{"key":"user_metadata.completion_stats","t":"Survey Completion"},{"key":"_user_metadata.completion_stats","t":"Survey Completion"},{"key":"user_metadata.completion_stats","t":"Survey Completion"},{"key":"_user_metadata.completion_stats","t":"Survey Completion"},{"key":"user_metadata.completion_stats.description","t":"The proportion of the survey filled out by respondents."},{"key":"_user_metadata.completion_stats.description","t":"The proportion of the survey filled out by respondents."},{"key":"user_metadata.completion_stats.description","t":"The proportion of the survey filled out by respondents."},{"key":"_user_metadata.completion_stats.description","t":"The proportion of the survey filled out by respondents."},{"key":"_user_metadata.skipped","t":"Skipped Questions"},{"key":"_user_metadata.skipped.description","t":"Which questions were the most frequently skipped."},{"key":"_user_metadata.past_same_survey_count","t":"Participation Count"},{"key":"_user_metadata.past_same_survey_count.description","t":"How many times respondents have taken part in previous editions of this survey."},{"key":"_user_metadata.created_at_date","t":"Responses Over Time"},{"key":"_user_metadata.created_at_date.description","t":"Chronological breakdown of when responses were collected."},{"key":"_user_metadata.authmode","t":"Authentication"},{"key":"_user_metadata.authmode.description","t":"Whether respondents signed in or filled out the survey as guests."},{"key":"_user_metadata.device","t":"Device"},{"key":"_user_metadata.device.description","t":"What device was used to take the survey."},{"key":"_user_metadata.browser","t":"Browser"},{"key":"_user_metadata.browser.description","t":"What browser was used to take the survey."},{"key":"_user_metadata.version","t":"Browser Version"},{"key":"_user_metadata.version.description","t":"What browser version was used to take the survey."},{"key":"_user_metadata.os","t":"OS"},{"key":"_user_metadata.os.description","t":"What OS version was used to take the survey."},{"key":"libraries.all_tools_experience","t":"Libraries Experience & Sentiment","tHtml":"Libraries Experience &amp; Sentiment","tClean":"Libraries Experience & Sentiment"},{"key":"libraries.tools_ratios_over_time","t":"Ratios over Time"},{"key":"tools.scatterplot_overview","t":"Satisfaction vs Usage"},{"key":"libraries.scatterplot_overview","t":"Satisfaction vs Usage"},{"key":"tools.scatterplot_overview","t":"Satisfaction vs Usage"},{"key":"libraries.scatterplot_overview","t":"Satisfaction vs Usage"},{"key":"comments.filter.by_download","t":"Download JSON"},{"key":"comments.filter.by_download.description","t":"Download a JSON file containing these items."},{"key":"correlations.takeaway.shape1","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with scoring {directionLabel} for “{questionLabel}”."},{"key":"correlations.takeaway.shape2","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with scoring {directionLabel} for “{questionLabel}”."},{"key":"correlations.takeaway.shape7","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with scoring {directionLabel} for “{questionLabel}”."},{"key":"correlations.takeaway.shape1","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with scoring {directionLabel} for “{questionLabel}”."},{"key":"correlations.takeaway.shape2","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with scoring {directionLabel} for “{questionLabel}”."},{"key":"correlations.takeaway.shape7","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with scoring {directionLabel} for “{questionLabel}”."},{"key":"correlations.takeaway.shape1","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with scoring {directionLabel} for “{questionLabel}”."},{"key":"correlations.takeaway.shape2","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with scoring {directionLabel} for “{questionLabel}”."},{"key":"correlations.takeaway.shape7","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with scoring <span class=\"correlation-direction\">{directionLabel}</span> for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with scoring {directionLabel} for “{questionLabel}”."},{"key":"correlations.takeaway.shape3","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting **“{optionLabel}”** for **“{questionLabel}”**","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting <strong>“{optionLabel}”</strong> for <strong>“{questionLabel}”</strong>","tClean":"{strengthLevelLabel} {directionLabel} correlation with selecting “{optionLabel}” for “{questionLabel}”"},{"key":"correlations.takeaway.shape4","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting **“{optionLabel}”** for **“{questionLabel}”**","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting <strong>“{optionLabel}”</strong> for <strong>“{questionLabel}”</strong>","tClean":"{strengthLevelLabel} {directionLabel} correlation with selecting “{optionLabel}” for “{questionLabel}”"},{"key":"correlations.takeaway.shape8","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting **“{optionLabel}”** for **“{questionLabel}”**","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting <strong>“{optionLabel}”</strong> for <strong>“{questionLabel}”</strong>","tClean":"{strengthLevelLabel} {directionLabel} correlation with selecting “{optionLabel}” for “{questionLabel}”"},{"key":"correlations.takeaway.shape3","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting **“{optionLabel}”** for **“{questionLabel}”**","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting <strong>“{optionLabel}”</strong> for <strong>“{questionLabel}”</strong>","tClean":"{strengthLevelLabel} {directionLabel} correlation with selecting “{optionLabel}” for “{questionLabel}”"},{"key":"correlations.takeaway.shape4","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting **“{optionLabel}”** for **“{questionLabel}”**","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting <strong>“{optionLabel}”</strong> for <strong>“{questionLabel}”</strong>","tClean":"{strengthLevelLabel} {directionLabel} correlation with selecting “{optionLabel}” for “{questionLabel}”"},{"key":"correlations.takeaway.shape8","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting **“{optionLabel}”** for **“{questionLabel}”**","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting <strong>“{optionLabel}”</strong> for <strong>“{questionLabel}”</strong>","tClean":"{strengthLevelLabel} {directionLabel} correlation with selecting “{optionLabel}” for “{questionLabel}”"},{"key":"correlations.takeaway.shape3","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting **“{optionLabel}”** for **“{questionLabel}”**","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting <strong>“{optionLabel}”</strong> for <strong>“{questionLabel}”</strong>","tClean":"{strengthLevelLabel} {directionLabel} correlation with selecting “{optionLabel}” for “{questionLabel}”"},{"key":"correlations.takeaway.shape4","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting **“{optionLabel}”** for **“{questionLabel}”**","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting <strong>“{optionLabel}”</strong> for <strong>“{questionLabel}”</strong>","tClean":"{strengthLevelLabel} {directionLabel} correlation with selecting “{optionLabel}” for “{questionLabel}”"},{"key":"correlations.takeaway.shape8","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting **“{optionLabel}”** for **“{questionLabel}”**","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> <span class=\"correlation-direction\">{directionLabel}</span> correlation with selecting <strong>“{optionLabel}”</strong> for <strong>“{questionLabel}”</strong>","tClean":"{strengthLevelLabel} {directionLabel} correlation with selecting “{optionLabel}” for “{questionLabel}”"},{"key":"correlations.takeaway.shape5","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with selecting {directionLabel} items for “{questionLabel}”."},{"key":"correlations.takeaway.shape6","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with selecting {directionLabel} items for “{questionLabel}”."},{"key":"correlations.takeaway.shape9","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with selecting {directionLabel} items for “{questionLabel}”."},{"key":"correlations.takeaway.shape5","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with selecting {directionLabel} items for “{questionLabel}”."},{"key":"correlations.takeaway.shape6","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with selecting {directionLabel} items for “{questionLabel}”."},{"key":"correlations.takeaway.shape9","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with selecting {directionLabel} items for “{questionLabel}”."},{"key":"correlations.takeaway.shape5","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with selecting {directionLabel} items for “{questionLabel}”."},{"key":"correlations.takeaway.shape6","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with selecting {directionLabel} items for “{questionLabel}”."},{"key":"correlations.takeaway.shape9","t":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for **“{questionLabel}”**.","tHtml":"<span class=\"correlation-item-content-strength\">{strengthLevelLabel}</span> correlation with selecting <span class=\"correlation-direction\">{directionLabel}</span> items for <strong>“{questionLabel}”</strong>.","tClean":"{strengthLevelLabel} correlation with selecting {directionLabel} items for “{questionLabel}”."},{"key":"libraries.all_tools_experience","t":"Libraries Experience & Sentiment","tHtml":"Libraries Experience &amp; Sentiment","tClean":"Libraries Experience & Sentiment"},{"key":"tools.front_end_frameworks_happiness.short","t":"Happiness"},{"key":"tools.meta_frameworks_happiness.short","t":"Happiness"},{"key":"tools.back_end_frameworks_happiness.short","t":"Happiness"},{"key":"tools.testing_happiness.short","t":"Happiness"},{"key":"tools.mobile_desktop_happiness.short","t":"Happiness"},{"key":"tools.build_tools_happiness.short","t":"Happiness"},{"key":"tools.monorepo_tools_happiness.short","t":"Happiness"},{"key":"user_info.locale.takeaway","t":"The language respondents selected to fill out the survey."},{"key":"user_info.completion_stats.takeaway.react2023","t":"The proportion of the survey filled out by respondents."},{"key":"user_metadata.locale.description","t":"The language respondents selected to fill out the survey."},{"key":"_user_metadata.locale.description","t":"The language respondents selected to fill out the survey."},{"key":"user_metadata.completion_stats.description","t":"The proportion of the survey filled out by respondents."},{"key":"_user_metadata.completion_stats.description","t":"The proportion of the survey filled out by respondents."},{"key":"user_metadata.locale.description","t":"The language respondents selected to fill out the survey."},{"key":"_user_metadata.locale.description","t":"The language respondents selected to fill out the survey."},{"key":"user_metadata.completion_stats.description","t":"The proportion of the survey filled out by respondents."},{"key":"_user_metadata.completion_stats.description","t":"The proportion of the survey filled out by respondents."},{"key":"user_metadata.locale.description","t":"The language respondents selected to fill out the survey."},{"key":"_user_metadata.locale.description","t":"The language respondents selected to fill out the survey."},{"key":"user_metadata.locale.description","t":"The language respondents selected to fill out the survey."},{"key":"_user_metadata.locale.description","t":"The language respondents selected to fill out the survey."},{"key":"user_metadata.completion_stats.description","t":"The proportion of the survey filled out by respondents."},{"key":"_user_metadata.completion_stats.description","t":"The proportion of the survey filled out by respondents."},{"key":"user_metadata.completion_stats.description","t":"The proportion of the survey filled out by respondents."},{"key":"_user_metadata.completion_stats.description","t":"The proportion of the survey filled out by respondents."},{"key":"user_info.locale.takeaway.react2024","t":"The language respondents selected to fill out the survey."},{"key":"user_info.completion_stats.takeaway.react2024","t":"The proportion of the survey filled out by respondents."},{"key":"user_metadata.locale.description","t":"The language respondents selected to fill out the survey."},{"key":"_user_metadata.locale.description","t":"The language respondents selected to fill out the survey."},{"key":"user_metadata.completion_stats.description","t":"The proportion of the survey filled out by respondents."},{"key":"_user_metadata.completion_stats.description","t":"The proportion of the survey filled out by respondents."},{"key":"user_metadata.locale.description","t":"The language respondents selected to fill out the survey."},{"key":"_user_metadata.locale.description","t":"The language respondents selected to fill out the survey."},{"key":"user_metadata.completion_stats.description","t":"The proportion of the survey filled out by respondents."},{"key":"_user_metadata.completion_stats.description","t":"The proportion of the survey filled out by respondents."},{"key":"user_metadata.locale.description","t":"The language respondents selected to fill out the survey."},{"key":"_user_metadata.locale.description","t":"The language respondents selected to fill out the survey."},{"key":"user_metadata.locale.description","t":"The language respondents selected to fill out the survey."},{"key":"_user_metadata.locale.description","t":"The language respondents selected to fill out the survey."},{"key":"user_metadata.completion_stats.description","t":"The proportion of the survey filled out by respondents."},{"key":"_user_metadata.completion_stats.description","t":"The proportion of the survey filled out by respondents."},{"key":"user_metadata.completion_stats.description","t":"The proportion of the survey filled out by respondents."},{"key":"_user_metadata.completion_stats.description","t":"The proportion of the survey filled out by respondents."},{"key":"options.country.AFG","t":"Afghanistan"},{"key":"options.country.DZA","t":"Algeria"},{"key":"options.country.ARG","t":"Argentina"},{"key":"options.country.ARM","t":"Armenia"},{"key":"options.country.AUS","t":"Australia"},{"key":"options.country.AUT","t":"Austria"},{"key":"options.country.BGD","t":"Bangladesh"},{"key":"options.country.BEL","t":"Belgium"},{"key":"options.country.BLR","t":"Belarus"},{"key":"options.country.BIH","t":"Bosnia and Herzegovina"},{"key":"options.country.BRA","t":"Brazil"},{"key":"options.country.BGR","t":"Bulgaria"},{"key":"options.country.CAN","t":"Canada"},{"key":"options.country.CRI","t":"Costa Rica"},{"key":"options.country.HRV","t":"Croatia"},{"key":"options.country.CHE","t":"Switzerland"},{"key":"options.country.CHL","t":"Chile"},{"key":"options.country.CHN","t":"China"},{"key":"options.country.COD","t":"DR Congo"},{"key":"options.country.COL","t":"Colombia"},{"key":"options.country.CIV","t":"Côte d'Ivoire"},{"key":"options.country.CYP","t":"Cyprus"},{"key":"options.country.CZE","t":"Czechia"},{"key":"options.country.DEU","t":"Germany"},{"key":"options.country.GRC","t":"Greece"},{"key":"options.country.DNK","t":"Denmark"},{"key":"options.country.EGY","t":"Egypt"},{"key":"options.country.EST","t":"Estonia"},{"key":"options.country.ETH","t":"Ethiopia"},{"key":"options.country.FIN","t":"Finland"},{"key":"options.country.FRA","t":"France"},{"key":"options.country.GEO","t":"Georgia"},{"key":"options.country.GHA","t":"Ghana"},{"key":"options.country.HKG","t":"Hong Kong"},{"key":"options.country.HUN","t":"Hungary"},{"key":"options.country.IND","t":"India"},{"key":"options.country.IDN","t":"Indonesia"},{"key":"options.country.IRL","t":"Ireland"},{"key":"options.country.ISL","t":"Iceland"},{"key":"options.country.IRN","t":"Iran"},{"key":"options.country.IRQ","t":"Iraq"},{"key":"options.country.ITA","t":"Italy"},{"key":"options.country.ISR","t":"Israel"},{"key":"options.country.JPN","t":"Japan"},{"key":"options.country.KEN","t":"Kenya"},{"key":"options.country.LTU","t":"Lithuania"},{"key":"options.country.LVA","t":"Latvia"},{"key":"options.country.LUX","t":"Luxembourg"},{"key":"options.country.MDA","t":"Moldova"},{"key":"options.country.MEX","t":"Mexico"},{"key":"options.country.MMR","t":"Myanmar"},{"key":"options.country.NPL","t":"Nepal"},{"key":"options.country.MKD","t":"North Macedonia"},{"key":"options.country.NOR","t":"Norway"},{"key":"options.country.NLD","t":"Netherlands"},{"key":"options.country.NGA","t":"Nigeria"},{"key":"options.country.NZL","t":"New Zealand"},{"key":"options.country.POL","t":"Poland"},{"key":"options.country.PRT","t":"Portugal"},{"key":"options.country.PAK","t":"Pakistan"},{"key":"options.country.PER","t":"Peru"},{"key":"options.country.PHL","t":"Philippines"},{"key":"options.country.ROU","t":"Romania"},{"key":"options.country.RUS","t":"Russia"},{"key":"options.country.SAU","t":"Saudi Arabia"},{"key":"options.country.SRB","t":"Serbia"},{"key":"options.country.SGP","t":"Singapore"},{"key":"options.country.SVK","t":"Slovakia"},{"key":"options.country.SVN","t":"Slovenia"},{"key":"options.country.ZAF","t":"South Africa"},{"key":"options.country.KOR","t":"South Korea"},{"key":"options.country.ESP","t":"Spain"},{"key":"options.country.SWE","t":"Sweden"},{"key":"options.country.TWN","t":"Taiwan"},{"key":"options.country.TZA","t":"Tanzania"},{"key":"options.country.THA","t":"Thailand"},{"key":"options.country.TUR","t":"Turkey"},{"key":"options.country.UGA","t":"Uganda"},{"key":"options.country.UKR","t":"Ukraine"},{"key":"options.country.URY","t":"Uruguay"},{"key":"options.country.ARE","t":"United Arab Emirates"},{"key":"options.country.GBR","t":"United Kingdom"},{"key":"options.country.SCT","t":"Scotland"},{"key":"options.country.USA","t":"USA"},{"key":"options.country.VEN","t":"Venezuela"},{"key":"options.country.VNM","t":"Vietnam"},{"key":"options.country_of_origin.AFG","t":"Afghanistan"},{"key":"options.country_of_origin.DZA","t":"Algeria"},{"key":"options.country_of_origin.ARG","t":"Argentina"},{"key":"options.country_of_origin.ARM","t":"Armenia"},{"key":"options.country_of_origin.AUS","t":"Australia"},{"key":"options.country_of_origin.AUT","t":"Austria"},{"key":"options.country_of_origin.BGD","t":"Bangladesh"},{"key":"options.country_of_origin.BEL","t":"Belgium"},{"key":"options.country_of_origin.BLR","t":"Belarus"},{"key":"options.country_of_origin.BIH","t":"Bosnia and Herzegovina"},{"key":"options.country_of_origin.BRA","t":"Brazil"},{"key":"options.country_of_origin.BGR","t":"Bulgaria"},{"key":"options.country_of_origin.CAN","t":"Canada"},{"key":"options.country_of_origin.CRI","t":"Costa Rica"},{"key":"options.country_of_origin.HRV","t":"Croatia"},{"key":"options.country_of_origin.CHE","t":"Switzerland"},{"key":"options.country_of_origin.CHL","t":"Chile"},{"key":"options.country_of_origin.CHN","t":"China"},{"key":"options.country_of_origin.COD","t":"DR Congo"},{"key":"options.country_of_origin.COL","t":"Colombia"},{"key":"options.country_of_origin.CIV","t":"Côte d'Ivoire"},{"key":"options.country_of_origin.CYP","t":"Cyprus"},{"key":"options.country_of_origin.CZE","t":"Czechia"},{"key":"options.country_of_origin.DEU","t":"Germany"},{"key":"options.country_of_origin.GRC","t":"Greece"},{"key":"options.country_of_origin.DNK","t":"Denmark"},{"key":"options.country_of_origin.EGY","t":"Egypt"},{"key":"options.country_of_origin.EST","t":"Estonia"},{"key":"options.country_of_origin.ETH","t":"Ethiopia"},{"key":"options.country_of_origin.FIN","t":"Finland"},{"key":"options.country_of_origin.FRA","t":"France"},{"key":"options.country_of_origin.GEO","t":"Georgia"},{"key":"options.country_of_origin.GHA","t":"Ghana"},{"key":"options.country_of_origin.HKG","t":"Hong Kong"},{"key":"options.country_of_origin.HUN","t":"Hungary"},{"key":"options.country_of_origin.IND","t":"India"},{"key":"options.country_of_origin.IDN","t":"Indonesia"},{"key":"options.country_of_origin.IRL","t":"Ireland"},{"key":"options.country_of_origin.ISL","t":"Iceland"},{"key":"options.country_of_origin.IRN","t":"Iran"},{"key":"options.country_of_origin.IRQ","t":"Iraq"},{"key":"options.country_of_origin.ITA","t":"Italy"},{"key":"options.country_of_origin.ISR","t":"Israel"},{"key":"options.country_of_origin.JPN","t":"Japan"},{"key":"options.country_of_origin.KEN","t":"Kenya"},{"key":"options.country_of_origin.LTU","t":"Lithuania"},{"key":"options.country_of_origin.LVA","t":"Latvia"},{"key":"options.country_of_origin.LUX","t":"Luxembourg"},{"key":"options.country_of_origin.MDA","t":"Moldova"},{"key":"options.country_of_origin.MEX","t":"Mexico"},{"key":"options.country_of_origin.MMR","t":"Myanmar"},{"key":"options.country_of_origin.NPL","t":"Nepal"},{"key":"options.country_of_origin.MKD","t":"North Macedonia"},{"key":"options.country_of_origin.NOR","t":"Norway"},{"key":"options.country_of_origin.NLD","t":"Netherlands"},{"key":"options.country_of_origin.NGA","t":"Nigeria"},{"key":"options.country_of_origin.NZL","t":"New Zealand"},{"key":"options.country_of_origin.POL","t":"Poland"},{"key":"options.country_of_origin.PRT","t":"Portugal"},{"key":"options.country_of_origin.PAK","t":"Pakistan"},{"key":"options.country_of_origin.PER","t":"Peru"},{"key":"options.country_of_origin.PHL","t":"Philippines"},{"key":"options.country_of_origin.ROU","t":"Romania"},{"key":"options.country_of_origin.RUS","t":"Russia"},{"key":"options.country_of_origin.SAU","t":"Saudi Arabia"},{"key":"options.country_of_origin.SRB","t":"Serbia"},{"key":"options.country_of_origin.SGP","t":"Singapore"},{"key":"options.country_of_origin.SVK","t":"Slovakia"},{"key":"options.country_of_origin.SVN","t":"Slovenia"},{"key":"options.country_of_origin.ZAF","t":"South Africa"},{"key":"options.country_of_origin.KOR","t":"South Korea"},{"key":"options.country_of_origin.ESP","t":"Spain"},{"key":"options.country_of_origin.SWE","t":"Sweden"},{"key":"options.country_of_origin.TWN","t":"Taiwan"},{"key":"options.country_of_origin.TZA","t":"Tanzania"},{"key":"options.country_of_origin.THA","t":"Thailand"},{"key":"options.country_of_origin.TUR","t":"Turkey"},{"key":"options.country_of_origin.UGA","t":"Uganda"},{"key":"options.country_of_origin.UKR","t":"Ukraine"},{"key":"options.country_of_origin.URY","t":"Uruguay"},{"key":"options.country_of_origin.ARE","t":"United Arab Emirates"},{"key":"options.country_of_origin.GBR","t":"United Kingdom"},{"key":"options.country_of_origin.SCT","t":"Scotland"},{"key":"options.country_of_origin.USA","t":"USA"},{"key":"options.country_of_origin.VEN","t":"Venezuela"},{"key":"options.country_of_origin.VNM","t":"Vietnam"},{"key":"options.country_of_origin.AFG","t":"Afghanistan"},{"key":"options.country_of_origin.DZA","t":"Algeria"},{"key":"options.country_of_origin.ARG","t":"Argentina"},{"key":"options.country_of_origin.ARM","t":"Armenia"},{"key":"options.country_of_origin.AUS","t":"Australia"},{"key":"options.country_of_origin.AUT","t":"Austria"},{"key":"options.country_of_origin.BGD","t":"Bangladesh"},{"key":"options.country_of_origin.BEL","t":"Belgium"},{"key":"options.country_of_origin.BLR","t":"Belarus"},{"key":"options.country_of_origin.BIH","t":"Bosnia and Herzegovina"},{"key":"options.country_of_origin.BRA","t":"Brazil"},{"key":"options.country_of_origin.BGR","t":"Bulgaria"},{"key":"options.country_of_origin.CAN","t":"Canada"},{"key":"options.country_of_origin.CRI","t":"Costa Rica"},{"key":"options.country_of_origin.HRV","t":"Croatia"},{"key":"options.country_of_origin.CHE","t":"Switzerland"},{"key":"options.country_of_origin.CHL","t":"Chile"},{"key":"options.country_of_origin.CHN","t":"China"},{"key":"options.country_of_origin.COD","t":"DR Congo"},{"key":"options.country_of_origin.COL","t":"Colombia"},{"key":"options.country_of_origin.CIV","t":"Côte d'Ivoire"},{"key":"options.country_of_origin.CYP","t":"Cyprus"},{"key":"options.country_of_origin.CZE","t":"Czechia"},{"key":"options.country_of_origin.DEU","t":"Germany"},{"key":"options.country_of_origin.GRC","t":"Greece"},{"key":"options.country_of_origin.DNK","t":"Denmark"},{"key":"options.country_of_origin.EGY","t":"Egypt"},{"key":"options.country_of_origin.EST","t":"Estonia"},{"key":"options.country_of_origin.ETH","t":"Ethiopia"},{"key":"options.country_of_origin.FIN","t":"Finland"},{"key":"options.country_of_origin.FRA","t":"France"},{"key":"options.country_of_origin.GEO","t":"Georgia"},{"key":"options.country_of_origin.GHA","t":"Ghana"},{"key":"options.country_of_origin.HKG","t":"Hong Kong"},{"key":"options.country_of_origin.HUN","t":"Hungary"},{"key":"options.country_of_origin.IND","t":"India"},{"key":"options.country_of_origin.IDN","t":"Indonesia"},{"key":"options.country_of_origin.IRL","t":"Ireland"},{"key":"options.country_of_origin.ISL","t":"Iceland"},{"key":"options.country_of_origin.IRN","t":"Iran"},{"key":"options.country_of_origin.IRQ","t":"Iraq"},{"key":"options.country_of_origin.ITA","t":"Italy"},{"key":"options.country_of_origin.ISR","t":"Israel"},{"key":"options.country_of_origin.JPN","t":"Japan"},{"key":"options.country_of_origin.KEN","t":"Kenya"},{"key":"options.country_of_origin.LTU","t":"Lithuania"},{"key":"options.country_of_origin.LVA","t":"Latvia"},{"key":"options.country_of_origin.LUX","t":"Luxembourg"},{"key":"options.country_of_origin.MDA","t":"Moldova"},{"key":"options.country_of_origin.MEX","t":"Mexico"},{"key":"options.country_of_origin.MMR","t":"Myanmar"},{"key":"options.country_of_origin.NPL","t":"Nepal"},{"key":"options.country_of_origin.MKD","t":"North Macedonia"},{"key":"options.country_of_origin.NOR","t":"Norway"},{"key":"options.country_of_origin.NLD","t":"Netherlands"},{"key":"options.country_of_origin.NGA","t":"Nigeria"},{"key":"options.country_of_origin.NZL","t":"New Zealand"},{"key":"options.country_of_origin.POL","t":"Poland"},{"key":"options.country_of_origin.PRT","t":"Portugal"},{"key":"options.country_of_origin.PAK","t":"Pakistan"},{"key":"options.country_of_origin.PER","t":"Peru"},{"key":"options.country_of_origin.PHL","t":"Philippines"},{"key":"options.country_of_origin.ROU","t":"Romania"},{"key":"options.country_of_origin.RUS","t":"Russia"},{"key":"options.country_of_origin.SAU","t":"Saudi Arabia"},{"key":"options.country_of_origin.SRB","t":"Serbia"},{"key":"options.country_of_origin.SGP","t":"Singapore"},{"key":"options.country_of_origin.SVK","t":"Slovakia"},{"key":"options.country_of_origin.SVN","t":"Slovenia"},{"key":"options.country_of_origin.ZAF","t":"South Africa"},{"key":"options.country_of_origin.KOR","t":"South Korea"},{"key":"options.country_of_origin.ESP","t":"Spain"},{"key":"options.country_of_origin.SWE","t":"Sweden"},{"key":"options.country_of_origin.TWN","t":"Taiwan"},{"key":"options.country_of_origin.TZA","t":"Tanzania"},{"key":"options.country_of_origin.THA","t":"Thailand"},{"key":"options.country_of_origin.TUR","t":"Turkey"},{"key":"options.country_of_origin.UGA","t":"Uganda"},{"key":"options.country_of_origin.UKR","t":"Ukraine"},{"key":"options.country_of_origin.URY","t":"Uruguay"},{"key":"options.country_of_origin.ARE","t":"United Arab Emirates"},{"key":"options.country_of_origin.GBR","t":"United Kingdom"},{"key":"options.country_of_origin.SCT","t":"Scotland"},{"key":"options.country_of_origin.USA","t":"USA"},{"key":"options.country_of_origin.VEN","t":"Venezuela"},{"key":"options.country_of_origin.VNM","t":"Vietnam"},{"key":"options.country_of_origin.AFG","t":"Afghanistan"},{"key":"options.country_of_origin.DZA","t":"Algeria"},{"key":"options.country_of_origin.ARG","t":"Argentina"},{"key":"options.country_of_origin.ARM","t":"Armenia"},{"key":"options.country_of_origin.AUS","t":"Australia"},{"key":"options.country_of_origin.AUT","t":"Austria"},{"key":"options.country_of_origin.BGD","t":"Bangladesh"},{"key":"options.country_of_origin.BEL","t":"Belgium"},{"key":"options.country_of_origin.BLR","t":"Belarus"},{"key":"options.country_of_origin.BIH","t":"Bosnia and Herzegovina"},{"key":"options.country_of_origin.BRA","t":"Brazil"},{"key":"options.country_of_origin.BGR","t":"Bulgaria"},{"key":"options.country_of_origin.CAN","t":"Canada"},{"key":"options.country_of_origin.CRI","t":"Costa Rica"},{"key":"options.country_of_origin.HRV","t":"Croatia"},{"key":"options.country_of_origin.CHE","t":"Switzerland"},{"key":"options.country_of_origin.CHL","t":"Chile"},{"key":"options.country_of_origin.CHN","t":"China"},{"key":"options.country_of_origin.COD","t":"DR Congo"},{"key":"options.country_of_origin.COL","t":"Colombia"},{"key":"options.country_of_origin.CIV","t":"Côte d'Ivoire"},{"key":"options.country_of_origin.CYP","t":"Cyprus"},{"key":"options.country_of_origin.CZE","t":"Czechia"},{"key":"options.country_of_origin.DEU","t":"Germany"},{"key":"options.country_of_origin.GRC","t":"Greece"},{"key":"options.country_of_origin.DNK","t":"Denmark"},{"key":"options.country_of_origin.EGY","t":"Egypt"},{"key":"options.country_of_origin.EST","t":"Estonia"},{"key":"options.country_of_origin.ETH","t":"Ethiopia"},{"key":"options.country_of_origin.FIN","t":"Finland"},{"key":"options.country_of_origin.FRA","t":"France"},{"key":"options.country_of_origin.GEO","t":"Georgia"},{"key":"options.country_of_origin.GHA","t":"Ghana"},{"key":"options.country_of_origin.HKG","t":"Hong Kong"},{"key":"options.country_of_origin.HUN","t":"Hungary"},{"key":"options.country_of_origin.IND","t":"India"},{"key":"options.country_of_origin.IDN","t":"Indonesia"},{"key":"options.country_of_origin.IRL","t":"Ireland"},{"key":"options.country_of_origin.ISL","t":"Iceland"},{"key":"options.country_of_origin.IRN","t":"Iran"},{"key":"options.country_of_origin.IRQ","t":"Iraq"},{"key":"options.country_of_origin.ITA","t":"Italy"},{"key":"options.country_of_origin.ISR","t":"Israel"},{"key":"options.country_of_origin.JPN","t":"Japan"},{"key":"options.country_of_origin.KEN","t":"Kenya"},{"key":"options.country_of_origin.LTU","t":"Lithuania"},{"key":"options.country_of_origin.LVA","t":"Latvia"},{"key":"options.country_of_origin.LUX","t":"Luxembourg"},{"key":"options.country_of_origin.MDA","t":"Moldova"},{"key":"options.country_of_origin.MEX","t":"Mexico"},{"key":"options.country_of_origin.MMR","t":"Myanmar"},{"key":"options.country_of_origin.NPL","t":"Nepal"},{"key":"options.country_of_origin.MKD","t":"North Macedonia"},{"key":"options.country_of_origin.NOR","t":"Norway"},{"key":"options.country_of_origin.NLD","t":"Netherlands"},{"key":"options.country_of_origin.NGA","t":"Nigeria"},{"key":"options.country_of_origin.NZL","t":"New Zealand"},{"key":"options.country_of_origin.POL","t":"Poland"},{"key":"options.country_of_origin.PRT","t":"Portugal"},{"key":"options.country_of_origin.PAK","t":"Pakistan"},{"key":"options.country_of_origin.PER","t":"Peru"},{"key":"options.country_of_origin.PHL","t":"Philippines"},{"key":"options.country_of_origin.ROU","t":"Romania"},{"key":"options.country_of_origin.RUS","t":"Russia"},{"key":"options.country_of_origin.SAU","t":"Saudi Arabia"},{"key":"options.country_of_origin.SRB","t":"Serbia"},{"key":"options.country_of_origin.SGP","t":"Singapore"},{"key":"options.country_of_origin.SVK","t":"Slovakia"},{"key":"options.country_of_origin.SVN","t":"Slovenia"},{"key":"options.country_of_origin.ZAF","t":"South Africa"},{"key":"options.country_of_origin.KOR","t":"South Korea"},{"key":"options.country_of_origin.ESP","t":"Spain"},{"key":"options.country_of_origin.SWE","t":"Sweden"},{"key":"options.country_of_origin.TWN","t":"Taiwan"},{"key":"options.country_of_origin.TZA","t":"Tanzania"},{"key":"options.country_of_origin.THA","t":"Thailand"},{"key":"options.country_of_origin.TUR","t":"Turkey"},{"key":"options.country_of_origin.UGA","t":"Uganda"},{"key":"options.country_of_origin.UKR","t":"Ukraine"},{"key":"options.country_of_origin.URY","t":"Uruguay"},{"key":"options.country_of_origin.ARE","t":"United Arab Emirates"},{"key":"options.country_of_origin.GBR","t":"United Kingdom"},{"key":"options.country_of_origin.SCT","t":"Scotland"},{"key":"options.country_of_origin.USA","t":"USA"},{"key":"options.country_of_origin.VEN","t":"Venezuela"},{"key":"options.country_of_origin.VNM","t":"Vietnam"},{"key":"options.relocation.AFG","t":"Afghanistan"},{"key":"options.relocation.DZA","t":"Algeria"},{"key":"options.relocation.ARG","t":"Argentina"},{"key":"options.relocation.ARM","t":"Armenia"},{"key":"options.relocation.AUS","t":"Australia"},{"key":"options.relocation.AUT","t":"Austria"},{"key":"options.relocation.BGD","t":"Bangladesh"},{"key":"options.relocation.BEL","t":"Belgium"},{"key":"options.relocation.BLR","t":"Belarus"},{"key":"options.relocation.BIH","t":"Bosnia and Herzegovina"},{"key":"options.relocation.BRA","t":"Brazil"},{"key":"options.relocation.BGR","t":"Bulgaria"},{"key":"options.relocation.CAN","t":"Canada"},{"key":"options.relocation.CRI","t":"Costa Rica"},{"key":"options.relocation.HRV","t":"Croatia"},{"key":"options.relocation.CHE","t":"Switzerland"},{"key":"options.relocation.CHL","t":"Chile"},{"key":"options.relocation.CHN","t":"China"},{"key":"options.relocation.COD","t":"DR Congo"},{"key":"options.relocation.COL","t":"Colombia"},{"key":"options.relocation.CIV","t":"Côte d'Ivoire"},{"key":"options.relocation.CYP","t":"Cyprus"},{"key":"options.relocation.CZE","t":"Czechia"},{"key":"options.relocation.DEU","t":"Germany"},{"key":"options.relocation.GRC","t":"Greece"},{"key":"options.relocation.DNK","t":"Denmark"},{"key":"options.relocation.EGY","t":"Egypt"},{"key":"options.relocation.EST","t":"Estonia"},{"key":"options.relocation.ETH","t":"Ethiopia"},{"key":"options.relocation.FIN","t":"Finland"},{"key":"options.relocation.FRA","t":"France"},{"key":"options.relocation.GEO","t":"Georgia"},{"key":"options.relocation.GHA","t":"Ghana"},{"key":"options.relocation.HKG","t":"Hong Kong"},{"key":"options.relocation.HUN","t":"Hungary"},{"key":"options.relocation.IND","t":"India"},{"key":"options.relocation.IDN","t":"Indonesia"},{"key":"options.relocation.IRL","t":"Ireland"},{"key":"options.relocation.ISL","t":"Iceland"},{"key":"options.relocation.IRN","t":"Iran"},{"key":"options.relocation.IRQ","t":"Iraq"},{"key":"options.relocation.ITA","t":"Italy"},{"key":"options.relocation.ISR","t":"Israel"},{"key":"options.relocation.JPN","t":"Japan"},{"key":"options.relocation.KEN","t":"Kenya"},{"key":"options.relocation.LTU","t":"Lithuania"},{"key":"options.relocation.LVA","t":"Latvia"},{"key":"options.relocation.LUX","t":"Luxembourg"},{"key":"options.relocation.MDA","t":"Moldova"},{"key":"options.relocation.MEX","t":"Mexico"},{"key":"options.relocation.MMR","t":"Myanmar"},{"key":"options.relocation.NPL","t":"Nepal"},{"key":"options.relocation.MKD","t":"North Macedonia"},{"key":"options.relocation.NOR","t":"Norway"},{"key":"options.relocation.NLD","t":"Netherlands"},{"key":"options.relocation.NGA","t":"Nigeria"},{"key":"options.relocation.NZL","t":"New Zealand"},{"key":"options.relocation.POL","t":"Poland"},{"key":"options.relocation.PRT","t":"Portugal"},{"key":"options.relocation.PAK","t":"Pakistan"},{"key":"options.relocation.PER","t":"Peru"},{"key":"options.relocation.PHL","t":"Philippines"},{"key":"options.relocation.ROU","t":"Romania"},{"key":"options.relocation.RUS","t":"Russia"},{"key":"options.relocation.SAU","t":"Saudi Arabia"},{"key":"options.relocation.SRB","t":"Serbia"},{"key":"options.relocation.SGP","t":"Singapore"},{"key":"options.relocation.SVK","t":"Slovakia"},{"key":"options.relocation.SVN","t":"Slovenia"},{"key":"options.relocation.ZAF","t":"South Africa"},{"key":"options.relocation.KOR","t":"South Korea"},{"key":"options.relocation.ESP","t":"Spain"},{"key":"options.relocation.SWE","t":"Sweden"},{"key":"options.relocation.TWN","t":"Taiwan"},{"key":"options.relocation.TZA","t":"Tanzania"},{"key":"options.relocation.THA","t":"Thailand"},{"key":"options.relocation.TUR","t":"Turkey"},{"key":"options.relocation.UGA","t":"Uganda"},{"key":"options.relocation.UKR","t":"Ukraine"},{"key":"options.relocation.URY","t":"Uruguay"},{"key":"options.relocation.ARE","t":"United Arab Emirates"},{"key":"options.relocation.GBR","t":"United Kingdom"},{"key":"options.relocation.SCT","t":"Scotland"},{"key":"options.relocation.USA","t":"USA"},{"key":"options.relocation.VEN","t":"Venezuela"},{"key":"options.relocation.VNM","t":"Vietnam"},{"key":"options.country_of_origin.AFG","t":"Afghanistan"},{"key":"options.country_of_origin.DZA","t":"Algeria"},{"key":"options.country_of_origin.ARG","t":"Argentina"},{"key":"options.country_of_origin.ARM","t":"Armenia"},{"key":"options.country_of_origin.AUS","t":"Australia"},{"key":"options.country_of_origin.AUT","t":"Austria"},{"key":"options.country_of_origin.BGD","t":"Bangladesh"},{"key":"options.country_of_origin.BEL","t":"Belgium"},{"key":"options.country_of_origin.BLR","t":"Belarus"},{"key":"options.country_of_origin.BIH","t":"Bosnia and Herzegovina"},{"key":"options.country_of_origin.BRA","t":"Brazil"},{"key":"options.country_of_origin.BGR","t":"Bulgaria"},{"key":"options.country_of_origin.CAN","t":"Canada"},{"key":"options.country_of_origin.CRI","t":"Costa Rica"},{"key":"options.country_of_origin.HRV","t":"Croatia"},{"key":"options.country_of_origin.CHE","t":"Switzerland"},{"key":"options.country_of_origin.CHL","t":"Chile"},{"key":"options.country_of_origin.CHN","t":"China"},{"key":"options.country_of_origin.COD","t":"DR Congo"},{"key":"options.country_of_origin.COL","t":"Colombia"},{"key":"options.country_of_origin.CIV","t":"Côte d'Ivoire"},{"key":"options.country_of_origin.CYP","t":"Cyprus"},{"key":"options.country_of_origin.CZE","t":"Czechia"},{"key":"options.country_of_origin.DEU","t":"Germany"},{"key":"options.country_of_origin.GRC","t":"Greece"},{"key":"options.country_of_origin.DNK","t":"Denmark"},{"key":"options.country_of_origin.EGY","t":"Egypt"},{"key":"options.country_of_origin.EST","t":"Estonia"},{"key":"options.country_of_origin.ETH","t":"Ethiopia"},{"key":"options.country_of_origin.FIN","t":"Finland"},{"key":"options.country_of_origin.FRA","t":"France"},{"key":"options.country_of_origin.GEO","t":"Georgia"},{"key":"options.country_of_origin.GHA","t":"Ghana"},{"key":"options.country_of_origin.HKG","t":"Hong Kong"},{"key":"options.country_of_origin.HUN","t":"Hungary"},{"key":"options.country_of_origin.IND","t":"India"},{"key":"options.country_of_origin.IDN","t":"Indonesia"},{"key":"options.country_of_origin.IRL","t":"Ireland"},{"key":"options.country_of_origin.ISL","t":"Iceland"},{"key":"options.country_of_origin.IRN","t":"Iran"},{"key":"options.country_of_origin.IRQ","t":"Iraq"},{"key":"options.country_of_origin.ITA","t":"Italy"},{"key":"options.country_of_origin.ISR","t":"Israel"},{"key":"options.country_of_origin.JPN","t":"Japan"},{"key":"options.country_of_origin.KEN","t":"Kenya"},{"key":"options.country_of_origin.LTU","t":"Lithuania"},{"key":"options.country_of_origin.LVA","t":"Latvia"},{"key":"options.country_of_origin.LUX","t":"Luxembourg"},{"key":"options.country_of_origin.MDA","t":"Moldova"},{"key":"options.country_of_origin.MEX","t":"Mexico"},{"key":"options.country_of_origin.MMR","t":"Myanmar"},{"key":"options.country_of_origin.NPL","t":"Nepal"},{"key":"options.country_of_origin.MKD","t":"North Macedonia"},{"key":"options.country_of_origin.NOR","t":"Norway"},{"key":"options.country_of_origin.NLD","t":"Netherlands"},{"key":"options.country_of_origin.NGA","t":"Nigeria"},{"key":"options.country_of_origin.NZL","t":"New Zealand"},{"key":"options.country_of_origin.POL","t":"Poland"},{"key":"options.country_of_origin.PRT","t":"Portugal"},{"key":"options.country_of_origin.PAK","t":"Pakistan"},{"key":"options.country_of_origin.PER","t":"Peru"},{"key":"options.country_of_origin.PHL","t":"Philippines"},{"key":"options.country_of_origin.ROU","t":"Romania"},{"key":"options.country_of_origin.RUS","t":"Russia"},{"key":"options.country_of_origin.SAU","t":"Saudi Arabia"},{"key":"options.country_of_origin.SRB","t":"Serbia"},{"key":"options.country_of_origin.SGP","t":"Singapore"},{"key":"options.country_of_origin.SVK","t":"Slovakia"},{"key":"options.country_of_origin.SVN","t":"Slovenia"},{"key":"options.country_of_origin.ZAF","t":"South Africa"},{"key":"options.country_of_origin.KOR","t":"South Korea"},{"key":"options.country_of_origin.ESP","t":"Spain"},{"key":"options.country_of_origin.SWE","t":"Sweden"},{"key":"options.country_of_origin.TWN","t":"Taiwan"},{"key":"options.country_of_origin.TZA","t":"Tanzania"},{"key":"options.country_of_origin.THA","t":"Thailand"},{"key":"options.country_of_origin.TUR","t":"Turkey"},{"key":"options.country_of_origin.UGA","t":"Uganda"},{"key":"options.country_of_origin.UKR","t":"Ukraine"},{"key":"options.country_of_origin.URY","t":"Uruguay"},{"key":"options.country_of_origin.ARE","t":"United Arab Emirates"},{"key":"options.country_of_origin.GBR","t":"United Kingdom"},{"key":"options.country_of_origin.SCT","t":"Scotland"},{"key":"options.country_of_origin.USA","t":"USA"},{"key":"options.country_of_origin.VEN","t":"Venezuela"},{"key":"options.country_of_origin.VNM","t":"Vietnam"},{"key":"options.country_of_origin.AFG","t":"Afghanistan"},{"key":"options.country_of_origin.DZA","t":"Algeria"},{"key":"options.country_of_origin.ARG","t":"Argentina"},{"key":"options.country_of_origin.ARM","t":"Armenia"},{"key":"options.country_of_origin.AUS","t":"Australia"},{"key":"options.country_of_origin.AUT","t":"Austria"},{"key":"options.country_of_origin.BGD","t":"Bangladesh"},{"key":"options.country_of_origin.BEL","t":"Belgium"},{"key":"options.country_of_origin.BLR","t":"Belarus"},{"key":"options.country_of_origin.BIH","t":"Bosnia and Herzegovina"},{"key":"options.country_of_origin.BRA","t":"Brazil"},{"key":"options.country_of_origin.BGR","t":"Bulgaria"},{"key":"options.country_of_origin.CAN","t":"Canada"},{"key":"options.country_of_origin.CRI","t":"Costa Rica"},{"key":"options.country_of_origin.HRV","t":"Croatia"},{"key":"options.country_of_origin.CHE","t":"Switzerland"},{"key":"options.country_of_origin.CHL","t":"Chile"},{"key":"options.country_of_origin.CHN","t":"China"},{"key":"options.country_of_origin.COD","t":"DR Congo"},{"key":"options.country_of_origin.COL","t":"Colombia"},{"key":"options.country_of_origin.CIV","t":"Côte d'Ivoire"},{"key":"options.country_of_origin.CYP","t":"Cyprus"},{"key":"options.country_of_origin.CZE","t":"Czechia"},{"key":"options.country_of_origin.DEU","t":"Germany"},{"key":"options.country_of_origin.GRC","t":"Greece"},{"key":"options.country_of_origin.DNK","t":"Denmark"},{"key":"options.country_of_origin.EGY","t":"Egypt"},{"key":"options.country_of_origin.EST","t":"Estonia"},{"key":"options.country_of_origin.ETH","t":"Ethiopia"},{"key":"options.country_of_origin.FIN","t":"Finland"},{"key":"options.country_of_origin.FRA","t":"France"},{"key":"options.country_of_origin.GEO","t":"Georgia"},{"key":"options.country_of_origin.GHA","t":"Ghana"},{"key":"options.country_of_origin.HKG","t":"Hong Kong"},{"key":"options.country_of_origin.HUN","t":"Hungary"},{"key":"options.country_of_origin.IND","t":"India"},{"key":"options.country_of_origin.IDN","t":"Indonesia"},{"key":"options.country_of_origin.IRL","t":"Ireland"},{"key":"options.country_of_origin.ISL","t":"Iceland"},{"key":"options.country_of_origin.IRN","t":"Iran"},{"key":"options.country_of_origin.IRQ","t":"Iraq"},{"key":"options.country_of_origin.ITA","t":"Italy"},{"key":"options.country_of_origin.ISR","t":"Israel"},{"key":"options.country_of_origin.JPN","t":"Japan"},{"key":"options.country_of_origin.KEN","t":"Kenya"},{"key":"options.country_of_origin.LTU","t":"Lithuania"},{"key":"options.country_of_origin.LVA","t":"Latvia"},{"key":"options.country_of_origin.LUX","t":"Luxembourg"},{"key":"options.country_of_origin.MDA","t":"Moldova"},{"key":"options.country_of_origin.MEX","t":"Mexico"},{"key":"options.country_of_origin.MMR","t":"Myanmar"},{"key":"options.country_of_origin.NPL","t":"Nepal"},{"key":"options.country_of_origin.MKD","t":"North Macedonia"},{"key":"options.country_of_origin.NOR","t":"Norway"},{"key":"options.country_of_origin.NLD","t":"Netherlands"},{"key":"options.country_of_origin.NGA","t":"Nigeria"},{"key":"options.country_of_origin.NZL","t":"New Zealand"},{"key":"options.country_of_origin.POL","t":"Poland"},{"key":"options.country_of_origin.PRT","t":"Portugal"},{"key":"options.country_of_origin.PAK","t":"Pakistan"},{"key":"options.country_of_origin.PER","t":"Peru"},{"key":"options.country_of_origin.PHL","t":"Philippines"},{"key":"options.country_of_origin.ROU","t":"Romania"},{"key":"options.country_of_origin.RUS","t":"Russia"},{"key":"options.country_of_origin.SAU","t":"Saudi Arabia"},{"key":"options.country_of_origin.SRB","t":"Serbia"},{"key":"options.country_of_origin.SGP","t":"Singapore"},{"key":"options.country_of_origin.SVK","t":"Slovakia"},{"key":"options.country_of_origin.SVN","t":"Slovenia"},{"key":"options.country_of_origin.ZAF","t":"South Africa"},{"key":"options.country_of_origin.KOR","t":"South Korea"},{"key":"options.country_of_origin.ESP","t":"Spain"},{"key":"options.country_of_origin.SWE","t":"Sweden"},{"key":"options.country_of_origin.TWN","t":"Taiwan"},{"key":"options.country_of_origin.TZA","t":"Tanzania"},{"key":"options.country_of_origin.THA","t":"Thailand"},{"key":"options.country_of_origin.TUR","t":"Turkey"},{"key":"options.country_of_origin.UGA","t":"Uganda"},{"key":"options.country_of_origin.UKR","t":"Ukraine"},{"key":"options.country_of_origin.URY","t":"Uruguay"},{"key":"options.country_of_origin.ARE","t":"United Arab Emirates"},{"key":"options.country_of_origin.GBR","t":"United Kingdom"},{"key":"options.country_of_origin.SCT","t":"Scotland"},{"key":"options.country_of_origin.USA","t":"USA"},{"key":"options.country_of_origin.VEN","t":"Venezuela"},{"key":"options.country_of_origin.VNM","t":"Vietnam"},{"key":"options.country_of_origin.AFG","t":"Afghanistan"},{"key":"options.country_of_origin.DZA","t":"Algeria"},{"key":"options.country_of_origin.ARG","t":"Argentina"},{"key":"options.country_of_origin.ARM","t":"Armenia"},{"key":"options.country_of_origin.AUS","t":"Australia"},{"key":"options.country_of_origin.AUT","t":"Austria"},{"key":"options.country_of_origin.BGD","t":"Bangladesh"},{"key":"options.country_of_origin.BEL","t":"Belgium"},{"key":"options.country_of_origin.BLR","t":"Belarus"},{"key":"options.country_of_origin.BIH","t":"Bosnia and Herzegovina"},{"key":"options.country_of_origin.BRA","t":"Brazil"},{"key":"options.country_of_origin.BGR","t":"Bulgaria"},{"key":"options.country_of_origin.CAN","t":"Canada"},{"key":"options.country_of_origin.CRI","t":"Costa Rica"},{"key":"options.country_of_origin.HRV","t":"Croatia"},{"key":"options.country_of_origin.CHE","t":"Switzerland"},{"key":"options.country_of_origin.CHL","t":"Chile"},{"key":"options.country_of_origin.CHN","t":"China"},{"key":"options.country_of_origin.COD","t":"DR Congo"},{"key":"options.country_of_origin.COL","t":"Colombia"},{"key":"options.country_of_origin.CIV","t":"Côte d'Ivoire"},{"key":"options.country_of_origin.CYP","t":"Cyprus"},{"key":"options.country_of_origin.CZE","t":"Czechia"},{"key":"options.country_of_origin.DEU","t":"Germany"},{"key":"options.country_of_origin.GRC","t":"Greece"},{"key":"options.country_of_origin.DNK","t":"Denmark"},{"key":"options.country_of_origin.EGY","t":"Egypt"},{"key":"options.country_of_origin.EST","t":"Estonia"},{"key":"options.country_of_origin.ETH","t":"Ethiopia"},{"key":"options.country_of_origin.FIN","t":"Finland"},{"key":"options.country_of_origin.FRA","t":"France"},{"key":"options.country_of_origin.GEO","t":"Georgia"},{"key":"options.country_of_origin.GHA","t":"Ghana"},{"key":"options.country_of_origin.HKG","t":"Hong Kong"},{"key":"options.country_of_origin.HUN","t":"Hungary"},{"key":"options.country_of_origin.IND","t":"India"},{"key":"options.country_of_origin.IDN","t":"Indonesia"},{"key":"options.country_of_origin.IRL","t":"Ireland"},{"key":"options.country_of_origin.ISL","t":"Iceland"},{"key":"options.country_of_origin.IRN","t":"Iran"},{"key":"options.country_of_origin.IRQ","t":"Iraq"},{"key":"options.country_of_origin.ITA","t":"Italy"},{"key":"options.country_of_origin.ISR","t":"Israel"},{"key":"options.country_of_origin.JPN","t":"Japan"},{"key":"options.country_of_origin.KEN","t":"Kenya"},{"key":"options.country_of_origin.LTU","t":"Lithuania"},{"key":"options.country_of_origin.LVA","t":"Latvia"},{"key":"options.country_of_origin.LUX","t":"Luxembourg"},{"key":"options.country_of_origin.MDA","t":"Moldova"},{"key":"options.country_of_origin.MEX","t":"Mexico"},{"key":"options.country_of_origin.MMR","t":"Myanmar"},{"key":"options.country_of_origin.NPL","t":"Nepal"},{"key":"options.country_of_origin.MKD","t":"North Macedonia"},{"key":"options.country_of_origin.NOR","t":"Norway"},{"key":"options.country_of_origin.NLD","t":"Netherlands"},{"key":"options.country_of_origin.NGA","t":"Nigeria"},{"key":"options.country_of_origin.NZL","t":"New Zealand"},{"key":"options.country_of_origin.POL","t":"Poland"},{"key":"options.country_of_origin.PRT","t":"Portugal"},{"key":"options.country_of_origin.PAK","t":"Pakistan"},{"key":"options.country_of_origin.PER","t":"Peru"},{"key":"options.country_of_origin.PHL","t":"Philippines"},{"key":"options.country_of_origin.ROU","t":"Romania"},{"key":"options.country_of_origin.RUS","t":"Russia"},{"key":"options.country_of_origin.SAU","t":"Saudi Arabia"},{"key":"options.country_of_origin.SRB","t":"Serbia"},{"key":"options.country_of_origin.SGP","t":"Singapore"},{"key":"options.country_of_origin.SVK","t":"Slovakia"},{"key":"options.country_of_origin.SVN","t":"Slovenia"},{"key":"options.country_of_origin.ZAF","t":"South Africa"},{"key":"options.country_of_origin.KOR","t":"South Korea"},{"key":"options.country_of_origin.ESP","t":"Spain"},{"key":"options.country_of_origin.SWE","t":"Sweden"},{"key":"options.country_of_origin.TWN","t":"Taiwan"},{"key":"options.country_of_origin.TZA","t":"Tanzania"},{"key":"options.country_of_origin.THA","t":"Thailand"},{"key":"options.country_of_origin.TUR","t":"Turkey"},{"key":"options.country_of_origin.UGA","t":"Uganda"},{"key":"options.country_of_origin.UKR","t":"Ukraine"},{"key":"options.country_of_origin.URY","t":"Uruguay"},{"key":"options.country_of_origin.ARE","t":"United Arab Emirates"},{"key":"options.country_of_origin.GBR","t":"United Kingdom"},{"key":"options.country_of_origin.SCT","t":"Scotland"},{"key":"options.country_of_origin.USA","t":"USA"},{"key":"options.country_of_origin.VEN","t":"Venezuela"},{"key":"options.country_of_origin.VNM","t":"Vietnam"},{"key":"usage.ai_generated_code_balance","t":"AI Code Generation"},{"key":"usage.ai_generated_code_balance.question","t":"What proportion of the code you produce is AI-generated?"},{"key":"usage.ai_generated_code_balance.prompt","t":"Including code copy-pasted from ChatGPT or other chatbots, or code co-written using AI tools."},{"key":"options.ai_generated_code_balance.0","t":"0% AI"},{"key":"options.ai_generated_code_balance.8","t":"100% AI"},{"key":"usage.ai_generated_code_reviewed_balance","t":"AI Code Review"},{"key":"usage.ai_generated_code_reviewed_balance.question","t":"What proportion of AI-generated code do you manually review or read?"},{"key":"options.css_ai_generated_code_balance.0","t":"0% AI"},{"key":"options.css_ai_generated_code_balance.8","t":"100% AI"},{"key":"ai_usage.ai_generated_code_balance","t":"AI Code Generation"},{"key":"ai_usage.ai_generated_code_balance.question","t":"What proportion of the code you produce is AI-generated?"},{"key":"ai_usage.ai_generated_code_balance.prompt","t":"Including code copy-pasted from ChatGPT or other chatbots, or code co-written using AI tools."},{"key":"options.css_ai_generated_code_balance.0","t":"0% AI"},{"key":"options.css_ai_generated_code_balance.8","t":"100% AI"},{"key":"options.css_ai_generated_code_balance.0","t":"0% AI"},{"key":"options.css_ai_generated_code_balance.8","t":"100% AI"},{"key":"options.ai_sentiment.0","t":"100% negative"},{"key":"options.ai_sentiment.1","t":"Mostly negative"},{"key":"options.ai_sentiment.2","t":"Negative"},{"key":"options.ai_sentiment.3","t":"Slightly negative"},{"key":"options.ai_sentiment.4","t":"Neutral"},{"key":"options.ai_sentiment.5","t":"Slightly positive"},{"key":"options.ai_sentiment.6","t":"Positive"},{"key":"options.ai_sentiment.7","t":"Mostly positive"},{"key":"options.ai_sentiment.8","t":"100% positive"},{"key":"options.ai_impact_on_js_ecosystem.0","t":"100% negative"},{"key":"options.ai_impact_on_js_ecosystem.1","t":"Mostly negative"},{"key":"options.ai_impact_on_js_ecosystem.2","t":"Negative"},{"key":"options.ai_impact_on_js_ecosystem.3","t":"Slightly negative"},{"key":"options.ai_impact_on_js_ecosystem.4","t":"Neutral"},{"key":"options.ai_impact_on_js_ecosystem.5","t":"Slightly positive"},{"key":"options.ai_impact_on_js_ecosystem.6","t":"Positive"},{"key":"options.ai_impact_on_js_ecosystem.7","t":"Mostly positive"},{"key":"options.ai_impact_on_js_ecosystem.8","t":"100% positive"},{"key":"general.state_of_js.intro","t":"The JavaScript world could use a bit of classification.\n\nSince 2016, this survey has collected  data from over 20,000 developers each year to identify current and upcoming trends.\n\nTogether, let's find out which libraries developers  want to learn next, which have the best retention ratings, and much more.","tHtml":"<p>The JavaScript world could use a bit of classification.</p>\n<p>Since 2016, this survey has collected  data from over 20,000 developers each year to identify current and upcoming trends.</p>\n<p>Together, let's find out which libraries developers  want to learn next, which have the best retention ratings, and much more.</p>\n","tClean":"The JavaScript world could use a bit of classification.\nSince 2016, this survey has collected  data from over 20,000 developers each year to identify current and upcoming trends.\nTogether, let's find out which libraries developers  want to learn next, which have the best retention ratings, and much more.\n"},{"key":"general.state_of_js.title","t":"The State of JavaScript Developer Survey"},{"key":"general.state_of_js.description","t":"The annual developer survey of the JavaScript ecosystem"},{"key":"sections.syntax.title","t":"Syntax"},{"key":"sections.syntax.description","t":"The grammar of JavaScript."},{"key":"sections.language.title","t":"Language"},{"key":"sections.language.description","t":"The vocabulary of JavaScript."},{"key":"sections.data_structures.title","t":"Data Structures"},{"key":"sections.data_structures.description","t":"How you store and manipulate data."},{"key":"sections.browser_apis.title","t":"Browser APIs"},{"key":"sections.browser_apis.description","t":"The features provided by the browser."},{"key":"sections.other_features.title","t":"Other Features"},{"key":"sections.other_features.description","t":"Other technologies and patterns"},{"key":"sections.patterns.title","t":"Patterns"},{"key":"sections.patterns.description","t":"How you prefer writing code"},{"key":"sections.javascript_flavors.title","t":"JavaScript Flavors"},{"key":"sections.javascript_flavors.description","t":"Languages that compile to JavaScript"},{"key":"sections.front_end_frameworks.title","t":"Front-end Frameworks"},{"key":"sections.front_end_frameworks.description","t":"Front-end frameworks and libraries"},{"key":"sections.datalayer.title","t":"Data Layer"},{"key":"sections.datalayer.description","t":"Loading and managing data in your app"},{"key":"sections.rendering_frameworks.title","t":"Rendering Frameworks"},{"key":"sections.rendering_frameworks.description","t":"Frameworks focused on rendering and serving your application"},{"key":"sections.meta_frameworks.title","t":"Meta-Frameworks"},{"key":"sections.meta_frameworks.description","t":"Frameworks focused on rendering and serving your application"},{"key":"sections.back_end_frameworks.title","t":"Back-end Frameworks"},{"key":"sections.back_end_frameworks.description","t":"JavaScript on the server"},{"key":"sections.testing.title","t":"Testing"},{"key":"sections.testing.description","t":"Tools for testing your code"},{"key":"sections.mobile_desktop.title","t":"Mobile & Desktop","tHtml":"Mobile &amp; Desktop","tClean":"Mobile & Desktop"},{"key":"sections.mobile_desktop.description","t":"JavaScript for mobile devices and desktop apps"},{"key":"sections.build_tools.title","t":"Build Tools"},{"key":"sections.build_tools.description","t":"Compiling & bundling code","tHtml":"Compiling &amp; bundling code","tClean":"Compiling & bundling code"},{"key":"sections.monorepo_tools.title","t":"Monorepo Tools"},{"key":"sections.monorepo_tools.description","t":"Tools used to manage JavaScript monorepos."},{"key":"sections.tools.title","t":"Other Tools"},{"key":"sections.tools.description","t":"Other JavaScript tools"},{"key":"sections.other_tools.description","t":"For these tools & technologies, just check the ones that you use regularly.","tHtml":"For these tools &amp; technologies, just check the ones that you use regularly.","tClean":"For these tools & technologies, just check the ones that you use regularly."},{"key":"sections.resources_js.title","t":"Resources"},{"key":"sections.resources_js.description","t":"What JavaScript resources do you consult?"},{"key":"sections.usage_js.title","t":"Usage"},{"key":"sections.usage_js.description","t":"How you use JavaScript"},{"key":"tools.front_end_frameworks","t":"Front-end Frameworks"},{"key":"tools.back_end_frameworks","t":"Back-end Frameworks"},{"key":"tools.meta_frameworks","t":"Meta-Frameworks"},{"key":"tools.testing","t":"Testing"},{"key":"tools.build_tools","t":"Build Tools"},{"key":"features.features_intro","t":"Welcome to the survey! This first part is all about figuring out  which **features** of the JavaScript language you've used before.","tHtml":"Welcome to the survey! This first part is all about figuring out  which <strong>features</strong> of the JavaScript language you've used before.","tClean":"Welcome to the survey! This first part is all about figuring out  which features of the JavaScript language you've used before."},{"key":"tools.tools_intro","t":"The next couple sections focus on the **libraries** and **frameworks** that make up  the JavaScript ecosystem. Let us know what you're excited about!","tHtml":"The next couple sections focus on the <strong>libraries</strong> and <strong>frameworks</strong> that make up  the JavaScript ecosystem. Let us know what you're excited about!","tClean":"The next couple sections focus on the libraries and frameworks that make up  the JavaScript ecosystem. Let us know what you're excited about!"},{"key":"tools.back_end_frameworks_intro","t":"We're bringing back the back-end frameworks section this year!"},{"key":"options.js_pain_points.state_management","t":"State Management"},{"key":"options.js_pain_points.state_management.description","t":"Managing global data state in complex applications."},{"key":"options.js_pain_points.managing_dependencies","t":"Managing Dependencies"},{"key":"options.js_pain_points.managing_dependencies.description","t":"Managing dependencies, package versions and bundle sizes."},{"key":"options.js_pain_points.architecture","t":"Code Architecture"},{"key":"options.js_pain_points.architecture.description","t":"Organizing and maintaining your codebase."},{"key":"options.js_pain_points.finding_packages","t":"Finding Packages"},{"key":"options.js_pain_points.finding_packages.description","t":"Finding and evaluating JavaScript packages."},{"key":"options.js_pain_points.writing_modules","t":"Writing Modules"},{"key":"options.js_pain_points.writing_modules.description","t":"Writing JavaScript modules and publishing them as packages."},{"key":"options.js_pain_points.debugging","t":"Debugging"},{"key":"options.js_pain_points.debugging.description","t":"Identifying and solving issues with your code."},{"key":"options.js_pain_points.async_code","t":"Async Code"},{"key":"options.js_pain_points.async_code.description","t":"Handling asynchronous functions."},{"key":"options.js_pain_points.modules_management","t":"Modules Management"},{"key":"options.js_pain_points.modules_management.description","t":"Writing and importing modules."},{"key":"options.js_pain_points.date_management","t":"Date Management"},{"key":"options.js_pain_points.date_management.description","t":"Handling and manipulating dates and times."},{"key":"options.top_js_pain_points.state_management","t":"State Management"},{"key":"options.top_js_pain_points.state_management.description","t":"Managing global data state in complex applications."},{"key":"options.top_js_pain_points.managing_dependencies","t":"Managing Dependencies"},{"key":"options.top_js_pain_points.managing_dependencies.description","t":"Managing dependencies, package versions and bundle sizes."},{"key":"options.top_js_pain_points.architecture","t":"Code Architecture"},{"key":"options.top_js_pain_points.architecture.description","t":"Organizing and maintaining your codebase."},{"key":"options.top_js_pain_points.finding_packages","t":"Finding Packages"},{"key":"options.top_js_pain_points.finding_packages.description","t":"Finding and evaluating JavaScript packages."},{"key":"options.top_js_pain_points.writing_modules","t":"Writing Modules"},{"key":"options.top_js_pain_points.writing_modules.description","t":"Writing JavaScript modules and publishing them as packages."},{"key":"options.top_js_pain_points.debugging","t":"Debugging"},{"key":"options.top_js_pain_points.debugging.description","t":"Identifying and solving issues with your code."},{"key":"options.top_js_pain_points.async_code","t":"Async Code"},{"key":"options.top_js_pain_points.async_code.description","t":"Handling asynchronous functions."},{"key":"options.top_js_pain_points.modules_management","t":"Modules Management"},{"key":"options.top_js_pain_points.modules_management.description","t":"Writing and importing modules."},{"key":"options.top_js_pain_points.date_management","t":"Date Management"},{"key":"options.top_js_pain_points.date_management.description","t":"Handling and manipulating dates and times."},{"key":"options.top_js_pain_points.performance","t":"Performance"},{"key":"options.top_js_pain_points.performance.description","t":"Writing performant and efficient JavaScript code"},{"key":"options.top_js_pain_points.build_tools","t":"Build Tools"},{"key":"options.top_js_pain_points.build_tools.description","t":"Managing tooling to bundle your code"},{"key":"options.top_js_pain_points.typing","t":"Typing"},{"key":"options.top_js_pain_points.typing.description","t":"Managing and maintaining types"},{"key":"options.top_js_pain_points.typescript","t":"TypeScript"},{"key":"options.top_js_pain_points.esm_cjs","t":"ESM vs CJS"},{"key":"options.top_js_pain_points.testing","t":"Testing"},{"key":"options.top_js_pain_points.too_many_choices","t":"Too Many Choices"},{"key":"options.top_js_pain_points.react","t":"React"},{"key":"options.top_js_pain_points.bundlers","t":"Bundlers"},{"key":"options.top_js_pain_points.complexity","t":"Complexity"},{"key":"options.top_js_pain_points.standard_library","t":"Standard Library"},{"key":"options.top_js_pain_points.tooling","t":"Tooling"},{"key":"options.top_js_pain_points.dependencies","t":"Dependencies"},{"key":"options.top_js_pain_points.security","t":"Security"},{"key":"options.top_js_pain_points.slow","t":"Slowness"},{"key":"options.currently_missing_from_js.static_typing","t":"Static Typing"},{"key":"options.currently_missing_from_js.static_typing.description","t":"Any kind of native static typing."},{"key":"options.currently_missing_from_js.standard_library","t":"Standard Library"},{"key":"options.currently_missing_from_js.standard_library.description","t":"A standard library of common utilities"},{"key":"options.currently_missing_from_js.pattern_matching","t":"Pattern Matching"},{"key":"options.currently_missing_from_js.pattern_matching.description","t":"A new `match` keyword for pattern-matching objects.","tHtml":"A new <code>match</code> keyword for pattern-matching objects.","tClean":"A new match keyword for pattern-matching objects."},{"key":"options.currently_missing_from_js.js_pipeline_operator","t":"Pipe Operator"},{"key":"options.currently_missing_from_js.js_pipeline_operator.description","t":"A new `|>` operator for passing the result of one function to another.","tHtml":"A new <code>|&gt;</code> operator for passing the result of one function to another.","tClean":"A new |> operator for passing the result of one function to another."},{"key":"options.currently_missing_from_js.decorators","t":"Decorators"},{"key":"options.currently_missing_from_js.decorators.description","t":"Decorators used to metaprogram and add functionality to a value."},{"key":"options.currently_missing_from_js.immutable_data_structures","t":"Immutable Data Structures"},{"key":"options.currently_missing_from_js.immutable_data_structures.description","t":"New deeply immutable data structures such as `Record` and `Tuple`.","tHtml":"New deeply immutable data structures such as <code>Record</code> and <code>Tuple</code>.","tClean":"New deeply immutable data structures such as Record and Tuple."},{"key":"options.currently_missing_from_js.better_date_management","t":"Better Date Management"},{"key":"options.currently_missing_from_js.better_date_management.description","t":"A new `Temporal` object for working with dates and times.","tHtml":"A new <code>Temporal</code> object for working with dates and times.","tClean":"A new Temporal object for working with dates and times."},{"key":"options.currently_missing_from_js.observable","t":"Observable"},{"key":"options.currently_missing_from_js.observable.description","t":"A new `Observable` type used to model push-based data sources.","tHtml":"A new <code>Observable</code> type used to model push-based data sources.","tClean":"A new Observable type used to model push-based data sources."},{"key":"options.top_currently_missing_from_js.static_typing","t":"Static Typing"},{"key":"options.top_currently_missing_from_js.static_typing.description","t":"Any kind of native static typing."},{"key":"options.top_currently_missing_from_js.standard_library","t":"Standard Library"},{"key":"options.top_currently_missing_from_js.standard_library.description","t":"A standard library of common utilities"},{"key":"options.top_currently_missing_from_js.pattern_matching","t":"Pattern Matching"},{"key":"options.top_currently_missing_from_js.pattern_matching.description","t":"A new `match` keyword for pattern-matching objects.","tHtml":"A new <code>match</code> keyword for pattern-matching objects.","tClean":"A new match keyword for pattern-matching objects."},{"key":"options.top_currently_missing_from_js.js_pipeline_operator","t":"Pipe Operator"},{"key":"options.top_currently_missing_from_js.js_pipeline_operator.description","t":"A new `|>` operator for passing the result of one function to another.","tHtml":"A new <code>|&gt;</code> operator for passing the result of one function to another.","tClean":"A new |> operator for passing the result of one function to another."},{"key":"options.top_currently_missing_from_js.decorators","t":"Decorators"},{"key":"options.top_currently_missing_from_js.decorators.description","t":"Decorators used to metaprogram and add functionality to a value."},{"key":"options.top_currently_missing_from_js.immutable_data_structures","t":"Immutable Data Structures"},{"key":"options.top_currently_missing_from_js.immutable_data_structures.description","t":"New deeply immutable data structures such as `Record` and `Tuple`.","tHtml":"New deeply immutable data structures such as <code>Record</code> and <code>Tuple</code>.","tClean":"New deeply immutable data structures such as Record and Tuple."},{"key":"options.top_currently_missing_from_js.better_date_management","t":"Better Date Management"},{"key":"options.top_currently_missing_from_js.better_date_management.description","t":"A new `Temporal` object for working with dates and times.","tHtml":"A new <code>Temporal</code> object for working with dates and times.","tClean":"A new Temporal object for working with dates and times."},{"key":"options.top_currently_missing_from_js.observable","t":"Observable"},{"key":"options.top_currently_missing_from_js.observable.description","t":"A new `Observable` type used to model push-based data sources.","tHtml":"A new <code>Observable</code> type used to model push-based data sources.","tClean":"A new Observable type used to model push-based data sources."},{"key":"options.top_currently_missing_from_js.static_typing","t":"Static Typing"},{"key":"options.top_currently_missing_from_js.standard_library","t":"Standard Library"},{"key":"options.top_currently_missing_from_js.operator_overloading","t":"Operator Overloading"},{"key":"options.top_currently_missing_from_js.immutable","t":"Immutable Data Structures"},{"key":"options.top_currently_missing_from_js.deep_clone","t":"Deep Clone"},{"key":"options.top_currently_missing_from_js.enums","t":"Enums"},{"key":"options.top_currently_missing_from_js.decorators","t":"Decorators"},{"key":"options.top_currently_missing_from_js.multithreading","t":"Multithreading"},{"key":"options.top_currently_missing_from_js.js_pipeline_operator","t":"Pipe Operator"},{"key":"options.top_currently_missing_from_js.native_observables","t":"Native Observables"},{"key":"options.what_do_you_use_js_for.frontend_development","t":"Frontend Development"},{"key":"options.what_do_you_use_js_for.backend_development","t":"Backend Development"},{"key":"options.what_do_you_use_js_for.data_analysis","t":"Data Analysis"},{"key":"options.what_do_you_use_js_for.machine_learning","t":"Machine Learning"},{"key":"options.what_do_you_use_js_for.desktop_apps","t":"Desktop Apps"},{"key":"options.what_do_you_use_js_for.mobile_apps","t":"Mobile Apps"},{"key":"options.what_do_you_use_js_for.embedded_apps","t":"Embedded Apps"},{"key":"options.what_do_you_use_js_for.game_development","t":"Game Development"},{"key":"options.what_do_you_use_js_for.data_visualization","t":"Data Visualization"},{"key":"options.what_do_you_use_js_for.graphics_animation","t":"Graphics & Animation","tHtml":"Graphics &amp; Animation","tClean":"Graphics & Animation"},{"key":"options.what_do_you_use_js_for.scripting","t":"Scripting"},{"key":"options.what_do_you_use_js_for.command_line_tools","t":"Command Line Tools"},{"key":"options.what_do_you_use_js_for.developer_tooling","t":"Developer Tooling"},{"key":"options.what_do_you_use_js_for.automation","t":"Automation"},{"key":"options.what_do_you_use_js_for.bots","t":"Bots"},{"key":"options.what_do_you_use_js_for.testing","t":"Testing"},{"key":"options.what_do_you_use_js_for.browser_extensions","t":"Browser Extensions"},{"key":"options.what_do_you_use_js_for.api","t":"APIs"},{"key":"options.what_do_you_use_js_for.infrastructure_as_code","t":"Infrastructure as Code"},{"key":"options.what_do_you_use_js_for.prototyping","t":"Prototyping"},{"key":"features.destructuring","t":"Destructuring"},{"key":"features.spread_operator","t":"Spread operator"},{"key":"features.arrow_functions","t":"Arrow Functions"},{"key":"features.nullish_coalescing","t":"Nullish Coalescing"},{"key":"features.optional_chaining","t":"Optional Chaining"},{"key":"features.private_fields","t":"Private Fields"},{"key":"features.proxies","t":"Proxies"},{"key":"features.async_await","t":"Async/Await"},{"key":"features.promises","t":"Promises"},{"key":"features.decorators","t":"Decorators"},{"key":"features.decorators.description","t":"In its simplest form, a decorator is simply a way of  wrapping one piece of code with another — literally “decorating” it."},{"key":"features.dynamic_import","t":"Dynamic Import"},{"key":"features.syntax_features","t":"Syntax Features"},{"key":"features.syntax_features.question","t":"Which of these syntax features have you used?"},{"key":"features.string_features","t":"String Features"},{"key":"features.string_features.question","t":"Which of these String features have you used?"},{"key":"features.array_features","t":"Array Features"},{"key":"features.array_features.question","t":"Which of these Array features have you used?"},{"key":"features.async_features","t":"Async Features"},{"key":"features.async_features.question","t":"Which of these async features have you used?"},{"key":"features.set_features","t":"Set Features"},{"key":"features.set_features.question","t":"Which of these Set features have you used?"},{"key":"features.object_features","t":"Object Features"},{"key":"features.object_features.question","t":"Which of these Object features have you used?"},{"key":"features.browser_api_features","t":"Browser APIs"},{"key":"features.browser_api_features.question","t":"Which of these browser APIs have you used?"},{"key":"features.language_pain_points","t":"Language Pain Points"},{"key":"features.language_pain_points.question","t":"What are your main pain points regarding the JavaScript language?"},{"key":"features.browser_apis_pain_points","t":"Browser APIs Pain Points"},{"key":"features.browser_apis_pain_points.question","t":"What are your main pain points regarding browser APIs?"},{"key":"patterns.object_oriented_programming","t":"Object-Oriented Programming"},{"key":"features.functional_programming","t":"Functional Programming"},{"key":"features.reactive_programming","t":"Reactive Programming"},{"key":"tools.angular.description","t":"Note that this question only targets [Angular](https://angular.io/) experience, and specifically does *not* apply to the deprecated [AngularJS](https://angularjs.org/).","tHtml":"Note that this question only targets <a href=\"https://angular.io/\">Angular</a> experience, and specifically does <em>not</em> apply to the deprecated <a href=\"https://angularjs.org/\">AngularJS</a>.","tClean":"Note that this question only targets Angular experience, and specifically does not apply to the deprecated AngularJS."},{"key":"tools.best_of_js_projects.note","t":"Libraries are loaded from [Best of JS](https://bestofjs.org/).  If a project is missing, you can [submit it here](https://github.com/michaelrambeau/bestofjs/issues/new?template=add-a-project-to-best-of-javascript.md).","tHtml":"Libraries are loaded from <a href=\"https://bestofjs.org/\">Best of JS</a>.  If a project is missing, you can <a href=\"https://github.com/michaelrambeau/bestofjs/issues/new?template=add-a-project-to-best-of-javascript.md\">submit it here</a>.","tClean":"Libraries are loaded from Best of JS.  If a project is missing, you can submit it here."},{"key":"tools.pain_points","t":"Pain Points"},{"key":"tools.ratios","t":"Ratios Over Time"},{"key":"tools.experience","t":"Experience & Sentiment","tHtml":"Experience &amp; Sentiment","tClean":"Experience & Sentiment"},{"key":"tools.others","t":"Other Tools"},{"key":"tools.tools_work","t":"Used at Work"},{"key":"tools.tools_work.question","t":"Which of these tools do you use in a professional context?"},{"key":"tools.front_end_frameworks_ratios","t":"Front-end Frameworks Ratios Over Time"},{"key":"tools.front_end_frameworks_ratios.short","t":"Ratios Over Time"},{"key":"tools.front_end_frameworks_experience","t":"Front-end Frameworks Experience & Sentiment","tHtml":"Front-end Frameworks Experience &amp; Sentiment","tClean":"Front-end Frameworks Experience & Sentiment"},{"key":"tools.front_end_frameworks_experience.short","t":"Experience & Sentiment","tHtml":"Experience &amp; Sentiment","tClean":"Experience & Sentiment"},{"key":"tools.front_end_frameworks_work","t":"Used at Work"},{"key":"tools.front_end_frameworks_work.question","t":"Which of these tools do you use in a professional context?"},{"key":"tools.front_end_frameworks.others","t":"Other Front-end Frameworks"},{"key":"tools.front_end_frameworks.others.short","t":"Other Tools"},{"key":"tools.front_end_frameworks_others","t":"Other Front-end Frameworks"},{"key":"tools.front_end_frameworks_happiness","t":"Front-end Frameworks Happiness"},{"key":"tools.front_end_frameworks_happiness.short","t":"Happiness"},{"key":"tools.front_end_frameworks_happiness.question","t":"On a scale of 1 (very unhappy) to 5 (very happy), how happy are you with the current state of front-end frameworks?"},{"key":"tools.front_end_frameworks_pain_points","t":"Front-end Frameworks Pain Points"},{"key":"tools.front_end_frameworks_pain_points.short","t":"Pain Points"},{"key":"tools.front_end_frameworks_pain_points.question","t":"What pain points have you encountered when using front-end frameworks?"},{"key":"tools.meta_frameworks_ratios","t":"Meta-Frameworks Ratios Over Time"},{"key":"tools.meta_frameworks_ratios.short","t":"Ratios Over Time"},{"key":"tools.meta_frameworks_experience","t":"Meta-Frameworks Experience & Sentiment","tHtml":"Meta-Frameworks Experience &amp; Sentiment","tClean":"Meta-Frameworks Experience & Sentiment"},{"key":"tools.meta_frameworks_experience.short","t":"Experience & Sentiment","tHtml":"Experience &amp; Sentiment","tClean":"Experience & Sentiment"},{"key":"tools.meta_frameworks_work","t":"Used at Work"},{"key":"tools.meta_frameworks_work.question","t":"Which of these tools do you use in a professional context?"},{"key":"tools.meta_frameworks.others","t":"Other Meta-Frameworks"},{"key":"tools.meta_frameworks.others.short","t":"Other Tools"},{"key":"tools.meta_frameworks_others","t":"Other Meta-Frameworks"},{"key":"tools.meta_frameworks_happiness","t":"Meta-Frameworks Happiness"},{"key":"tools.meta_frameworks_happiness.short","t":"Happiness"},{"key":"tools.meta_frameworks_happiness.question","t":"On a scale of 1 (very unhappy) to 5 (very happy), how happy are you with the current state of meta-frameworks?"},{"key":"tools.meta_frameworks_pain_points","t":"Meta-Frameworks Pain Points"},{"key":"tools.meta_frameworks_pain_points.short","t":"Pain Points"},{"key":"tools.meta_frameworks_pain_points.question","t":"What pain points have you encountered when using meta-frameworks?"},{"key":"tools.back_end_frameworks_ratios","t":"Back-end Frameworks Ratios Over Time"},{"key":"tools.back_end_frameworks_ratios.short","t":"Ratios Over Time"},{"key":"tools.back_end_frameworks_experience","t":"Back-end Frameworks Experience & Sentiment","tHtml":"Back-end Frameworks Experience &amp; Sentiment","tClean":"Back-end Frameworks Experience & Sentiment"},{"key":"tools.back_end_frameworks_experience.short","t":"Experience & Sentiment","tHtml":"Experience &amp; Sentiment","tClean":"Experience & Sentiment"},{"key":"toolsback_end_frameworks_work","t":"Used at Work"},{"key":"tools.back_end_frameworks_work.question","t":"Which of these tools do you use in a professional context?"},{"key":"tools.back_end_frameworks.others","t":"Other Back-end Frameworks"},{"key":"tools.back_end_frameworks.others.short","t":"Other Tools"},{"key":"tools.back_end_frameworks_others","t":"Other Meta-Frameworks"},{"key":"tools.back_end_frameworks_happiness","t":"Back-end Frameworks Happiness"},{"key":"tools.back_end_frameworks_happiness.short","t":"Happiness"},{"key":"tools.back_end_frameworks_happiness.question","t":"On a scale of 1 (very unhappy) to 5 (very happy), how happy are you with the current state of back-end frameworks?"},{"key":"tools.back_end_frameworks_pain_points","t":"Back-end Frameworks Pain Points"},{"key":"tools.back_end_frameworks_pain_points.short","t":"Pain Points"},{"key":"tools.back_end_frameworks_pain_points.question","t":"What pain points have you encountered when using back-end frameworks?"},{"key":"tools.testing_ratios","t":"Testing Tools Ratios Over Time"},{"key":"tools.testing_ratios.short","t":"Ratios Over Time"},{"key":"tools.testing_experience","t":"Testing Tools Experience & Sentiment","tHtml":"Testing Tools Experience &amp; Sentiment","tClean":"Testing Tools Experience & Sentiment"},{"key":"tools.testing_experience.short","t":"Experience & Sentiment","tHtml":"Experience &amp; Sentiment","tClean":"Experience & Sentiment"},{"key":"tools.testing_work","t":"Used at Work"},{"key":"tools.testing_work.question","t":"Which of these tools do you use in a professional context?"},{"key":"tools.testing_others","t":"Other Testing Tools"},{"key":"tools.testing_others.short","t":"Other Tools"},{"key":"tools.testing_happiness","t":"Testing Tools Happiness"},{"key":"tools.testing_happiness.short","t":"Happiness"},{"key":"tools.testing_happiness.question","t":"On a scale of 1 (very unhappy) to 5 (very happy), how happy are you with the current state of testing tools?"},{"key":"tools.testing_pain_points","t":"Testing Tools Pain Points"},{"key":"tools.testing_pain_points.short","t":"Pain Points"},{"key":"tools.testing_pain_points.question","t":"What pain points have you encountered when using testing tools?"},{"key":"tools.mobile_desktop_ratios","t":"Mobile & Desktop Tools Ratios Over Time","tHtml":"Mobile &amp; Desktop Tools Ratios Over Time","tClean":"Mobile & Desktop Tools Ratios Over Time"},{"key":"tools.mobile_desktop_ratios.short","t":"Ratios Over Time"},{"key":"tools.mobile_desktop_experience","t":"Mobile & Desktop Tools Experience & Sentiment","tHtml":"Mobile &amp; Desktop Tools Experience &amp; Sentiment","tClean":"Mobile & Desktop Tools Experience & Sentiment"},{"key":"tools.mobile_desktop_experience.short","t":"Experience & Sentiment","tHtml":"Experience &amp; Sentiment","tClean":"Experience & Sentiment"},{"key":"tools.mobile_desktop_work","t":"Used at Work"},{"key":"tools.mobile_desktop_work.question","t":"Which of these tools do you use in a professional context?"},{"key":"tools.mobile_desktop_others","t":"Other Mobile & Desktop Tools","tHtml":"Other Mobile &amp; Desktop Tools","tClean":"Other Mobile & Desktop Tools"},{"key":"tools.mobile_desktop_others.short","t":"Other Tools"},{"key":"tools.mobile_desktop_happiness","t":"Mobile & Desktop Tools Happiness","tHtml":"Mobile &amp; Desktop Tools Happiness","tClean":"Mobile & Desktop Tools Happiness"},{"key":"tools.mobile_desktop_happiness.short","t":"Happiness"},{"key":"tools.mobile_desktop_happiness.question","t":"On a scale of 1 (very unhappy) to 5 (very happy), how happy are you with the current state of mobile & desktop tools?","tHtml":"On a scale of 1 (very unhappy) to 5 (very happy), how happy are you with the current state of mobile &amp; desktop tools?","tClean":"On a scale of 1 (very unhappy) to 5 (very happy), how happy are you with the current state of mobile & desktop tools?"},{"key":"tools.mobile_desktop_pain_points","t":"Mobile & Desktop Tools Pain Points","tHtml":"Mobile &amp; Desktop Tools Pain Points","tClean":"Mobile & Desktop Tools Pain Points"},{"key":"tools.mobile_desktop_pain_points.short","t":"Pain Points"},{"key":"tools.mobile_desktop_pain_points.question","t":"What pain points have you encountered when using JavaScript to build mobile & desktop apps?","tHtml":"What pain points have you encountered when using JavaScript to build mobile &amp; desktop apps?","tClean":"What pain points have you encountered when using JavaScript to build mobile & desktop apps?"},{"key":"tools.build_tools_ratios","t":"Build Tools Ratios Over Time"},{"key":"tools.build_tools_ratios.short","t":"Ratios Over Time"},{"key":"tools.build_tools_experience","t":"Build Tools Experience & Sentiment","tHtml":"Build Tools Experience &amp; Sentiment","tClean":"Build Tools Experience & Sentiment"},{"key":"tools.build_tools_experience.short","t":"Experience & Sentiment","tHtml":"Experience &amp; Sentiment","tClean":"Experience & Sentiment"},{"key":"tools.build_tools_work","t":"Used at Work"},{"key":"tools.build_tools_work.question","t":"Which of these tools do you use in a professional context?"},{"key":"tools.build_tools_others","t":"Other Build Tools"},{"key":"tools.build_tools.short","t":"Build Tools"},{"key":"tools.build_tools_happiness","t":"Build Tools Happiness"},{"key":"tools.build_tools_happiness.short","t":"Happiness"},{"key":"tools.build_tools_happiness.question","t":"On a scale of 1 (very unhappy) to 5 (very happy), how happy are you with the current state of build tools?"},{"key":"tools.build_tools_pain_points","t":"Build Tools Pain Points"},{"key":"tools.build_tools_pain_points.short","t":"Pain Points"},{"key":"tools.build_tools_pain_points.question","t":"What pain points have you encountered when using build tools?"},{"key":"tools.monorepo_tools_ratios","t":"Monorepo Tools Ratios Over Time"},{"key":"tools.monorepo_tools_ratios.short","t":"Ratios Over Time"},{"key":"tools.monorepo_tools_experience","t":"Monorepo Tools Experience & Sentiment","tHtml":"Monorepo Tools Experience &amp; Sentiment","tClean":"Monorepo Tools Experience & Sentiment"},{"key":"tools.monorepo_tools_experience.short","t":"Experience & Sentiment","tHtml":"Experience &amp; Sentiment","tClean":"Experience & Sentiment"},{"key":"tools.monorepo_tools_work","t":"Used at Work"},{"key":"tools.monorepo_tools_work.question","t":"Which of these tools do you use in a professional context?"},{"key":"tools.monorepo_tools_others","t":"Other Monorepo Tools"},{"key":"tools.monorepo_tools.short","t":"Monorepo"},{"key":"tools.monorepo_tools_happiness","t":"Monorepo Tools Happiness"},{"key":"tools.monorepo_tools_happiness.short","t":"Happiness"},{"key":"tools.monorepo_tools_happiness.question","t":"On a scale of 1 (very unhappy) to 5 (very happy), how happy are you with the current state of monorepo tools?"},{"key":"tools.monorepo_tools_pain_points","t":"Monorepo Tools Pain Points"},{"key":"tools.monorepo_tools_pain_points.short","t":"Pain Points"},{"key":"tools.monorepo_tools_pain_points.question","t":"What pain points have you encountered when using monorepo tools?"},{"key":"tools.libraries","t":"Libraries"},{"key":"tools.libraries.question","t":"Which libraries do you regularly use?"},{"key":"tools.libraries.others","t":"Other Libraries"},{"key":"tools.libraries.others.description","t":"Other answers (freeform field)."},{"key":"tools.text_editors","t":"Text Editors"},{"key":"tools.text_editors.question","t":"Which text editor(s) do you regularly use?"},{"key":"tools.text_editors.others","t":"Other Text Editors"},{"key":"tools.text_editors.others.description","t":"Other answers (freeform field)."},{"key":"tools.utilities","t":"Utilities"},{"key":"tools.utilities.question","t":"Which utilities or tools do you regularly use?"},{"key":"tools.utilities.others","t":"Other Utilities"},{"key":"tools.utilities.others.description","t":"Other utilities (freeform field)."},{"key":"tools.browsers","t":"Browsers"},{"key":"tools.browsers.question","t":"Which browser(s) do you primarily work in during initial development?"},{"key":"tools.browsers.others","t":"Other Browsers"},{"key":"tools.browsers.others.description","t":"Other answers (freeform field)."},{"key":"tools.build_tools","t":"Build Tools"},{"key":"tools.build_tools.question","t":"Which build tools do you use?"},{"key":"tools.build_tools.others","t":"Other Build Tools"},{"key":"tools.build_tools.others.description","t":"Other answers (freeform field)."},{"key":"tools.non_js_languages","t":"Non-JavaScript Languages"},{"key":"tools.non_js_languages.question","t":"Which other programming languages do you use?"},{"key":"tools.non_js_languages.prompt","t":"Other than JavaScript or TypeScript."},{"key":"tools.non_js_languages.others","t":"Other Languages"},{"key":"tools.non_js_languages.others.description","t":"Other answers (freeform field)."},{"key":"tools.non_js_languages_features","t":"Non-JavaScript Features"},{"key":"tools.non_js_languages_features.question","t":"Which features from other programming languages do you wish JavaScript/TypeScript would adopt?"},{"key":"tools.non_js_languages_features.prompt","t":"When possible, specify both the language and the feature, e.g. “Rust: pattern matching”"},{"key":"other_tools.non_js_languages_features_top_features","t":"Non-JavaScript Features"},{"key":"other_tools.non_js_languages_features_top_languages","t":"Non-JavaScript Features by Language"},{"key":"tools.javascript_flavors","t":"JavaScript Flavors"},{"key":"tools.javascript_flavors.question","t":"Languages that compile to JavaScript"},{"key":"tools.javascript_flavors.others","t":"Other JavaScript Flavors"},{"key":"tools.javascript_flavors.others.description","t":"Other answers (freeform field)."},{"key":"tools.runtimes","t":"JavaScript Runtimes"},{"key":"tools.runtimes.question","t":"Which engines/runtimes/execution environments do you regularly use?"},{"key":"tools.runtimes.others","t":"Other Runtimes"},{"key":"tools.runtimes.others.description","t":"Other answers (freeform field)."},{"key":"tools.package_registries","t":"Package Registries"},{"key":"tools.package_registries.question","t":"Which package registries do you regularly fetch packages from?"},{"key":"tools.package_registries.others","t":"Other Package Registries"},{"key":"tools.package_registries.others.description","t":"Other answers (freeform field)."},{"key":"tools.form_factors","t":"Testing Environments"},{"key":"tools.form_factors.description","t":"Which form factors or environments do you test on?"},{"key":"tools.backend_as_a_service","t":"Backend-as-a-Service Providers"},{"key":"tools.backend_as_a_service.question","t":"Services that host your data and offer a client API to access it."},{"key":"tools.backend_as_a_service.others","t":"Other BaaS Providers"},{"key":"tools.date_management","t":"Date Management"},{"key":"tools.date_management.question","t":"Libraries that help with date and timezone management."},{"key":"tools.date_management.others","t":"Other Date Management Libraries"},{"key":"tools.data_visualization","t":"Data Visualization"},{"key":"tools.data_visualization.question","t":"Which data visualization libraries do you use?"},{"key":"tools.data_visualization.prompt","t":"Libraries that help with charts and other data visualizations."},{"key":"tools.data_visualization.others","t":"Other Data Visualization Libraries"},{"key":"tools.graphics_animation","t":"Graphics & Animations","tHtml":"Graphics &amp; Animations","tClean":"Graphics & Animations"},{"key":"tools.graphics_animation.question","t":"Which graphics & animation libraries do you regularly use?","tHtml":"Which graphics &amp; animation libraries do you regularly use?","tClean":"Which graphics & animation libraries do you regularly use?"},{"key":"tools.graphics_animation.prompt","t":"Libraries dedicated to graphics and animation."},{"key":"tools.graphics_animation.others","t":"Other Graphics & Animations Libraries","tHtml":"Other Graphics &amp; Animations Libraries","tClean":"Other Graphics & Animations Libraries"},{"key":"tools.data_fetching","t":"Data Fetching"},{"key":"tools.data_fetching.question","t":"Libraries that manage data fetching and caching."},{"key":"tools.data_fetching.others","t":"Other Data Fetching Libraries"},{"key":"other_tools.libraries","t":"Libraries"},{"key":"tools_others.libraries","t":"Libraries"},{"key":"other_tools.libraries.description","t":"Which libraries do you regularly use?"},{"key":"other_tools.libraries.others","t":"Other Libraries"},{"key":"other_tools.libraries.others.description","t":"Other answers (freeform field)."},{"key":"other_tools.text_editors","t":"Text Editors"},{"key":"other_tools.text_editors.description","t":"Which text editor(s) do you regularly use?"},{"key":"other_tools.text_editors.others","t":"Other Text Editors"},{"key":"other_tools.text_editors.others.description","t":"Other answers (freeform field)."},{"key":"other_tools.utilities","t":"Utilities"},{"key":"other_tools.utilities.description","t":"Which utilities or tools do you regularly use?"},{"key":"other_tools.utilities.others","t":"Other Utilities"},{"key":"other_tools.utilities.others.description","t":"Other utilities (freeform field)."},{"key":"other_tools.browsers","t":"Browsers"},{"key":"other_tools.browsers.description","t":"Which browser(s) do you primarily work in during initial development?"},{"key":"other_tools.browsers.others","t":"Other Browsers"},{"key":"other_tools.browsers.others.description","t":"Other answers (freeform field)."},{"key":"other_tools.build_tools","t":"Build Tools"},{"key":"other_tools.build_tools.description","t":"Which build tools and bundlers have you used?"},{"key":"other_tools.build_tools.others","t":"Other Build Tools"},{"key":"other_tools.build_tools.others.description","t":"Other answers (freeform field)."},{"key":"other_tools.non_js_languages","t":"Non-JavaScript Languages"},{"key":"other_tools.non_js_languages.description","t":"Which other programming languages do you use?"},{"key":"other_tools.non_js_languages.others","t":"Other Languages"},{"key":"other_tools.non_js_languages.others.description","t":"Other answers (freeform field)."},{"key":"other_tools.javascript_flavors","t":"JavaScript Flavors"},{"key":"other_tools.javascript_flavors.description","t":"Languages that compile to JavaScript"},{"key":"other_tools.javascript_flavors.others","t":"Other JavaScript Flavors"},{"key":"other_tools.javascript_flavors.others.description","t":"Other answers (freeform field)."},{"key":"tools.backend_frameworks","t":"Back-end Frameworks"},{"key":"tools.backend_frameworks.question","t":"Which back-end frameworks do you use?"},{"key":"tools.backend_frameworks.description","t":"Frameworks for generating APIs and managing back-ends"},{"key":"tools.backend_frameworks.others","t":"Other Back-end Frameworks"},{"key":"other_tools.runtimes","t":"JavaScript Runtimes"},{"key":"other_tools.runtimes.description","t":"Which engines/runtimes/execution environments do you regularly use?"},{"key":"other_tools.runtimes.others","t":"Other Runtimes"},{"key":"other_tools.runtimes.others.description","t":"Other answers (freeform field)."},{"key":"other_tools.package_registries","t":"Package Registries"},{"key":"other_tools.package_registries.description","t":"Which package registries do you regularly fetch packages from?"},{"key":"other_tools.package_registries.others","t":"Other Package Registries"},{"key":"other_tools.package_registries.others.description","t":"Other answers (freeform field)."},{"key":"other_tools.form_factors","t":"undefined"},{"key":"other_tools.form_factors.description","t":"undefined"},{"key":"other_tools.backend_as_a_service","t":"Backend-as-a-Service Providers"},{"key":"other_tools.backend_as_a_service.description","t":"Services that host your data and offer a client API to access it."},{"key":"other_tools.backend_as_a_service.others","t":"Other BaaS Providers"},{"key":"other_tools.date_management","t":"Date Management"},{"key":"other_tools.date_management.description","t":"Libraries that help with date and timezone management."},{"key":"other_tools.date_management.others","t":"Other Date Management Libraries"},{"key":"other_tools.data_visualization","t":"Data Visualization"},{"key":"other_tools.data_visualization.description","t":"Which data visualization libraries do you use?"},{"key":"other_tools.data_visualization.others","t":"Other Data Visualization Libraries"},{"key":"other_tools.graphics_animation","t":"Graphics & Animations","tHtml":"Graphics &amp; Animations","tClean":"Graphics & Animations"},{"key":"other_tools.graphics_animation.description","t":"Which graphics & animation libraries do you regularly use?","tHtml":"Which graphics &amp; animation libraries do you regularly use?","tClean":"Which graphics & animation libraries do you regularly use?"},{"key":"other_tools.graphics_animation.others","t":"Other Graphics & Animations Libraries","tHtml":"Other Graphics &amp; Animations Libraries","tClean":"Other Graphics & Animations Libraries"},{"key":"other_tools.data_fetching","t":"Data Fetching"},{"key":"other_tools.data_fetching.description","t":"Libraries that manage data fetching and caching."},{"key":"other_tools.data_fetching.others","t":"Other Data Fetching Libraries"},{"key":"other_tools.backend_frameworks","t":"Back-end Frameworks"},{"key":"other_tools.backend_frameworks.description","t":"Frameworks for generating APIs and managing back-ends"},{"key":"other_tools.backend_frameworks.others","t":"Other Back-end Frameworks"},{"key":"tools.ai_tools","t":"AI Tools"},{"key":"tools.ai_tools.question","t":"Which of these AI tools do you regularly use to help you write code?"},{"key":"tools.hosting","t":"Hosting Services"},{"key":"tools.hosting.question","t":"Which of these services have you used to host JavaScript apps?"},{"key":"tools.mobile_desktop","t":"Mobile & Desktop","tHtml":"Mobile &amp; Desktop","tClean":"Mobile & Desktop"},{"key":"other_tools.mobile_desktop","t":"Mobile & Desktop","tHtml":"Mobile &amp; Desktop","tClean":"Mobile & Desktop"},{"key":"tools_others.mobile_desktop","t":"Mobile & Desktop","tHtml":"Mobile &amp; Desktop","tClean":"Mobile & Desktop"},{"key":"tools.mobile_desktop.question","t":"Which of these mobile or desktop app frameworks do you regularly use?"},{"key":"tools.monorepo_tools.question","t":"Which of these monorepo tools do you regularly use?"},{"key":"ai_usage.ai_impact_on_js_ecosystem","t":"AI Impact"},{"key":"ai_usage.ai_impact_on_js_ecosystem.question","t":"How would you evaluate the overall impact of AI on the JavaScript/TypeScript ecosystem?"},{"key":"usage.js_app_patterns","t":"Application Patterns"},{"key":"usage.js_app_patterns.question","t":"Which of the following architecture and rendering patterns have you used **in the last year**?","tHtml":"Which of the following architecture and rendering patterns have you used <strong>in the last year</strong>?","tClean":"Which of the following architecture and rendering patterns have you used in the last year?"},{"key":"usage.js_app_patterns.others","t":"Other App Patterns"},{"key":"options.js_app_patterns.single_page_app","t":"Single Page Application (SPA)"},{"key":"options.js_app_patterns.single_page_app.description","t":"Apps that run entirely in the browser"},{"key":"options.js_app_patterns.multiple_page_app","t":"Multi-Page Application (MPA)"},{"key":"options.js_app_patterns.multiple_page_app.description","t":"Apps that run entirely on the server, with minimal client-side dynamic behavior"},{"key":"options.js_app_patterns.static_site_generation","t":"Static Site Generation (SSG)"},{"key":"options.js_app_patterns.static_site_generation.description","t":"Static content pre-rendered at build time, with or without a client-side dynamic element"},{"key":"options.js_app_patterns.server_side_rendering","t":"Server-Side Rendering (SSR)"},{"key":"options.js_app_patterns.server_side_rendering.description","t":"Dynamically rendering HTML content on the server on request, before rehydrating it on the client"},{"key":"options.js_app_patterns.partial_hydration","t":"Partial Hydration"},{"key":"options.js_app_patterns.partial_hydration.description","t":"Only hydrating some of your components on the client (e.g. React Server Components)"},{"key":"options.js_app_patterns.progressive_rehydration","t":"Progressive Hydration"},{"key":"options.js_app_patterns.progressive_rehydration.description","t":"Controlling the order of component hydration on the client"},{"key":"options.js_app_patterns.islands_architecture","t":"Islands Architecture"},{"key":"options.js_app_patterns.islands_architecture.description","t":"Isolated islands of dynamic behavior with multiple entry points in an otherwise static site (Astro, Eleventy)"},{"key":"options.js_app_patterns.progressive_enhancement","t":"Progressive Enhancement"},{"key":"options.js_app_patterns.progressive_enhancement.description","t":"Making sure an app is functional even without JavaScript"},{"key":"options.js_app_patterns.incremental_static_generation","t":"Incremental Static Generation"},{"key":"options.js_app_patterns.incremental_static_generation.description","t":"Being able to dynamically augment or modify a static site even after the initial build (Next.js ISR & on-demand revalidation, Gatsby DSG)","tHtml":"Being able to dynamically augment or modify a static site even after the initial build (Next.js ISR &amp; on-demand revalidation, Gatsby DSG)","tClean":"Being able to dynamically augment or modify a static site even after the initial build (Next.js ISR & on-demand revalidation, Gatsby DSG)"},{"key":"options.js_app_patterns.streaming_ssr","t":"Streaming SSR"},{"key":"options.js_app_patterns.streaming_ssr.description","t":"Breaking down server-rendered content in smaller streamed chunks"},{"key":"options.js_app_patterns.resumability","t":"Resumability"},{"key":"options.js_app_patterns.resumability.description","t":"Serializing framework state on the server so the client can resume execution with no duplicated code execution."},{"key":"options.js_app_patterns.edge_rendering","t":"Edge Rendering"},{"key":"options.js_app_patterns.edge_rendering.description","t":"Altering rendered HTML at the edge before sending it on to the client"},{"key":"options.js_app_patterns.partial_prerendering","t":"Partial Prerendering"},{"key":"options.js_app_patterns.partial_prerendering.description","t":"Render a route with a static loading shell, while keeping some parts dynamic"},{"key":"options.js_app_patterns.micro_frontend","t":"Micro Frontend"},{"key":"options.js_app_patterns.domain_driven_design","t":"Domain-Driven Design"},{"key":"options.js_app_patterns.serverless","t":"Serverless"},{"key":"options.js_app_patterns.pespa","t":"PESPA"},{"key":"usage.what_do_you_use_js_for","t":"Use Case"},{"key":"usage.what_do_you_use_js_for.question","t":"What do you use JavaScript for?"},{"key":"usage.what_do_you_use_js_for.others","t":"Other JavaScript Use Cases"},{"key":"usage.js_ts_balance","t":"JavaScript/TypeScript Balance"},{"key":"usage.js_ts_balance.question","t":"How do you divide your time between writing JavaScript and TypeScript code?"},{"key":"options.js_ts_balance.0","t":"0% TS"},{"key":"options.js_ts_balance.1","t":"|"},{"key":"options.js_ts_balance.2","t":"|"},{"key":"options.js_ts_balance.3","t":"|"},{"key":"options.js_ts_balance.4","t":"50/50"},{"key":"options.js_ts_balance.5","t":"|"},{"key":"options.js_ts_balance.6","t":"|"},{"key":"options.js_ts_balance.7","t":"|"},{"key":"options.js_ts_balance.8","t":"100% TS"},{"key":"usage.compiled_code_balance","t":"Compiled Code Balance"},{"key":"usage.compiled_code_balance.question","t":"What proportion of the JavaScript code you write for the browser goes through a build step?"},{"key":"usage.compiled_code_balance.prompt","t":"Any bundled, minified, or otherwise transformed code, as opposed to code directly executed by the browser."},{"key":"options.compiled_code_balance.0","t":"0% Compiled"},{"key":"options.compiled_code_balance.1","t":"|"},{"key":"options.compiled_code_balance.2","t":"|"},{"key":"options.compiled_code_balance.3","t":"|"},{"key":"options.compiled_code_balance.4","t":"50%"},{"key":"options.compiled_code_balance.5","t":"|"},{"key":"options.compiled_code_balance.6","t":"|"},{"key":"options.compiled_code_balance.7","t":"|"},{"key":"options.compiled_code_balance.8","t":"100% Compiled"},{"key":"usage.build_step_advantages","t":"Build Step Advantages"},{"key":"usage.build_step_advantages.question","t":"What do you feel are the main advantages resulting from using a build step?"},{"key":"usage.build_step_advantages.prompt","t":"Any code bundling, minifying, etc., as opposed to code directly executed by the browser."},{"key":"options.build_step_advantages.types","t":"Static typing"},{"key":"options.build_step_advantages.types.description","t":"TypeScript, etc."},{"key":"options.build_step_advantages.developer_experience","t":"Better development experience"},{"key":"options.build_step_advantages.developer_experience.description","t":"Hot Module Reloading, etc."},{"key":"options.build_step_advantages.transpilation","t":"Template/component transpilation"},{"key":"options.build_step_advantages.transpilation.description","t":"JSX, Vue components, Svelte components, etc."},{"key":"options.build_step_advantages.bundling","t":"Bundling"},{"key":"options.build_step_advantages.bundling.description","t":"Bundling multiple files into a single payload."},{"key":"options.build_step_advantages.optimization","t":"Code optimization"},{"key":"options.build_step_advantages.optimization.description","t":"Minification, tree-shaking, code splitting, etc."},{"key":"options.build_step_advantages.compatibility","t":"Browser compatibility"},{"key":"options.build_step_advantages.compatibility.description","t":"Polyfills, shims, etc."},{"key":"options.build_step_advantages.assets","t":"Asset processing"},{"key":"options.build_step_advantages.assets.description","t":"Handling non-JS assets such as CSS, images, etc."},{"key":"options.build_step_advantages.linting","t":"Linting"},{"key":"options.build_step_advantages.linting.description","t":"Enforcing linters, formatters, etc."},{"key":"options.build_step_advantages.environment_support","t":"Environment management"},{"key":"options.build_step_advantages.environment_support.description","t":"Support for environment variables, different configurations, etc."},{"key":"options.build_step_advantages.all_of_the_above","t":"All of the above"},{"key":"options.build_step_advantages.no_advantages","t":"No advantages"},{"key":"tools.edge_runtimes","t":"JavaScript Edge/Serverless Runtimes"},{"key":"tools.edge_runtimes.question","t":"Which edge or serverless runtimes do you regularly use?"},{"key":"tools.edge_runtimes.others","t":"Other Edge Runtimes"},{"key":"usage.usage_type","t":"Usage"},{"key":"usage.usage_type.question","t":"In what context do you primarily use JavaScript?"},{"key":"usage.usage_type.others","t":"Other Usages"},{"key":"opinions.pick_of_the_year","t":"Your “Pick of the Year”"},{"key":"opinions.pick_of_the_year.description","t":"The name of a feature, library, website, person, etc. you want to highlight this year."},{"key":"picks.state_of_js.intro","t":"We asked members of the JavaScript community to share their “pick of the year”"},{"key":"usage.industry_sector_js","t":"Industry Sector"},{"key":"usage.industry_sector_js.question","t":"Which industry sector(s) are you using JavaScript in?"},{"key":"usage.industry_sector_js.others","t":"Other Industry Sectors"},{"key":"usage.js_sugar_proposal","t":"JS0/JSSugar"},{"key":"usage.js_sugar_proposal.question","t":"What do you think about the recent JS0/JSSugar proposal?"},{"key":"usage.js_sugar_proposal.prompt","t":"This would offload new feature support to JSSugar, a version of JavaScript interpreted by build tools; while browsers would only support JS0, a subset of that language."},{"key":"options.js_sugar_proposal.strongly_oppose","t":"Strongly opposed"},{"key":"options.js_sugar_proposal.oppose","t":"Opposed"},{"key":"options.js_sugar_proposal.neutral","t":"Neutral"},{"key":"options.js_sugar_proposal.support","t":"Supportive"},{"key":"options.js_sugar_proposal.strongly_support","t":"Strongly supportive"},{"key":"usage.native_types_proposal","t":"Native Types"},{"key":"usage.native_types_proposal.question","t":"How would you like to see types implemented natively in JavaScript?"},{"key":"options.native_types_proposal.typescript_like_types","t":"As similar to TypeScript as possible"},{"key":"options.native_types_proposal.jsdoc_like_types","t":"Using comments, similar to JSDoc"},{"key":"options.native_types_proposal.no_types","t":"I would not like to see them implemented"},{"key":"options.native_types_proposal.runtime_types","t":"Runtime types"},{"key":"options.native_types_proposal.runtime_types.description","t":"Types that are parsed at runtime by the browser."},{"key":"options.native_types_proposal.type_annotations","t":"Type annotations"},{"key":"options.native_types_proposal.type_annotations.description","t":"Compiler-level TypeScript-like type annotations that get stripped during bundling."},{"key":"options.native_types_proposal.jsdoc_types","t":"JSDoc-like types"},{"key":"options.native_types_proposal.jsdoc_types.description","t":"JSDoc-like types written as code comments."},{"key":"options.native_types_proposal.no_opinion","t":"No opinion"},{"key":"usage.js_new_features","t":"New Proposals"},{"key":"usage.js_new_features.question","t":"Which of these JavaScript features or proposals are you most excited about?"},{"key":"usage.js_new_features.prompt","t":"Based on current State 2.7 & Stage 3 [TC39 ECMAScript proposals](https://github.com/tc39/proposals).","tHtml":"Based on current State 2.7 &amp; Stage 3 <a href=\"https://github.com/tc39/proposals\">TC39 ECMAScript proposals</a>.","tClean":"Based on current State 2.7 & Stage 3 TC39 ECMAScript proposals."},{"key":"usage.js_missing_features","t":"Missing Features"},{"key":"usage.js_missing_features.question","t":"Which of these features do you feel are currently missing from JavaScript?"},{"key":"opinions.js_moving_in_right_direction","t":"JavaScript is moving in the right direction"},{"key":"opinions.building_js_apps_overly_complex","t":"Building JavaScript apps is overly complex right now"},{"key":"opinions.js_over_used_online","t":"JavaScript is over-used online"},{"key":"opinions.enjoy_building_js_apps","t":"I enjoy building JavaScript apps"},{"key":"opinions.would_like_js_to_be_main_lang","t":"I would like JavaScript to be my main programming language"},{"key":"opinions.js_ecosystem_changing_to_fast","t":"Pace of Change"},{"key":"opinions.js_ecosystem_changing_to_fast.question","t":"The JavaScript ecosystem is changing too fast"},{"key":"opinions.prefer_no_build_step","t":"Build Step"},{"key":"opinions.prefer_no_build_step.question","t":"I would prefer using JavaScript with no build step"},{"key":"opinions_others.missing_from_js.others","t":"What do you feel is currently missing from JavaScript?"},{"key":"opinions_others.missing_from_js.others.description","t":"Features you'd like to see in JavaScript one day."},{"key":"happiness.front_end_frameworks","t":"How happy are you with the state of front end frameworks?"},{"key":"happiness.back_end_frameworks","t":"How happy are you with the state of back end frameworks?"},{"key":"happiness.testing","t":"How happy are you with the state of testing tools?"},{"key":"happiness.mobile_desktop","t":"How happy are you with the state of mobile & desktop frameworks?","tHtml":"How happy are you with the state of mobile &amp; desktop frameworks?","tClean":"How happy are you with the state of mobile & desktop frameworks?"},{"key":"happiness.build_tools","t":"How happy are you with the state of build tools?"},{"key":"happiness.monorepo_tools","t":"How happy are you with the state of monorepo tools?"},{"key":"happiness.rendering_frameworks","t":"How happy are you with the state of rendering frameworks?"},{"key":"happiness.state_of_the_web","t":"Web Technologies Happiness"},{"key":"happiness.state_of_the_web.question","t":"How happy are you with the general state of web technologies?"},{"key":"happiness.state_of_js","t":"JavaScript Happiness"},{"key":"happiness.state_of_js.question","t":"How happy are you with the general state of JavaScript?"},{"key":"usage.top_js_pain_points","t":"JavaScript Pain Points"},{"key":"usage.top_js_pain_points.question","t":"What aspects of JavaScript do you struggle with the most?"},{"key":"opinions.js_pain_points","t":"JavaScript Pain Points"},{"key":"opinions.js_pain_points.description","t":"For each matchup, pick the aspect of JavaScript you struggle with the most."},{"key":"opinions_others.js_pain_points.others","t":"Other JavaScript Pain Points"},{"key":"opinions.top_js_pain_points","t":"JavaScript Pain Points"},{"key":"opinions.top_js_pain_points.description","t":"Pick the top 3 aspects of JavaScript you struggle with the most."},{"key":"opinions_others.top_js_pain_points.others","t":"Other JavaScript Pain Points"},{"key":"opinions.top_js_pain_points.others","t":"Other JavaScript Pain Points"},{"key":"usage.top_currently_missing_from_js","t":"Missing Features"},{"key":"opinions.currently_missing_from_js","t":"What do you feel is currently missing from JavaScript?"},{"key":"opinions.currently_missing_from_js.description","t":"For each matchup, pick the feature you'd most like to be able to use in JavaScript today."},{"key":"opinions_others.currently_missing_from_js.others","t":"Other Missing Features"},{"key":"opinions.top_currently_missing_from_js","t":"What do you feel is currently missing from JavaScript?"},{"key":"opinions.top_currently_missing_from_js.description","t":"Pick the top 3 features you'd most like to be able to use in JavaScript today."},{"key":"opinions_others.top_currently_missing_from_js.others","t":"Other Missing Features"},{"key":"opinions.top_currently_missing_from_js.others","t":"Other Missing Features"},{"key":"js_pain_points.js_pain_points_wins","t":"JavaScript Pain Points"},{"key":"js_pain_points.js_pain_points_wins.description","t":"Which aspect of JavaScript do you struggle with the most? Results are ranked by number of tournament rounds won."},{"key":"js_pain_points.js_pain_points_matchups","t":"JavaScript Pain Points (Matchups)"},{"key":"js_pain_points.js_pain_points_matchups.description","t":"Which aspect of JavaScript do you struggle with the most? Percentage of rounds won by left-hand item against top-side item."},{"key":"currently_missing_from_js.currently_missing_from_js_wins","t":"Features Missing From JavaScript"},{"key":"currently_missing_from_js.currently_missing_from_js_wins.description","t":"Which feature would you most like to be able to use in JavaScript today? Results are ranked by number of tournament rounds won."},{"key":"currently_missing_from_js.currently_missing_from_js_matchups","t":"Features Missing From JavaScript (Matchups)"},{"key":"currently_missing_from_js.currently_missing_from_js_matchups.description","t":"Which feature would you most like to be able to use in JavaScript today? Percentage of rounds won by left-hand item against top-side item."},{"key":"usage.js_pace_of_change","t":"Pace of Change"},{"key":"usage.js_pace_of_change.question","t":"How well are you generally able to keep up with new JavaScript features, such as those mentioned in this survey?"},{"key":"options.js_pace_of_change.1","t":"I haven't learned about or tried out most features"},{"key":"options.js_pace_of_change.2","t":"I've learned about some of the features; but haven't tried them out"},{"key":"options.js_pace_of_change.3","t":"I've learned about and tried out some of the features"},{"key":"options.js_pace_of_change.4","t":"I've learned about most of the features and tried out some of them"},{"key":"options.js_pace_of_change.5","t":"I've learned about and tried out most of the features"},{"key":"resources.first_steps_js","t":"First Steps With JavaScript"},{"key":"resources.first_steps_js.description","t":"When first starting out, how did you initially learn JavaScript?"},{"key":"faq.who_should_take_survey_js","t":"Who should take this survey?"},{"key":"faq.who_should_take_survey_js.description","t":"This is an open survey for anybody who uses JavaScript (or TypeScript), whether regularly or occasionally, as part of their job, as a student, or just for fun!"},{"key":"faq.survey_goals_js","t":"What are the survey's goals?"},{"key":"faq.survey_goals_js.description","t":"The survey's goals are to measure awareness and popularity of JavaScript features and libraries in order to anticipate future trends."},{"key":"faq.data_used_js","t":"How will this data be used?"},{"key":"faq.data_used_js.description","t":"All data collected will be released publicly. It will then become a resources both for developers, who consult it to inform their technological choices, and browser vendors, who use it to prioritize focus areas and inform their roadmaps."},{"key":"tabs.top_features","t":"Top Features"},{"key":"tabs.top_languages","t":"Top Languages"},{"key":"sections.tshirt.description.state_of_js","t":"## Support the Survey With the State of JavaScript T-Shirt\n\nBetween the bad video quality, the bulky cassettes, and having to rewind, there's not much to miss about the VHS era. But one thing we *do* miss are the amazing 90s visuals that used to adorn blank VHS tapes. \n\nBut now, thanks to the talented Christopher Kirk-Nielsen you can enjoy all this retro radness while also celebrating your love for JavaScript at the same time!","tHtml":"<h2>Support the Survey With the State of JavaScript T-Shirt</h2>\n<p>Between the bad video quality, the bulky cassettes, and having to rewind, there's not much to miss about the VHS era. But one thing we <em>do</em> miss are the amazing 90s visuals that used to adorn blank VHS tapes. </p>\n<p>But now, thanks to the talented Christopher Kirk-Nielsen you can enjoy all this retro radness while also celebrating your love for JavaScript at the same time!</p>\n","tClean":"Support the Survey With the State of JavaScript T-Shirt\nBetween the bad video quality, the bulky cassettes, and having to rewind, there's not much to miss about the VHS era. But one thing we do miss are the amazing 90s visuals that used to adorn blank VHS tapes. \nBut now, thanks to the talented Christopher Kirk-Nielsen you can enjoy all this retro radness while also celebrating your love for JavaScript at the same time!\n"},{"key":"tools.monorepo_tools","t":"Monorepo Tools"},{"key":"other_tools.monorepo_tools","t":"Monorepo Tools"},{"key":"tools_others.monorepo_tools","t":"Monorepo Tools"},{"key":"front_end_frameworks.front_end_frameworks_ratios","t":"Front-end Frameworks Ratios Over Time"},{"key":"front_end_frameworks.front_end_frameworks_others","t":"Other Front-end Frameworks"},{"key":"front_end_frameworks.front_end_frameworks_happiness","t":"Front-end Frameworks Happiness"},{"key":"front_end_frameworks.front_end_frameworks_happiness.question","t":"On a scale of 1 (very unhappy) to 5 (very happy), how happy are you with the current state of front-end frameworks?"},{"key":"front_end_frameworks.front_end_frameworks_pain_points","t":"Front-end Frameworks Pain Points"},{"key":"front_end_frameworks.front_end_frameworks_pain_points.question","t":"What pain points have you encountered when using front-end frameworks?"},{"key":"meta_frameworks.meta_frameworks_ratios","t":"Meta-Frameworks Ratios Over Time"},{"key":"back_end_infrastructure.meta_frameworks_ratios","t":"Meta-Frameworks Ratios Over Time"},{"key":"meta_frameworks.meta_frameworks_others","t":"Other Meta-Frameworks"},{"key":"meta_frameworks.meta_frameworks_happiness","t":"Meta-Frameworks Happiness"},{"key":"meta_frameworks.meta_frameworks_pain_points","t":"Meta-Frameworks Pain Points"},{"key":"meta_frameworks.meta_frameworks_pain_points.question","t":"What pain points have you encountered when using meta-frameworks?"},{"key":"back_end_frameworks.back_end_frameworks_ratios","t":"Back-end Frameworks Ratios Over Time"},{"key":"back_end_frameworks.back_end_frameworks_others","t":"Other Back-end Frameworks"},{"key":"back_end_frameworks.back_end_frameworks_happiness","t":"Back-end Frameworks Happiness"},{"key":"back_end_frameworks.back_end_frameworks_pain_points","t":"Back-end Frameworks Pain Points"},{"key":"back_end_frameworks.back_end_frameworks_pain_points.question","t":"What pain points have you encountered when using back-end frameworks?"},{"key":"testing.testing_ratios","t":"Testing Tools Ratios Over Time"},{"key":"testing.testing_others","t":"Other Testing Tools"},{"key":"testing.testing_happiness","t":"Testing Tools Happiness"},{"key":"testing.testing_pain_points","t":"Testing Tools Pain Points"},{"key":"testing.testing_pain_points.question","t":"What pain points have you encountered when using testing tools?"},{"key":"mobile_desktop.mobile_desktop_pain_points.question","t":"What pain points have you encountered when using JavaScript to build mobile & desktop apps?","tHtml":"What pain points have you encountered when using JavaScript to build mobile &amp; desktop apps?","tClean":"What pain points have you encountered when using JavaScript to build mobile & desktop apps?"},{"key":"build_tools.build_tools_ratios","t":"Build Tools Ratios Over Time"},{"key":"build_tools.build_tools_others","t":"Other Build Tools"},{"key":"build_tools.build_tools_happiness","t":"Build Tools Happiness"},{"key":"build_tools.build_tools_pain_points","t":"Build Tools Pain Points"},{"key":"build_tools.build_tools_pain_points.question","t":"What pain points have you encountered when using build tools?"},{"key":"monorepo_tools.monorepo_tools_pain_points.question","t":"What pain points have you encountered when using monorepo tools?"},{"key":"other_tools.non_js_languages_features","t":"Non-JavaScript Features"},{"key":"tools_others.non_js_languages_features","t":"Non-JavaScript Features"},{"key":"other_tools.non_js_languages_features.question","t":"Which features from other programming languages do you wish JavaScript/TypeScript would adopt?"},{"key":"tools_others.non_js_languages_features.question","t":"Which features from other programming languages do you wish JavaScript/TypeScript would adopt?"},{"key":"other_tools.non_js_languages_features.prompt","t":"When possible, specify both the language and the feature, e.g. “Rust: pattern matching”"},{"key":"tools_others.non_js_languages_features.prompt","t":"When possible, specify both the language and the feature, e.g. “Rust: pattern matching”"},{"key":"tools_others.graphics_animation","t":"Graphics & Animations","tHtml":"Graphics &amp; Animations","tClean":"Graphics & Animations"},{"key":"tools_others.graphics_animation.question","t":"Which graphics & animation libraries do you regularly use?","tHtml":"Which graphics &amp; animation libraries do you regularly use?","tClean":"Which graphics & animation libraries do you regularly use?"},{"key":"tools_others.data_fetching","t":"Data Fetching"},{"key":"tools_others.data_fetching.question","t":"Libraries that manage data fetching and caching."},{"key":"back_end_infrastructure.build_tools","t":"Build Tools"},{"key":"back_end_infrastructure.build_tools.question","t":"Which build tools and bundlers have you used?"},{"key":"other_tools.ai_tools","t":"AI Tools"},{"key":"other_tools.ai_tools.question","t":"What AI tools or services have you used to help you write React code?"},{"key":"other_tools.hosting","t":"Hosting Services"},{"key":"tools_others.hosting","t":"Hosting Services"},{"key":"other_tools.hosting.question","t":"Which of these services have you used to host your React apps?"},{"key":"tools_others.hosting.question","t":"Which of these services have you used to host your React apps?"},{"key":"other_tools.mobile_desktop.question","t":"Which of these mobile or desktop app frameworks do you regularly use?"},{"key":"tools_others.mobile_desktop.question","t":"Which of these mobile or desktop app frameworks do you regularly use?"},{"key":"other_tools.monorepo_tools.question","t":"Which of these monorepo tools do you regularly use?"},{"key":"tools_others.monorepo_tools.question","t":"Which of these monorepo tools do you regularly use?"},{"key":"other_tools.edge_runtimes","t":"JavaScript Edge/Serverless Runtimes"},{"key":"tools_others.edge_runtimes","t":"JavaScript Edge/Serverless Runtimes"},{"key":"other_tools.edge_runtimes.question","t":"Which edge or serverless runtimes do you regularly use?"},{"key":"tools_others.edge_runtimes.question","t":"Which edge or serverless runtimes do you regularly use?"},{"key":"features.native_types_proposal","t":"Native Types"},{"key":"features.native_types_proposal.question","t":"How would you like to see types implemented natively in JavaScript?"},{"key":"features.js_new_features","t":"New Proposals"},{"key":"features.js_new_features.question","t":"Which of these JavaScript features or proposals are you most excited about?"},{"key":"features.js_new_features.prompt","t":"Based on current State 2.7 & Stage 3 [TC39 ECMAScript proposals](https://github.com/tc39/proposals).","tHtml":"Based on current State 2.7 &amp; Stage 3 <a href=\"https://github.com/tc39/proposals\">TC39 ECMAScript proposals</a>.","tClean":"Based on current State 2.7 & Stage 3 TC39 ECMAScript proposals."},{"key":"features.js_missing_features","t":"Missing Features"},{"key":"features.js_missing_features.question","t":"Which of these features do you feel are currently missing from JavaScript?"},{"key":"usage.js_ecosystem_changing_to_fast","t":"Pace of Change"},{"key":"usage.js_ecosystem_changing_to_fast.question","t":"The JavaScript ecosystem is changing too fast"},{"key":"usage.prefer_no_build_step","t":"Build Step"},{"key":"usage.prefer_no_build_step.question","t":"I would prefer using JavaScript with no build step"},{"key":"usage.state_of_the_web_happiness","t":"Web Technologies Happiness"},{"key":"usage.state_of_the_web_happiness.question","t":"How happy are you with the general state of web technologies?"},{"key":"usage.state_of_js_happiness","t":"JavaScript Happiness"},{"key":"usage.state_of_js_happiness.question","t":"How happy are you with the general state of JavaScript?"},{"key":"features.top_currently_missing_from_js","t":"Missing Features"},{"key":"usage.top_currently_missing_from_js.question","t":"What do you feel is currently missing from JavaScript?"},{"key":"features.top_currently_missing_from_js.question","t":"What do you feel is currently missing from JavaScript?"},{"key":"features.js_pace_of_change","t":"Pace of Change"},{"key":"features.js_pace_of_change.question","t":"How well are you generally able to keep up with new JavaScript features, such as those mentioned in this survey?"},{"key":"back_end_infrastructure.meta_frameworks_others","t":"Other Meta-Frameworks"},{"key":"back_end_infrastructure.hosting","t":"Hosting Services"},{"key":"back_end_infrastructure.hosting.question","t":"Which of these services have you used to host your React apps?"},{"key":"tools.monorepo_tools","t":"Monorepo Tools"},{"key":"other_tools.monorepo_tools","t":"Monorepo Tools"},{"key":"tools_others.monorepo_tools","t":"Monorepo Tools"},{"key":"front_end_frameworks.front_end_frameworks_ratios","t":"Front-end Frameworks Ratios Over Time"},{"key":"front_end_frameworks.front_end_frameworks_others","t":"Other Front-end Frameworks"},{"key":"front_end_frameworks.front_end_frameworks_others","t":"Other Front-end Frameworks"},{"key":"front_end_frameworks.front_end_frameworks_happiness","t":"Front-end Frameworks Happiness"},{"key":"front_end_frameworks.front_end_frameworks_happiness.question","t":"On a scale of 1 (very unhappy) to 5 (very happy), how happy are you with the current state of front-end frameworks?"},{"key":"front_end_frameworks.front_end_frameworks_pain_points","t":"Front-end Frameworks Pain Points"},{"key":"front_end_frameworks.front_end_frameworks_pain_points.question","t":"What pain points have you encountered when using front-end frameworks?"},{"key":"meta_frameworks.meta_frameworks_ratios","t":"Meta-Frameworks Ratios Over Time"},{"key":"back_end_infrastructure.meta_frameworks_ratios","t":"Meta-Frameworks Ratios Over Time"},{"key":"meta_frameworks.meta_frameworks_others","t":"Other Meta-Frameworks"},{"key":"meta_frameworks.meta_frameworks_others","t":"Other Meta-Frameworks"},{"key":"meta_frameworks.meta_frameworks_happiness","t":"Meta-Frameworks Happiness"},{"key":"meta_frameworks.meta_frameworks_pain_points","t":"Meta-Frameworks Pain Points"},{"key":"meta_frameworks.meta_frameworks_pain_points.question","t":"What pain points have you encountered when using meta-frameworks?"},{"key":"back_end_frameworks.back_end_frameworks_ratios","t":"Back-end Frameworks Ratios Over Time"},{"key":"back_end_frameworks.back_end_frameworks_others","t":"Other Back-end Frameworks"},{"key":"meta_frameworks.meta_frameworks_others","t":"Other Meta-Frameworks"},{"key":"back_end_frameworks.back_end_frameworks_happiness","t":"Back-end Frameworks Happiness"},{"key":"back_end_frameworks.back_end_frameworks_pain_points","t":"Back-end Frameworks Pain Points"},{"key":"back_end_frameworks.back_end_frameworks_pain_points.question","t":"What pain points have you encountered when using back-end frameworks?"},{"key":"testing.testing_ratios","t":"Testing Tools Ratios Over Time"},{"key":"testing.testing_others","t":"Other Testing Tools"},{"key":"testing.testing_happiness","t":"Testing Tools Happiness"},{"key":"testing.testing_pain_points","t":"Testing Tools Pain Points"},{"key":"testing.testing_pain_points.question","t":"What pain points have you encountered when using testing tools?"},{"key":"mobile_desktop.mobile_desktop_pain_points.question","t":"What pain points have you encountered when using JavaScript to build mobile & desktop apps?","tHtml":"What pain points have you encountered when using JavaScript to build mobile &amp; desktop apps?","tClean":"What pain points have you encountered when using JavaScript to build mobile & desktop apps?"},{"key":"build_tools.build_tools_ratios","t":"Build Tools Ratios Over Time"},{"key":"build_tools.build_tools_others","t":"Other Build Tools"},{"key":"build_tools.build_tools_happiness","t":"Build Tools Happiness"},{"key":"build_tools.build_tools_pain_points","t":"Build Tools Pain Points"},{"key":"build_tools.build_tools_pain_points.question","t":"What pain points have you encountered when using build tools?"},{"key":"monorepo_tools.monorepo_tools_pain_points.question","t":"What pain points have you encountered when using monorepo tools?"},{"key":"other_tools.non_js_languages_features","t":"Non-JavaScript Features"},{"key":"tools_others.non_js_languages_features","t":"Non-JavaScript Features"},{"key":"other_tools.non_js_languages_features.question","t":"Which features from other programming languages do you wish JavaScript/TypeScript would adopt?"},{"key":"tools_others.non_js_languages_features.question","t":"Which features from other programming languages do you wish JavaScript/TypeScript would adopt?"},{"key":"other_tools.non_js_languages_features.prompt","t":"When possible, specify both the language and the feature, e.g. “Rust: pattern matching”"},{"key":"tools_others.non_js_languages_features.prompt","t":"When possible, specify both the language and the feature, e.g. “Rust: pattern matching”"},{"key":"tools_others.graphics_animation","t":"Graphics & Animations","tHtml":"Graphics &amp; Animations","tClean":"Graphics & Animations"},{"key":"tools_others.graphics_animation.question","t":"Which graphics & animation libraries do you regularly use?","tHtml":"Which graphics &amp; animation libraries do you regularly use?","tClean":"Which graphics & animation libraries do you regularly use?"},{"key":"tools_others.data_fetching","t":"Data Fetching"},{"key":"tools_others.data_fetching.question","t":"Libraries that manage data fetching and caching."},{"key":"back_end_infrastructure.build_tools","t":"Build Tools"},{"key":"back_end_infrastructure.build_tools.question","t":"Which build tools and bundlers have you used?"},{"key":"tools_others.graphics_animation","t":"Graphics & Animations","tHtml":"Graphics &amp; Animations","tClean":"Graphics & Animations"},{"key":"tools_others.graphics_animation.question","t":"Which graphics & animation libraries do you regularly use?","tHtml":"Which graphics &amp; animation libraries do you regularly use?","tClean":"Which graphics & animation libraries do you regularly use?"},{"key":"tools_others.data_fetching","t":"Data Fetching"},{"key":"tools_others.data_fetching.question","t":"Libraries that manage data fetching and caching."},{"key":"other_tools.ai_tools","t":"AI Tools"},{"key":"other_tools.ai_tools.question","t":"Which of these AI tools do you regularly use to help you write code?"},{"key":"other_tools.hosting","t":"Hosting Services"},{"key":"tools_others.hosting","t":"Hosting Services"},{"key":"other_tools.hosting.question","t":"Which of these services have you used to host JavaScript apps?"},{"key":"tools_others.hosting.question","t":"Which of these services have you used to host JavaScript apps?"},{"key":"other_tools.mobile_desktop.question","t":"Which of these mobile or desktop app frameworks do you regularly use?"},{"key":"tools_others.mobile_desktop.question","t":"Which of these mobile or desktop app frameworks do you regularly use?"},{"key":"other_tools.monorepo_tools.question","t":"Which of these monorepo tools do you regularly use?"},{"key":"tools_others.monorepo_tools.question","t":"Which of these monorepo tools do you regularly use?"},{"key":"other_tools.edge_runtimes","t":"JavaScript Edge/Serverless Runtimes"},{"key":"tools_others.edge_runtimes","t":"JavaScript Edge/Serverless Runtimes"},{"key":"other_tools.edge_runtimes.question","t":"Which edge or serverless runtimes do you regularly use?"},{"key":"tools_others.edge_runtimes.question","t":"Which edge or serverless runtimes do you regularly use?"},{"key":"features.native_types_proposal","t":"Native Types"},{"key":"features.native_types_proposal.question","t":"How would you like to see types implemented natively in JavaScript?"},{"key":"features.js_new_features","t":"New Proposals"},{"key":"features.js_new_features.question","t":"Which of these JavaScript features or proposals are you most excited about?"},{"key":"features.js_new_features.prompt","t":"Based on current State 2.7 & Stage 3 [TC39 ECMAScript proposals](https://github.com/tc39/proposals).","tHtml":"Based on current State 2.7 &amp; Stage 3 <a href=\"https://github.com/tc39/proposals\">TC39 ECMAScript proposals</a>.","tClean":"Based on current State 2.7 & Stage 3 TC39 ECMAScript proposals."},{"key":"features.js_missing_features","t":"Missing Features"},{"key":"features.js_missing_features.question","t":"Which of these features do you feel are currently missing from JavaScript?"},{"key":"usage.js_ecosystem_changing_to_fast","t":"Pace of Change"},{"key":"usage.js_ecosystem_changing_to_fast.question","t":"The JavaScript ecosystem is changing too fast"},{"key":"usage.prefer_no_build_step","t":"Build Step"},{"key":"usage.prefer_no_build_step.question","t":"I would prefer using JavaScript with no build step"},{"key":"usage.state_of_the_web_happiness","t":"Web Technologies Happiness"},{"key":"usage.state_of_the_web_happiness.question","t":"How happy are you with the general state of web technologies?"},{"key":"usage.state_of_js_happiness","t":"JavaScript Happiness"},{"key":"usage.state_of_js_happiness.question","t":"How happy are you with the general state of JavaScript?"},{"key":"features.top_currently_missing_from_js","t":"Missing Features"},{"key":"usage.top_currently_missing_from_js.question","t":"What do you feel is currently missing from JavaScript?"},{"key":"features.top_currently_missing_from_js.question","t":"What do you feel is currently missing from JavaScript?"},{"key":"usage.top_currently_missing_from_js.question","t":"What do you feel is currently missing from JavaScript?"},{"key":"features.top_currently_missing_from_js.question","t":"What do you feel is currently missing from JavaScript?"},{"key":"features.js_pace_of_change","t":"Pace of Change"},{"key":"features.js_pace_of_change.question","t":"How well are you generally able to keep up with new JavaScript features, such as those mentioned in this survey?"},{"key":"options.js_pace_of_change.1","t":"I haven't learned about or tried out most features"},{"key":"options.js_pace_of_change.2","t":"I've learned about some of the features; but haven't tried them out"},{"key":"options.js_pace_of_change.3","t":"I've learned about and tried out some of the features"},{"key":"options.js_pace_of_change.4","t":"I've learned about most of the features and tried out some of them"},{"key":"options.js_pace_of_change.5","t":"I've learned about and tried out most of the features"},{"key":"tools.monorepo_tools","t":"Monorepo Tools"},{"key":"other_tools.monorepo_tools","t":"Monorepo Tools"},{"key":"tools_others.monorepo_tools","t":"Monorepo Tools"},{"key":"tools.monorepo_tools","t":"Monorepo Tools"},{"key":"other_tools.monorepo_tools","t":"Monorepo Tools"},{"key":"tools_others.monorepo_tools","t":"Monorepo Tools"},{"key":"tools.monorepo_tools","t":"Monorepo Tools"},{"key":"other_tools.monorepo_tools","t":"Monorepo Tools"},{"key":"tools_others.monorepo_tools","t":"Monorepo Tools"},{"key":"front_end_frameworks.front_end_frameworks_ratios","t":"Front-end Frameworks Ratios Over Time"},{"key":"front_end_frameworks.front_end_frameworks_others","t":"Other Front-end Frameworks"},{"key":"front_end_frameworks.front_end_frameworks_happiness","t":"Front-end Frameworks Happiness"},{"key":"front_end_frameworks.front_end_frameworks_happiness.question","t":"On a scale of 1 (very unhappy) to 5 (very happy), how happy are you with the current state of front-end frameworks?"},{"key":"front_end_frameworks.front_end_frameworks_pain_points","t":"Front-end Frameworks Pain Points"},{"key":"front_end_frameworks.front_end_frameworks_pain_points.question","t":"What pain points have you encountered when using front-end frameworks?"},{"key":"meta_frameworks.meta_frameworks_ratios","t":"Meta-Frameworks Ratios Over Time"},{"key":"back_end_infrastructure.meta_frameworks_ratios","t":"Meta-Frameworks Ratios Over Time"},{"key":"meta_frameworks.meta_frameworks_ratios","t":"Meta-Frameworks Ratios Over Time"},{"key":"back_end_infrastructure.meta_frameworks_ratios","t":"Meta-Frameworks Ratios Over Time"},{"key":"meta_frameworks.meta_frameworks_others","t":"Other Meta-Frameworks"},{"key":"meta_frameworks.meta_frameworks_happiness","t":"Meta-Frameworks Happiness"},{"key":"meta_frameworks.meta_frameworks_pain_points","t":"Meta-Frameworks Pain Points"},{"key":"meta_frameworks.meta_frameworks_pain_points.question","t":"What pain points have you encountered when using meta-frameworks?"},{"key":"back_end_frameworks.back_end_frameworks_ratios","t":"Back-end Frameworks Ratios Over Time"},{"key":"back_end_frameworks.back_end_frameworks_others","t":"Other Back-end Frameworks"},{"key":"back_end_frameworks.back_end_frameworks_happiness","t":"Back-end Frameworks Happiness"},{"key":"back_end_frameworks.back_end_frameworks_pain_points","t":"Back-end Frameworks Pain Points"},{"key":"back_end_frameworks.back_end_frameworks_pain_points.question","t":"What pain points have you encountered when using back-end frameworks?"},{"key":"testing.testing_ratios","t":"Testing Tools Ratios Over Time"},{"key":"testing.testing_others","t":"Other Testing Tools"},{"key":"testing.testing_happiness","t":"Testing Tools Happiness"},{"key":"testing.testing_pain_points","t":"Testing Tools Pain Points"},{"key":"testing.testing_pain_points.question","t":"What pain points have you encountered when using testing tools?"},{"key":"mobile_desktop.mobile_desktop_pain_points.question","t":"What pain points have you encountered when using JavaScript to build mobile & desktop apps?","tHtml":"What pain points have you encountered when using JavaScript to build mobile &amp; desktop apps?","tClean":"What pain points have you encountered when using JavaScript to build mobile & desktop apps?"},{"key":"build_tools.build_tools_ratios","t":"Build Tools Ratios Over Time"},{"key":"build_tools.build_tools_others","t":"Other Build Tools"},{"key":"build_tools.build_tools_happiness","t":"Build Tools Happiness"},{"key":"build_tools.build_tools_pain_points","t":"Build Tools Pain Points"},{"key":"build_tools.build_tools_pain_points.question","t":"What pain points have you encountered when using build tools?"},{"key":"monorepo_tools.monorepo_tools_pain_points.question","t":"What pain points have you encountered when using monorepo tools?"},{"key":"other_tools.non_js_languages_features","t":"Non-JavaScript Features"},{"key":"tools_others.non_js_languages_features","t":"Non-JavaScript Features"},{"key":"other_tools.non_js_languages_features","t":"Non-JavaScript Features"},{"key":"tools_others.non_js_languages_features","t":"Non-JavaScript Features"},{"key":"other_tools.non_js_languages_features.question","t":"Which features from other programming languages do you wish JavaScript/TypeScript would adopt?"},{"key":"tools_others.non_js_languages_features.question","t":"Which features from other programming languages do you wish JavaScript/TypeScript would adopt?"},{"key":"other_tools.non_js_languages_features.question","t":"Which features from other programming languages do you wish JavaScript/TypeScript would adopt?"},{"key":"tools_others.non_js_languages_features.question","t":"Which features from other programming languages do you wish JavaScript/TypeScript would adopt?"},{"key":"other_tools.non_js_languages_features.prompt","t":"When possible, specify both the language and the feature, e.g. “Rust: pattern matching”"},{"key":"tools_others.non_js_languages_features.prompt","t":"When possible, specify both the language and the feature, e.g. “Rust: pattern matching”"},{"key":"other_tools.non_js_languages_features.prompt","t":"When possible, specify both the language and the feature, e.g. “Rust: pattern matching”"},{"key":"tools_others.non_js_languages_features.prompt","t":"When possible, specify both the language and the feature, e.g. “Rust: pattern matching”"},{"key":"tools_others.graphics_animation","t":"Graphics & Animations","tHtml":"Graphics &amp; Animations","tClean":"Graphics & Animations"},{"key":"tools_others.graphics_animation.question","t":"Which graphics & animation libraries do you regularly use?","tHtml":"Which graphics &amp; animation libraries do you regularly use?","tClean":"Which graphics & animation libraries do you regularly use?"},{"key":"tools_others.data_fetching","t":"Data Fetching"},{"key":"tools_others.data_fetching.question","t":"Libraries that manage data fetching and caching."},{"key":"back_end_infrastructure.build_tools","t":"Build Tools"},{"key":"back_end_infrastructure.build_tools.question","t":"Which build tools and bundlers have you used?"},{"key":"back_end_infrastructure.hosting","t":"Hosting Services"},{"key":"back_end_infrastructure.hosting","t":"Hosting Services"},{"key":"back_end_infrastructure.hosting.question","t":"Which of these services have you used to host your React apps?"},{"key":"back_end_infrastructure.hosting.question","t":"Which of these services have you used to host your React apps?"},{"key":"other_tools.mobile_desktop.question","t":"Which of these mobile or desktop app frameworks do you regularly use?"},{"key":"tools_others.mobile_desktop.question","t":"Which of these mobile or desktop app frameworks do you regularly use?"},{"key":"other_tools.mobile_desktop.question","t":"Which of these mobile or desktop app frameworks do you regularly use?"},{"key":"tools_others.mobile_desktop.question","t":"Which of these mobile or desktop app frameworks do you regularly use?"},{"key":"other_tools.monorepo_tools.question","t":"Which of these monorepo tools do you regularly use?"},{"key":"tools_others.monorepo_tools.question","t":"Which of these monorepo tools do you regularly use?"},{"key":"other_tools.monorepo_tools.question","t":"Which of these monorepo tools do you regularly use?"},{"key":"tools_others.monorepo_tools.question","t":"Which of these monorepo tools do you regularly use?"},{"key":"other_tools.edge_runtimes","t":"JavaScript Edge/Serverless Runtimes"},{"key":"tools_others.edge_runtimes","t":"JavaScript Edge/Serverless Runtimes"},{"key":"other_tools.edge_runtimes","t":"JavaScript Edge/Serverless Runtimes"},{"key":"tools_others.edge_runtimes","t":"JavaScript Edge/Serverless Runtimes"},{"key":"other_tools.edge_runtimes.question","t":"Which edge or serverless runtimes do you regularly use?"},{"key":"tools_others.edge_runtimes.question","t":"Which edge or serverless runtimes do you regularly use?"},{"key":"other_tools.edge_runtimes.question","t":"Which edge or serverless runtimes do you regularly use?"},{"key":"tools_others.edge_runtimes.question","t":"Which edge or serverless runtimes do you regularly use?"},{"key":"features.native_types_proposal","t":"Native Types"},{"key":"features.native_types_proposal.question","t":"How would you like to see types implemented natively in JavaScript?"},{"key":"features.js_new_features","t":"New Proposals"},{"key":"features.js_new_features.question","t":"Which of these JavaScript features or proposals are you most excited about?"},{"key":"features.js_new_features.prompt","t":"Based on current State 2.7 & Stage 3 [TC39 ECMAScript proposals](https://github.com/tc39/proposals).","tHtml":"Based on current State 2.7 &amp; Stage 3 <a href=\"https://github.com/tc39/proposals\">TC39 ECMAScript proposals</a>.","tClean":"Based on current State 2.7 & Stage 3 TC39 ECMAScript proposals."},{"key":"features.js_missing_features","t":"Missing Features"},{"key":"features.js_missing_features.question","t":"Which of these features do you feel are currently missing from JavaScript?"},{"key":"usage.js_ecosystem_changing_to_fast","t":"Pace of Change"},{"key":"usage.js_ecosystem_changing_to_fast.question","t":"The JavaScript ecosystem is changing too fast"},{"key":"usage.prefer_no_build_step","t":"Build Step"},{"key":"usage.prefer_no_build_step.question","t":"I would prefer using JavaScript with no build step"},{"key":"usage.state_of_the_web_happiness","t":"Web Technologies Happiness"},{"key":"usage.state_of_the_web_happiness.question","t":"How happy are you with the general state of web technologies?"},{"key":"usage.state_of_js_happiness","t":"JavaScript Happiness"},{"key":"usage.state_of_js_happiness.question","t":"How happy are you with the general state of JavaScript?"},{"key":"features.top_currently_missing_from_js","t":"Missing Features"},{"key":"usage.top_currently_missing_from_js.question","t":"What do you feel is currently missing from JavaScript?"},{"key":"features.top_currently_missing_from_js.question","t":"What do you feel is currently missing from JavaScript?"},{"key":"usage.top_currently_missing_from_js.question","t":"What do you feel is currently missing from JavaScript?"},{"key":"features.top_currently_missing_from_js.question","t":"What do you feel is currently missing from JavaScript?"},{"key":"features.js_pace_of_change","t":"Pace of Change"},{"key":"features.js_pace_of_change.question","t":"How well are you generally able to keep up with new JavaScript features, such as those mentioned in this survey?"},{"key":"meta_frameworks.meta_frameworks_others","t":"Other Meta-Frameworks"},{"key":"back_end_infrastructure.hosting","t":"Hosting Services"},{"key":"back_end_infrastructure.hosting.question","t":"Which of these services have you used to host your React apps?"},{"key":"options.features_categories.language","t":"Language"},{"key":"options.features_categories.browser_apis","t":"Browser APIs"},{"key":"options.features_categories.other_features","t":"Other Features"},{"key":"options.features_categories.language","t":"Language"},{"key":"options.features_categories.browser_apis","t":"Browser APIs"},{"key":"options.features_categories.other_features","t":"Other Features"},{"key":"finish.share_message.js2025","t":"The State of JS 2025 survey is now open! {link}"},{"key":"general.results.description.js2025","t":"The 2025 edition of the annual survey about the latest trends in the JavaScript ecosystem."},{"key":"general.js2025.survey_intro","t":"JavaScript, you OK? You've barely created any new front-end frameworks this year.\n\nAfter a decade of rapid iteration, it seems clear that the ecosystem has stabilized over the last few years. For example, did you know that “newcomer” Svelte is *9 years old*? Which, in JavaScript framework years, is basically ancient!\n\nInstead, the main battle has moved to the realm of meta-frameworks, with Astro making a serious attempt at Next.js's crown – while over in build-tool land, it seems only a matter of time until Vite overtakes webpack. \n\nOr maybe something else entirely will appear out of the Rust ecosystem and suddenly take over, bringing a premature end to our well-deserved era of peace and quiet.  \n\nWhatever happens, one thing's for sure: you can help us figure it all out by taking this year's State of JavaScript survey!","tHtml":"<p>JavaScript, you OK? You've barely created any new front-end frameworks this year.</p>\n<p>After a decade of rapid iteration, it seems clear that the ecosystem has stabilized over the last few years. For example, did you know that “newcomer” Svelte is <em>9 years old</em>? Which, in JavaScript framework years, is basically ancient!</p>\n<p>Instead, the main battle has moved to the realm of meta-frameworks, with Astro making a serious attempt at Next.js's crown – while over in build-tool land, it seems only a matter of time until Vite overtakes webpack. </p>\n<p>Or maybe something else entirely will appear out of the Rust ecosystem and suddenly take over, bringing a premature end to our well-deserved era of peace and quiet.  </p>\n<p>Whatever happens, one thing's for sure: you can help us figure it all out by taking this year's State of JavaScript survey!</p>\n","tClean":"JavaScript, you OK? You've barely created any new front-end frameworks this year.\nAfter a decade of rapid iteration, it seems clear that the ecosystem has stabilized over the last few years. For example, did you know that “newcomer” Svelte is 9 years old? Which, in JavaScript framework years, is basically ancient!\nInstead, the main battle has moved to the realm of meta-frameworks, with Astro making a serious attempt at Next.js's crown – while over in build-tool land, it seems only a matter of time until Vite overtakes webpack. \nOr maybe something else entirely will appear out of the Rust ecosystem and suddenly take over, bringing a premature end to our well-deserved era of peace and quiet.  \nWhatever happens, one thing's for sure: you can help us figure it all out by taking this year's State of JavaScript survey!\n"},{"key":"introduction.js2025","t":"When the long-awaited Nintendo Switch 2 recently came out, it had been eight years since the original Switch. \n\nCan you imagine what that must've been like for those poor game developers? Eight long years having to develop for the same platform, with no new APIs, no new capabilities, no new bugs, no new versions that break your build… Those poor souls!\n\nThankfully that's something *we* won't ever have to worry about, as the JavaScript gods continue to make sure that each successive year brings its new share of probl… I mean, *innovations*!\n\nSo join me once more to review these survey results and look back at 2025 had in store for us all.\n\n<span class=\"conclusion__byline\">– Sacha Greif</span>","tHtml":"<p>When the long-awaited Nintendo Switch 2 recently came out, it had been eight years since the original Switch. </p>\n<p>Can you imagine what that must've been like for those poor game developers? Eight long years having to develop for the same platform, with no new APIs, no new capabilities, no new bugs, no new versions that break your build… Those poor souls!</p>\n<p>Thankfully that's something <em>we</em> won't ever have to worry about, as the JavaScript gods continue to make sure that each successive year brings its new share of probl… I mean, <em>innovations</em>!</p>\n<p>So join me once more to review these survey results and look back at 2025 had in store for us all.</p>\n<p><span class=\"conclusion__byline\">– Sacha Greif</span></p>\n","tClean":"When the long-awaited Nintendo Switch 2 recently came out, it had been eight years since the original Switch. \nCan you imagine what that must've been like for those poor game developers? Eight long years having to develop for the same platform, with no new APIs, no new capabilities, no new bugs, no new versions that break your build… Those poor souls!\nThankfully that's something we won't ever have to worry about, as the JavaScript gods continue to make sure that each successive year brings its new share of probl… I mean, innovations!\nSo join me once more to review these survey results and look back at 2025 had in store for us all.\n– Sacha Greif\n"},{"key":"faq.how_long_will_survey_take_js2025","t":"How long will answering the survey take?"},{"key":"faq.how_long_will_survey_take_js2025.description","t":"Depending on how many questions you answer (all questions can be skipped), filling out the survey should take around 15-20 minutes."},{"key":"faq.survey_design_js2025","t":"How was this survey designed?"},{"key":"faq.survey_design_js2025.description","t":"This survey was designed as the results of an [open design process](https://github.com/Devographics/surveys/issues/307) involving browser vendors and the web development community.","tHtml":"This survey was designed as the results of an <a href=\"https://github.com/Devographics/surveys/issues/307\">open design process</a> involving browser vendors and the web development community.","tClean":"This survey was designed as the results of an open design process involving browser vendors and the web development community."},{"key":"faq.results_released_js2025","t":"When will the results be released?"},{"key":"faq.results_released_js2025.description","t":"The survey will run from October 1 to November 1, 2025, and the survey results will be released shortly after."},{"key":"overview_1_frontend_fatigue.js2025","t":"Front-end Frameworks"},{"key":"overview_2_whats_next.js2025","t":"Meta Frameworks"},{"key":"overview_3_back_in_business.js2025","t":"Back-end Frameworks"},{"key":"overview_4_build_it.js2025","t":"Build Tools"},{"key":"overview_5_static_typing.js2025","t":"Static Typing"},{"key":"overview_6_other_languages.js2025","t":"Other Languages"},{"key":"overview_7_conclusion.js2025","t":"### Now Open\n## State of React 2025","tHtml":"<h3>Now Open</h3>\n<h2>State of React 2025</h2>\n","tClean":"Now Open\nState of React 2025\n"},{"key":"features.js_new_features.takeaway.js2025","t":"While **Temporal** still tops the rankings, excitement is down from last year, which makes sense as it has begun its transition from theoretical proposal to actually being implemented in Firefox.","tHtml":"While <strong>Temporal</strong> still tops the rankings, excitement is down from last year, which makes sense as it has begun its transition from theoretical proposal to actually being implemented in Firefox.","tClean":"While Temporal still tops the rankings, excitement is down from last year, which makes sense as it has begun its transition from theoretical proposal to actually being implemented in Firefox."},{"key":"features.top_currently_missing_from_js.takeaway.js2025","t":"No change in ranking in the top 5, but it's notable to see that interest in **Signals** did drop slightly compared to last year.","tHtml":"No change in ranking in the top 5, but it's notable to see that interest in <strong>Signals</strong> did drop slightly compared to last year.","tClean":"No change in ranking in the top 5, but it's notable to see that interest in Signals did drop slightly compared to last year."},{"key":"features.native_types_proposal.takeaway.js2025","t":"While 32% of respondents are hoping for in-browser **runtime types** support in JavaScript, if types are ever officially supported it seems much more likely to be through **TypeScript-like type annotations**, which came in at number one.","tHtml":"While 32% of respondents are hoping for in-browser <strong>runtime types</strong> support in JavaScript, if types are ever officially supported it seems much more likely to be through <strong>TypeScript-like type annotations</strong>, which came in at number one.","tClean":"While 32% of respondents are hoping for in-browser runtime types support in JavaScript, if types are ever officially supported it seems much more likely to be through TypeScript-like type annotations, which came in at number one."},{"key":"features.js_pace_of_change.takeaway.js2025","t":"This question's aim was to get a rough idea of how well respondents are keeping up with new features, and it shows that most of us struggle to learn about–let alone try out–new language features Hopefully this is something these survey results can help with!"},{"key":"features.reading_list.takeaway.js2025","t":"The **Reading List** lets respondents learn more about specific items post-survey, and this year we tweaked it to support auto-adding items based on survey answers, in addition to letting respondents select items manually.\nThis change led to a much more library-focused list, compared to previous years which included more features.","tHtml":"<p>The <strong>Reading List</strong> lets respondents learn more about specific items post-survey, and this year we tweaked it to support auto-adding items based on survey answers, in addition to letting respondents select items manually.\nThis change led to a much more library-focused list, compared to previous years which included more features.</p>\n","tClean":"The Reading List lets respondents learn more about specific items post-survey, and this year we tweaked it to support auto-adding items based on survey answers, in addition to letting respondents select items manually.\nThis change led to a much more library-focused list, compared to previous years which included more features.\n"},{"key":"libraries.all_tools_experience.takeaway.js2025","t":"**Vite** has been the most-loved library for a few years now, but it has now overtaken **React** to also become the #2 most-used item, and seems ready to take the top spot next year. \n\nMeanwhile, while **Next.js** is the 13th most-loved project, it's also the 5th most-hated, and generated the most comments overall–which goes to show just how polarizing the framework can be.","tHtml":"<p><strong>Vite</strong> has been the most-loved library for a few years now, but it has now overtaken <strong>React</strong> to also become the #2 most-used item, and seems ready to take the top spot next year. </p>\n<p>Meanwhile, while <strong>Next.js</strong> is the 13th most-loved project, it's also the 5th most-hated, and generated the most comments overall–which goes to show just how polarizing the framework can be.</p>\n","tClean":"Vite has been the most-loved library for a few years now, but it has now overtaken React to also become the #2 most-used item, and seems ready to take the top spot next year. \nMeanwhile, while Next.js is the 13th most-loved project, it's also the 5th most-hated, and generated the most comments overall–which goes to show just how polarizing the framework can be.\n"},{"key":"libraries.tools_arrows.takeaway.js2025","t":"JavaScript libraries commonly display a \"boomerang\" pattern over time: boosted by early positivity (line goes right), usage increases (line shoots up), but users then get confronted with more edge cases and real-world issues, and opinions can become more negative (line veers left).\n\nThis means any project that moves to the right (such as **Vue.js**) or even just stays vertical (such as **Astro**) is worth paying attention to!","tHtml":"<p>JavaScript libraries commonly display a \"boomerang\" pattern over time: boosted by early positivity (line goes right), usage increases (line shoots up), but users then get confronted with more edge cases and real-world issues, and opinions can become more negative (line veers left).</p>\n<p>This means any project that moves to the right (such as <strong>Vue.js</strong>) or even just stays vertical (such as <strong>Astro</strong>) is worth paying attention to!</p>\n","tClean":"JavaScript libraries commonly display a \"boomerang\" pattern over time: boosted by early positivity (line goes right), usage increases (line shoots up), but users then get confronted with more edge cases and real-world issues, and opinions can become more negative (line veers left).\nThis means any project that moves to the right (such as Vue.js) or even just stays vertical (such as Astro) is worth paying attention to!\n"},{"key":"libraries.tier_list.takeaway.js2025","t":"By having a satisfaction ratio above 90%, **Hono** and **Bun** make a well-deserved entrance into the S-tier this year.","tHtml":"By having a satisfaction ratio above 90%, <strong>Hono</strong> and <strong>Bun</strong> make a well-deserved entrance into the S-tier this year.","tClean":"By having a satisfaction ratio above 90%, Hono and Bun make a well-deserved entrance into the S-tier this year."},{"key":"libraries.tools_ratios_over_time.takeaway.js2025","t":"The prize for largest relative usage increase goes to **Vitest** and **Playwright**, which both gained **14** percentage points year-over-year. \n\nMeanwhile, **Rolldown** saw a huge increase in name recognition, going from **33%%* to **51%** awareness. And when looking at satisfaction, **Next.js** experienced the largest drop, going from **68%** to **55%**.\n\nFinally, it's also interesting to see that both **Preact** and **React** fare much better among respondents who have actually used them than those who have merely heard about the libraries (as shown in the Appreciation tab).","tHtml":"<p>The prize for largest relative usage increase goes to <strong>Vitest</strong> and <strong>Playwright</strong>, which both gained <strong>14</strong> percentage points year-over-year. </p>\n<p>Meanwhile, <strong>Rolldown</strong> saw a huge increase in name recognition, going from *<em>33%%</em> to <strong>51%</strong> awareness. And when looking at satisfaction, <strong>Next.js</strong> experienced the largest drop, going from <strong>68%</strong> to <strong>55%</strong>.</p>\n<p>Finally, it's also interesting to see that both <strong>Preact</strong> and <strong>React</strong> fare much better among respondents who have actually used them than those who have merely heard about the libraries (as shown in the Appreciation tab).</p>\n","tClean":"The prize for largest relative usage increase goes to Vitest and Playwright, which both gained 14 percentage points year-over-year. \nMeanwhile, Rolldown saw a huge increase in name recognition, going from *33%% to 51% awareness. And when looking at satisfaction, Next.js experienced the largest drop, going from 68% to 55%.\nFinally, it's also interesting to see that both Preact and React fare much better among respondents who have actually used them than those who have merely heard about the libraries (as shown in the Appreciation tab).\n"},{"key":"libraries.scatterplot_overview.takeaway.js2025","t":"With this year's inclusion of back-end frameworks, **Express** has joined **Vite**, **React**, and **Jest** in the coveted top-right quadrant. But **Vue.js**, **Storybook**, and **Vitest** are not far behind!","tHtml":"With this year's inclusion of back-end frameworks, <strong>Express</strong> has joined <strong>Vite</strong>, <strong>React</strong>, and <strong>Jest</strong> in the coveted top-right quadrant. But <strong>Vue.js</strong>, <strong>Storybook</strong>, and <strong>Vitest</strong> are not far behind!","tClean":"With this year's inclusion of back-end frameworks, Express has joined Vite, React, and Jest in the coveted top-right quadrant. But Vue.js, Storybook, and Vitest are not far behind!"},{"key":"front_end_frameworks.front_end_frameworks_ratios.takeaway.js2025","t":"For all the talk of the front-end ecosystem being in constant turmoil, things have been remarkably stable over the past year, with no change in usage rankings apart from **Alpine.js** and **HTMX** switching places.\n\nThe same is true when looking at satisfaction, with the exception of **Qwik** continuing to lose ranks.\n\nAnother place where that lack of new hype is apparent is the Interest tab, with no framework apart from **Solid** and **Preact** gaining ground since last year.","tHtml":"<p>For all the talk of the front-end ecosystem being in constant turmoil, things have been remarkably stable over the past year, with no change in usage rankings apart from <strong>Alpine.js</strong> and <strong>HTMX</strong> switching places.</p>\n<p>The same is true when looking at satisfaction, with the exception of <strong>Qwik</strong> continuing to lose ranks.</p>\n<p>Another place where that lack of new hype is apparent is the Interest tab, with no framework apart from <strong>Solid</strong> and <strong>Preact</strong> gaining ground since last year.</p>\n","tClean":"For all the talk of the front-end ecosystem being in constant turmoil, things have been remarkably stable over the past year, with no change in usage rankings apart from Alpine.js and HTMX switching places.\nThe same is true when looking at satisfaction, with the exception of Qwik continuing to lose ranks.\nAnother place where that lack of new hype is apparent is the Interest tab, with no framework apart from Solid and Preact gaining ground since last year.\n"},{"key":"front_end_frameworks.front_end_frameworks_others.takeaway.js2025","t":"Setting aside **Astro**, which doesn't quite belong to the front-end framework category, and **Ember**, which has been around for a while now, the most exciting new entrant here has to be **Ripple**, taking on the tough job of being the new kind on the front-end block.","tHtml":"Setting aside <strong>Astro</strong>, which doesn't quite belong to the front-end framework category, and <strong>Ember</strong>, which has been around for a while now, the most exciting new entrant here has to be <strong>Ripple</strong>, taking on the tough job of being the new kind on the front-end block.","tClean":"Setting aside Astro, which doesn't quite belong to the front-end framework category, and Ember, which has been around for a while now, the most exciting new entrant here has to be Ripple, taking on the tough job of being the new kind on the front-end block."},{"key":"front_end_frameworks.front_end_frameworks_cardinalities.takeaway.js2025","t":"The average respondent has only used **2.6** different front-end frameworks over their career, again showing that the image of the burned-out web developer jumping from framework to framework on a monthly basis isn't quite accurate anymore.","tHtml":"The average respondent has only used <strong>2.6</strong> different front-end frameworks over their career, again showing that the image of the burned-out web developer jumping from framework to framework on a monthly basis isn't quite accurate anymore.","tClean":"The average respondent has only used 2.6 different front-end frameworks over their career, again showing that the image of the burned-out web developer jumping from framework to framework on a monthly basis isn't quite accurate anymore."},{"key":"front_end_frameworks.front_end_frameworks_happiness.takeaway.js2025","t":"While in slight decline, front-end happiness has been remarkably stable over the years."},{"key":"front_end_frameworks.front_end_frameworks_pain_points.takeaway.js2025","t":"Being the dominant framework also means **React** tops the list of things front-end developers are struggling with. \n\nOther recurring issues include poor performance, state management, and just the sheer complexity of the modern front-end ecosystem.","tHtml":"<p>Being the dominant framework also means <strong>React</strong> tops the list of things front-end developers are struggling with. </p>\n<p>Other recurring issues include poor performance, state management, and just the sheer complexity of the modern front-end ecosystem.</p>\n","tClean":"Being the dominant framework also means React tops the list of things front-end developers are struggling with. \nOther recurring issues include poor performance, state management, and just the sheer complexity of the modern front-end ecosystem.\n"},{"key":"meta_frameworks.meta_frameworks_ratios.takeaway.js2025","t":"**Next.js** keeps on gaining ground and dominating the meta-framework category, yet paradoxically, it's also losing satisfaction at the exact same time. This is not a good sign, as its satisfaction ratio now has a **39%** gap with leader **Astro**.\n\nAnd one look at the Awareness chart is enough to see how dangerous of a competitor Astro really is, going from virtually unknown to serious contender in the span of just a few years.","tHtml":"<p><strong>Next.js</strong> keeps on gaining ground and dominating the meta-framework category, yet paradoxically, it's also losing satisfaction at the exact same time. This is not a good sign, as its satisfaction ratio now has a <strong>39%</strong> gap with leader <strong>Astro</strong>.</p>\n<p>And one look at the Awareness chart is enough to see how dangerous of a competitor Astro really is, going from virtually unknown to serious contender in the span of just a few years.</p>\n","tClean":"Next.js keeps on gaining ground and dominating the meta-framework category, yet paradoxically, it's also losing satisfaction at the exact same time. This is not a good sign, as its satisfaction ratio now has a 39% gap with leader Astro.\nAnd one look at the Awareness chart is enough to see how dangerous of a competitor Astro really is, going from virtually unknown to serious contender in the span of just a few years.\n"},{"key":"meta_frameworks.meta_frameworks_others.takeaway.js2025","t":"Many respondents questioned the absence of **TanStack Start** from the options offered in the survey. The reason is simply that at survey launch, the framework wasn't out of beta yet!\n\nThankfully respondents were able to rectify this omission by mentioning the project in the “other meta-frameworks” field, a clear signal that TanStack Start is going to make a very strong entrance in next year's ”official” rankings.","tHtml":"<p>Many respondents questioned the absence of <strong>TanStack Start</strong> from the options offered in the survey. The reason is simply that at survey launch, the framework wasn't out of beta yet!</p>\n<p>Thankfully respondents were able to rectify this omission by mentioning the project in the “other meta-frameworks” field, a clear signal that TanStack Start is going to make a very strong entrance in next year's ”official” rankings.</p>\n","tClean":"Many respondents questioned the absence of TanStack Start from the options offered in the survey. The reason is simply that at survey launch, the framework wasn't out of beta yet!\nThankfully respondents were able to rectify this omission by mentioning the project in the “other meta-frameworks” field, a clear signal that TanStack Start is going to make a very strong entrance in next year's ”official” rankings.\n"},{"key":"meta_frameworks.meta_frameworks_cardinalities.takeaway.js2025","t":"Respondents haven't used that many different meta-frameworks, which is to be expected in a category still dominated by just one or two solutions."},{"key":"meta_frameworks.meta_frameworks_happiness.takeaway.js2025","t":"It will be interesting to see if diminishing satisfaction with Next.js eventually translates into diminishing happiness overall, but so far at least that doesn't seem to be the case."},{"key":"meta_frameworks.meta_frameworks_pain_points.takeaway.js2025","t":"By their nature, meta-frameworks straddle the gap between client and server, which leads to a lot of complex issues. \n\nAnd while **Next.js** offers quite a few ways to address those issues, the downside of all that power is that its learning curve and overall developer experience can sometimes suffer.","tHtml":"<p>By their nature, meta-frameworks straddle the gap between client and server, which leads to a lot of complex issues. </p>\n<p>And while <strong>Next.js</strong> offers quite a few ways to address those issues, the downside of all that power is that its learning curve and overall developer experience can sometimes suffer.</p>\n","tClean":"By their nature, meta-frameworks straddle the gap between client and server, which leads to a lot of complex issues. \nAnd while Next.js offers quite a few ways to address those issues, the downside of all that power is that its learning curve and overall developer experience can sometimes suffer.\n"},{"key":"back_end_frameworks.back_end_frameworks_ratios.takeaway.js2025","t":"After three years of absence from the survey, it was high time we checked back on back-end frameworks. And no surprise here, **Express** is still the leader in terms of usage, even if **Nest** is progressing at a nice clip.\n\nBut things are more interesting when switching to the Satisfactiont tab, where the top three projects (**Hono**, **Nitro**, and **ElysiaJS**) are all new entrants, making this once of the most exciting categories to watch in years to come.","tHtml":"<p>After three years of absence from the survey, it was high time we checked back on back-end frameworks. And no surprise here, <strong>Express</strong> is still the leader in terms of usage, even if <strong>Nest</strong> is progressing at a nice clip.</p>\n<p>But things are more interesting when switching to the Satisfactiont tab, where the top three projects (<strong>Hono</strong>, <strong>Nitro</strong>, and <strong>ElysiaJS</strong>) are all new entrants, making this once of the most exciting categories to watch in years to come.</p>\n","tClean":"After three years of absence from the survey, it was high time we checked back on back-end frameworks. And no surprise here, Express is still the leader in terms of usage, even if Nest is progressing at a nice clip.\nBut things are more interesting when switching to the Satisfactiont tab, where the top three projects (Hono, Nitro, and ElysiaJS) are all new entrants, making this once of the most exciting categories to watch in years to come.\n"},{"key":"back_end_frameworks.back_end_frameworks_others.takeaway.js2025","t":"**oRPC** offers typesafe APIs, which is a big selling point compared to traditional back-end solutions created before the TypeScript sea change.","tHtml":"<strong>oRPC</strong> offers typesafe APIs, which is a big selling point compared to traditional back-end solutions created before the TypeScript sea change.","tClean":"oRPC offers typesafe APIs, which is a big selling point compared to traditional back-end solutions created before the TypeScript sea change."},{"key":"back_end_frameworks.back_end_frameworks_cardinalities.takeaway.js2025","t":"Respondents tend to use relatively few back-end frameworks, which might be why **Express** remains so dominant: once you've picked a back-end, you're unlikely to go out of your way to try out new options.","tHtml":"Respondents tend to use relatively few back-end frameworks, which might be why <strong>Express</strong> remains so dominant: once you've picked a back-end, you're unlikely to go out of your way to try out new options.","tClean":"Respondents tend to use relatively few back-end frameworks, which might be why Express remains so dominant: once you've picked a back-end, you're unlikely to go out of your way to try out new options."},{"key":"back_end_frameworks.back_end_frameworks_pain_points.takeaway.js2025","t":"While **Express* is still widely used *15 years* after its initial release, some are starting to wish the back-end ecosystem would move on to more modern alternatives. \n\nThis is especially true when it comes to providing typesafe, TypeScript-compatible APIs, which is something that venerable framework was never meant to do.","tHtml":"<p>While *<em>Express</em> is still widely used <em>15 years</em> after its initial release, some are starting to wish the back-end ecosystem would move on to more modern alternatives. </p>\n<p>This is especially true when it comes to providing typesafe, TypeScript-compatible APIs, which is something that venerable framework was never meant to do.</p>\n","tClean":"While *Express is still widely used 15 years after its initial release, some are starting to wish the back-end ecosystem would move on to more modern alternatives. \nThis is especially true when it comes to providing typesafe, TypeScript-compatible APIs, which is something that venerable framework was never meant to do.\n"},{"key":"testing.testing_ratios.takeaway.js2025","t":"While **Jest** has long enjoyed a comfortable spot as the most-used testing tool, **Vitest** is climbing the ranks so fast that it wouldn't be surprising to see it overtake it in the upcoming year, especially with Jest's satisfaction ratio trending down. \n\nMeanwhile, **Storybook** is an interesting case study in a project trying its best to address its users' frustrations. It's still showing a slight satisfaction loss compared to last year, but the rate of decline has slowed, and things might start looking up soon.","tHtml":"<p>While <strong>Jest</strong> has long enjoyed a comfortable spot as the most-used testing tool, <strong>Vitest</strong> is climbing the ranks so fast that it wouldn't be surprising to see it overtake it in the upcoming year, especially with Jest's satisfaction ratio trending down. </p>\n<p>Meanwhile, <strong>Storybook</strong> is an interesting case study in a project trying its best to address its users' frustrations. It's still showing a slight satisfaction loss compared to last year, but the rate of decline has slowed, and things might start looking up soon.</p>\n","tClean":"While Jest has long enjoyed a comfortable spot as the most-used testing tool, Vitest is climbing the ranks so fast that it wouldn't be surprising to see it overtake it in the upcoming year, especially with Jest's satisfaction ratio trending down. \nMeanwhile, Storybook is an interesting case study in a project trying its best to address its users' frustrations. It's still showing a slight satisfaction loss compared to last year, but the rate of decline has slowed, and things might start looking up soon.\n"},{"key":"testing.testing_others.takeaway.js2025","t":"While **Deno**'s test runner wasn't included in the survey's main options, it did come first in freeform mentions.","tHtml":"While <strong>Deno</strong>'s test runner wasn't included in the survey's main options, it did come first in freeform mentions.","tClean":"While Deno's test runner wasn't included in the survey's main options, it did come first in freeform mentions."},{"key":"testing.testing_cardinalities.takeaway.js2025","t":"While other categories so far have hovered around 1-2 tools used, when it comes to testing respondents averaged a whopping **4.4**, a sign that people may still be looking for that perfect test runner, and that things are far from settled in this area.","tHtml":"While other categories so far have hovered around 1-2 tools used, when it comes to testing respondents averaged a whopping <strong>4.4</strong>, a sign that people may still be looking for that perfect test runner, and that things are far from settled in this area.","tClean":"While other categories so far have hovered around 1-2 tools used, when it comes to testing respondents averaged a whopping 4.4, a sign that people may still be looking for that perfect test runner, and that things are far from settled in this area."},{"key":"testing.testing_happiness.takeaway.js2025","t":"Happiness remains stable, with a slight uptick over the past three years."},{"key":"testing.testing_pain_points.takeaway.js2025","t":"**Mocking** remains a major pain point for developers, with **configuration** and setup not far behind.","tHtml":"<strong>Mocking</strong> remains a major pain point for developers, with <strong>configuration</strong> and setup not far behind.","tClean":"Mocking remains a major pain point for developers, with configuration and setup not far behind."},{"key":"build_tools.build_tools_ratios.takeaway.js2025","t":"I really thought this would be the year **Vite** finally overtakes **webpack** to claim the spot of most-used build tools, but it looks like this might have to wait one more year. \n\n**Turbopack** is also showing a lot of progress in terms of usage, no doubt benefiting from being bundled with Next.js. That being said, similar to Next.js its satisfaction ratio is quite worrying.\n\n**Rolldown** on the other hand has gained satisfaction, and also comes first in terms of interest.\n\nFinally, **Bun** is doing quite well across all categories, which is quite an achievement for such a new and ambitious project.","tHtml":"<p>I really thought this would be the year <strong>Vite</strong> finally overtakes <strong>webpack</strong> to claim the spot of most-used build tools, but it looks like this might have to wait one more year. </p>\n<p><strong>Turbopack</strong> is also showing a lot of progress in terms of usage, no doubt benefiting from being bundled with Next.js. That being said, similar to Next.js its satisfaction ratio is quite worrying.</p>\n<p><strong>Rolldown</strong> on the other hand has gained satisfaction, and also comes first in terms of interest.</p>\n<p>Finally, <strong>Bun</strong> is doing quite well across all categories, which is quite an achievement for such a new and ambitious project.</p>\n","tClean":"I really thought this would be the year Vite finally overtakes webpack to claim the spot of most-used build tools, but it looks like this might have to wait one more year. \nTurbopack is also showing a lot of progress in terms of usage, no doubt benefiting from being bundled with Next.js. That being said, similar to Next.js its satisfaction ratio is quite worrying.\nRolldown on the other hand has gained satisfaction, and also comes first in terms of interest.\nFinally, Bun is doing quite well across all categories, which is quite an achievement for such a new and ambitious project.\n"},{"key":"build_tools.build_tools_others.takeaway.js2025","t":"Once again respondents mentioned **Deno**, making a strong case to include it in the main survey options in 2026.","tHtml":"Once again respondents mentioned <strong>Deno</strong>, making a strong case to include it in the main survey options in 2026.","tClean":"Once again respondents mentioned Deno, making a strong case to include it in the main survey options in 2026."},{"key":"build_tools.build_tools_cardinalities.takeaway.js2025","t":"Similar to testing tools, respondents have been trying out quite a few different build tools. It remains to be seen if **Vite** will make this a thing of the past.","tHtml":"Similar to testing tools, respondents have been trying out quite a few different build tools. It remains to be seen if <strong>Vite</strong> will make this a thing of the past.","tClean":"Similar to testing tools, respondents have been trying out quite a few different build tools. It remains to be seen if Vite will make this a thing of the past."},{"key":"build_tools.build_tools_happiness.takeaway.js2025","t":"Build tools happiness remains stable."},{"key":"build_tools.build_tools_pain_points.takeaway.js2025","t":"While Vite has certainly made things better, **configuration** and setup remain the most pressing issue when it comes to build tools.","tHtml":"While Vite has certainly made things better, <strong>configuration</strong> and setup remain the most pressing issue when it comes to build tools.","tClean":"While Vite has certainly made things better, configuration and setup remain the most pressing issue when it comes to build tools."},{"key":"other_tools.libraries.takeaway.js2025","t":"**Zod** saw a lot of growth year-over-year. And since many of the libraries featured here focus on date management, it'll be interesting to see how this chart evovles as **Temporal** becomes better-supported across browsers.","tHtml":"<strong>Zod</strong> saw a lot of growth year-over-year. And since many of the libraries featured here focus on date management, it'll be interesting to see how this chart evovles as <strong>Temporal</strong> becomes better-supported across browsers.","tClean":"Zod saw a lot of growth year-over-year. And since many of the libraries featured here focus on date management, it'll be interesting to see how this chart evovles as Temporal becomes better-supported across browsers."},{"key":"other_tools.graphics_animation.takeaway.js2025","t":"**Chart.js** was a write-in result last year, and being included as an official option this survey rocketed it all the way up to first place.","tHtml":"<strong>Chart.js</strong> was a write-in result last year, and being included as an official option this survey rocketed it all the way up to first place.","tClean":"Chart.js was a write-in result last year, and being included as an official option this survey rocketed it all the way up to first place."},{"key":"other_tools.utilities.takeaway.js2025","t":"Every self-respecting JavaScript developer these days seems to be using **ESLint** and **Prettier**.","tHtml":"Every self-respecting JavaScript developer these days seems to be using <strong>ESLint</strong> and <strong>Prettier</strong>.","tClean":"Every self-respecting JavaScript developer these days seems to be using ESLint and Prettier."},{"key":"other_tools.runtimes.takeaway.js2025","t":"**Node.js** and browsers taking the top spots isn't a big shock, but **Bun**'s third place is a nice sign of the project's growth.","tHtml":"<strong>Node.js</strong> and browsers taking the top spots isn't a big shock, but <strong>Bun</strong>'s third place is a nice sign of the project's growth.","tClean":"Node.js and browsers taking the top spots isn't a big shock, but Bun's third place is a nice sign of the project's growth."},{"key":"other_tools.hosting.takeaway.js2025","t":"Despite the company's sometimes-polarizing reputation, **Vercel** has done a pretty amazing job of establishing itself as a serious hosting option, second only to **AWS**.","tHtml":"Despite the company's sometimes-polarizing reputation, <strong>Vercel</strong> has done a pretty amazing job of establishing itself as a serious hosting option, second only to <strong>AWS</strong>.","tClean":"Despite the company's sometimes-polarizing reputation, Vercel has done a pretty amazing job of establishing itself as a serious hosting option, second only to AWS."},{"key":"other_tools.edge_runtimes.takeaway.js2025","t":"While **Cloudflare** was fifth in the hosting chart, it ranks just below **AWS Lambda** here, making it a serious contender in both spaces.","tHtml":"While <strong>Cloudflare</strong> was fifth in the hosting chart, it ranks just below <strong>AWS Lambda</strong> here, making it a serious contender in both spaces.","tClean":"While Cloudflare was fifth in the hosting chart, it ranks just below AWS Lambda here, making it a serious contender in both spaces."},{"key":"other_tools.text_editors.takeaway.js2025","t":"**VS Code** has long dominated the text editor ranks, but **Cursor** has somehow managed to outpace every other competitor thanks to its promise of AI-powered coding.","tHtml":"<strong>VS Code</strong> has long dominated the text editor ranks, but <strong>Cursor</strong> has somehow managed to outpace every other competitor thanks to its promise of AI-powered coding.","tClean":"VS Code has long dominated the text editor ranks, but Cursor has somehow managed to outpace every other competitor thanks to its promise of AI-powered coding."},{"key":"other_tools.mobile_desktop.takeaway.js2025","t":"**React Native** takes the lead here, but **Expo** and **Tauri** are also worth keeping an eye on!","tHtml":"<strong>React Native</strong> takes the lead here, but <strong>Expo</strong> and <strong>Tauri</strong> are also worth keeping an eye on!","tClean":"React Native takes the lead here, but Expo and Tauri are also worth keeping an eye on!"},{"key":"other_tools.monorepo_tools.takeaway.js2025","t":"**pnpm** is the clear leader in the monorepo category.","tHtml":"<strong>pnpm</strong> is the clear leader in the monorepo category.","tClean":"pnpm is the clear leader in the monorepo category."},{"key":"other_tools.non_js_languages.takeaway.js2025","t":"When we're not writing JavaScript, most of us turn to **Python** and **PHP**.","tHtml":"When we're not writing JavaScript, most of us turn to <strong>Python</strong> and <strong>PHP</strong>.","tClean":"When we're not writing JavaScript, most of us turn to Python and PHP."},{"key":"other_tools.non_js_languages_features_top_features.takeaway.js2025","t":"This year we also asked respondents which *features* they would like to see adopted in JavaScript, while also specifying the language that feature came from.\n\nThe second tab shows which languages appeared most frequently. And while **Rust** was only the 7th-most used language in the previous “Non-JavaScript Languages” chart, it came in first here, a testament to its outsized influenced on the JavaScript ecosystem.","tHtml":"<p>This year we also asked respondents which <em>features</em> they would like to see adopted in JavaScript, while also specifying the language that feature came from.</p>\n<p>The second tab shows which languages appeared most frequently. And while <strong>Rust</strong> was only the 7th-most used language in the previous “Non-JavaScript Languages” chart, it came in first here, a testament to its outsized influenced on the JavaScript ecosystem.</p>\n","tClean":"This year we also asked respondents which features they would like to see adopted in JavaScript, while also specifying the language that feature came from.\nThe second tab shows which languages appeared most frequently. And while Rust was only the 7th-most used language in the previous “Non-JavaScript Languages” chart, it came in first here, a testament to its outsized influenced on the JavaScript ecosystem.\n"},{"key":"usage.js_ts_balance.takeaway.js2025","t":"The proportion of developers who write the entirety of their code in TypeScript keeps increasing, and may soon represent a majority of respondents."},{"key":"usage.compiled_code_balance.takeaway.js2025","t":"A natural consequence of writing typed code (at least today) is depending on a build step, which is the case for the vast majority of us."},{"key":"usage.build_step_advantages.takeaway.js2025","t":"If we *did* want to envision a build-less future, the first step would no doubt be native type support in JavaScript.","tHtml":"If we <em>did</em> want to envision a build-less future, the first step would no doubt be native type support in JavaScript.","tClean":"If we did want to envision a build-less future, the first step would no doubt be native type support in JavaScript."},{"key":"usage.ai_generated_code_balance.takeaway.js2025","t":"While respondents do not yet produce a majority of their code with AI, the balance is quickly shifting, with code being the result of AI output increasing from 20% to 29% year-over-year."},{"key":"usage.what_do_you_use_js_for.takeaway.js2025","t":"Despite the ever-growing number of use cases for JavaScript, front-end develeopment remains the most common reason to use the language for now."},{"key":"usage.industry_sector.takeaway.js2025","t":"Given the survey's focus on upcoming trends and early-stage features, it makes sense that its largest audience block would be developers building tools and products for other programmers."},{"key":"usage.js_app_patterns.takeaway.js2025","t":"Modern JavaScript frameworks may now support a whole range of various rendering modes, but it turns out the simplest ones remain the most popular to this day."},{"key":"usage.top_js_pain_points.takeaway.js2025","t":"We now have pretty much all the tools we need; the challenge is to know how to use them right."},{"key":"usage.state_of_the_web_happiness.takeaway.js2025","t":"Happiness is once again stable."},{"key":"usage.state_of_js_happiness.takeaway.js2025","t":"Happiness levels remain constant once again."},{"key":"resources.courses.takeaway.js2025","t":"It's always interesting to see how independent developers such as **Wes Bos** and **Fireship** have managed to leverage their following into competing with much larger entities such as **Udemy** or **O'Reily**.","tHtml":"It's always interesting to see how independent developers such as <strong>Wes Bos</strong> and <strong>Fireship</strong> have managed to leverage their following into competing with much larger entities such as <strong>Udemy</strong> or <strong>O'Reily</strong>.","tClean":"It's always interesting to see how independent developers such as Wes Bos and Fireship have managed to leverage their following into competing with much larger entities such as Udemy or O'Reily."},{"key":"resources.newsletters.takeaway.js2025","t":"Newsletters lack the built-in sharing mechanisms of social media, so growing them can be quite tough. This explains why incumbents that have been around for a long time such as **JavaScript Weekly** and **CSS-Tricks** are still at the top of the rankings.","tHtml":"Newsletters lack the built-in sharing mechanisms of social media, so growing them can be quite tough. This explains why incumbents that have been around for a long time such as <strong>JavaScript Weekly</strong> and <strong>CSS-Tricks</strong> are still at the top of the rankings.","tClean":"Newsletters lack the built-in sharing mechanisms of social media, so growing them can be quite tough. This explains why incumbents that have been around for a long time such as JavaScript Weekly and CSS-Tricks are still at the top of the rankings."},{"key":"resources.podcasts.takeaway.js2025","t":"As the line between podcasts and video content becomes ever-blurrier, **Syntax** still maintains their spot as respondents' favorite programming-related audio source.","tHtml":"As the line between podcasts and video content becomes ever-blurrier, <strong>Syntax</strong> still maintains their spot as respondents' favorite programming-related audio source.","tClean":"As the line between podcasts and video content becomes ever-blurrier, Syntax still maintains their spot as respondents' favorite programming-related audio source."},{"key":"resources.video_creators.takeaway.js2025","t":"While these rankings can be very dependent on whether video creators shared the survey with their own audience or not, **Fireship**, **Theo**, and **The Primeagen** seem firmly entrenched as the top three figures of programming YouTube.","tHtml":"While these rankings can be very dependent on whether video creators shared the survey with their own audience or not, <strong>Fireship</strong>, <strong>Theo</strong>, and <strong>The Primeagen</strong> seem firmly entrenched as the top three figures of programming YouTube.","tClean":"While these rankings can be very dependent on whether video creators shared the survey with their own audience or not, Fireship, Theo, and The Primeagen seem firmly entrenched as the top three figures of programming YouTube."},{"key":"resources.people.takeaway.js2025","t":"While **Midudev** has his own large video presence and other “famous” developers are associated with successful open-source projects, it's worth noting that **Josh Comeau**'s well-deserved success comes down almost entirely to the quality of his excellent blog, a throwback to a more old-school way of creating instructional content online.","tHtml":"While <strong>Midudev</strong> has his own large video presence and other “famous” developers are associated with successful open-source projects, it's worth noting that <strong>Josh Comeau</strong>'s well-deserved success comes down almost entirely to the quality of his excellent blog, a throwback to a more old-school way of creating instructional content online.","tClean":"While Midudev has his own large video presence and other “famous” developers are associated with successful open-source projects, it's worth noting that Josh Comeau's well-deserved success comes down almost entirely to the quality of his excellent blog, a throwback to a more old-school way of creating instructional content online."},{"key":"resources.other_surveys.takeaway.js2025","t":"While filling out too many online surveys can do doubt lead to the dreaded “survey fatigue” (talk to your doctor!), when consumed in moderation they can still be a great tool to learn about the ecosystem."},{"key":"picks.my_pick.js2025","t":"My 2025 Pick:"},{"key":"picks.intro","t":"We asked members of the JavaScript community to share their “pick of the year”"},{"key":"picks.aurora_scharff.name","t":"Talk: Next.js at the speed of Bun"},{"key":"picks.aurora_scharff.bio","t":"Web Developer"},{"key":"picks.aurora_scharff.description","t":"My pick is Lydia Hallie's talk at Next.js Conf about Bun. They're working on super exciting things, and shes the best at explaining advanced topics :)"},{"key":"picks.ankita_kulkarni.name","t":"Delba Oliveira"},{"key":"picks.ankita_kulkarni.bio","t":"Tech Educator"},{"key":"picks.ankita_kulkarni.description","t":"My pick of the year is Delba Oliveira from the Next.js team. Her work across the ecosystem is remarkable. She has a rare ability to make complex topics feel simple while consistently delivering deeply practical guidance for modern Next.js, React and JS."},{"key":"picks.shaundai_person.name","t":"Bree Hall"},{"key":"picks.shaundai_person.bio","t":"Senior Software Engineer at Netflix"},{"key":"picks.shaundai_person.description","t":"My pick is Bree Hall, she's been doing great work and we're lucky to have her as part of the community."},{"key":"picks.sam_selikoff.name","t":"RSC Explorer"},{"key":"picks.sam_selikoff.bio","t":"Next.js team"},{"key":"picks.sam_selikoff.description","t":"Server Components extend the capabilities of server-rendered React by allowing you send not only inert HTML to the browser, but also data structures (objects, arrays, dates, maps), Promises (even recursive ones), new React trees (and their source code), and Server Function references. It's a serialization format, and Dan's RSC Explorer really helps you understand that."},{"key":"picks.sacha_greif.name","t":"Kit Langton"},{"key":"picks.sacha_greif.bio","t":"Devographics surveys creator"},{"key":"picks.sacha_greif.description","t":"Kit's site is an awesome showcase of projects combining beautiful visuals, great functionality, and amazing content especially around [TypeScript](https://types.kitlangton.com/) and the [Effect](https://www.effect.institute/) library.","tHtml":"Kit's site is an awesome showcase of projects combining beautiful visuals, great functionality, and amazing content especially around <a href=\"https://types.kitlangton.com/\">TypeScript</a> and the <a href=\"https://www.effect.institute/\">Effect</a> library.","tClean":"Kit's site is an awesome showcase of projects combining beautiful visuals, great functionality, and amazing content especially around TypeScript and the Effect library."},{"key":"picks.declan_chidlow.name","t":"Web Origami"},{"key":"picks.declan_chidlow.bio","t":"Front-end developer, designer, writer"},{"key":"picks.declan_chidlow.description","t":"Describing itself as “a concise dialect of JavaScript expressions”, Web Origami is a project that hit its stride in 2025. It offers a remarkably intuitive way to transform data, build websites, and call JavaScript directly from the shell. It connects expressions and paths to enable powerful, intuitive data manipulation."},{"key":"picks.jenn_schiffer.name","t":"The Atproto Dev Community"},{"key":"picks.jenn_schiffer.bio","t":"Reknowned candle-maker and karaoke professional"},{"key":"picks.jenn_schiffer.description","t":"I think the atproto dev community deserves a spotlight - one of the official SDKs is TypeScript! Also shout-out to [Jason Lengstorf](https://jason.energy/) and everyone else involved in [this](https://bsky.app/profile/codetv.dev/post/3lzgoi3nzh223).","tHtml":"I think the atproto dev community deserves a spotlight - one of the official SDKs is TypeScript! Also shout-out to <a href=\"https://jason.energy/\">Jason Lengstorf</a> and everyone else involved in <a href=\"https://bsky.app/profile/codetv.dev/post/3lzgoi3nzh223\">this</a>.","tClean":"I think the atproto dev community deserves a spotlight - one of the official SDKs is TypeScript! Also shout-out to Jason Lengstorf and everyone else involved in this."},{"key":"picks.michael_rambeau.name","t":"SST"},{"key":"picks.michael_rambeau.bio","t":"Creator, [BestOfJS](https://bestofjs.org/)","tHtml":"Creator, <a href=\"https://bestofjs.org/\">BestOfJS</a>","tClean":"Creator, BestOfJS"},{"key":"picks.michael_rambeau.description","t":"I didn't know about SST just a year ago, but I started using it for a new work project and it's been fanstastic! It really deserves more exposure."},{"key":"picks.adam_argyle.name","t":"Observable"},{"key":"picks.adam_argyle.bio","t":"Co-host, The CSS Podcast"},{"key":"picks.adam_argyle.description","t":"Observable lets you build interactive documents treating each block as a function that yields something. It's all async, super capable, fun as hell to make stuff in, and powers [Nerdy Notebook](http://nerdy.dev/notebook).","tHtml":"Observable lets you build interactive documents treating each block as a function that yields something. It's all async, super capable, fun as hell to make stuff in, and powers <a href=\"http://nerdy.dev/notebook\">Nerdy Notebook</a>.","tClean":"Observable lets you build interactive documents treating each block as a function that yields something. It's all async, super capable, fun as hell to make stuff in, and powers Nerdy Notebook."},{"key":"highlight.solid.html2025","t":"**Solid** may only be used by 10% of respondents, but the fact that it's had the highest satisfaction for *five years running* should be enough to make us pay attention to what it's doing. \n\n\nWhat's more, Solid creator [Ryan Carniato](https://dev.to/ryansolid) has been in large part responsible for popularizing concepts such as **signals**, and is one of the best at [explaining the intricacies](https://dev.to/this-is-learning/javascript-frameworks-heading-into-2026-2hel) of other front end frameworks, too.","tHtml":"<p><strong>Solid</strong> may only be used by 10% of respondents, but the fact that it's had the highest satisfaction for <em>five years running</em> should be enough to make us pay attention to what it's doing. </p>\n<p>What's more, Solid creator <a href=\"https://dev.to/ryansolid\">Ryan Carniato</a> has been in large part responsible for popularizing concepts such as <strong>signals</strong>, and is one of the best at <a href=\"https://dev.to/this-is-learning/javascript-frameworks-heading-into-2026-2hel\">explaining the intricacies</a> of other front end frameworks, too.</p>\n","tClean":"Solid may only be used by 10% of respondents, but the fact that it's had the highest satisfaction for five years running should be enough to make us pay attention to what it's doing. \nWhat's more, Solid creator Ryan Carniato has been in large part responsible for popularizing concepts such as signals, and is one of the best at explaining the intricacies of other front end frameworks, too.\n"},{"key":"highlight.astro.html2025","t":"**Astro** has taken a good look at what other static site generators were doing, taken the best ideas, and discarded the rest. The result is a framework that both feels simple and powerful at the same time, and has the top satisfaction ranking as a result. \n\n\nAnd having recently [joined forces with Cloudflare](https://blog.cloudflare.com/astro-joins-cloudflare/), it's exciting to think about what the Astro team will show us next!","tHtml":"<p><strong>Astro</strong> has taken a good look at what other static site generators were doing, taken the best ideas, and discarded the rest. The result is a framework that both feels simple and powerful at the same time, and has the top satisfaction ranking as a result. </p>\n<p>And having recently <a href=\"https://blog.cloudflare.com/astro-joins-cloudflare/\">joined forces with Cloudflare</a>, it's exciting to think about what the Astro team will show us next!</p>\n","tClean":"Astro has taken a good look at what other static site generators were doing, taken the best ideas, and discarded the rest. The result is a framework that both feels simple and powerful at the same time, and has the top satisfaction ranking as a result. \nAnd having recently joined forces with Cloudflare, it's exciting to think about what the Astro team will show us next!\n"},{"key":"highlight.elysia.html2025","t":"There are many back-end frameworks around, but **Elysia** stands out as the only one being built on top of [Bun](https://bun.com/). \n\n\nLeveraging a brand new runtime can be a risky bet, but given Bun's own growing popularity it looks like that bet might pay off. If anything, it's certainly proving to be an interesting experiment!","tHtml":"<p>There are many back-end frameworks around, but <strong>Elysia</strong> stands out as the only one being built on top of <a href=\"https://bun.com/\">Bun</a>. </p>\n<p>Leveraging a brand new runtime can be a risky bet, but given Bun's own growing popularity it looks like that bet might pay off. If anything, it's certainly proving to be an interesting experiment!</p>\n","tClean":"There are many back-end frameworks around, but Elysia stands out as the only one being built on top of Bun. \nLeveraging a brand new runtime can be a risky bet, but given Bun's own growing popularity it looks like that bet might pay off. If anything, it's certainly proving to be an interesting experiment!\n"},{"key":"highlight.bun_test.html2025","t":"After years of hoping for a more unified toolchain, it looks like JavaScript developers might finally be starting to get their wish. \n\n\n**Bun test** is just one example of a test runner being baked into the runtime, with [Node](https://nodejs.org/api/test.html) and [Deno](https://docs.deno.com/runtime/fundamentals/testing/) offering their own equivalents.","tHtml":"<p>After years of hoping for a more unified toolchain, it looks like JavaScript developers might finally be starting to get their wish. </p>\n<p><strong>Bun test</strong> is just one example of a test runner being baked into the runtime, with <a href=\"https://nodejs.org/api/test.html\">Node</a> and <a href=\"https://docs.deno.com/runtime/fundamentals/testing/\">Deno</a> offering their own equivalents.</p>\n","tClean":"After years of hoping for a more unified toolchain, it looks like JavaScript developers might finally be starting to get their wish. \nBun test is just one example of a test runner being baked into the runtime, with Node and Deno offering their own equivalents.\n"},{"key":"highlight.rolldown.html2025","t":"While the **Vite** team is mostly known for, well, Vite, it's also been quietly developing **Rolldown** as a faster, Rust-based bundler. \n\n\nAnd now that [Vite itself uses Rolldown](https://vite.dev/blog/announcing-vite8-beta), the project will no doubt take a central role in the build tool ecosystem.","tHtml":"<p>While the <strong>Vite</strong> team is mostly known for, well, Vite, it's also been quietly developing <strong>Rolldown</strong> as a faster, Rust-based bundler. </p>\n<p>And now that <a href=\"https://vite.dev/blog/announcing-vite8-beta\">Vite itself uses Rolldown</a>, the project will no doubt take a central role in the build tool ecosystem.</p>\n","tClean":"While the Vite team is mostly known for, well, Vite, it's also been quietly developing Rolldown as a faster, Rust-based bundler. \nAnd now that Vite itself uses Rolldown, the project will no doubt take a central role in the build tool ecosystem.\n"},{"key":"award.tool_usage_delta_award.comment","t":"**Vitest** and **Playwright** both gained **{value}** usage among respondents.","tHtml":"<strong>Vitest</strong> and <strong>Playwright</strong> both gained <strong>{value}</strong> usage among respondents.","tClean":"Vitest and Playwright both gained {value} usage among respondents."},{"key":"award.tool_satisfaction_award.comment","t":"Vite takes the top spot, with **{value}** of users having a positive opinion about it.","tHtml":"Vite takes the top spot, with <strong>{value}</strong> of users having a positive opinion about it.","tClean":"Vite takes the top spot, with {value} of users having a positive opinion about it."},{"key":"award.tool_interest_award.comment","t":"Once again **Vitest** is the technology developers are most interested in, with a **{value}** interest ratio.","tHtml":"Once again <strong>Vitest</strong> is the technology developers are most interested in, with a <strong>{value}</strong> interest ratio.","tClean":"Once again Vitest is the technology developers are most interested in, with a {value} interest ratio."},{"key":"award.most_write_ins_award.comment","t":"With **{value}** mentions, Node version manager **fnm** proves once again that everything is better when written in Rust.","tHtml":"With <strong>{value}</strong> mentions, Node version manager <strong>fnm</strong> proves once again that everything is better when written in Rust.","tClean":"With {value} mentions, Node version manager fnm proves once again that everything is better when written in Rust."},{"key":"award.most_commented_tool_award.comment","t":"With **{value}** comments from respondents, **Next.js** is certainly not leaving people indifferent.","tHtml":"With <strong>{value}</strong> comments from respondents, <strong>Next.js</strong> is certainly not leaving people indifferent.","tClean":"With {value} comments from respondents, Next.js is certainly not leaving people indifferent."},{"key":"award.most_loved_tool_award.comment","t":"With **{value}** of all developers having a positive opinion of it, Vite once more gets the prize for most-loved technology!","tHtml":"With <strong>{value}</strong> of all developers having a positive opinion of it, Vite once more gets the prize for most-loved technology!","tClean":"With {value} of all developers having a positive opinion of it, Vite once more gets the prize for most-loved technology!"},{"key":"award.feature_adoption_delta_award.comment","t":"With a **{value}** progression in 2022, **top-level await** has quickly become an integral part of JavaScript.","tHtml":"With a <strong>{value}</strong> progression in 2022, <strong>top-level await</strong> has quickly become an integral part of JavaScript.","tClean":"With a {value} progression in 2022, top-level await has quickly become an integral part of JavaScript."},{"key":"conclusion.js2025.daniel_roe","t":"<span class=\"first-line\">TypeScript has won.</span>\n\nNot as a bundler &ndash; but as a language. Deno and Bun (have) supported it for a long time. And now, type stripping means you can write it natively in stable Node.js versions. If types as comments makes it, you'll even be able to write in the browser.\n\n…and the day of Vite has come. This year, we saw Vite downloads surpass webpack's. And alongside it, Vitest usage has surged upwards. It seems like a good time to opt in to the new Vite toolchain, and 2026 promises to be the year that happens &ndash; with the stable release of Rolldown to power a new, faster Vite, as well as the promise of an all-in-one 'Vite+'.\n\nOur tools are better than ever. Yet the existential question we are all asking is quite different: what about AI?\n\nAI is poised to change how we consume documentation, write code, make architectural choices, and more. Companies are betting everything on new patterns of development. For the vast majority of us, coding agents are changing how we interface with our code.\n\nIs that a good thing?\n\nApparently by the end of 2025, just under 30% of code was AI-generated. Cursor and Zed are surging in popularity, even if they are far from dethroning VSCode as the most-used IDE. And agent-based approaches, like Claude, Gemini and Copilot are growing quickly.\n\nFor those of us who are developers, knowing what 'good' looks like will be more important than ever, whatever tools we use. Keeping on top of new language features will be more important. As will knowing what libraries to build on, rather than vibe coding everything from scratch.\n\nIt's already possible to spin up a new project in a day &ndash; or migrate an existing project easily. That's a challenge for framework and library authors. We need to make sure our tools continue to serve developers. We can't count on inertia.\n\nAnd that's a reason for all users to be optimistic.\n\nLet's see what 2026 brings. I'm hoping it will be faster tools, better developer experience, and the power of technology acting as a force multiplier to augment our own agency and choices.","tHtml":"<p><span class=\"first-line\">TypeScript has won.</span></p>\n<p>Not as a bundler – but as a language. Deno and Bun (have) supported it for a long time. And now, type stripping means you can write it natively in stable Node.js versions. If types as comments makes it, you'll even be able to write in the browser.</p>\n<p>…and the day of Vite has come. This year, we saw Vite downloads surpass webpack's. And alongside it, Vitest usage has surged upwards. It seems like a good time to opt in to the new Vite toolchain, and 2026 promises to be the year that happens – with the stable release of Rolldown to power a new, faster Vite, as well as the promise of an all-in-one 'Vite+'.</p>\n<p>Our tools are better than ever. Yet the existential question we are all asking is quite different: what about AI?</p>\n<p>AI is poised to change how we consume documentation, write code, make architectural choices, and more. Companies are betting everything on new patterns of development. For the vast majority of us, coding agents are changing how we interface with our code.</p>\n<p>Is that a good thing?</p>\n<p>Apparently by the end of 2025, just under 30% of code was AI-generated. Cursor and Zed are surging in popularity, even if they are far from dethroning VSCode as the most-used IDE. And agent-based approaches, like Claude, Gemini and Copilot are growing quickly.</p>\n<p>For those of us who are developers, knowing what 'good' looks like will be more important than ever, whatever tools we use. Keeping on top of new language features will be more important. As will knowing what libraries to build on, rather than vibe coding everything from scratch.</p>\n<p>It's already possible to spin up a new project in a day – or migrate an existing project easily. That's a challenge for framework and library authors. We need to make sure our tools continue to serve developers. We can't count on inertia.</p>\n<p>And that's a reason for all users to be optimistic.</p>\n<p>Let's see what 2026 brings. I'm hoping it will be faster tools, better developer experience, and the power of technology acting as a force multiplier to augment our own agency and choices.</p>\n","tClean":"TypeScript has won.\nNot as a bundler – but as a language. Deno and Bun (have) supported it for a long time. And now, type stripping means you can write it natively in stable Node.js versions. If types as comments makes it, you'll even be able to write in the browser.\n…and the day of Vite has come. This year, we saw Vite downloads surpass webpack's. And alongside it, Vitest usage has surged upwards. It seems like a good time to opt in to the new Vite toolchain, and 2026 promises to be the year that happens – with the stable release of Rolldown to power a new, faster Vite, as well as the promise of an all-in-one 'Vite+'.\nOur tools are better than ever. Yet the existential question we are all asking is quite different: what about AI?\nAI is poised to change how we consume documentation, write code, make architectural choices, and more. Companies are betting everything on new patterns of development. For the vast majority of us, coding agents are changing how we interface with our code.\nIs that a good thing?\nApparently by the end of 2025, just under 30% of code was AI-generated. Cursor and Zed are surging in popularity, even if they are far from dethroning VSCode as the most-used IDE. And agent-based approaches, like Claude, Gemini and Copilot are growing quickly.\nFor those of us who are developers, knowing what 'good' looks like will be more important than ever, whatever tools we use. Keeping on top of new language features will be more important. As will knowing what libraries to build on, rather than vibe coding everything from scratch.\nIt's already possible to spin up a new project in a day – or migrate an existing project easily. That's a challenge for framework and library authors. We need to make sure our tools continue to serve developers. We can't count on inertia.\nAnd that's a reason for all users to be optimistic.\nLet's see what 2026 brings. I'm hoping it will be faster tools, better developer experience, and the power of technology acting as a force multiplier to augment our own agency and choices.\n"},{"key":"conclusion.js2025.daniel_roe.bio","t":"Open source maintainer and founder, leading the Nuxt core team."},{"key":"about.content.js2025","t":"The 2025 State of JavaScript survey ran from September 24 to November 10 2025, and collected 13,002 responses. The results were published on February 3, 2026. The survey is run by [Devographics](https://devographics.com/).\n\nThe State of JavaScript logo and t-shirt were designed by [Christopher Kirk-Nielsen](http://chriskirknielsen.com/).\n\n### Survey Goals\n\nThis survey was created to identify upcoming trends in the web development ecosystem in order to help developers make technological choices. \n\nAs such, the survey is focused on anticipating what's coming over the next few years rather than analyzing what's popular now, which is why features or technologies may sometimes be omitted even if they are currently widespread \n\nIt should also be taken as a **snapshot of a specific subset of developers**, and is not meant to speak for the entire ecosystem. \n\n### Survey Design\n\nThe survey was designed in part based on last year's survey, with an open feedback period where the survey outline was discussed [on GitHub](https://github.com/Devographics/surveys/issues/255). \n\nAll survey questions were optional. \n\n### Survey Audience\n\nThe survey was openly accessible online and respondents were not filtered or selected in any way. Respondents were primarily a mix of respondents from past surveys (alerted through a dedicated mailing list) and social media traffic. \n\nNote that frameworks, libraries, etc. were free to encourage their audience to participate in the survey and some of them did take advantage of this via banners, tweets, etc. A detailed breakdown of traffic sources is included in the Metadata page's \"Sources\" chart. \n\n### Project Funding\n\nIn addition to t-shirt sales, funding for the project comes from the following sponsors:\n\n- [Google](https://www.google.com/chrome/?utm_source=stateofjs&utm_medium=website&utm_campaign=js2025)\n- [TokyoDev](https://www.tokyodev.com/?utm_source=stateofjs&utm_medium=website&utm_campaign=js2025)\n- [Frontend Masters](https://frontendmasters.com/?utm_source=stateofjs&utm_medium=website&utm_campaign=js2025)\n- [Algolia](https://www.algolia.com/?utm_source=stateofjs&utm_medium=website&utm_campaign=js2025)\n- [Storyblok](https://www.storyblok.com/?utm_source=stateofjs&utm_medium=website&utm_campaign=js2025)\n- [JetBrains](https://www.jetbrains.com/webstorm/?utm_source=stateofjs&utm_medium=website&utm_campaign=js2025)\n\nAny contribution or sponsorship is greatly appreciated. we would especially like to work closely with more browser vendors, since they play such a central role in the web ecosystem.  \n\n### Technical Overview\n\nYou can find a more in-depth technical overview of how the surveys are run [here](https://dev.to/sachagreif/how-the-devographics-surveys-are-run-2023-edition-1p6a).","tHtml":"<p>The 2025 State of JavaScript survey ran from September 24 to November 10 2025, and collected 13,002 responses. The results were published on February 3, 2026. The survey is run by <a href=\"https://devographics.com/\">Devographics</a>.</p>\n<p>The State of JavaScript logo and t-shirt were designed by <a href=\"http://chriskirknielsen.com/\">Christopher Kirk-Nielsen</a>.</p>\n<h3>Survey Goals</h3>\n<p>This survey was created to identify upcoming trends in the web development ecosystem in order to help developers make technological choices. </p>\n<p>As such, the survey is focused on anticipating what's coming over the next few years rather than analyzing what's popular now, which is why features or technologies may sometimes be omitted even if they are currently widespread </p>\n<p>It should also be taken as a <strong>snapshot of a specific subset of developers</strong>, and is not meant to speak for the entire ecosystem. </p>\n<h3>Survey Design</h3>\n<p>The survey was designed in part based on last year's survey, with an open feedback period where the survey outline was discussed <a href=\"https://github.com/Devographics/surveys/issues/255\">on GitHub</a>. </p>\n<p>All survey questions were optional. </p>\n<h3>Survey Audience</h3>\n<p>The survey was openly accessible online and respondents were not filtered or selected in any way. Respondents were primarily a mix of respondents from past surveys (alerted through a dedicated mailing list) and social media traffic. </p>\n<p>Note that frameworks, libraries, etc. were free to encourage their audience to participate in the survey and some of them did take advantage of this via banners, tweets, etc. A detailed breakdown of traffic sources is included in the Metadata page's \"Sources\" chart. </p>\n<h3>Project Funding</h3>\n<p>In addition to t-shirt sales, funding for the project comes from the following sponsors:</p>\n<ul>\n<li><a href=\"https://www.google.com/chrome/?utm_source=stateofjs&amp;utm_medium=website&amp;utm_campaign=js2025\">Google</a></li>\n<li><a href=\"https://www.tokyodev.com/?utm_source=stateofjs&amp;utm_medium=website&amp;utm_campaign=js2025\">TokyoDev</a></li>\n<li><a href=\"https://frontendmasters.com/?utm_source=stateofjs&amp;utm_medium=website&amp;utm_campaign=js2025\">Frontend Masters</a></li>\n<li><a href=\"https://www.algolia.com/?utm_source=stateofjs&amp;utm_medium=website&amp;utm_campaign=js2025\">Algolia</a></li>\n<li><a href=\"https://www.storyblok.com/?utm_source=stateofjs&amp;utm_medium=website&amp;utm_campaign=js2025\">Storyblok</a></li>\n<li><a href=\"https://www.jetbrains.com/webstorm/?utm_source=stateofjs&amp;utm_medium=website&amp;utm_campaign=js2025\">JetBrains</a></li>\n</ul>\n<p>Any contribution or sponsorship is greatly appreciated. we would especially like to work closely with more browser vendors, since they play such a central role in the web ecosystem.  </p>\n<h3>Technical Overview</h3>\n<p>You can find a more in-depth technical overview of how the surveys are run <a href=\"https://dev.to/sachagreif/how-the-devographics-surveys-are-run-2023-edition-1p6a\">here</a>.</p>\n","tClean":"The 2025 State of JavaScript survey ran from September 24 to November 10 2025, and collected 13,002 responses. The results were published on February 3, 2026. The survey is run by Devographics.\nThe State of JavaScript logo and t-shirt were designed by Christopher Kirk-Nielsen.\nSurvey Goals\nThis survey was created to identify upcoming trends in the web development ecosystem in order to help developers make technological choices. \nAs such, the survey is focused on anticipating what's coming over the next few years rather than analyzing what's popular now, which is why features or technologies may sometimes be omitted even if they are currently widespread \nIt should also be taken as a snapshot of a specific subset of developers, and is not meant to speak for the entire ecosystem. \nSurvey Design\nThe survey was designed in part based on last year's survey, with an open feedback period where the survey outline was discussed on GitHub. \nAll survey questions were optional. \nSurvey Audience\nThe survey was openly accessible online and respondents were not filtered or selected in any way. Respondents were primarily a mix of respondents from past surveys (alerted through a dedicated mailing list) and social media traffic. \nNote that frameworks, libraries, etc. were free to encourage their audience to participate in the survey and some of them did take advantage of this via banners, tweets, etc. A detailed breakdown of traffic sources is included in the Metadata page's \"Sources\" chart. \nProject Funding\nIn addition to t-shirt sales, funding for the project comes from the following sponsors:\n\nGoogle\nTokyoDev\nFrontend Masters\nAlgolia\nStoryblok\nJetBrains\n\nAny contribution or sponsorship is greatly appreciated. we would especially like to work closely with more browser vendors, since they play such a central role in the web ecosystem.  \nTechnical Overview\nYou can find a more in-depth technical overview of how the surveys are run here.\n"}]},"localePath":"/en-US","localeId":"en-US","i18nNamespaces":{"syntax_features":"features","string_features":"features","array_features":"features","set_features":"features","object_features":"features","async_features":"features","browser_api_features":"features","language_pain_points":"features","browser_apis_pain_points":"features","ankita_kulkarni":"picks","js_new_features":"features","top_currently_missing_from_js":"features","all_tools_experience":"tools","tools_arrows":"tools","shaundai_person":"picks","tools_ratios_over_time":"tools","scatterplot_overview":"tools","front_end_frameworks_ratios":"tools","front_end_frameworks_others":"tools","sam_selikoff":"picks","front_end_frameworks_happiness":"tools","front_end_frameworks_pain_points":"tools","meta_frameworks_ratios":"tools","meta_frameworks_others":"tools","declan_chidlow":"picks","meta_frameworks_happiness":"tools","meta_frameworks_pain_points":"tools","back_end_frameworks_ratios":"tools","back_end_frameworks_others":"tools","jenn_schiffer":"picks","back_end_frameworks_pain_points":"tools","testing_ratios":"tools","testing_others":"tools","michael_rambeau":"picks","testing_happiness":"tools","testing_pain_points":"tools","build_tools_ratios":"tools","build_tools_others":"tools","sacha_greif":"picks","build_tools_happiness":"tools","build_tools_pain_points":"tools","adam_argyle":"picks","aurora_scharff":"picks","state_of_the_web_happiness":"tools","state_of_js_happiness":"tools"},"allEntities":[{"name":"React","nameClean":"React","nameHtml":"React","id":"react"},{"name":"Astro","nameClean":"Astro","nameHtml":"Astro","id":"astro"},{"name":"Ember","nameClean":"Ember","nameHtml":"Ember","description":"A JavaScript framework for creating ambitious web applications","descriptionClean":"A JavaScript framework for creating ambitious web applications","descriptionHtml":"A JavaScript framework for creating ambitious web applications","id":"ember"},{"name":"Ripple","nameClean":"Ripple","nameHtml":"Ripple","id":"ripple"},{"name":"TanStack Start","nameClean":"TanStack Start","nameHtml":"TanStack Start","id":"tanstack_start"},{"name":"Next.js","nameClean":"Next.js","nameHtml":"Next.js","id":"nextjs"},{"name":"Nuxt","nameClean":"Nuxt","nameHtml":"Nuxt","id":"nuxt"},{"name":"Elm","nameClean":"Elm","nameHtml":"Elm","id":"elm"},{"name":"Remix","nameClean":"Remix","nameHtml":"Remix","id":"remix"},{"name":"Deno Fresh","nameClean":"Deno Fresh","nameHtml":"Deno Fresh","id":"fresh"},{"name":"Meteor","nameClean":"Meteor","nameHtml":"Meteor","description":"Meteor, the JavaScript App Platform","descriptionClean":"Meteor, the JavaScript App Platform","descriptionHtml":"Meteor, the JavaScript App Platform","id":"meteor"},{"name":"Gatsby","nameClean":"Gatsby","nameHtml":"Gatsby","id":"gatsby"},{"name":"SvelteKit","nameClean":"SvelteKit","nameHtml":"SvelteKit","id":"sveltekit"},{"name":"Docusaurus","nameClean":"Docusaurus","nameHtml":"Docusaurus","id":"docusaurus"},{"name":"SolidStart","nameClean":"SolidStart","nameHtml":"SolidStart","id":"solidstart"},{"name":"Analog","nameClean":"Analog","nameHtml":"Analog","id":"analog"},{"name":"Quasar","nameClean":"Quasar","nameHtml":"Quasar","id":"quasar"},{"name":"React Router","nameClean":"React Router","nameHtml":"React Router","description":"Declarative routing for React","descriptionClean":"Declarative routing for React","descriptionHtml":"Declarative routing for React","id":"react_router"},{"name":"Eleventy","nameClean":"Eleventy","nameHtml":"Eleventy","id":"eleventy"},{"name":"TanStack Router","nameClean":"TanStack Router","nameHtml":"TanStack Router","id":"tanstack_router"},{"name":"NestJS","nameClean":"NestJS","nameHtml":"NestJS","description":"A progressive Node.js framework for building efficient, scalable, and enterprise-grade server-side applications on top of TypeScript & JavaScript (ES6, ES7, ES8)","descriptionClean":"A progressive Node.js framework for building efficient, scalable, and enterprise-grade server-side applications on top of TypeScript & JavaScript (ES6, ES7, ES8)","descriptionHtml":"A progressive Node.js framework for building efficient, scalable, and enterprise-grade server-side applications on top of TypeScript &amp; JavaScript (ES6, ES7, ES8)","id":"nest"},{"name":"VitePress","nameClean":"VitePress","nameHtml":"VitePress","id":"vitepress"},{"name":"Expo","nameClean":"Expo","nameHtml":"Expo","description":"An open-source platform for making universal native apps with React. Expo runs on Android, iOS, and the web.","descriptionClean":"An open-source platform for making universal native apps with React. Expo runs on Android, iOS, and the web.","descriptionHtml":"An open-source platform for making universal native apps with React. Expo runs on Android, iOS, and the web.","id":"expo"},{"name":"Redwood SDK","nameClean":"Redwood SDK","nameHtml":"Redwood SDK","id":"redwood_sdk"},{"name":"Vike","nameClean":"Vike","nameHtml":"Vike","id":"vike"},{"name":"Vercel","nameClean":"Vercel","nameHtml":"Vercel","id":"vercel"},{"name":"Hono","nameClean":"Hono","nameHtml":"Hono","id":"hono"},{"name":"tRPC","nameClean":"tRPC","nameHtml":"tRPC","id":"trpc"},{"name":"Nitro","nameClean":"Nitro","nameHtml":"Nitro","id":"nitro"},{"name":"oRPC","nameClean":"oRPC","nameHtml":"oRPC","id":"orpc"},{"name":"Bun","nameClean":"Bun","nameHtml":"Bun","id":"bun"},{"name":"Jest","nameClean":"Jest","nameHtml":"Jest","id":"jest"},{"name":"Deno","nameClean":"Deno","nameHtml":"Deno","description":"A secure JavaScript and TypeScript runtime","descriptionClean":"A secure JavaScript and TypeScript runtime","descriptionHtml":"A secure JavaScript and TypeScript runtime","id":"deno"},{"name":"webpack","nameClean":"webpack","nameHtml":"webpack","id":"webpack"},{"name":"SWC","nameClean":"SWC","nameHtml":"SWC","id":"swc"},{"name":"Vite","nameClean":"Vite","nameHtml":"Vite","id":"vite"},{"name":"Turbopack","nameClean":"Turbopack","nameHtml":"Turbopack","id":"turbopack"},{"name":"tsdown","nameClean":"tsdown","nameHtml":"tsdown","id":"tsdown"},{"name":"Zod","nameClean":"Zod","nameHtml":"Zod","id":"zod"},{"name":"Motion (ex-Framer Motion)","nameClean":"Motion (ex-Framer Motion)","nameHtml":"Motion (ex-Framer Motion)","id":"framer_motion"},{"name":"Vercel Functions","nameClean":"Vercel Functions","nameHtml":"Vercel Functions","id":"vercel_functions"},{"name":"Kotlin","nameClean":"Kotlin","nameHtml":"Kotlin","id":"kotlin"},{"name":"Elixir","nameClean":"Elixir","nameHtml":"Elixir","id":"elixir"},{"name":"Industry & Company Type","nameClean":"Industry & Company Type","nameHtml":"Industry &amp; Company Type","id":"industry_sector"},{"id":"podcasts"},{"name":"PodRocket","nameClean":"PodRocket","nameHtml":"PodRocket","id":"podrocket"},{"name":"Front End Happy Hour","nameClean":"Front End Happy Hour","nameHtml":"Front End Happy Hour","id":"front_end_happy_hour"},{"name":"Theo Browne","nameClean":"Theo Browne","nameHtml":"Theo Browne","id":"theo_browne"},{"name":"Kevin Powell","nameClean":"Kevin Powell","nameHtml":"Kevin Powell","id":"kevin_j_powell"},{"name":"Alexander Lichter","nameClean":"Alexander Lichter","nameHtml":"Alexander Lichter","id":"alexander_lichter"},{"name":"Evan You","nameClean":"Evan You","nameHtml":"Evan You","id":"evan_you"},{"name":"Kent C. Dodds","nameClean":"Kent C. Dodds","nameHtml":"Kent C. Dodds","id":"kent_c_dodds"},{"name":"Dan Abramov","nameClean":"Dan Abramov","nameHtml":"Dan Abramov","id":"dan_abramov"},{"name":"Tanner Linsley","nameClean":"Tanner Linsley","nameHtml":"Tanner Linsley","id":"tanner_linsley"},{"name":"CodinGame Developer Survey","nameClean":"CodinGame Developer Survey","nameHtml":"CodinGame Developer Survey","id":"codingame_survey"},{"name":"Twitter/X","nameClean":"Twitter/X","nameHtml":"Twitter/X","id":"twitter"},{"name":"GitHub","nameClean":"GitHub","nameHtml":"GitHub","id":"github"},{"name":"Performance","nameClean":"Performance","nameHtml":"Performance","description":"Performance issues","descriptionClean":"Performance issues","descriptionHtml":"Performance issues","id":"performance"},{"name":"Ecosystem issues","nameClean":"Ecosystem issues","nameHtml":"Ecosystem issues","id":"ecosystem"},{"name":"Excessive dominance","nameClean":"Excessive dominance","nameHtml":"Excessive dominance","id":"react_dominance"},{"name":"Dependencies","nameClean":"Dependencies","nameHtml":"Dependencies","description":"Too many dependencies","descriptionClean":"Too many dependencies","descriptionHtml":"Too many dependencies","id":"dependencies"},{"name":"Excessive complexity","nameClean":"Excessive complexity","nameHtml":"Excessive complexity","id":"excessive_complexity"},{"name":"Package management issues","nameClean":"Package management issues","nameHtml":"Package management issues","id":"package_management"},{"name":"Configuration","nameClean":"Configuration","nameHtml":"Configuration","description":"Difficulties with set-up and configuration","descriptionClean":"Difficulties with set-up and configuration","descriptionHtml":"Difficulties with set-up and configuration","id":"configuration"},{"name":"Cognitive overload","nameClean":"Cognitive overload","nameHtml":"Cognitive overload","id":"cognitive_overload"},{"name":"Choice overload","nameClean":"Choice overload","nameHtml":"Choice overload","description":"Overwhelming amount of options and choices","descriptionClean":"Overwhelming amount of options and choices","descriptionHtml":"Overwhelming amount of options and choices","id":"too_many_choices"},{"name":"Speed of change","nameClean":"Speed of change","nameHtml":"Speed of change","description":"Features, libraries, and APIs changing too fast","descriptionClean":"Features, libraries, and APIs changing too fast","descriptionHtml":"Features, libraries, and APIs changing too fast","id":"speed_of_change"},{"name":"Footguns","nameClean":"Footguns","nameHtml":"Footguns","description":"Features that make it too easy to commit mistakes.","descriptionClean":"Features that make it too easy to commit mistakes.","descriptionHtml":"Features that make it too easy to commit mistakes.","id":"foot_guns"},{"name":"Too much to learn","nameClean":"Too much to learn","nameHtml":"Too much to learn","description":"Wide API surface, too many things to learn.","descriptionClean":"Wide API surface, too many things to learn.","descriptionHtml":"Wide API surface, too many things to learn.","id":"too_much_to_learn"},{"name":"Poor learnability","nameClean":"Poor learnability","nameHtml":"Poor learnability","description":"High learning curve, requires too much knowledge to get started, or too much information to memorize.","descriptionClean":"High learning curve, requires too much knowledge to get started, or too much information to memorize.","descriptionHtml":"High learning curve, requires too much knowledge to get started, or too much information to memorize.","id":"poor_learnability"},{"name":"Excessive boilerplate","nameClean":"Excessive boilerplate","nameHtml":"Excessive boilerplate","description":"Too much boilerplate required","descriptionClean":"Too much boilerplate required","descriptionHtml":"Too much boilerplate required","id":"too_much_boilerplate"},{"name":"Framework compatibility","nameClean":"Framework compatibility","nameHtml":"Framework compatibility","description":"Issues around compatibility with JS frameworks.","descriptionClean":"Issues around compatibility with JS frameworks.","descriptionHtml":"Issues around compatibility with JS frameworks.","id":"framework_issues"},{"name":"Tooling","nameClean":"Tooling","nameHtml":"Tooling","description":"Issues around third party tools, or lack thereof, including tooling in the browser (extensions, devtools, etc.).","descriptionClean":"Issues around third party tools, or lack thereof, including tooling in the browser (extensions, devtools, etc.).","descriptionHtml":"Issues around third party tools, or lack thereof, including tooling in the browser (extensions, devtools, etc.).","id":"tooling_issues"},{"name":"TypeScript issues","nameClean":"TypeScript issues","nameHtml":"TypeScript issues","id":"typescript_issues"},{"name":"Debugging","nameClean":"Debugging","nameHtml":"Debugging","description":"Issues around difficulty finding and eliminating bugs, regardless of the cause.","descriptionClean":"Issues around difficulty finding and eliminating bugs, regardless of the cause.","descriptionHtml":"Issues around difficulty finding and eliminating bugs, regardless of the cause.","id":"debugging_issues"},{"name":"Testing","nameClean":"Testing","nameHtml":"Testing","description":"Things being hard to test, unclear how to test them, difficulty procuring the right tools or resources to test, etc.","descriptionClean":"Things being hard to test, unclear how to test them, difficulty procuring the right tools or resources to test, etc.","descriptionHtml":"Things being hard to test, unclear how to test them, difficulty procuring the right tools or resources to test, etc.","id":"testing_issues"},{"name":"Pattern matching","nameClean":"Pattern matching","nameHtml":"Pattern matching","id":"pattern_matching"},{"name":"Education","nameClean":"Education","nameHtml":"Education","description":"Issues related to learning new technologies","descriptionClean":"Issues related to learning new technologies","descriptionHtml":"Issues related to learning new technologies","id":"educational_issues"},{"name":"Lack of best practices","nameClean":"Lack of best practices","nameHtml":"Lack of best practices","description":"Issues arising from the absence of clear, established best practices.","descriptionClean":"Issues arising from the absence of clear, established best practices.","descriptionHtml":"Issues arising from the absence of clear, established best practices.","id":"lack_of_best_practices"},{"name":"Lack of knowledge","nameClean":"Lack of knowledge","nameHtml":"Lack of knowledge","id":"lack_of_knowledge"},{"name":"Lack of documentation","nameClean":"Lack of documentation","nameHtml":"Lack of documentation","description":"Issues due to missing, incomplete, unclear, or outdated documentation or code examples.","descriptionClean":"Issues due to missing, incomplete, unclear, or outdated documentation or code examples.","descriptionHtml":"Issues due to missing, incomplete, unclear, or outdated documentation or code examples.","id":"lack_of_documentation"},{"name":"Tough learning curve","nameClean":"Tough learning curve","nameHtml":"Tough learning curve","id":"tough_learning_curve"},{"name":"Storage","nameClean":"Storage","nameHtml":"Storage","id":"storage"},{"name":"Documentation","nameClean":"Documentation","nameHtml":"Documentation","id":"documentation"},{"name":"Breaking changes","nameClean":"Breaking changes","nameHtml":"Breaking changes","description":"Breaking changes and other updating issues","descriptionClean":"Breaking changes and other updating issues","descriptionHtml":"Breaking changes and other updating issues","id":"version_updates"},{"name":"SSR","nameClean":"SSR","nameHtml":"SSR","description":"Lack of SSR","descriptionClean":"Lack of SSR","descriptionHtml":"Lack of SSR","id":"ssr"},{"name":"Bloat","nameClean":"Bloat","nameHtml":"Bloat","id":"bloat"},{"name":"Reinventing the wheel","nameClean":"Reinventing the wheel","nameHtml":"Reinventing the wheel","description":"Constantly having to re-learn or re-implement the same concepts","descriptionClean":"Constantly having to re-learn or re-implement the same concepts","descriptionHtml":"Constantly having to re-learn or re-implement the same concepts","id":"reinventing_the_wheel"},{"name":"Small Ecosystem","nameClean":"Small Ecosystem","nameHtml":"Small Ecosystem","description":"Smaller frameworks (Vue, Svelte, Solid, Lit, Qwik, …) lacking the libraries, component kits, tooling, examples, and community support that React has.","descriptionClean":"Smaller frameworks (Vue, Svelte, Solid, Lit, Qwik, …) lacking the libraries, component kits, tooling, examples, and community support that React has.","descriptionHtml":"Smaller frameworks (Vue, Svelte, Solid, Lit, Qwik, …) lacking the libraries, component kits, tooling, examples, and community support that React has.","id":"small_ecosystem"},{"name":"Meta-framework Coupling","nameClean":"Meta-framework Coupling","nameHtml":"Meta-framework Coupling","description":"Frameworks steering users toward a full-stack meta-framework or server-first patterns (e.g. React toward Next.js and RSC) instead of supporting standalone client-side use.","descriptionClean":"Frameworks steering users toward a full-stack meta-framework or server-first patterns (e.g. React toward Next.js and RSC) instead of supporting standalone client-side use.","descriptionHtml":"Frameworks steering users toward a full-stack meta-framework or server-first patterns (e.g. React toward Next.js and RSC) instead of supporting standalone client-side use.","id":"meta_framework_coupling"},{"name":"Framework Dominance","nameClean":"Framework Dominance","nameHtml":"Framework Dominance","description":"Pain points arising from the dominance of specific JavaScript frameworks, leading to a monoculture, abstracting away platform features, and making it difficult to use or advocate for HTML-first approaches.","descriptionClean":"Pain points arising from the dominance of specific JavaScript frameworks, leading to a monoculture, abstracting away platform features, and making it difficult to use or advocate for HTML-first approaches.","descriptionHtml":"Pain points arising from the dominance of specific JavaScript frameworks, leading to a monoculture, abstracting away platform features, and making it difficult to use or advocate for HTML-first approaches.","id":"framework_dominance"},{"name":"Maintenance","nameClean":"Maintenance","nameHtml":"Maintenance","id":"maintenance"},{"name":"Architecture issues","nameClean":"Architecture issues","nameHtml":"Architecture issues","id":"architecture_issues"},{"name":"Project Structure","nameClean":"Project Structure","nameHtml":"Project Structure","description":"Uncertainty or inconsistency about how to organize folders, files, and code in framework projects.","descriptionClean":"Uncertainty or inconsistency about how to organize folders, files, and code in framework projects.","descriptionHtml":"Uncertainty or inconsistency about how to organize folders, files, and code in framework projects.","id":"project_structure"},{"name":"Lack of stability","nameClean":"Lack of stability","nameHtml":"Lack of stability","id":"stability"},{"name":"Lock-in","nameClean":"Lock-in","nameHtml":"Lock-in","description":"Too much lock-in","descriptionClean":"Too much lock-in","descriptionHtml":"Too much lock-in","id":"lock_in"},{"name":"Next.js issues","nameClean":"Next.js issues","nameHtml":"Next.js issues","id":"nextjs_issues"},{"name":"Next.js app router","nameClean":"Next.js app router","nameHtml":"Next.js app router","id":"nextjs_app_router_issues"},{"name":"Next.js cache","nameClean":"Next.js cache","nameHtml":"Next.js cache","id":"nextjs_cache_issues"},{"name":"Next.js 13","nameClean":"Next.js 13","nameHtml":"Next.js 13","id":"nextjs_13_issues"},{"name":"Deployment","nameClean":"Deployment","nameHtml":"Deployment","id":"deployment"},{"name":"Server-client communication","nameClean":"Server-client communication","nameHtml":"Server-client communication","description":"Issues around server-client integration & communication, server-side rendering, etc.","descriptionClean":"Issues around server-client integration & communication, server-side rendering, etc.","descriptionHtml":"Issues around server-client integration &amp; communication, server-side rendering, etc.","id":"server_client_issues"},{"name":"Too opinionated","nameClean":"Too opinionated","nameHtml":"Too opinionated","id":"too_opinionated"},{"name":"Authentication","nameClean":"Authentication","nameHtml":"Authentication","id":"authentication"},{"name":"Too much magic","nameClean":"Too much magic","nameHtml":"Too much magic","id":"too_much_magic"},{"name":"Hydration","nameClean":"Hydration","nameHtml":"Hydration","description":"Hydration issues","descriptionClean":"Hydration issues","descriptionHtml":"Hydration issues","id":"hydration"},{"name":"Routing","nameClean":"Routing","nameHtml":"Routing","id":"routing"},{"name":"Next.js vendor lock-in","nameClean":"Next.js vendor lock-in","nameHtml":"Next.js vendor lock-in","id":"nextjs_vendor_lock_in_issues"},{"name":"Server/Client Boundary","nameClean":"Server/Client Boundary","nameHtml":"Server/Client Boundary","description":"Confusion about where code runs (server, client, or edge), blurred boundaries between them, and accidental leakage of code or data across them.","descriptionClean":"Confusion about where code runs (server, client, or edge), blurred boundaries between them, and accidental leakage of code or data across them.","descriptionHtml":"Confusion about where code runs (server, client, or edge), blurred boundaries between them, and accidental leakage of code or data across them.","id":"server_client_boundary"},{"name":"Rendering Modes","nameClean":"Rendering Modes","nameHtml":"Rendering Modes","description":"Choosing between and reasoning about SSR, SSG, ISR, CSR, streaming, and hybrid rendering, and the complexity of having so many modes.","descriptionClean":"Choosing between and reasoning about SSR, SSG, ISR, CSR, streaming, and hybrid rendering, and the complexity of having so many modes.","descriptionHtml":"Choosing between and reasoning about SSR, SSG, ISR, CSR, streaming, and hybrid rendering, and the complexity of having so many modes.","id":"rendering_modes"},{"name":"Static Site Generation","nameClean":"Static Site Generation","nameHtml":"Static Site Generation","description":"Pain points with static site generation (SSG), build-time rendering, and static export limitations.","descriptionClean":"Pain points with static site generation (SSG), build-time rendering, and static export limitations.","descriptionHtml":"Pain points with static site generation (SSG), build-time rendering, and static export limitations.","id":"static_site_generation"},{"name":"API Routes & Middleware","nameClean":"API Routes & Middleware","nameHtml":"API Routes &amp; Middleware","description":"Limitations of a meta-framework's built-in backend features, such as API routes, route handlers, and middleware, compared with a dedicated backend.","descriptionClean":"Limitations of a meta-framework's built-in backend features, such as API routes, route handlers, and middleware, compared with a dedicated backend.","descriptionHtml":"Limitations of a meta-framework's built-in backend features, such as API routes, route handlers, and middleware, compared with a dedicated backend.","id":"api_routes"},{"name":"SSR & hydration","nameClean":"SSR & hydration","nameHtml":"SSR &amp; hydration","description":"Performance bottlenecks related to the process of making server-rendered HTML interactive on the client using JavaScript frameworks.","descriptionClean":"Performance bottlenecks related to the process of making server-rendered HTML interactive on the client using JavaScript frameworks.","descriptionHtml":"Performance bottlenecks related to the process of making server-rendered HTML interactive on the client using JavaScript frameworks.","id":"ssr_hydration"},{"name":"Streaming","nameClean":"Streaming","nameHtml":"Streaming","description":"Issues related to streaming HTML content from the server to the client, including browser inconsistencies, performance challenges, and hooking up interactivity to streamed content.","descriptionClean":"Issues related to streaming HTML content from the server to the client, including browser inconsistencies, performance challenges, and hooking up interactivity to streamed content.","descriptionHtml":"Issues related to streaming HTML content from the server to the client, including browser inconsistencies, performance challenges, and hooking up interactivity to streamed content.","id":"streaming"},{"name":"Non-JS Backend Integration","nameClean":"Non-JS Backend Integration","nameHtml":"Non-JS Backend Integration","description":"Difficulty using front-end frameworks, including server-side rendering, with non-JavaScript backends such as PHP, Python, Ruby, or .NET stacks and CMSs.","descriptionClean":"Difficulty using front-end frameworks, including server-side rendering, with non-JavaScript backends such as PHP, Python, Ruby, or .NET stacks and CMSs.","descriptionHtml":"Difficulty using front-end frameworks, including server-side rendering, with non-JavaScript backends such as PHP, Python, Ruby, or .NET stacks and CMSs.","id":"non_js_backend_integration"},{"name":"Deployment Adapters","nameClean":"Deployment Adapters","nameHtml":"Deployment Adapters","description":"Needing per-platform adapters to deploy the same app to different hosts, and features that only work fully on one platform.","descriptionClean":"Needing per-platform adapters to deploy the same app to different hosts, and features that only work fully on one platform.","descriptionHtml":"Needing per-platform adapters to deploy the same app to different hosts, and features that only work fully on one platform.","id":"deployment_adapters"},{"name":"Lack of flexibility","nameClean":"Lack of flexibility","nameHtml":"Lack of flexibility","id":"lack_of_flexibility"},{"name":"React Server Components","nameClean":"React Server Components","nameHtml":"React Server Components","id":"react_server_components"},{"name":"End-to-end typesafety","nameClean":"End-to-end typesafety","nameHtml":"End-to-end typesafety","id":"end_to_end_type_safety"},{"name":"Integration with tools","nameClean":"Integration with tools","nameHtml":"Integration with tools","id":"integration_with_tools"},{"id":"writing_tests"},{"name":"Structs","nameClean":"Structs","nameHtml":"Structs","id":"feature_structs"},{"name":"Option/result","nameClean":"Option/result","nameHtml":"Option/result","id":"feature_option_result"},{"name":"List comprehension","nameClean":"List comprehension","nameHtml":"List comprehension","id":"feature_list_comprehension"},{"id":"automotive"},{"name":"Testing","nameClean":"Testing","nameHtml":"Testing","id":"testing"},{"name":"Dreams of Code","nameClean":"Dreams of Code","nameHtml":"Dreams of Code","id":"dreams_of_code"},{"id":"PRT"},{"id":"SWE"}]}},"staticQueryHashes":[],"slicesMap":{}}