1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[733],{7091:function(e,t,i){(window.__NEXT_P=window.__NEXT_P||[]).push(["/survey-2025",function(){return i(51719)}])},51719:function(e,t,i){"use strict";i.r(t),i.d(t,{__N_SSG:function(){return P},default:function(){return q}});var r=i(28598),o=i(55281),s=i(20835),n=i(15083),a=i(48204),l=i(44079),d=i(51774),c=i.n(d),u=i(32234),h=i(56361),p=i(1527);let m=e=>{let{title:t,nValue:i,description:l,height:d=400,multipleChoice:c,yoyNote:u,quotes:h,conditionalNote:m,footer:y,children:f}=e,g=(0,n.ff)("white","#1a1560"),b=(0,n.ff)("#E6E3EC","#3D35A0"),x=(0,n.ff)("#672AC8","#9F94E8"),v=(0,n.ff)("#EDE9F8","rgba(61, 53, 160, 0.3)"),_=(0,n.ff)("#9F94E8","#3D35A0"),w=(0,n.ff)("#FAF8FF","rgba(26, 21, 96, 0.5)");return(0,r.jsxs)(s.x,{bg:g,border:"1px solid",borderColor:b,borderRadius:"lg",p:{base:4,md:6},mb:12,children:[(0,r.jsx)(a.X,{as:"h3",size:"md",mb:4,fontFamily:"heading",children:function(e){let t=e.split(/(`[^`]+`)/);return 1===t.length?e:t.map((e,t)=>e.startsWith("`")&&e.endsWith("`")?(0,r.jsx)(p.E,{fontSize:"inherit",fontWeight:"normal",children:e.slice(1,-1)},t):e)}(t)}),(0,r.jsx)(s.x,{height:"".concat(d,"px"),children:f}),(0,r.jsxs)(o.x,{fontSize:"sm",color:x,mt:3,children:[i,c&&" | multiple choice",m&&" | ".concat(m)]}),l&&(0,r.jsx)(o.x,{fontSize:"sm",mt:2,lineHeight:"1.6",children:l}),u&&(0,r.jsxs)(s.x,{bg:v,borderLeft:"3px solid",borderColor:_,borderRadius:"0 4px 4px 0",px:4,py:3,mt:4,fontSize:"sm",lineHeight:"1.6",children:[(0,r.jsxs)(o.x,{as:"span",fontWeight:"bold",children:["vs. 2024:"," "]}),u]}),h&&h.length>0&&(0,r.jsx)(s.x,{mt:4,children:h.map((e,t)=>(0,r.jsxs)(s.x,{bg:w,borderLeft:"3px solid",borderColor:_,borderRadius:"0 4px 4px 0",px:4,py:3,mb:2,fontSize:"sm",fontStyle:"italic",lineHeight:"1.6",children:["â",e,"â"]},t))}),y&&(0,r.jsx)(s.x,{mt:4,children:y})]})};var y=i(82684),f=i(9946);let g=e=>{let{sections:t}=e,[i,a]=(0,y.useState)(""),l=(0,n.ff)("#E6E3EC","#3D35A0"),d=(0,n.ff)("#FAF8FF","#1a1560"),c=(0,n.ff)("#E6E3EC","#3D35A0");return(0,y.useEffect)(()=>{let e=new IntersectionObserver(e=>{let t=e.filter(e=>e.isIntersecting);t.length>0&&a(t[0].target.id)},{rootMargin:"-".concat(h.nI+20,"px 0px -60% 0px"),threshold:0});return t.forEach(t=>{let{id:i}=t,r=document.getElementById(i);r&&e.observe(r)}),()=>e.disconnect()},[t]),(0,r.jsxs)(s.x,{as:"nav",position:"sticky",top:"".concat(h.nI+24,"px"),display:{base:"none",xl:"block"},w:"220px",flexShrink:0,"aria-label":"Table of contents",children:[(0,r.jsx)(o.x,{fontSize:"xs",fontWeight:"bold",textTransform:"uppercase",letterSpacing:"wider",mb:3,color:"secondary",children:"Sections"}),t.map(e=>{let{id:t,title:o}=e;return(0,r.jsx)(f.r,{href:"#".concat(t),display:"block",fontSize:"sm",py:1.5,px:3,borderLeft:"2px solid",borderColor:i===t?"primary":c,bg:i===t?l:"transparent",borderRadius:"0 4px 4px 0",_hover:{textDecoration:"none",bg:d},onClick:e=>{e.preventDefault();let i=document.getElementById(t);i&&window.scrollTo({top:i.offsetTop-h.nI-16,behavior:"smooth"})},children:o},t)})]})};var b=i(49454),x=i(64729),v=i(8835),_=i(34794),w=i(44252),j=i(62593);let S=(0,_.G)(function(e,t){let{htmlSize:i,...o}=e,s=(0,w.j)("Input",o),n=(0,b.L)(o),a=(0,v.Y)(n),l=(0,x.cx)("chakra-input",e.className);return(0,r.jsx)(j.m.input,{size:i,...a,__css:s.field,ref:t,className:l})});S.displayName="Input",S.id="Input";var k=i(49638),C=i(12696),E=i(12388),I=i(55331),W=i(17180),F=i(24068);let D=e=>{let{data:t,label:i}=e,[o,a]=(0,y.useState)(""),l=(0,n.ff)("#FAF8FF","#1a1560"),d=(0,n.ff)("#E6E3EC","#3D35A0"),c=(0,y.useMemo)(()=>{if(!o)return t;let e=o.toLowerCase();return t.filter(t=>t.value.toLowerCase().includes(e))},[t,o]);return(0,r.jsxs)(s.x,{children:[(0,r.jsx)(S,{placeholder:"Filter by ".concat(i,"..."),value:o,onChange:e=>a(e.target.value),mb:4,size:"sm",borderColor:d}),(0,r.jsx)(s.x,{maxH:"400px",overflowY:"auto",borderRadius:"md",children:(0,r.jsxs)(k.i,{size:"sm",variant:"simple",children:[(0,r.jsx)(C.h,{position:"sticky",top:0,bg:l,zIndex:1,children:(0,r.jsxs)(E.Tr,{children:[(0,r.jsx)(I.Th,{borderColor:d,children:i}),(0,r.jsx)(I.Th,{borderColor:d,isNumeric:!0,children:"Count"}),(0,r.jsx)(I.Th,{borderColor:d,isNumeric:!0,children:"%"})]})}),(0,r.jsx)(W.p,{children:c.map(e=>(0,r.jsxs)(E.Tr,{children:[(0,r.jsx)(F.Td,{borderColor:d,children:e.value}),(0,r.jsx)(F.Td,{borderColor:d,isNumeric:!0,children:e.count}),(0,r.jsxs)(F.Td,{borderColor:d,isNumeric:!0,children:[e.pct,"%"]})]},e.value))})]})})]})},A=c()(()=>Promise.all([i.e(326),i.e(59),i.e(477),i.e(63)]).then(i.bind(i,21063)).then(e=>e.SurveyBarChart),{loadableGenerated:{webpack:()=>[21063]},ssr:!1}),H=c()(()=>Promise.all([i.e(326),i.e(59),i.e(477),i.e(109)]).then(i.bind(i,95109)).then(e=>
1e.SurveyGroupedBar),{loadableGenerated:{webpack:()=>[95109]},ssr:!1}),z=c()(()=>Promise.all([i.e(326),i.e(59),i.e(16)]).then(i.bind(i,79016)).then(e=>e.SurveyHeatmap),{loadableGenerated:{webpack:()=>[79016]},ssr:!1}),T=c()(()=>Promise.all([i.e(326),i.e(617),i.e(994)]).then(i.bind(i,32994)).then(e=>e.SurveyChoropleth),{loadableGenerated:{webpack:()=>[32994]},ssr:!1}),N={countries_map:"Where do you live?",countries_bar:"Top 20 countries",native_language:"What is your native language?",age:"How old are you?",coder_level:"How would you rate your coding ability?",dev_profile:"Which best describes your developer profile?",industry:"Which industry do you work in?",years_coding:"How many years of professional coding experience?",primary_language:"What is your primary programming language?",favorite_language:"What is your favorite programming language?",os:"What operating system do you use?",solidity_frequency:"How often do you use Solidity?",years_solidity:"How long have you been using Solidity?",expertise:"How would you rate your Solidity expertise?",solidity_versions:"Which Solidity versions do you use?",binaries:"How do you get the Solidity compiler?",editor:"What editor do you use?",primary_framework:"What is your primary development framework?",secondary_frameworks:"Which additional frameworks do you use?",sdks:"Which SDKs / libraries do you use?",rely_older_evm:"Do you rely on older EVM version support?",oldest_evm_target:"Oldest EVM version targeted",smtchecker:"Have you used the SMTChecker?",ir_pipeline:"Have you used the IR pipeline (`--via-ir`)?",ir_too_slow:"Is the IR pipeline too slow to compile?",sourcify:"Are you familiar with Sourcify?",append_cbor:"Do you use `appendCBOR: false` or `bytecodeHash: none`?",chains:"Which chains do you deploy to?",alt_languages:"Do you use other smart contract languages?",dx_change:"How has the Solidity DevEx changed in the past year?",recurring_issues:"Which recurring issues do you encounter?",language_features:"Which language features are most important?",near_term_features:"Most wanted near-term features",pain_points:"Biggest pain points with Solidity",docs_improvement:"How could the documentation be improved?",debugging_improvement:"How could debugging be improved?",core_solidity_familiar:"Are you familiar with Core Solidity?",core_solidity_features:"Which Core Solidity features interest you most?",inheritance_impact:"Would removing inheritance cause challenges?",traits_rewrite_difficulty:"How difficult would rewriting to traits be?",benefit_comptime:"Would your codebase benefit from compile-time evaluation?",core_solidity_feedback:"Feedback on Core Solidity",ai_usage:"Do you use AI tools for development?",ai_favorability:"How do you view AI in development?",ai_trust:"How much do you trust AI-generated code?",ai_workflow:"What do you use AI for in your workflow?",ai_editors:"Which editors do you use with AI agents?",ai_assistant:"Preferred AI assistant",verification_pain_points:"Contract verification pain points",why_append_cbor_none:"Why do you use `appendCBOR: false` or `bytecodeHash: none`?",dx_improved:"What has improved in the DevEx?",expertise_vs_years_solidity:"Self-rated expertise by years using Solidity",expertise_vs_years_coding:"Self-rated expertise by years coding",expertise_vs_pain_points:"Recurring issues by expertise level",framework_vs_expertise:"Expertise distribution by framework",ai_usage_vs_expertise:"AI usage by expertise level",ai_trust_vs_usage:"AI trust vs. usage frequency",student_vs_pro_expertise:"Expertise: students vs. professionals",student_vs_pro_framework:"Framework choice: students vs. professionals",student_vs_pro_ai:"AI usage: students vs. professionals"},M={verification_pain_points:["Etherscan is the de-facto standard and it's very unreliable and not transparent. Sourcify is much better and I wish I could tell Etherscan it's already verified there.","Too many chains, too many block explorers. Etherscan should use one source of truth i.e. Sourcify then verifying once should auto verify everywhere."],dx_improved:["Foundry continued to ship solid features. Mainly improved tooling, not major language features that are super useful.","Custom errors in requires, custom storage layouts, transient storage."],pain_points:["Compiler's optimization defects continuously make me think about what's going on under the hood instead of focusing on my logic. Things that should be zero cost are not (functions, structs, variables).","Gas optimisations force bad programming practices, like repeating code inline instead of abstracting into functions, avoiding zeroing storage slots in favour of using arbitrary sentinel values.","Too many footguns around storage vs memory vs calldata, especially with complex structs, arrays, and inheritance."],debugging_improvement:["A step-by-step debugger similar to what you'd find in any modern IDE, with breakpoints and variable inspection for Solidity contracts.","Transaction replay with full state access. Being able to see every storage slot change and every call in sequence."],docs_improvement:["Better language reference page. Everything is explained in great detail, but it would be great with a reference page to quickly find what you need similar to: https://tour.gleam.run/everything/","I think the documentation should rationalize why Solidity is the way it is more often - and how it relates to the EVM's design."],core_solidity_feedback:["Excited to see this project unfold. If we can have a new language that takes all the pain points of the last 10 years of Solidity and fixes them it would be great.","I am very concerned that Core Solidity is trying to turn solidity into some kind of academic Haskell language that requires a PhD in types to use.","Still unclear how core solidity is not a new language and how the syntax and semantics will be made backwards compatible.","I care most that the bytecode is good. Syntactic sugar is less important to me.","Please do not remove inheritance and contracts as classes, everything should be backwards compatible as we will lose all the years of work, libraries and standards created."],final_feedback:["Solidity is a surprisingly good language for expressing the kinds of problems you have for EVM smart contracts. Thanks for it.","Smart contracts are hard since you have to balance the quality of the code vs the cost for the user. Ideally correctly written code should also be the proper way to optimize for gas, and not the other way around.","Please fix the bytecode size limit, it's not always practical to refactor contract into multiple smaller ones, doing so is always a huge lift in dev and ops work.","Solidity and the surrounding ecosystem are moving in the right direction, especially in tooling, testing frameworks, and developer workflows. However, developer experience is still heavily constrained by debugging limitations, EVM-level abstractions, and low-level complexity that slows productivity and increases risk.","Keep pushing for better native cryptographic primitives and smoother Yul integration. It makes building privacy-focused tools and DeFi mechanisms safer and gas-efficient.","It feels like the primarily direction of Solidity should be security, compiler performance, more aggressive bytecode optimization + developer ergonomics.","Keep pushing, everyone. It's a pleasure to write smart contracts today compared to where we were 3 to 5 years ago."]},R={primary_framework:"Foundry increased from 51% to 57%. Hardhat is at 33% combined in both years, but the 2025 survey distinguished between v2 (15%) and v3 (18%). Truffle dropped from 2.4% in 2024 to a single remaining user.",os:"In 2024, MacOS led at 43%, followed by Windows (29%) and Linux (28%). In 2025, Windows leads at 38%, followed by MacOS (31%) and Linux (30%).",dx_change:"DevEx sentiment is slightly more positive: 73% report improvement (vs 67% in 2024). The percentage reporting things got worse is unchanged at 2%.",recurring_issues:"The question format changed between years (single multi-select in 2024 vs separate checkboxes in 2025), which may account for some of the decrease. With that caveat: in 2024, stack-too-deep was reported by 68%, debugging by 55%, bytecode size by 51%, and optimizer issues by 22%. In 2025, these are 47%, 33%, 33%, and 13% respectively.",sourcify:"Sourcify awareness improved: 48% don't know about it in 2025 (vs 56% in 2024), and usage increased from 17% to 24%.",ir_pipeline:"IR pipeline awareness also improved: 35% don't know
1what it is in 2025 (vs 46% in 2024)."},L={ir_too_slow:"shown to IR pipeline users only",oldest_evm_target:"shown to those relying on older EVM support",core_solidity_features:"shown to those familiar with Core Solidity",inheritance_impact:"shown to those familiar with Core Solidity",traits_rewrite_difficulty:"shown to those familiar with Core Solidity",benefit_comptime:"shown to those familiar with Core Solidity",core_solidity_feedback:"shown to those familiar with Core Solidity"},O=new Set(["ai_editors","ai_workflow","binaries","chains","core_solidity_features","core_solidity_feedback","docs_improvement","dx_improved","language_features","near_term_features","pain_points","recurring_issues","sdks","secondary_frameworks","solidity_versions","verification_pain_points","alt_languages"]);var P=!0;function q(e){let{charts:t,sections:i,tables:d,sectionRespondents:c}=e,p=i.map(e=>({id:e.id,title:e.title})),y=(0,n.ff)("#FAF8FF","rgba(26, 21, 96, 0.5)"),f=(0,n.ff)("#9F94E8","#3D35A0"),b=(0,n.ff)("#FAF8FF","#110C4E"),x=(0,n.ff)("#E6E3EC","#3D35A0");return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(u.d,{title:"Solidity Developer Survey 2025 Results",description:"Results from the Solidity Developer Survey 2025 with 1,095 respondents from 87 countries."}),(0,r.jsxs)(s.x,{as:"main",id:h.Om,children:[(0,r.jsx)(u.$0,{direction:"column",alignItems:"center",py:{base:16,md:24},textAlign:"center",children:(0,r.jsx)(a.X,{as:"h1",textStyle:"h2",mb:4,children:"Solidity Developer Survey 2025"})}),(0,r.jsxs)(l.k,{maxW:"container.xl",mx:"auto",px:{base:4,md:8},pb:24,gap:8,alignItems:"flex-start",children:[(0,r.jsx)(g,{sections:p}),(0,r.jsxs)(s.x,{flex:1,minW:0,maxW:"container.lg",children:[(0,r.jsxs)(s.x,{bg:b,border:"1px solid",borderColor:x,borderRadius:"lg",p:{base:4,md:6},mb:12,children:[(0,r.jsx)(a.X,{as:"h2",size:"md",mb:3,fontFamily:"heading",children:"Key findings"}),(0,r.jsxs)(s.x,{as:"ul",fontSize:"md",lineHeight:"1.7",pl:5,children:[(0,r.jsx)("li",{children:"70% of respondents are smart contract developers, with India, Nigeria, and the US as the top countries"}),(0,r.jsx)("li",{children:"Foundry is the dominant framework at 57%, up from 51% in 2024. Truffle is down to a single user."}),(0,r.jsx)("li",{children:"Stack-too-deep remains the #1 pain point (47%), with experts reporting it more than beginners (65% vs 25%)"}),(0,r.jsx)("li",{children:"88% use AI tools at least monthly, but adoption outpaces trust: 45% express distrust in AI output"}),(0,r.jsxs)("li",{children:["Only 30% of respondents are familiar with Core Solidity. Among those who are, better error handling and delegatecall replacement are the most wanted features."," ",(0,r.jsx)(u.rU,{color:"secondary",textDecoration:"underline",href:"/blog/2025/11/14/core-solidity-deep-dive/",children:"Learn more about Core Solidity"}),"."]}),(0,r.jsx)("li",{children:"DevEx is improving: 73% report improvement (up from 67% in 2024)"})]})]}),i.map(e=>(0,r.jsxs)(s.x,{mb:16,children:[(0,r.jsx)(u.U6,{as:"h2",id:e.id,textStyle:"h3",mb:4,children:e.title}),e.intro&&(0,r.jsx)(s.x,{mb:8,fontSize:"md",lineHeight:"1.7",children:function(e){let t=e.intro;if("overview"===e.id){let e="see the accompanying blog post.",i=t.split("\n\n");return(0,r.jsxs)(r.Fragment,{children:[i.map((t,i)=>{if(t.includes(e)){let s=t.replace(e,"");return(0,r.jsxs)(o.x,{mb:4,children:[s,"see the accompanying"," ",(0,r.jsx)(u.rU,{color:"secondary",textDecoration:"underline",href:"/blog/2026/04/15/solidity-developer-survey-2025-results/",children:"blog post"}),"."]},i)}return(0,r.jsx)(o.x,{mb:4,children:t},i)}),(0,r.jsxs)(o.x,{mt:2,children:[(0,r.jsx)(u.rU,{color:"secondary",textDecoration:"underline",href:"/data/solidity-survey-2025-results.csv",children:"Download the raw data (CSV)"})," | Previous surveys: ",(0,r.jsx)(u.rU,{color:"secondary",textDecoration:"underline",href:"/blog/2025/04/25/solidity-developer-survey-2024-results/",children:"2024"}),", ",(0,r.jsx)(u.rU,{color:"secondary",textDecoration:"underline",href:"/blog/2024/04/03/solidity-developer-survey-2023-results/",children:"2023"})]})]})}let i=t.split("\n\n");return(0,r.jsx)(r.Fragment,{children:i.map((e,t)=>{let n=e.split("\n").filter(e=>e);if(n.every(e=>e.startsWith("- ")))return(0,r.jsx)(s.x,{as:"ul",pl:6,mb:4,children:n.map((e,t)=>(0,r.jsx)(s.x,{as:"li",mb:2,children:e.slice(2)},t))},t);let a=n.join(" ").split(/(\*\*.*?\*\*)/);return(0,r.jsx)(o.x,{mb:t<i.length-1?4:0,children:a.map((e,t)=>e.startsWith("**")&&e.endsWith("**")?(0,r.jsx)(o.x,{as:"strong",fontWeight:"bold",children:e.slice(2,-2)},t):e)},t)})})}(e)}),"overview"===e.id&&(0,r.jsx)(m,{title:"Respondents per section",nValue:"n = 1,095 usable responses",description:"Respondent counts decrease through the survey as some participants drop off before completing all pages.",he
1ight:300,children:(0,r.jsx)(A,{data:c,layout:"vertical",total:1095})}),0===e.charts.length&&M[e.id]&&M[e.id].map((e,t)=>(0,r.jsxs)(s.x,{bg:y,borderLeft:"3px solid",borderColor:f,borderRadius:"0 4px 4px 0",px:4,py:3,mb:2,fontSize:"sm",fontStyle:"italic",lineHeight:"1.6",children:["â",e,"â"]},t)),e.charts.map(e=>{var i;let o=t[e.id];return o?(0,r.jsx)(s.x,{children:(0,r.jsx)(m,{title:N[i=e.id]||i.replace(/_/g," "),nValue:function(e){if("number"==typeof e.n)return"n = ".concat(e.n);let t=Object.entries(e.n).map(e=>{let[t,i]=e;return"".concat(t,": ").concat(i)}).join(", ");return"n = ".concat(t)}(o.meta),description:e.description,height:function(e){let t=e.data.length;return"choropleth"===e.type?500:"heatmap"===e.type?Math.max(350,40*t+80):"grouped_bar"===e.type?Math.max(350,60*t+100):t<=5?300:t<=10?350:t<=15?Math.max(400,32*t):Math.max(500,28*t)}(o),multipleChoice:O.has(e.id),yoyNote:R[e.id],quotes:M[e.id],conditionalNote:L[e.id],footer:e.full_table&&d[e.full_table]?(0,r.jsx)(D,{data:d[e.full_table],label:"country"===e.full_table?"Country":"Native Language"}):void 0,children:function(e,t){let i=t.data,o="number"==typeof t.meta.n?t.meta.n:void 0;switch(t.type){case"bar":return(0,r.jsx)(A,{data:i,layout:["age","expertise","years_coding","years_solidity","solidity_frequency","solidity_versions","os","dx_change","traits_rewrite_difficulty","benefit_comptime","ir_pipeline","ai_favorability","ai_trust"].includes(e)||t.data.length<=3&&10>=Math.max(...t.data.map(e=>String(e.label).length))?"vertical":"horizontal",total:o});case"grouped_bar":{let e=Object.keys(t.data[0]).filter(e=>"label"!==e);return(0,r.jsx)(H,{data:i,keys:e})}case"heatmap":return(0,r.jsx)(z,{data:i});case"choropleth":return(0,r.jsx)(T,{data:i});default:return null}}(e.id,o)})},e.id):null})]},e.id))]})]})]})]})}},1527:function(e,t,i){"use strict";i.d(t,{E:function(){return d}});var r=i(28598),o=i(49454),s=i(64729),n=i(34794),a=i(44252),l=i(62593);let d=(0,n.G)(function(e,t){let i=(0,a.m)("Code",e),{className:n,...d}=(0,o.L)(e);return(0,r.jsx)(l.m.code,{ref:t,className:(0,s.cx)("chakra-code",e.className),...d,__css:{display:"inline-block",...i}})});d.displayName="Code"}},function(e){e.O(0,[888,774,179],function(){return e(e.s=7091)}),_N_E=e.O()}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.