[{"data":1,"prerenderedAt":479},["ShallowReactive",2],{"DefaultLayoutnl":3,"language-team-slug-jasper-i18n-slugs":104,"person-language-team-slug-nl-jasper":132,"blogs-language-team-slug-nl-jasper":146},{"app":4,"menu":31,"footer":66},{"githubUrl":5,"youtubeUrl":6,"linkedinUrl":7,"phoneNumber":8,"emailAddress":9,"legal":10,"addresses":20},"https:\u002F\u002Fgithub.com\u002Fvoorhoede\u002F","https:\u002F\u002Fwww.youtube.com\u002Fchannel\u002FUCzHuhQVYFRixtQN2-swcuGg","https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Fde-voorhoede","+31 20 2610 954","post@voorhoede.nl",[11,14,17],{"title":12,"value":13},"KvK","56017235",{"title":15,"value":16},"BTW","NL851944620B01",{"title":18,"value":19},"IBAN","NL14TRIO0320142078",[21,26],{"address":22,"city":23,"googleMapsLink":24,"postalCode":25},"Koivistokade 70","Amsterdam","https:\u002F\u002Fwww.google.com\u002Fmaps\u002Fplace\u002FDe+Voorhoede+%7C+Front-end+Development\u002F@52.396847,4.8700823,17z\u002Fdata=!3m1!4b1!4m5!3m4!1s0x47c5e21d502d2d59:0xbf570944a96ebf45!8m2!3d52.347647!4d4.8502154","1013 BB",{"address":27,"city":28,"googleMapsLink":29,"postalCode":30},"Koornmarkt 22","Delft","https:\u002F\u002Fwww.google.nl\u002Fmaps\u002Fplace\u002FKoornmarkt+22,+2611+EG+Delft\u002F@52.0093477,4.3573054,17z\u002F","2611 EG",{"title":32,"callToActions":33,"links":39},"Site Menu",[34],{"id":35,"title":36,"link":37},"163140903","Contact",{"__typename":38},"ContactRecord",[40,46,51,56,61],{"id":41,"title":42,"link":43},"163140909","Impact",{"__typename":44,"slug":45},"PageRecord","impact",{"id":47,"title":48,"link":49},"163140910","Services",{"__typename":50},"ServiceOverviewRecord",{"id":52,"title":53,"link":54},"163140911","Cases",{"__typename":55},"CaseOverviewRecord",{"id":57,"title":58,"link":59},"163140913","Over ons",{"__typename":44,"slug":60},"about-us",{"id":62,"title":63,"link":64},"NnUFs73_Saa8XE_jYZFHcw","Werken bij",{"__typename":44,"slug":65},"work-at",{"links":67,"copyrightTitle":93,"copyrightLabel":94,"copyrightLink":95,"privacyTitle":96,"privacyLabel":97,"privacyLink":98,"certificatesGrid":99},[68,71,74,77,82,85,88],{"id":69,"title":42,"link":70},"144185271",{"__typename":44,"slug":45},{"id":72,"title":48,"link":73},"144185272",{"__typename":50},{"id":75,"title":53,"link":76},"144185273",{"__typename":55},{"id":78,"title":79,"link":80},"144185274","Blog",{"__typename":81},"BlogPostOverviewRecord",{"id":83,"title":58,"link":84},"144185275",{"__typename":44,"slug":60},{"id":86,"title":36,"link":87},"144185276",{"__typename":38},{"id":89,"title":90,"link":91},"144185277","FAQ",{"__typename":44,"slug":92},"faq","Creative Commons licentie en disclaimer","CC BY 4.0","https:\u002F\u002Fcreativecommons.org\u002Flicenses\u002Fby\u002F4.0\u002F","PDF bestand van De Voorhoede privacy statement","Privacy statement","https:\u002F\u002Fwww.datocms-assets.com\u002F6524\u002F1763455427-vh-isms-007-privacy-statement-de-voorhoede-nl.pdf",[100,112,122],{"id":101,"image":102,"link":107},"Xq4bBfg_TZ6Fkjax9mkbLQ",{"url":103,"alt":104,"width":105,"height":106},"https:\u002F\u002Fwww.datocms-assets.com\u002F6524\u002F1687353463-b-corp-logo-black-rgb.png",null,404,680,{"__typename":108,"id":109,"title":110,"url":111},"ExternalLinkRecord","fGW1ak8XQYaYDLkBSyncog","B Corp","https:\u002F\u002Fwww.bcorporation.net\u002Fen-us\u002Ffind-a-b-corp\u002Fcompany\u002Fde-voorhoede\u002F",{"id":113,"image":114,"link":118},"c5mCXRTiSraRIB25fw1p7Q",{"url":115,"alt":104,"width":116,"height":117},"https:\u002F\u002Fwww.datocms-assets.com\u002F6524\u002F1687353461-dda-boxlogo-black.png",627,480,{"__typename":108,"id":119,"title":120,"url":121},"P6Jh7B0cTv2cKyNEeKVWVQ","Dutch Digital Agencies","https:\u002F\u002Fdutchdigitalagencies.com\u002Fleden\u002Fde-voorhoede\u002F",{"id":123,"image":124,"link":127},"MT5SCyNxSTSr_v5eeATMZw",{"url":125,"alt":104,"width":126,"height":126},"https:\u002F\u002Fwww.datocms-assets.com\u002F6524\u002F1775730283-dnv.png",518,{"id":128,"title":129,"link":130},"BRtNB5HnT5i-7HkA8IYzBw","DIV",{"__typename":44,"slug":131},"impact\u002Fdigitale-producten-privacy-by-design",{"person":133},{"name":134,"id":135,"jobTitle":136,"lastName":137,"employmentStatus":138,"slug":139,"biography":140,"image":141,"links":145},"Jasper","340340","CTO, Co-founder","","currentEmployee","jasper","Ik ben een tech-ondernemer. In 2012 richtte ik als co-founder De Voorhoede op. Vandaag ben ik als CTO verantwoordelijk voor onze [tech] strategie. Ik focus me op software architectuur en experimenteer graag met nieuwe technologie. Ik schrijf en praat over software patterns, nieuwe tech en eigenzinnige implementaties om dingen werkend te krijgen.",{"url":142,"alt":104,"width":143,"height":144},"https:\u002F\u002Fwww.datocms-assets.com\u002F6524\u002F1683535518-jasper.jpg",1892,2523,[],{"blogPosts":147},[148,162,174,190,206,218,229,240,252,262,276,286,296,308,318,332,342,352,362,372,382,393,405,415,425,435,445,455,469],{"_allSlugLocales":149,"id":156,"title":157,"introTitle":158,"slug":152,"date":159,"authors":160},[150,153],{"locale":151,"value":152},"en","how-close-to-the-user-should-your-code-be",{"locale":154,"value":155},"nl","hoe-dichtbij-de-gebruiker-moet-jouw-code-draaien","UW_APE2tRCS42ELHrso8Ag","How close to the user should your code be?","As front-end developers, we’re used to thinking about what our code does. But increasingly, where it runs is just as important. Serverless and edge computing give us new options for putting logic closer to our users, but choosing the right location isn’t always obvious.","2025-10-30T10:07:10.411+01:00",[161],{"id":135,"name":134,"slug":139},{"_allSlugLocales":163,"id":168,"title":169,"introTitle":170,"slug":165,"date":171,"authors":172},[164,166],{"locale":151,"value":165},"design-system-from-scratch-from-the-shelf",{"locale":154,"value":167},"design-system-op-maat-of-kant-en-klaar","ayIJ2klTQT2AYxZUe_Epiw","Design System: from scratch or from the shelf?","A Design System is an investment. Depending on your needs and budget, you may prefer a fully tailor-made design system from scratch, or rather a white label from the shelf that you only need to customise to your liking. Off the shelf there’s a whole range of UI component libraries available. How do you decide what to use for your design system? ","2024-11-19T13:16:02.759+01:00",[173],{"id":135,"name":134,"slug":139},{"_allSlugLocales":175,"id":180,"title":181,"introTitle":182,"slug":177,"date":183,"authors":184},[176,178],{"locale":151,"value":177},"building-design-system-react-web-components",{"locale":154,"value":179},"design-system-bouwen-react-webcomponenten","133138416","Building a Design System with React Web Components","What if you could build a universal Design system with React and use it in any web application or framework? We achieved this by compiling React to Web Components. This is how.","2023-06-19T02:00:00.000+02:00",[185,186],{"id":135,"name":134,"slug":139},{"id":187,"name":188,"slug":189},"4585143","Sjoerd","sjoerd",{"_allSlugLocales":191,"id":196,"title":197,"introTitle":198,"slug":193,"date":199,"authors":200},[192,194],{"locale":151,"value":193},"switching-google-analytics-privacy-friendly-tracking-6-steps",{"locale":154,"value":195},"van-google-analytics-naar-privacy-vriendelijke-tracking-6-stappen","111353304","Switching from Google Analytics to privacy friendly tracking in 6 steps","As of July 2023 the Google Analytics Universal property will expire. Marketers were given over a year to get used to this idea and make sense of Google Analytics 4. In the meantime, serious doubts have arisen about the use of Google Analytics in Europe. The way Google handles personal data is under attack. Several European countries have even prohibited the use of Google Analytics. ","2023-05-29T02:00:00.000+02:00",[201,205],{"id":202,"name":203,"slug":204},"122738219","Vera","vera",{"id":135,"name":134,"slug":139},{"_allSlugLocales":207,"id":212,"title":213,"introTitle":214,"slug":209,"date":215,"authors":216},[208,210],{"locale":151,"value":209},"how-to-select-framework-design-system-components",{"locale":154,"value":211},"kiezen-framework-design-system-componenten","144167833","How to select a framework for design system components","Design System components aim to be a universal solution for all teams and all products in an organisation. But which technology or framework can provide this universal solution?","2022-12-12T01:00:00.000+01:00",[217],{"id":135,"name":134,"slug":139},{"_allSlugLocales":219,"id":222,"title":223,"introTitle":224,"slug":221,"date":225,"authors":226},[220],{"locale":154,"value":221},"10-jaar-interview-jasper","122739695","De Voorhoede 10 jaar - een interview met Jasper","In 10 jaar tijd bouwt Jasper Moelker De Voorhoede uit tot een gespecialiseerde front-end club met een hecht team van 30 medewerkers. Op 1 oktober viert de organisatie haar lustrum. Samen met Jasper blikken we terug op de eerste jaren, praten we over de organisatie nu en hij vertelt zijn dromen voor de toekomst. ","2022-07-20T02:00:00.000+02:00",[227,228],{"id":202,"name":203,"slug":204},{"id":135,"name":134,"slug":139},{"_allSlugLocales":230,"id":234,"title":235,"introTitle":236,"slug":232,"date":237,"authors":238},[231,233],{"locale":151,"value":232},"full-stack-front-end",{"locale":154,"value":232},"122776114","Full-stack Front-end","We’re extending our approach to front-end with a full-stack MACH architecture to deliver better user experiences.","2022-07-19T02:00:00.000+02:00",[239],{"id":135,"name":134,"slug":139},{"_allSlugLocales":241,"id":246,"title":247,"introTitle":248,"slug":243,"date":249,"authors":250},[242,244],{"locale":151,"value":243},"future-front-end-replaceable-inadequate-innovative",{"locale":154,"value":245},"toekomst-front-end-vervangbaar-ontoereikend-innovatief","122760942","The future of front-end: replaceable, inadequate or innovative?","This year marks the 10th anniversary of De Voorhoede. In all those years front-end went from a niche to being everywhere. We enjoy being part of the frontrunners and are now looking to what the future of front-end holds.","2022-07-18T02:00:00.000+02:00",[251],{"id":135,"name":134,"slug":139},{"_allSlugLocales":253,"id":256,"title":257,"introTitle":258,"slug":255,"date":259,"authors":260},[254],{"locale":151,"value":255},"enriching-rich-text-with-inline-components-datocms-react","75529627","Enriching rich text with inline components (DatoCMS + React)","Designers challenge us to come up with technical solutions to build their creations. With inline components we have a new tool to bring their imaginations to live. Here’s how we use DatoCMS structured text in combination with React.","2021-11-19T01:00:00.000+01:00",[261],{"id":135,"name":134,"slug":139},{"_allSlugLocales":263,"id":266,"title":267,"introTitle":268,"slug":265,"date":269,"authors":270},[264],{"locale":151,"value":265},"design-system-tooling","69521714","Design System Tooling","Videos of our October 2022 Design System Tooling meetup","2021-11-15T01:00:00.000+01:00",[271,272],{"id":135,"name":134,"slug":139},{"id":273,"name":274,"slug":275},"340335","Karlijn","karlijn",{"_allSlugLocales":277,"id":280,"title":281,"introTitle":282,"slug":279,"date":283,"authors":284},[278],{"locale":151,"value":279},"cms-driven-intellisense-in-your-code-editor","68408640","CMS-driven IntelliSense in your code editor","Headless CMS’es with auto-generated API’s are popular. They separate content management from your front-end, giving you extra freedom. But this disconnect also means your code editor doesn’t know about your data structure and can’t help you out. How can we fix this?","2021-10-27T02:00:00.000+02:00",[285],{"id":135,"name":134,"slug":139},{"_allSlugLocales":287,"id":290,"title":291,"introTitle":292,"slug":289,"date":293,"authors":294},[288],{"locale":151,"value":289},"componentize-data-with-graphql-fragments","61952900","Componentize data with GraphQL Fragments","GraphQL offers fragments - reusable units of logic that can be shared between multiple queries and mutations. By separating GraphQL fragments into separate files you can fully componentize your data and bundle them with your React or Vue (or any other flavour) components.","2021-10-01T02:00:00.000+02:00",[295],{"id":135,"name":134,"slug":139},{"_allSlugLocales":297,"id":302,"title":303,"introTitle":304,"slug":299,"date":305,"authors":306},[298,300],{"locale":151,"value":299},"kick-start-your-design-system-with-a-design-inventory-workshop",{"locale":154,"value":301},"kick-start-design-system-design-inventory-workshop","58125267","Kick-start your Design System with a Design Inventory Workshop","Design systems boost user experience and efficiency. But turning an existing design into a system, can be a challenge. To kick-start this process we’ve developed the Design Inventory Workshop.","2021-09-16T02:00:00.000+02:00",[307],{"id":135,"name":134,"slug":139},{"_allSlugLocales":309,"id":312,"title":313,"introTitle":314,"slug":311,"date":315,"authors":316},[310],{"locale":151,"value":311},"elder-js-the-new-kid-on-the-block","39628504","Elder.js, the new kid on the block","Elder.js is a new meta framework based on Svelte. What does it bring to the table?","2021-05-18T02:00:00.000+02:00",[317],{"id":135,"name":134,"slug":139},{"_allSlugLocales":319,"id":322,"title":323,"introTitle":324,"slug":321,"date":325,"authors":326},[320],{"locale":151,"value":321},"the-new-native-web","25531150","New native web API's: Monetization and Animation","Videos of our March 2021 New native web meetup","2021-03-25T01:00:00.000+01:00",[327,331],{"id":328,"name":329,"slug":330},"25531149","Ben","ben",{"id":135,"name":134,"slug":139},{"_allSlugLocales":333,"id":336,"title":337,"introTitle":338,"slug":335,"date":339,"authors":340},[334],{"locale":151,"value":335},"maybe-not-eleventy","24753301","Maybe not Eleventy","Eleventy is a very popular JAMStack site generator. So why wouldn’t you choose Eleventy for your next project?","2021-03-16T01:00:00.000+01:00",[341],{"id":135,"name":134,"slug":139},{"_allSlugLocales":343,"id":346,"title":347,"introTitle":348,"slug":345,"date":349,"authors":350},[344],{"locale":151,"value":345},"svelte-kit-the-first-serverless-first-framework","18694706","Svelte Kit, the first ‘serverless-first’ framework?","\"The whole serverless thing is a pretty good trend, and Svelte is now a serverless-first framework\"","2021-02-02T01:00:00.000+01:00",[351],{"id":135,"name":134,"slug":139},{"_allSlugLocales":353,"id":356,"title":357,"introTitle":358,"slug":355,"date":359,"authors":360},[354],{"locale":151,"value":355},"corona-proof-it-architecture","4572127"," Corona-proof IT architecture?","Choices in your IT architecture determine how well your product performs under pressure","2020-04-14T02:00:00.000+02:00",[361],{"id":135,"name":134,"slug":139},{"_allSlugLocales":363,"id":366,"title":367,"introTitle":368,"slug":365,"date":369,"authors":370},[364],{"locale":151,"value":365},"10x-faster-nuxt-builds-on-netlify","1521918","10x Faster Nuxt builds on Netlify","How can we create faster Nuxt builds on Netlify without affecting UX or site performance?","2019-09-30T02:00:00.000+02:00",[371],{"id":135,"name":134,"slug":139},{"_allSlugLocales":373,"id":376,"title":377,"introTitle":378,"slug":375,"date":379,"authors":380},[374],{"locale":151,"value":375},"abort-failing-nuxt-builds-on-netlify","1380299","Abort failing Nuxt builds on Netlify","How to prevent broken Nuxt builds from deploying your site on Netlify?","2019-08-20T02:00:00.000+02:00",[381],{"id":135,"name":134,"slug":139},{"_allSlugLocales":383,"id":386,"title":387,"introTitle":388,"slug":385,"date":389,"authors":390},[384],{"locale":151,"value":385},"future-proof-front-end-components","822158","Future-proof Front-end Components","Videos, slides and extras of our March 2019 meetup","2019-03-27T01:00:00.000+01:00",[391,392],{"id":135,"name":134,"slug":139},{"id":273,"name":274,"slug":275},{"_allSlugLocales":394,"id":399,"title":400,"introTitle":401,"slug":396,"date":402,"authors":403},[395,397],{"locale":151,"value":396},"dropbox-paper-as-a-headless-cms",{"locale":154,"value":398},"dropbox-paper-als-headless-cms","642247","Dropbox Paper as a headless CMS","We turned Dropbox Paper into a headless CMS and use it to publish our content elsewhere. ","2019-01-25T01:00:00.000+01:00",[404],{"id":135,"name":134,"slug":139},{"_allSlugLocales":406,"id":409,"title":410,"introTitle":411,"slug":408,"date":412,"authors":413},[407],{"locale":151,"value":408},"every-project-a-progressive-web-app","340400","Every project a Progressive Web App","From classic sites to native like apps","2018-01-08T01:00:00.000+01:00",[414],{"id":135,"name":134,"slug":139},{"_allSlugLocales":416,"id":419,"title":420,"introTitle":421,"slug":418,"date":422,"authors":423},[417],{"locale":151,"value":418},"making-our-site-more-app-y","465793","Making our site more app-y","PWA Patterns on voorhoede.nl","2017-12-04T01:00:00.000+01:00",[424],{"id":135,"name":134,"slug":139},{"_allSlugLocales":426,"id":429,"title":430,"introTitle":431,"slug":428,"date":432,"authors":433},[427],{"locale":151,"value":428},"fighting-front-end-fatigue-with-tooling-recipes","340433","Fighting front-end fatigue with tooling recipes","How to be productive with the latest web technologies","2017-03-17T01:00:00.000+01:00",[434],{"id":135,"name":134,"slug":139},{"_allSlugLocales":436,"id":439,"title":440,"introTitle":441,"slug":438,"date":442,"authors":443},[437],{"locale":151,"value":438},"say-no-to-image-reflow","458542","Say no to image reflow","Fixing image reflow with fixed dimensions and fixed ratio.","2016-11-17T01:00:00.000+01:00",[444],{"id":135,"name":134,"slug":139},{"_allSlugLocales":446,"id":449,"title":450,"introTitle":451,"slug":448,"date":452,"authors":453},[447],{"locale":151,"value":448},"progressive-enhancement-for-javascript-app-develope","458613","Progressive Enhancement for JavaScript App Developers","Build JS apps responsibly - cover your basics, render strategically and enhance into true apps","2016-06-14T02:00:00.000+02:00",[454],{"id":135,"name":134,"slug":139},{"_allSlugLocales":456,"id":459,"title":460,"introTitle":461,"slug":458,"date":462,"authors":463},[457],{"locale":151,"value":458},"riotjs-the-good-the-bad-and-the-style-guide","458758","Riot.js: the good, the bad and the style guide","Finally a #riotjs list of good practices.. bravo!” — Gianluca Guarini, RiotJS","2016-04-12T02:00:00.000+02:00",[464,468],{"id":465,"name":466,"slug":467},"340341","Anne","anne",{"id":135,"name":134,"slug":139},{"_allSlugLocales":470,"id":473,"title":474,"introTitle":475,"slug":472,"date":476,"authors":477},[471],{"locale":151,"value":472},"resisting-the-fast-food-menu","469600","Resisting the fast food menu","How we managed to keep our menu always directly usable, entirely visible and always accessible.","2016-02-02T01:00:00.000+01:00",[478],{"id":135,"name":134,"slug":139},1776256142277]