[{"data":1,"prerenderedAt":920},["ShallowReactive",2],{"/blog/tags/frontend":3,"navigation-en-us":18,"banner-en-us":446,"footer-en-us":457,"frontend-tag-posts-en-us":702},{"id":4,"title":5,"body":6,"category":6,"config":7,"content":9,"description":6,"extension":11,"meta":12,"navigation":13,"path":14,"seo":15,"slug":6,"stem":16,"testContent":6,"type":6,"__hash__":17},"blogTags/en-us/blog/tags/frontend.yml","Frontend",null,{"template":8},"BlogTag",{"tag":10,"tagSlug":10},"frontend","yml",{},true,"/en-us/blog/tags/frontend",{},"en-us/blog/tags/frontend","BdCHM9HovoGEgkvZWewxCY2b2fb287qNNRlOak86qFU",{"logo":19,"freeTrial":24,"sales":29,"login":34,"items":39,"search":366,"minimal":397,"duo":416,"switchNav":425,"pricingDeployment":436},{"config":20},{"href":21,"dataGaName":22,"dataGaLocation":23},"/","gitlab logo","header",{"text":25,"config":26},"Get free trial",{"href":27,"dataGaName":28,"dataGaLocation":23},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":30,"config":31},"Request a demo",{"href":32,"dataGaName":33,"dataGaLocation":23},"/sales/?contact-topic=request-demo","sales",{"text":35,"config":36},"Sign in",{"href":37,"dataGaName":38,"dataGaLocation":23},"https://gitlab.com/users/sign_in/","sign in",[40,69,169,174,288,344],{"text":41,"config":42,"menu":44},"Platform",{"dataNavLevelOne":43},"platform",{"type":45,"columns":46},"cards",[47,53,61],{"title":41,"description":48,"link":49},"The intelligent orchestration platform for DevSecOps",{"text":50,"config":51},"Explore our Platform",{"href":52,"dataGaName":43,"dataGaLocation":23},"/platform/",{"title":54,"description":55,"link":56},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":57,"config":58},"Meet GitLab Duo",{"href":59,"dataGaName":60,"dataGaLocation":23},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":62,"description":63,"link":64},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":65,"config":66},"Learn more",{"href":67,"dataGaName":68,"dataGaLocation":23},"/why-gitlab/","why gitlab",{"text":70,"left":13,"config":71,"menu":73},"Product",{"dataNavLevelOne":72},"solutions",{"type":74,"link":75,"columns":79,"feature":148},"lists",{"text":76,"config":77},"View all Solutions",{"href":78,"dataGaName":72,"dataGaLocation":23},"/solutions/",[80,104,127],{"title":81,"description":82,"link":83,"items":88},"Automation","CI/CD and automation to accelerate deployment",{"config":84},{"icon":85,"href":86,"dataGaName":87,"dataGaLocation":23},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[89,93,96,100],{"text":90,"config":91},"CI/CD",{"href":92,"dataGaLocation":23,"dataGaName":90},"/solutions/continuous-integration/",{"text":54,"config":94},{"href":59,"dataGaLocation":23,"dataGaName":95},"gitlab duo agent platform - product menu",{"text":97,"config":98},"Source Code Management",{"href":99,"dataGaLocation":23,"dataGaName":97},"/solutions/source-code-management/",{"text":101,"config":102},"Automated Software Delivery",{"href":86,"dataGaLocation":23,"dataGaName":103},"Automated software delivery",{"title":105,"description":106,"link":107,"items":112},"Security","Deliver code faster without compromising security",{"config":108},{"href":109,"dataGaName":110,"dataGaLocation":23,"icon":111},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[113,117,122],{"text":114,"config":115},"Application Security Testing",{"href":109,"dataGaName":116,"dataGaLocation":23},"Application security testing",{"text":118,"config":119},"Software Supply Chain Security",{"href":120,"dataGaLocation":23,"dataGaName":121},"/solutions/supply-chain/","Software supply chain security",{"text":123,"config":124},"Software Compliance",{"href":125,"dataGaName":126,"dataGaLocation":23},"/solutions/software-compliance/","software compliance",{"title":128,"link":129,"items":134},"Measurement",{"config":130},{"icon":131,"href":132,"dataGaName":133,"dataGaLocation":23},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[135,139,143],{"text":136,"config":137},"Visibility & Measurement",{"href":132,"dataGaLocation":23,"dataGaName":138},"Visibility and Measurement",{"text":140,"config":141},"Value Stream Management",{"href":142,"dataGaLocation":23,"dataGaName":140},"/solutions/value-stream-management/",{"text":144,"config":145},"Analytics & Insights",{"href":146,"dataGaLocation":23,"dataGaName":147},"/solutions/analytics-and-insights/","Analytics and insights",{"title":149,"type":74,"items":150},"GitLab for",[151,157,163],{"text":152,"config":153},"Enterprise",{"icon":154,"href":155,"dataGaLocation":23,"dataGaName":156},"Building","/enterprise/","enterprise",{"text":158,"config":159},"Small Business",{"icon":160,"href":161,"dataGaLocation":23,"dataGaName":162},"Work","/small-business/","small business",{"text":164,"config":165},"Public Sector",{"icon":166,"href":167,"dataGaLocation":23,"dataGaName":168},"Organization","/solutions/public-sector/","public sector",{"text":170,"config":171},"Pricing",{"href":172,"dataGaName":173,"dataGaLocation":23,"dataNavLevelOne":173},"/pricing/","pricing",{"text":175,"config":176,"menu":178},"Resources",{"dataNavLevelOne":177},"resources",{"type":74,"link":179,"columns":183,"feature":277},{"text":180,"config":181},"View all resources",{"href":182,"dataGaName":177,"dataGaLocation":23},"/resources/",[184,217,244],{"title":185,"items":186},"Getting started",[187,192,197,202,207,212],{"text":188,"config":189},"Install",{"href":190,"dataGaName":191,"dataGaLocation":23},"/install/","install",{"text":193,"config":194},"Quick start guides",{"href":195,"dataGaName":196,"dataGaLocation":23},"/get-started/","quick setup checklists",{"text":198,"config":199},"Learn",{"href":200,"dataGaLocation":23,"dataGaName":201},"https://university.gitlab.com/","learn",{"text":203,"config":204},"Product documentation",{"href":205,"dataGaName":206,"dataGaLocation":23},"https://docs.gitlab.com/","product documentation",{"text":208,"config":209},"Best practice videos",{"href":210,"dataGaName":211,"dataGaLocation":23},"/getting-started-videos/","best practice videos",{"text":213,"config":214},"Integrations",{"href":215,"dataGaName":216,"dataGaLocation":23},"/integrations/","integrations",{"title":218,"items":219},"Discover",[220,225,230,235,239],{"text":221,"config":222},"Customer success stories",{"href":223,"dataGaName":224,"dataGaLocation":23},"/customers/","customer success stories",{"text":226,"config":227},"Blog",{"href":228,"dataGaName":229,"dataGaLocation":23},"/blog/","blog",{"text":231,"config":232},"Demo Hub",{"href":233,"dataGaName":234,"dataGaLocation":23},"/demo-hub/","demo hub",{"text":236,"config":237},"The Source",{"href":238,"dataGaName":229,"dataGaLocation":23},"/the-source/",{"text":240,"config":241},"Remote",{"href":242,"dataGaName":243,"dataGaLocation":23},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":245,"items":246},"Connect",[247,252,257,262,267,272],{"text":248,"config":249},"GitLab Services",{"href":250,"dataGaName":251,"dataGaLocation":23},"/services/","services",{"text":253,"config":254},"Contribute",{"href":255,"dataGaName":256,"dataGaLocation":23},"https://contributors.gitlab.com","contribute",{"text":258,"config":259},"Community",{"href":260,"dataGaName":261,"dataGaLocation":23},"/community/","community",{"text":263,"config":264},"Forum",{"href":265,"dataGaName":266,"dataGaLocation":23},"https://forum.gitlab.com/","forum",{"text":268,"config":269},"Events",{"href":270,"dataGaName":271,"dataGaLocation":23},"/events/","events",{"text":273,"config":274},"Partners",{"href":275,"dataGaName":276,"dataGaLocation":23},"/partners/","partners",{"config":278,"title":281,"text":282,"link":283},{"background":279,"textColor":280},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","What’s new in GitLab","Stay updated with our latest features and improvements.",{"text":284,"config":285},"Read the latest",{"href":286,"dataGaName":287,"dataGaLocation":23},"/whats-new/","whats new",{"text":289,"config":290,"menu":292},"Company",{"dataNavLevelOne":291},"company",{"type":74,"columns":293},[294],{"items":295},[296,301,307,309,314,319,324,329,334,339],{"text":297,"config":298},"About",{"href":299,"dataGaName":300,"dataGaLocation":23},"/company/","about",{"text":302,"config":303,"footerGa":306},"Jobs",{"href":304,"dataGaName":305,"dataGaLocation":23},"/jobs/","jobs",{"dataGaName":305},{"text":268,"config":308},{"href":270,"dataGaName":271,"dataGaLocation":23},{"text":310,"config":311},"Leadership",{"href":312,"dataGaName":313,"dataGaLocation":23},"/company/team/e-group/","leadership",{"text":315,"config":316},"Handbook",{"href":317,"dataGaName":318,"dataGaLocation":23},"https://handbook.gitlab.com/","handbook",{"text":320,"config":321},"Investor relations",{"href":322,"dataGaName":323,"dataGaLocation":23},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":325,"config":326},"Trust Center",{"href":327,"dataGaName":328,"dataGaLocation":23},"/security/","trust center",{"text":330,"config":331},"AI Transparency Center",{"href":332,"dataGaName":333,"dataGaLocation":23},"/ai-transparency-center/","ai transparency center",{"text":335,"config":336},"Newsletter",{"href":337,"dataGaName":338,"dataGaLocation":23},"/company/contact/#contact-forms","newsletter",{"text":340,"config":341},"Press",{"href":342,"dataGaName":343,"dataGaLocation":23},"/press/","press",{"text":345,"config":346,"menu":347},"Contact us",{"dataNavLevelOne":291},{"type":74,"columns":348},[349],{"items":350},[351,356,361],{"text":352,"config":353},"Talk to sales",{"href":354,"dataGaName":355,"dataGaLocation":23},"/sales/","talk to sales",{"text":357,"config":358},"Support portal",{"href":359,"dataGaName":360,"dataGaLocation":23},"https://support.gitlab.com/hc/en-us","support portal",{"text":362,"config":363},"Customer portal",{"href":364,"dataGaName":365,"dataGaLocation":23},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":367,"login":368,"suggestions":375},"Close",{"text":369,"link":370},"To search repositories and projects, login to",{"text":371,"config":372},"gitlab.com",{"href":37,"dataGaName":373,"dataGaLocation":374},"search login","search",{"text":376,"default":377},"Suggestions",[378,380,384,386,390,394],{"text":54,"config":379},{"href":59,"dataGaName":54,"dataGaLocation":374},{"text":381,"config":382},"Code Suggestions (AI)",{"href":383,"dataGaName":381,"dataGaLocation":374},"/solutions/code-suggestions/",{"text":90,"config":385},{"href":92,"dataGaName":90,"dataGaLocation":374},{"text":387,"config":388},"GitLab on AWS",{"href":389,"dataGaName":387,"dataGaLocation":374},"/partners/technology-partners/aws/",{"text":391,"config":392},"GitLab on Google Cloud",{"href":393,"dataGaName":391,"dataGaLocation":374},"/partners/technology-partners/google-cloud-platform/",{"text":395,"config":396},"Why GitLab?",{"href":67,"dataGaName":395,"dataGaLocation":374},{"freeTrial":398,"mobileIcon":403,"desktopIcon":408,"secondaryButton":411},{"text":399,"config":400},"Start free trial",{"href":401,"dataGaName":28,"dataGaLocation":402},"https://gitlab.com/-/trials/new/","nav",{"altText":404,"config":405},"Gitlab Icon",{"src":406,"dataGaName":407,"dataGaLocation":402},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":404,"config":409},{"src":410,"dataGaName":407,"dataGaLocation":402},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":412,"config":413},"Get Started",{"href":414,"dataGaName":415,"dataGaLocation":402},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":417,"mobileIcon":421,"desktopIcon":423},{"text":418,"config":419},"Learn more about GitLab Duo",{"href":59,"dataGaName":420,"dataGaLocation":402},"gitlab duo",{"altText":404,"config":422},{"src":406,"dataGaName":407,"dataGaLocation":402},{"altText":404,"config":424},{"src":410,"dataGaName":407,"dataGaLocation":402},{"button":426,"mobileIcon":431,"desktopIcon":433},{"text":427,"config":428},"/switch",{"href":429,"dataGaName":430,"dataGaLocation":402},"#contact","switch",{"altText":404,"config":432},{"src":406,"dataGaName":407,"dataGaLocation":402},{"altText":404,"config":434},{"src":435,"dataGaName":407,"dataGaLocation":402},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":437,"mobileIcon":442,"desktopIcon":444},{"text":438,"config":439},"Back to pricing",{"href":172,"dataGaName":440,"dataGaLocation":402,"icon":441},"back to pricing","GoBack",{"altText":404,"config":443},{"src":406,"dataGaName":407,"dataGaLocation":402},{"altText":404,"config":445},{"src":410,"dataGaName":407,"dataGaLocation":402},{"title":447,"titleMobile":448,"button":449,"config":454},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":65,"config":450},{"href":451,"dataGaName":452,"dataGaLocation":453},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":455,"disabled":456},"release",false,{"data":458},{"text":459,"source":460,"edit":466,"contribute":471,"config":476,"items":481,"minimal":691},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":461,"config":462},"View page source",{"href":463,"dataGaName":464,"dataGaLocation":465},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":467,"config":468},"Edit this page",{"href":469,"dataGaName":470,"dataGaLocation":465},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":472,"config":473},"Please contribute",{"href":474,"dataGaName":475,"dataGaLocation":465},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":477,"facebook":478,"youtube":479,"linkedin":480},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[482,529,583,627,659],{"title":170,"links":483,"subMenu":498},[484,488,493],{"text":485,"config":486},"View plans",{"href":172,"dataGaName":487,"dataGaLocation":465},"view plans",{"text":489,"config":490},"Why Premium?",{"href":491,"dataGaName":492,"dataGaLocation":465},"/pricing/premium/","why premium",{"text":494,"config":495},"Why Ultimate?",{"href":496,"dataGaName":497,"dataGaLocation":465},"/pricing/ultimate/","why ultimate",[499],{"title":500,"links":501},"Contact Us",[502,505,507,509,514,519,524],{"text":503,"config":504},"Contact sales",{"href":354,"dataGaName":33,"dataGaLocation":465},{"text":357,"config":506},{"href":359,"dataGaName":360,"dataGaLocation":465},{"text":362,"config":508},{"href":364,"dataGaName":365,"dataGaLocation":465},{"text":510,"config":511},"Status",{"href":512,"dataGaName":513,"dataGaLocation":465},"https://status.gitlab.com/","status",{"text":515,"config":516},"Terms of use",{"href":517,"dataGaName":518,"dataGaLocation":465},"/terms/","terms of use",{"text":520,"config":521},"Privacy statement",{"href":522,"dataGaName":523,"dataGaLocation":465},"/privacy/","privacy statement",{"text":525,"config":526},"Cookie preferences",{"dataGaName":527,"dataGaLocation":465,"id":528,"isOneTrustButton":13},"cookie preferences","ot-sdk-btn",{"title":70,"links":530,"subMenu":539},[531,535],{"text":532,"config":533},"DevSecOps platform",{"href":52,"dataGaName":534,"dataGaLocation":465},"devsecops platform",{"text":536,"config":537},"AI-Assisted Development",{"href":59,"dataGaName":538,"dataGaLocation":465},"ai-assisted development",[540],{"title":541,"links":542},"Topics",[543,548,553,558,563,568,573,578],{"text":544,"config":545},"CICD",{"href":546,"dataGaName":547,"dataGaLocation":465},"/topics/ci-cd/","cicd",{"text":549,"config":550},"GitOps",{"href":551,"dataGaName":552,"dataGaLocation":465},"/topics/gitops/","gitops",{"text":554,"config":555},"DevOps",{"href":556,"dataGaName":557,"dataGaLocation":465},"/topics/devops/","devops",{"text":559,"config":560},"Version Control",{"href":561,"dataGaName":562,"dataGaLocation":465},"/topics/version-control/","version control",{"text":564,"config":565},"DevSecOps",{"href":566,"dataGaName":567,"dataGaLocation":465},"/topics/devsecops/","devsecops",{"text":569,"config":570},"Cloud Native",{"href":571,"dataGaName":572,"dataGaLocation":465},"/topics/cloud-native/","cloud native",{"text":574,"config":575},"AI for Coding",{"href":576,"dataGaName":577,"dataGaLocation":465},"/topics/devops/ai-for-coding/","ai for coding",{"text":579,"config":580},"Agentic AI",{"href":581,"dataGaName":582,"dataGaLocation":465},"/topics/agentic-ai/","agentic ai",{"title":584,"links":585},"Solutions",[586,588,590,595,599,602,606,609,611,614,617,622],{"text":114,"config":587},{"href":109,"dataGaName":114,"dataGaLocation":465},{"text":103,"config":589},{"href":86,"dataGaName":87,"dataGaLocation":465},{"text":591,"config":592},"Agile development",{"href":593,"dataGaName":594,"dataGaLocation":465},"/solutions/agile-delivery/","agile delivery",{"text":596,"config":597},"SCM",{"href":99,"dataGaName":598,"dataGaLocation":465},"source code management",{"text":544,"config":600},{"href":92,"dataGaName":601,"dataGaLocation":465},"continuous integration & delivery",{"text":603,"config":604},"Value stream management",{"href":142,"dataGaName":605,"dataGaLocation":465},"value stream management",{"text":549,"config":607},{"href":608,"dataGaName":552,"dataGaLocation":465},"/solutions/gitops/",{"text":152,"config":610},{"href":155,"dataGaName":156,"dataGaLocation":465},{"text":612,"config":613},"Small business",{"href":161,"dataGaName":162,"dataGaLocation":465},{"text":615,"config":616},"Public sector",{"href":167,"dataGaName":168,"dataGaLocation":465},{"text":618,"config":619},"Education",{"href":620,"dataGaName":621,"dataGaLocation":465},"/solutions/education/","education",{"text":623,"config":624},"Financial services",{"href":625,"dataGaName":626,"dataGaLocation":465},"/solutions/finance/","financial services",{"title":175,"links":628},[629,631,633,635,638,640,643,645,647,649,651,653,655,657],{"text":188,"config":630},{"href":190,"dataGaName":191,"dataGaLocation":465},{"text":193,"config":632},{"href":195,"dataGaName":196,"dataGaLocation":465},{"text":198,"config":634},{"href":200,"dataGaName":201,"dataGaLocation":465},{"text":203,"config":636},{"href":205,"dataGaName":637,"dataGaLocation":465},"docs",{"text":226,"config":639},{"href":228,"dataGaName":229,"dataGaLocation":465},{"text":641,"config":642},"What's new",{"href":286,"dataGaName":287,"dataGaLocation":465},{"text":221,"config":644},{"href":223,"dataGaName":224,"dataGaLocation":465},{"text":240,"config":646},{"href":242,"dataGaName":243,"dataGaLocation":465},{"text":248,"config":648},{"href":250,"dataGaName":251,"dataGaLocation":465},{"text":253,"config":650},{"href":255,"dataGaName":256,"dataGaLocation":465},{"text":258,"config":652},{"href":260,"dataGaName":261,"dataGaLocation":465},{"text":263,"config":654},{"href":265,"dataGaName":266,"dataGaLocation":465},{"text":268,"config":656},{"href":270,"dataGaName":271,"dataGaLocation":465},{"text":273,"config":658},{"href":275,"dataGaName":276,"dataGaLocation":465},{"title":289,"links":660},[661,663,665,667,669,671,675,680,682,684,686],{"text":297,"config":662},{"href":299,"dataGaName":291,"dataGaLocation":465},{"text":302,"config":664},{"href":304,"dataGaName":305,"dataGaLocation":465},{"text":310,"config":666},{"href":312,"dataGaName":313,"dataGaLocation":465},{"text":315,"config":668},{"href":317,"dataGaName":318,"dataGaLocation":465},{"text":320,"config":670},{"href":322,"dataGaName":323,"dataGaLocation":465},{"text":672,"config":673},"Sustainability",{"href":674,"dataGaName":672,"dataGaLocation":465},"/sustainability/",{"text":676,"config":677},"Diversity, inclusion and belonging (DIB)",{"href":678,"dataGaName":679,"dataGaLocation":465},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":325,"config":681},{"href":327,"dataGaName":328,"dataGaLocation":465},{"text":335,"config":683},{"href":337,"dataGaName":338,"dataGaLocation":465},{"text":340,"config":685},{"href":342,"dataGaName":343,"dataGaLocation":465},{"text":687,"config":688},"Modern Slavery Transparency Statement",{"href":689,"dataGaName":690,"dataGaLocation":465},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":692},[693,696,699],{"text":694,"config":695},"Terms",{"href":517,"dataGaName":518,"dataGaLocation":465},{"text":697,"config":698},"Cookies",{"dataGaName":527,"dataGaLocation":465,"id":528,"isOneTrustButton":13},{"text":700,"config":701},"Privacy",{"href":522,"dataGaName":523,"dataGaLocation":465},[703,712,722,730,739,748,756,765,773,780,788,796,805,812,817,824,831,840,848,857,865,873,881,889,897,905,913],{"title":704,"heroImage":705,"category":706,"description":707,"authors":708,"date":710,"slug":711,"externalUrl":6},"Total Blocking Time - The metric to know for faster website performance","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682637/Blog/Hero%20Images/tbt_cover_image.jpg","engineering","Learn how to identify and fix some root causes for high Total Blocking Time.",[709],"Jacques Erasmus","2023-02-14","understanding-and-improving-total-blocking-time",{"title":713,"heroImage":714,"category":715,"description":716,"authors":717,"date":720,"slug":721,"externalUrl":6},"Get to know the new GitLab typefaces","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749669926/Blog/Hero%20Images/Cover3.png","news","Dive deep into the considerations for changing to GitLab Sans (Inter) and JetBrains Mono, including improved readability.",[718,719],"Sascha Eggenberger","Jeremy Elder","2023-01-17","new-typefaces-in-gitlab",{"title":723,"heroImage":724,"category":706,"description":725,"authors":726,"date":728,"slug":729,"externalUrl":6},"How to choose the right static site generator","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682290/Blog/Hero%20Images/kelly-sikkema-gchfxsdcmje-unsplash-resized.jpg","Here's an in-depth look at 6 static site generators that deploy to GitLab Pages.",[727],"Fatima Sarah Khalid","2022-04-18","comparing-static-site-generators",{"title":731,"heroImage":732,"category":706,"description":733,"authors":734,"date":737,"slug":738,"externalUrl":6},"Why we spent the last month eliminating PostgreSQL subtransactions","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749669470/Blog/Hero%20Images/nessie.jpg","How a mysterious stall in database queries uncovered a performance limitation with PostgreSQL.",[735,736],"Grzegorz Bizon","Stan Hu","2021-09-29","why-we-spent-the-last-month-eliminating-postgresql-subtransactions",{"title":740,"heroImage":741,"category":742,"description":743,"authors":744,"date":746,"slug":747,"externalUrl":6},"Placebo Lines on the Pipeline Graph","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749679507/Blog/Hero%20Images/ci-cd.png","unfiltered","Have you noticed the connecting lines missing on your pipelines lately? Here's why",[745],"Sam Beckham","2021-05-11","placebo-lines-on-the-pipeline-graph",{"title":749,"heroImage":750,"category":742,"description":751,"authors":752,"date":754,"slug":755,"externalUrl":6},"Why do GitLab designers contribute to the codebase?","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749679556/Blog/Hero%20Images/insights.png","This article is not another blog post about whether designers should code. Instead, it's the perspective of a GitLab designer learning to contribute.",[753],"Austin Regnery","2021-03-17","why-do-gitlab-designers-contribute-to-the-codebase",{"title":757,"heroImage":758,"category":759,"description":760,"authors":761,"date":763,"slug":764,"externalUrl":6},"How to carry out effective code reviews","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678861/Blog/Hero%20Images/pre-commit.jpg","insights","From time management to unblocking, discover the secrets of more efficient code reviews.",[762],"Phil Hughes","2020-09-08","efficient-code-review-tips",{"title":766,"heroImage":767,"category":706,"description":768,"authors":769,"date":771,"slug":772,"externalUrl":6},"The trouble with technical interviews? They aren't like the job you're interviewing for","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681148/Blog/Hero%20Images/nycbrooklyn.jpg","Forget the coding exercise. Here's how to create realistic scenarios for engineering candidates in technical interviews.",[770],"Sara Kassabian","2020-03-19","the-trouble-with-technical-interviews",{"title":774,"heroImage":775,"category":706,"description":776,"authors":777,"date":778,"slug":779,"externalUrl":6},"Why we scoped down to build up error tracking ","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749665440/Blog/Hero%20Images/automate-ce-ee-merges.jpg","We dig into how shipping small iterations is accelerating delivery on our error tracking product.",[770],"2020-01-23","iteration-on-error-tracking",{"title":781,"heroImage":782,"category":706,"description":783,"authors":784,"date":786,"slug":787,"externalUrl":6},"Why we chose ECharts for data visualizations","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666699/Blog/Hero%20Images/banner.jpg","Learn why GitLab switched from D3.js to ECharts as our library of choice for rendering data visualizations.",[785],"Clement Ho","2019-09-30","why-we-chose-echarts",{"title":789,"heroImage":790,"category":291,"description":791,"authors":792,"date":794,"slug":795,"externalUrl":6},"Wrapping up GitLab Commit","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680823/Blog/Hero%20Images/commit-brooklyn-graffiti-cover.jpg","From bagels to bowling with a healthy dose of DevSecOps and CI/CD in between, it was an epic day of learning and sharing at GitLab Commit Brooklyn.",[793],"Valerie Silverthorne","2019-09-18","wrapping-up-commit",{"title":797,"heroImage":798,"category":759,"description":799,"authors":800,"date":803,"slug":804,"externalUrl":6},"GitLab and HashiCorp: Providing application and infrastructure delivery workflows","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749670238/Blog/Hero%20Images/gitlab-terraform-pipelines.jpg","Discover how to leverage CI/CD for your infrastructure scripts with Terraform and GitLab.",[801,802],"Kelly Hair","Anthony Davanzo","2019-09-17","gitlab-hashicorp-terraform-vault-pt-1",{"title":806,"heroImage":807,"category":291,"description":808,"authors":809,"date":803,"slug":811,"externalUrl":6},"Announcing $268 million in Series E funding","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664134/Blog/Hero%20Images/gitlabcommitbrooklyn.png","New funding and our $2.75 billion valuation will allow us to enhance monitoring and security capabilities.",[810],"GitLab","gitlab-series-e-funding",{"title":813,"heroImage":807,"category":291,"description":814,"authors":815,"date":803,"slug":816,"externalUrl":6},"At GitLab Commit, our product roadmap, new partners, and a new milestone","Live from GitLab Commit: what’s next for our product strategy, expanded partnerships, and more.",[793],"live-from-commit-news",{"title":818,"heroImage":819,"category":820,"description":821,"authors":822,"date":803,"slug":823,"externalUrl":6},"GitLab Commit: How MRI Technologies used GitLab to bring unified toolchains to NASA","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678434/Blog/Hero%20Images/nasagitlab.jpg","open-source","Live from GitLab Commit: NASA will be flying Kubernetes clusters to the moon and GitLab is helping.",[793],"open-source-nasa-gl",{"title":825,"heroImage":807,"category":291,"description":826,"authors":827,"date":829,"slug":830,"externalUrl":6},"How to get the most out of GitLab Commit","We’re taking over the Williamsburg neighborhood of Brooklyn and opening up our world to you. Here’s everything you need to know.",[828],"Emily Kyle","2019-09-13","get-ready-for-commit",{"title":832,"heroImage":833,"category":706,"description":834,"authors":835,"date":838,"slug":839,"externalUrl":6},"How we delivered more performant and robust task lists in GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749668319/Blog/Hero%20Images/more-robust-task-lists.jpg","How simple checkboxes became a challenging engineering problem – and how we fixed it.",[836,837],"Fatih Acet","Brett Walker","2019-04-05","more-performant-and-robust-task-lists-in-gitlab",{"title":841,"heroImage":842,"category":291,"description":843,"authors":844,"date":846,"slug":847,"externalUrl":6},"Why we use Ruby on Rails to build GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749668296/Blog/Hero%20Images/gitlab-ruby.jpg","Here's our CEO on GitLab’s inception using Rails, and how challenges are being handled along the way.",[845],"Aricka Flowers","2018-10-29","why-we-use-rails-to-build-gitlab",{"title":849,"heroImage":850,"category":851,"description":852,"authors":853,"date":855,"slug":856,"externalUrl":6},"How I transitioned from frontend to UX","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749679015/Blog/Hero%20Images/frontendux.jpg","culture","One GitLab team-member shares how switching from a frontend engineer to a UX designer has been a rewarding experience.",[854],"Annabel Dunstone Gray","2018-10-05","how-i-transitioned-from-frontend-to-ux",{"title":858,"heroImage":859,"category":706,"description":860,"authors":861,"date":863,"slug":864,"externalUrl":6},"How DevOps and GitLab CI/CD enhance a frontend workflow","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749679026/Blog/Hero%20Images/frontendworkflow.jpg","The GitLab frontend team uses DevOps and CI/CD to ensure code consistency, fast delivery, and simple automation.",[862],"José Iván Vargas","2018-08-09","how-devops-and-gitlab-cicd-enhance-a-frontend-workflow",{"title":866,"heroImage":867,"category":706,"description":868,"authors":869,"date":871,"slug":872,"externalUrl":6},"Let's play Reviewer Roulette! An easy way to find a reviewer for your merge request","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749672195/Blog/Hero%20Images/play-reviewer-roulette.jpg","Finding the right reviewer for a merge request can be tough. Reviewer Roulette makes the decision easier – by making it random!",[870],"Dennis Tang","2018-06-28","play-reviewer-roulette",{"title":874,"heroImage":875,"category":706,"description":876,"authors":877,"date":879,"slug":880,"externalUrl":6},"Meet the GitLab Web IDE","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678812/Blog/Hero%20Images/web-ide-cover.jpg","Here's how we went from a proof of concept to a new feature that makes it even easier for everyone to edit inside of GitLab.",[878],"Dimitrie Hoekstra","2018-06-15","introducing-gitlab-s-integrated-development-environment",{"title":882,"heroImage":883,"category":706,"description":884,"authors":885,"date":887,"slug":888,"externalUrl":6},"Our journey in switching to native Unicode emoji","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749672573/Blog/Hero%20Images/journey-in-native-unicode-emoji-cover.png","Unicode is hard. Here's a guide to getting native Unicode Emoji right 👌. Learn more!",[886],"Eric Eastwood","2018-05-30","journey-in-native-unicode-emoji",{"title":890,"heroImage":891,"category":706,"description":892,"authors":893,"date":895,"slug":896,"externalUrl":6},"How eslint-plugin-vue improved our code reviews","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680227/Blog/Hero%20Images/code_cover_image.jpg","A few months ago we felt the need to build a style guide for Vue and now are using eslint-vue-plugin, which is saving us time in our code reviews.",[894],"Filipa Lacerda","2018-02-13","how-we-added-eslint-into-vue",{"title":898,"heroImage":899,"category":706,"description":900,"authors":901,"date":903,"slug":904,"externalUrl":6},"How GitLab switched to Headless Chrome for testing","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680270/Blog/Hero%20Images/headless-chrome-cover.jpg","A detailed explanation with examples of how GitLab made the switch to headless Chrome.",[902],"Mike Greiling","2017-12-19","moving-to-headless-chrome",{"title":906,"heroImage":907,"category":706,"description":908,"authors":909,"date":911,"slug":912,"externalUrl":6},"How we do Vue: one year later","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680321/Blog/Hero%20Images/vue-title.jpg","How we, at GitLab, write VueJS, one year later.",[910],"Jacob Schatz","2017-11-09","gitlab-vue-one-year-later",{"title":914,"heroImage":915,"category":291,"description":916,"authors":917,"date":918,"slug":919,"externalUrl":6},"GitLab was at VueConf 2017!","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682980/Blog/Hero%20Images/cover_image.jpg","GitLab was at VueConf 2017 sharing how we use Vue.js.",[894],"2017-06-29","gitlab-at-vue-conf",1786803737995]