[{"data":1,"prerenderedAt":251},["ShallowReactive",2],{"sanity-LevEgKvCUg3Ul3GKyhTsfZIfaGswLQ-qsmdjo9-lWe4":3,"sanity-YwZKoRSImkyi0kEyTi9JR5bIifZrja6hzh6Io2n_VkU":42},{"data":4},{"_createdAt":5,"_id":6,"_rev":7,"_type":6,"_updatedAt":8,"acceptAllLink":9,"acceptNecessaryLink":18,"bannerColorSource":23,"bannerDescription":24,"bannerTitle":25,"categories":26,"declineAllLink":27,"managePreferencesLink":31,"modalColorSource":23,"modalTitle":35,"preferencesIconColorSource":23,"provider":36,"savePreferencesLink":37,"thirdPartyEmbedCode":26,"title":41},"2026-08-29T18:46:18Z","cookieSettings","C1Syut0iGaGX58H2hZvChS","2026-08-29T18:46:23Z",{"_type":10,"style":11,"title":16,"type":17},"link",{"_type":12,"stylePreset":13},"link.style",{"_ref":14,"_type":15},"link-style-primary","reference","Accept all","button",{"_type":10,"style":19,"title":22,"type":17},{"_type":12,"stylePreset":20},{"_ref":21,"_type":15},"link-style-tertiary-outline","Accept necessary","inherit","We use cookies to enhance your browsing experience and analyse our traffic. Please choose your cookie preferences below.","We use cookies",null,{"_type":10,"style":28,"title":30,"type":17},{"_type":12,"stylePreset":29},{"_ref":21,"_type":15},"Decline all",{"_type":10,"style":32,"title":34,"type":17},{"_type":12,"stylePreset":33},{"_ref":21,"_type":15},"Manage preferences","Cookie Preferences","custom",{"_type":10,"style":38,"title":40,"type":17},{"_type":12,"stylePreset":39},{"_ref":14,"_type":15},"Save preferences","Cookie Settings",{"data":43,"sourceMap":-1},[44],{"_createdAt":5,"_id":45,"_rev":7,"_type":46,"_updatedAt":8,"authorProfile":47,"authorRef":59,"body":61,"categories":164,"excerpt":175,"footer":26,"layout":176,"mainImage":180,"navigation":26,"publishedAt":184,"readTime":185,"relatedPosts":186,"routeOptions":241,"seo":26,"showOnWebsite":243,"slug":246,"tags":247,"title":250},"post-naming-for-editors","post",{"avatar":48,"bio":53,"name":54,"role":55,"sameAs":56},{"_type":49,"alt":50,"asset":51},"image","Portrait of Priya Raman",{"_ref":52,"_type":15},"image-cfc7cc28fea565890fb3a5986f7d299c7704a12a-512x512-jpg","Priya works on the seam between design tokens and the components that consume them, and is unreasonably interested in how colour behaves when someone else picks it.","Priya Raman","Design Systems Engineer",[57,58],"https:\u002F\u002Fexample.com\u002Fpriya-raman","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fexample-priya-raman",{"_ref":60,"_type":15},"author-priya-raman",[62,73,82,99,108,116,124,148,156],{"_key":63,"_type":64,"children":65,"markDefs":71,"style":72},"b0031","block",[66],{"_key":67,"_type":68,"marks":69,"text":70},"s0032","span",[],"A schema is read far more often by the people writing content than by the people writing components, and it is the only documentation most of them will ever get. The title, the description and the preview are the interface.",[],"normal",{"_key":74,"_type":64,"children":75,"markDefs":80,"style":81},"b0033",[76],{"_key":77,"_type":68,"marks":78,"text":79},"s0034",[],"Describe the outcome, not the mechanism",[],"h2",{"_key":83,"_type":64,"children":84,"markDefs":98,"style":72},"b0038",[85,89,94],{"_key":86,"_type":68,"marks":87,"text":88},"s0035",[],"A field called ",{"_key":90,"_type":68,"marks":91,"text":93},"s0036",[92],"code","containerWidth",{"_key":95,"_type":68,"marks":96,"text":97},"s0037",[]," with no description asks an editor to know what a container is. \"Bar width — how wide the navigation content sits inside the bar\" asks them to know what they want, which they already do.",[],{"_key":100,"_type":64,"children":101,"markDefs":106,"style":107},"b0039",[102],{"_key":103,"_type":68,"marks":104,"text":105},"s0040",[],"If a field needs a developer in the room to fill in, the schema has not finished being written.",[],"blockquote",{"_key":109,"_type":64,"children":110,"markDefs":115,"style":81},"b0041",[111],{"_key":112,"_type":68,"marks":113,"text":114},"s0042",[],"Previews are part of the model",[],{"_key":117,"_type":64,"children":118,"markDefs":123,"style":72},"b0043",[119],{"_key":120,"_type":68,"marks":121,"text":122},"s0044",[],"A list of eleven identical \"Section\" rows is a list with no information in it. Every block in this starter prepares a preview from its own content — the heading, the number of items, whether it is published — because the person choosing between them is looking at the list, not the schema.",[],{"_key":125,"_type":64,"children":126,"markDefs":147,"style":72},"b0050",[127,131,135,139,143],{"_key":128,"_type":68,"marks":129,"text":130},"s0045",[],"The same applies to ",{"_key":132,"_type":68,"marks":133,"text":134},"s0046",[92],"groups",{"_key":136,"_type":68,"marks":137,"text":138},"s0047",[]," and ",{"_key":140,"_type":68,"marks":141,"text":142},"s0048",[92],"fieldsets",{"_key":144,"_type":68,"marks":145,"text":146},"s0049",[],". Ten fields in one column is a form. Ten fields split into Content, Design and SEO is a decision about what an editor has to think about at once.",[],{"_key":149,"_type":64,"children":150,"markDefs":155,"style":81},"b0051",[151],{"_key":152,"_type":68,"marks":153,"text":154},"s0052",[],"The cost of getting it wrong is invisible",[],{"_key":157,"_type":64,"children":158,"markDefs":163,"style":72},"b0053",[159],{"_key":160,"_type":68,"marks":161,"text":162},"s0054",[],"Nobody files a ticket saying the field labels are confusing. They ask you to fill the page in for them instead, and that request arrives once a week forever.",[],[165,171],{"_createdAt":5,"_id":166,"_rev":167,"_type":168,"_updatedAt":5,"slug":169,"title":170},"category-content-modelling","2d20vp0kUSy7uZjqDieLmb","category","content-modelling","Content Modelling",{"_createdAt":5,"_id":172,"_rev":167,"_type":168,"_updatedAt":5,"slug":173,"title":174},"category-design-systems","design-systems","Design Systems","Schema field names leak into the Studio. If they were chosen to satisfy a component prop, the person filling them in pays for it every day.",{"_type":177,"layout":178,"pageDesign":179},"post.layout.options","default","design1",{"_type":49,"alt":181,"asset":182},"Abstract violet gradient representing labelled fields",{"_ref":183,"_type":15},"image-b10db2de4605e9a295728b4e85786db552265e02-1600x900-jpg","2025-09-18T09:00:00.000Z",1,[187,209,225],{"_id":188,"authorProfile":189,"categories":196,"excerpt":201,"mainImage":202,"publishedAt":206,"readTime":185,"slug":207,"title":208},"post-generated-types",{"avatar":190,"name":194,"role":195},{"_type":49,"alt":191,"asset":192},"Portrait of Avery Lin",{"_ref":193,"_type":15},"image-7d9d32f0d8cbaa44274ac31144c4acd3b6256c53-512x512-jpg","Avery Lin","Content Architect",[197,200],{"slug":198,"title":199},"developer-experience","Developer Experience",{"slug":169,"title":170},"Types written by hand describe what you believed the schema said. Types generated from it describe what the schema actually says.",{"_type":49,"alt":203,"asset":204},"Abstract cyan gradient suggesting a type graph",{"_ref":205,"_type":15},"image-17a06078263667a676c81409a6913d585588058a-1600x900-jpg","2026-08-12T09:00:00.000Z","generated-types-are-a-contract","Generated types are a contract, not a convenience",{"_id":210,"authorProfile":211,"categories":214,"excerpt":217,"mainImage":218,"publishedAt":222,"readTime":185,"slug":223,"title":224},"post-design-tokens",{"avatar":212,"name":194,"role":195},{"_type":49,"alt":191,"asset":213},{"_ref":193,"_type":15},[215,216],{"slug":173,"title":174},{"slug":169,"title":170},"When an editor picks a brand colour, half a dozen derived values have to stay legible. Here is how to derive them once instead of hard-coding them everywhere.",{"_type":49,"alt":219,"asset":220},"Abstract magenta gradient representing a derived colour palette",{"_ref":221,"_type":15},"image-c96efd6b55a465dcb615ad80af90714207b25dbc-1600x900-jpg","2026-06-21T09:00:00.000Z","theme-colours-belong-to-the-content","Theme colours belong to the content, not the stylesheet",{"_id":226,"authorProfile":227,"categories":230,"excerpt":232,"mainImage":233,"publishedAt":237,"readTime":238,"slug":239,"title":240},"post-structured-content",{"avatar":228,"name":194,"role":195},{"_type":49,"alt":191,"asset":229},{"_ref":193,"_type":15},[231],{"slug":169,"title":170},"Page-shaped content models feel productive for about six weeks. Here is what to model instead, and how to tell when a field is describing meaning rather than layout.",{"_type":49,"alt":234,"asset":235},"Abstract blue gradient representing structured content layers",{"_ref":236,"_type":15},"image-dd16abed87c4fcb58e0c410eb2451fe86bd707e2-1600x900-jpg","2026-05-14T09:00:00.000Z",2,"structured-content-over-page-builders","Why your CMS should not know what a hero section is",{"_type":242,"includeInSitemap":243,"slug":244},"page.routing.options",true,{"_type":245,"current":246},"slug","name-the-field-for-the-editor",[170,248,249],"Editor Experience","Sanity Studio","Name the field for the editor, not for the component",1788029822158]