CINXE.COM
Project IDX Blog
<!DOCTYPE html><html lang="en"><head><meta name="astro-view-transitions-enabled" content="true"><meta name="astro-view-transitions-fallback" content="none"><meta charset="UTF-8"><meta name="description" content="Project IDX is an entirely web-based workspace for full-stack application development, complete with the latest generative AI from Gemini, and full-fidelity app previews, powered by cloud emulators."><meta name="viewport" content="width=device-width"><meta name="generator" content="Astro v4.10.1"><link rel="sitemap" href="/sitemap-index.xml"><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"><link rel="manifest" href="/site.webmanifest"><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#a87ffb"><meta name="apple-mobile-web-app-title" content="Project IDX"><meta name="application-name" content="Project IDX"><meta name="msapplication-TileColor" content="#10151d"><meta name="theme-color" content="#10151d"><meta property="og:type" content="website"><meta property="og:url" content="https://idx.dev"><meta property="og:title" content="Project IDX Blog"><meta property="og:description" content="Project IDX is an entirely web-based workspace for full-stack application development, complete with the latest generative AI from Gemini, and full-fidelity app previews, powered by cloud emulators."><meta property="og:image" content="https://cdn.raster.app/google/idx/AfEGWyeSKl?ixlib=js-3.7.0&width=1200&height=630&compress=false&q=85&s=9da0a8f7e17838c341fe30f15b699317"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Google+Sans+Display:wght@400;500;700&display=swap"><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Google+Sans+Text:wght@300;400;500;600;700&display=swap"><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Google+Sans+Mono:wght@400;500;600;700&display=swap"><link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"><title>Project IDX Blog</title><script type="text/partytown" src="https://www.googletagmanager.com/gtag/js?id=G-GMNGFBDXTR"></script><script type="text/partytown">window.dataLayer = window.dataLayer || [] function gtag() { dataLayer.push(arguments) } gtag('js', new Date()) gtag('config', 'G-GMNGFBDXTR')</script><link rel="stylesheet" href="/_astro/_page_.DLtxn820.css"><style>.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}.menu-to-close[data-astro-cid-zdwhra5n]{--size: 16px;display:flex;width:var(--size);height:var(--size);overflow:hidden}.menu-to-close[data-astro-cid-zdwhra5n] svg[data-astro-cid-zdwhra5n]{flex:0 0 auto;width:auto;height:var(--size);transition:transform .3s steps(30,start)}.menu-to-close[data-astro-cid-zdwhra5n][data-close] svg[data-astro-cid-zdwhra5n]{transform:translate(calc(-100% + var(--size)))}.site-footer[data-astro-cid-sz7xmlte] a[data-astro-cid-sz7xmlte]{display:flex;align-items:center}.site-footer[data-astro-cid-sz7xmlte] a[data-astro-cid-sz7xmlte]:hover{--tw-text-opacity: 1;color:rgb(200 170 255 / var(--tw-text-opacity))}.site-footer[data-astro-cid-sz7xmlte] a[data-astro-cid-sz7xmlte]{gap:8px}.site-footer-row[data-astro-cid-sz7xmlte]{display:flex;align-items:center}@media (max-width: 1023px){.site-footer-row[data-astro-cid-sz7xmlte]{justify-content:center}}@media (min-width: 1024px){.site-footer-row[data-astro-cid-sz7xmlte].is-end{flex:1 1 0%;justify-content:flex-end}}.footer-separator[data-astro-cid-sz7xmlte]{margin-left:12px;margin-right:12px;width:12px;--tw-bg-opacity: 1;background-color:rgb(137 100 232 / var(--tw-bg-opacity))}@media (max-width: 1023px){.footer-separator[data-astro-cid-sz7xmlte]{margin-left:8px;margin-right:8px;width:8px}}.footer-separator[data-astro-cid-sz7xmlte]{height:1px} @keyframes slideIndicatorTo{0%{height:40px;opacity:0}50%{height:40px;opacity:0}to{height:40px;opacity:1}}@keyframes slideIndicatorFrom{0%{opacity:1;height:40px}25%{opacity:0;height:40px}to{opacity:0;height:40px}}html{scroll-behavior:auto} @keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0}}@keyframes astroFadeOut{to{opacity:0}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media (prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}[data-astro-transition-scope]{animation:none!important}}lite-youtube{background-color:#000;position:relative;display:block;contain:content;background-position:center center;background-size:cover;cursor:pointer;max-width:720px}lite-youtube:before{content:attr(data-title);display:block;position:absolute;top:0;background-image:linear-gradient(180deg,#000000ab,#0000008a 14%,#00000026 54%,#0000000d 72%,#0000 94%);height:99px;width:100%;font-family:YouTube Noto,Roboto,Arial,Helvetica,sans-serif;color:#eee;text-shadow:0 0 2px rgba(0,0,0,.5);font-size:18px;padding:25px 20px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box}lite-youtube:hover:before{color:#fff}lite-youtube:after{content:"";display:block;padding-bottom:56.25%}lite-youtube>iframe{width:100%;height:100%;position:absolute;top:0;left:0;border:0}lite-youtube>.lty-playbtn{display:block;width:100%;height:100%;background:no-repeat center/68px 48px;background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 68 48"><path d="M66.52 7.74c-.78-2.93-2.49-5.41-5.42-6.19C55.79.13 34 0 34 0S12.21.13 6.9 1.55c-2.93.78-4.63 3.26-5.42 6.19C.06 13.05 0 24 0 24s.06 10.95 1.48 16.26c.78 2.93 2.49 5.41 5.42 6.19C12.21 47.87 34 48 34 48s21.79-.13 27.1-1.55c2.93-.78 4.64-3.26 5.42-6.19C67.94 34.95 68 24 68 24s-.06-10.95-1.48-16.26z" fill="red"/><path d="M45 24 27 14v20" fill="white"/></svg>');position:absolute;cursor:pointer;z-index:1;filter:grayscale(100%);transition:filter .1s cubic-bezier(0,0,.2,1);border:0}lite-youtube:hover>.lty-playbtn,lite-youtube .lty-playbtn:focus{filter:none}lite-youtube.lyt-activated{cursor:unset}lite-youtube.lyt-activated:before,lite-youtube.lyt-activated>.lty-playbtn{opacity:0;pointer-events:none}.lyt-visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}lite-youtube>iframe{all:unset!important;width:100%!important;height:100%!important;position:absolute!important;inset:0!important;border:0!important}</style><script type="module" src="/_astro/hoisted.Cb3Z4Zhd.js"></script><script type="module" src="/_astro/page.C66G14YQ.js"></script><script>!(function(w,p,f,c){if(!window.crossOriginIsolated && !navigator.serviceWorker) return;c=w[p]=Object.assign(w[p]||{},{"lib":"/~partytown/","debug":false});c[f]=(c[f]||[]).concat(["dataLayer.push"])})(window,'partytown','forward');/* Partytown 0.10.2 - MIT builder.io */ const t={preserveBehavior:!1},e=e=>{if("string"==typeof e)return[e,t];const[n,r=t]=e;return[n,{...t,...r}]},n=Object.freeze((t=>{const e=new Set;let n=[];do{Object.getOwnPropertyNames(n).forEach((t=>{"function"==typeof n[t]&&e.add(t)}))}while((n=Object.getPrototypeOf(n))!==Object.prototype);return Array.from(e)})());!function(t,r,o,i,a,s,c,d,l,p,u=t,f){function h(){f||(f=1,"/"==(c=(s.lib||"/~partytown/")+(s.debug?"debug/":""))[0]&&(l=r.querySelectorAll('script[type="text/partytown"]'),i!=t?i.dispatchEvent(new CustomEvent("pt1",{detail:t})):(d=setTimeout(v,1e4),r.addEventListener("pt0",w),a?y(1):o.serviceWorker?o.serviceWorker.register(c+(s.swPath||"partytown-sw.js"),{scope:c}).then((function(t){t.active?y():t.installing&&t.installing.addEventListener("statechange",(function(t){"activated"==t.target.state&&y()}))}),console.error):v())))}function y(e){p=r.createElement(e?"script":"iframe"),t._pttab=Date.now(),e||(p.style.display="block",p.style.width="0",p.style.height="0",p.style.border="0",p.style.visibility="hidden",p.setAttribute("aria-hidden",!0)),p.src=c+"partytown-"+(e?"atomics.js?v=0.10.2":"sandbox-sw.html?"+t._pttab),r.querySelector(s.sandboxParent||"body").appendChild(p)}function v(n,o){for(w(),i==t&&(s.forward||[]).map((function(n){const[r]=e(n);delete t[r.split(".")[0]]})),n=0;n<l.length;n++)(o=r.createElement("script")).innerHTML=l[n].innerHTML,o.nonce=s.nonce,r.head.appendChild(o);p&&p.parentNode.removeChild(p)}function w(){clearTimeout(d)}s=t.partytown||{},i==t&&(s.forward||[]).map((function(r){const[o,{preserveBehavior:i}]=e(r);u=t,o.split(".").map((function(e,r,o){var a;u=u[o[r]]=r+1<o.length?u[o[r]]||(a=o[r+1],n.includes(a)?[]:{}):(()=>{let e=null;if(i){const{methodOrProperty:n,thisObject:r}=((t,e)=>{let n=t;for(let t=0;t<e.length-1;t+=1)n=n[e[t]];return{thisObject:n,methodOrProperty:e.length>0?n[e[e.length-1]]:void 0}})(t,o);"function"==typeof n&&(e=(...t)=>n.apply(r,...t))}return function(){let n;return e&&(n=e(arguments)),(t._ptf=t._ptf||[]).push(o,arguments),n}})()}))})),"complete"==r.readyState?h():(t.addEventListener("DOMContentLoaded",h),t.addEventListener("load",h))}(window,document,navigator,top,window.crossOriginIsolated);;((d,s)=>(s=d.currentScript,d.addEventListener('astro:before-swap',()=>s.remove(),{once:true})))(document);</script><style>[data-astro-transition-scope="astro-bwq7iixi-1"] { view-transition-name: insiders-look-at-gemini-in-idx-article-icon; }@layer astro { ::view-transition-old(insiders-look-at-gemini-in-idx-article-icon) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }::view-transition-new(insiders-look-at-gemini-in-idx-article-icon) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }[data-astro-transition=back]::view-transition-old(insiders-look-at-gemini-in-idx-article-icon) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition=back]::view-transition-new(insiders-look-at-gemini-in-idx-article-icon) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; } }[data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-bwq7iixi-1"], [data-astro-transition-fallback="old"][data-astro-transition-scope="astro-bwq7iixi-1"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-bwq7iixi-1"], [data-astro-transition-fallback="new"][data-astro-transition-scope="astro-bwq7iixi-1"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }[data-astro-transition=back][data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-bwq7iixi-1"], [data-astro-transition=back][data-astro-transition-fallback="old"][data-astro-transition-scope="astro-bwq7iixi-1"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition=back][data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-bwq7iixi-1"], [data-astro-transition=back][data-astro-transition-fallback="new"][data-astro-transition-scope="astro-bwq7iixi-1"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }</style><style>[data-astro-transition-scope="astro-bwq7iixi-2"] { view-transition-name: build-with-gemini-in-idx-article-icon; }@layer astro { ::view-transition-old(build-with-gemini-in-idx-article-icon) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }::view-transition-new(build-with-gemini-in-idx-article-icon) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }[data-astro-transition=back]::view-transition-old(build-with-gemini-in-idx-article-icon) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition=back]::view-transition-new(build-with-gemini-in-idx-article-icon) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; } }[data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-bwq7iixi-2"], [data-astro-transition-fallback="old"][data-astro-transition-scope="astro-bwq7iixi-2"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-bwq7iixi-2"], [data-astro-transition-fallback="new"][data-astro-transition-scope="astro-bwq7iixi-2"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }[data-astro-transition=back][data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-bwq7iixi-2"], [data-astro-transition=back][data-astro-transition-fallback="old"][data-astro-transition-scope="astro-bwq7iixi-2"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition=back][data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-bwq7iixi-2"], [data-astro-transition=back][data-astro-transition-fallback="new"][data-astro-transition-scope="astro-bwq7iixi-2"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }</style><style>[data-astro-transition-scope="astro-bwq7iixi-3"] { view-transition-name: how-we-built-project-idx-a-high-level-overview-article-icon; }@layer astro { ::view-transition-old(how-we-built-project-idx-a-high-level-overview-article-icon) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }::view-transition-new(how-we-built-project-idx-a-high-level-overview-article-icon) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }[data-astro-transition=back]::view-transition-old(how-we-built-project-idx-a-high-level-overview-article-icon) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition=back]::view-transition-new(how-we-built-project-idx-a-high-level-overview-article-icon) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; } }[data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-bwq7iixi-3"], [data-astro-transition-fallback="old"][data-astro-transition-scope="astro-bwq7iixi-3"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-bwq7iixi-3"], [data-astro-transition-fallback="new"][data-astro-transition-scope="astro-bwq7iixi-3"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }[data-astro-transition=back][data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-bwq7iixi-3"], [data-astro-transition=back][data-astro-transition-fallback="old"][data-astro-transition-scope="astro-bwq7iixi-3"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition=back][data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-bwq7iixi-3"], [data-astro-transition=back][data-astro-transition-fallback="new"][data-astro-transition-scope="astro-bwq7iixi-3"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }</style><style>[data-astro-transition-scope="astro-bwq7iixi-4"] { view-transition-name: full-stack-development-in-project-idx-article-icon; }@layer astro { ::view-transition-old(full-stack-development-in-project-idx-article-icon) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }::view-transition-new(full-stack-development-in-project-idx-article-icon) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }[data-astro-transition=back]::view-transition-old(full-stack-development-in-project-idx-article-icon) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition=back]::view-transition-new(full-stack-development-in-project-idx-article-icon) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; } }[data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-bwq7iixi-4"], [data-astro-transition-fallback="old"][data-astro-transition-scope="astro-bwq7iixi-4"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-bwq7iixi-4"], [data-astro-transition-fallback="new"][data-astro-transition-scope="astro-bwq7iixi-4"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }[data-astro-transition=back][data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-bwq7iixi-4"], [data-astro-transition=back][data-astro-transition-fallback="old"][data-astro-transition-scope="astro-bwq7iixi-4"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition=back][data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-bwq7iixi-4"], [data-astro-transition=back][data-astro-transition-fallback="new"][data-astro-transition-scope="astro-bwq7iixi-4"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }</style><style>[data-astro-transition-scope="astro-75u3bcp5-5"] { view-transition-name: filter-btn-color-All; }@layer astro { ::view-transition-old(filter-btn-color-All) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }::view-transition-new(filter-btn-color-All) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }[data-astro-transition=back]::view-transition-old(filter-btn-color-All) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition=back]::view-transition-new(filter-btn-color-All) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; } }[data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-75u3bcp5-5"], [data-astro-transition-fallback="old"][data-astro-transition-scope="astro-75u3bcp5-5"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-75u3bcp5-5"], [data-astro-transition-fallback="new"][data-astro-transition-scope="astro-75u3bcp5-5"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }[data-astro-transition=back][data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-75u3bcp5-5"], [data-astro-transition=back][data-astro-transition-fallback="old"][data-astro-transition-scope="astro-75u3bcp5-5"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition=back][data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-75u3bcp5-5"], [data-astro-transition=back][data-astro-transition-fallback="new"][data-astro-transition-scope="astro-75u3bcp5-5"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }</style><style>[data-astro-transition-scope="astro-75u3bcp5-6"] { view-transition-name: filter-btn-color-Posts; }@layer astro { ::view-transition-old(filter-btn-color-Posts) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }::view-transition-new(filter-btn-color-Posts) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }[data-astro-transition=back]::view-transition-old(filter-btn-color-Posts) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition=back]::view-transition-new(filter-btn-color-Posts) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; } }[data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-75u3bcp5-6"], [data-astro-transition-fallback="old"][data-astro-transition-scope="astro-75u3bcp5-6"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-75u3bcp5-6"], [data-astro-transition-fallback="new"][data-astro-transition-scope="astro-75u3bcp5-6"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }[data-astro-transition=back][data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-75u3bcp5-6"], [data-astro-transition=back][data-astro-transition-fallback="old"][data-astro-transition-scope="astro-75u3bcp5-6"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition=back][data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-75u3bcp5-6"], [data-astro-transition=back][data-astro-transition-fallback="new"][data-astro-transition-scope="astro-75u3bcp5-6"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }</style><style>[data-astro-transition-scope="astro-75u3bcp5-7"] { view-transition-name: filter-btn-color-Articles; }@layer astro { ::view-transition-old(filter-btn-color-Articles) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }::view-transition-new(filter-btn-color-Articles) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }[data-astro-transition=back]::view-transition-old(filter-btn-color-Articles) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition=back]::view-transition-new(filter-btn-color-Articles) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; } }[data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-75u3bcp5-7"], [data-astro-transition-fallback="old"][data-astro-transition-scope="astro-75u3bcp5-7"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-75u3bcp5-7"], [data-astro-transition-fallback="new"][data-astro-transition-scope="astro-75u3bcp5-7"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }[data-astro-transition=back][data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-75u3bcp5-7"], [data-astro-transition=back][data-astro-transition-fallback="old"][data-astro-transition-scope="astro-75u3bcp5-7"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition=back][data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-75u3bcp5-7"], [data-astro-transition=back][data-astro-transition-fallback="new"][data-astro-transition-scope="astro-75u3bcp5-7"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }</style><style>[data-astro-transition-scope="astro-75u3bcp5-8"] { view-transition-name: filter-btn-color-Release_20Notes; }@layer astro { ::view-transition-old(filter-btn-color-Release_20Notes) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }::view-transition-new(filter-btn-color-Release_20Notes) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }[data-astro-transition=back]::view-transition-old(filter-btn-color-Release_20Notes) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition=back]::view-transition-new(filter-btn-color-Release_20Notes) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; } }[data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-75u3bcp5-8"], [data-astro-transition-fallback="old"][data-astro-transition-scope="astro-75u3bcp5-8"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-75u3bcp5-8"], [data-astro-transition-fallback="new"][data-astro-transition-scope="astro-75u3bcp5-8"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }[data-astro-transition=back][data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-75u3bcp5-8"], [data-astro-transition=back][data-astro-transition-fallback="old"][data-astro-transition-scope="astro-75u3bcp5-8"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition=back][data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-75u3bcp5-8"], [data-astro-transition=back][data-astro-transition-fallback="new"][data-astro-transition-scope="astro-75u3bcp5-8"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }</style><style>[data-astro-transition-scope="astro-rhsclbw6-9"] { view-transition-name: insiders-look-at-gemini-in-idxeZbL71CLI4C0iyGdoQ5zLinsiders-look-at-gemini-in-idx; }@layer astro { ::view-transition-old(insiders-look-at-gemini-in-idxeZbL71CLI4C0iyGdoQ5zLinsiders-look-at-gemini-in-idx) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }::view-transition-new(insiders-look-at-gemini-in-idxeZbL71CLI4C0iyGdoQ5zLinsiders-look-at-gemini-in-idx) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }[data-astro-transition=back]::view-transition-old(insiders-look-at-gemini-in-idxeZbL71CLI4C0iyGdoQ5zLinsiders-look-at-gemini-in-idx) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition=back]::view-transition-new(insiders-look-at-gemini-in-idxeZbL71CLI4C0iyGdoQ5zLinsiders-look-at-gemini-in-idx) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; } }[data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-rhsclbw6-9"], [data-astro-transition-fallback="old"][data-astro-transition-scope="astro-rhsclbw6-9"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-rhsclbw6-9"], [data-astro-transition-fallback="new"][data-astro-transition-scope="astro-rhsclbw6-9"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }[data-astro-transition=back][data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-rhsclbw6-9"], [data-astro-transition=back][data-astro-transition-fallback="old"][data-astro-transition-scope="astro-rhsclbw6-9"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition=back][data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-rhsclbw6-9"], [data-astro-transition=back][data-astro-transition-fallback="new"][data-astro-transition-scope="astro-rhsclbw6-9"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }</style><style>[data-astro-transition-scope="astro-rhsclbw6-10"] { view-transition-name: build-with-gemini-in-idx5DLNE2TnyhZ58jTKcvRFtQbuild-with-gemini-in-idx; }@layer astro { ::view-transition-old(build-with-gemini-in-idx5DLNE2TnyhZ58jTKcvRFtQbuild-with-gemini-in-idx) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }::view-transition-new(build-with-gemini-in-idx5DLNE2TnyhZ58jTKcvRFtQbuild-with-gemini-in-idx) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }[data-astro-transition=back]::view-transition-old(build-with-gemini-in-idx5DLNE2TnyhZ58jTKcvRFtQbuild-with-gemini-in-idx) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition=back]::view-transition-new(build-with-gemini-in-idx5DLNE2TnyhZ58jTKcvRFtQbuild-with-gemini-in-idx) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; } }[data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-rhsclbw6-10"], [data-astro-transition-fallback="old"][data-astro-transition-scope="astro-rhsclbw6-10"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-rhsclbw6-10"], [data-astro-transition-fallback="new"][data-astro-transition-scope="astro-rhsclbw6-10"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }[data-astro-transition=back][data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-rhsclbw6-10"], [data-astro-transition=back][data-astro-transition-fallback="old"][data-astro-transition-scope="astro-rhsclbw6-10"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition=back][data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-rhsclbw6-10"], [data-astro-transition=back][data-astro-transition-fallback="new"][data-astro-transition-scope="astro-rhsclbw6-10"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }</style><style>[data-astro-transition-scope="astro-rhsclbw6-11"] { view-transition-name: how-we-built-project-idx-a-high-level-overviewZZ4fTmJM5faQeDE9bioschow-we-built-project-idx-a-high-level-overview; }@layer astro { ::view-transition-old(how-we-built-project-idx-a-high-level-overviewZZ4fTmJM5faQeDE9bioschow-we-built-project-idx-a-high-level-overview) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }::view-transition-new(how-we-built-project-idx-a-high-level-overviewZZ4fTmJM5faQeDE9bioschow-we-built-project-idx-a-high-level-overview) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }[data-astro-transition=back]::view-transition-old(how-we-built-project-idx-a-high-level-overviewZZ4fTmJM5faQeDE9bioschow-we-built-project-idx-a-high-level-overview) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition=back]::view-transition-new(how-we-built-project-idx-a-high-level-overviewZZ4fTmJM5faQeDE9bioschow-we-built-project-idx-a-high-level-overview) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; } }[data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-rhsclbw6-11"], [data-astro-transition-fallback="old"][data-astro-transition-scope="astro-rhsclbw6-11"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-rhsclbw6-11"], [data-astro-transition-fallback="new"][data-astro-transition-scope="astro-rhsclbw6-11"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }[data-astro-transition=back][data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-rhsclbw6-11"], [data-astro-transition=back][data-astro-transition-fallback="old"][data-astro-transition-scope="astro-rhsclbw6-11"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition=back][data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-rhsclbw6-11"], [data-astro-transition=back][data-astro-transition-fallback="new"][data-astro-transition-scope="astro-rhsclbw6-11"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }</style><style>[data-astro-transition-scope="astro-rhsclbw6-12"] { view-transition-name: full-stack-development-in-project-idx3k2e1PVsuRiiy4gxGO7OyAfull-stack-development-in-project-idx; }@layer astro { ::view-transition-old(full-stack-development-in-project-idx3k2e1PVsuRiiy4gxGO7OyAfull-stack-development-in-project-idx) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }::view-transition-new(full-stack-development-in-project-idx3k2e1PVsuRiiy4gxGO7OyAfull-stack-development-in-project-idx) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }[data-astro-transition=back]::view-transition-old(full-stack-development-in-project-idx3k2e1PVsuRiiy4gxGO7OyAfull-stack-development-in-project-idx) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition=back]::view-transition-new(full-stack-development-in-project-idx3k2e1PVsuRiiy4gxGO7OyAfull-stack-development-in-project-idx) { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; } }[data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-rhsclbw6-12"], [data-astro-transition-fallback="old"][data-astro-transition-scope="astro-rhsclbw6-12"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-rhsclbw6-12"], [data-astro-transition-fallback="new"][data-astro-transition-scope="astro-rhsclbw6-12"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }[data-astro-transition=back][data-astro-transition-fallback="old"] [data-astro-transition-scope="astro-rhsclbw6-12"], [data-astro-transition=back][data-astro-transition-fallback="old"][data-astro-transition-scope="astro-rhsclbw6-12"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeOut; }[data-astro-transition=back][data-astro-transition-fallback="new"] [data-astro-transition-scope="astro-rhsclbw6-12"], [data-astro-transition=back][data-astro-transition-fallback="new"][data-astro-transition-scope="astro-rhsclbw6-12"] { animation-duration: 180ms; animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1); animation-fill-mode: both; animation-name: astroFadeIn; }</style></head><body><nav id="nav"><div class="nav-items"><a href="https://idx.google.com" title="Project IDX" class="nav-item max-md:py-3 gap-2 z-50"><svg viewBox="0 0 192 192" fill="none" xmlns="http://www.w3.org/2000/svg" class="w-7 max-md:w-6"><rect x="28" y="156" width="88" height="24" rx="12" class="fill-purple-500"></rect><rect x="104" y="120" width="36" height="24" rx="12" class="fill-green-400"></rect><rect x="56" y="120" width="36" height="24" rx="12" class="fill-green-400"></rect><rect x="84" y="84" width="52" height="24" rx="12" class="fill-yellow-400"></rect><rect x="148" y="84" width="24" height="24" rx="12" class="fill-yellow-400"></rect><rect x="56" y="48" width="88" height="24" rx="12" class="fill-blue-400"></rect><rect x="64" y="12" width="52" height="24" rx="12" class="fill-purple-500"></rect><rect x="28" y="12" width="24" height="24" rx="12" class="fill-purple-500"></rect></svg> <span class="sr-only">Project IDX</span> </a><label tabindex="0" for="nav-mobile-menu-trigger" class="nav-item"><div class="menu-icon-animation menu-to-close" data-astro-cid-zdwhra5n><svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 496 16" width="496" height="16" data-astro-cid-zdwhra5n><path d="M0 4h16v1H0zm0 4h16v1H0zm0 4h16v1H0zm16-7.957h16v1H16zM16 8h16v1H16zm0 3.957h16v1H16zM32 4.2h16v1H32zM32 8h16v1H32zm0 3.8h16v1H32zm16-7.264h16v1H48zM48 8h16v1H48zm0 3.464h16v1H48zm16-6.352h16v1H64zM64 8h16v1H64zm0 2.888h16v1H64zm16-5.059h16v1H80zM80 8h16v1H80zm0 2.171h16v1H80zm16-3.717h16v1H96zM96 8h16v1H96zm0 1.546h16v1H96zm16-2.626h16v1h-16zM112 8h16v1h-16zm0 1.08h16v1h-16zm16-1.822h16v1h-16z" data-astro-cid-zdwhra5n></path><path d="M128 8h16v1h-16z" data-astro-cid-zdwhra5n></path><path d="M128 8.742h16v1h-16zm16-1.238h16v1h-16z" data-astro-cid-zdwhra5n></path><path d="M144 8h16v1h-16z" data-astro-cid-zdwhra5n></path><path d="M144 8.496h16v1h-16zm16-.813h16v1h-16z" data-astro-cid-zdwhra5n></path><path d="M160 8h16v1h-16z" data-astro-cid-zdwhra5n></path><path d="M160 8.317h16v1h-16z" data-astro-cid-zdwhra5n></path><g data-astro-cid-zdwhra5n><path d="M176 7.812h16v1h-16z" data-astro-cid-zdwhra5n></path><path d="M176 8h16v1h-16z" data-astro-cid-zdwhra5n></path><path d="M176 8.188h16v1h-16z" data-astro-cid-zdwhra5n></path></g><g data-astro-cid-zdwhra5n><path d="M192 7.901h16v1h-16z" data-astro-cid-zdwhra5n></path><path d="M192 8h16v1h-16z" data-astro-cid-zdwhra5n></path><path d="M192 8.099h16v1h-16z" data-astro-cid-zdwhra5n></path></g><g data-astro-cid-zdwhra5n><path d="M208 7.959h16v1h-16z" data-astro-cid-zdwhra5n></path><path d="M208 8h16v1h-16z" fill-opacity=".939" data-astro-cid-zdwhra5n></path><path d="M208 8.041h16v1h-16z" data-astro-cid-zdwhra5n></path></g><g data-astro-cid-zdwhra5n><path d="M224 7.99h16v1h-16z" data-astro-cid-zdwhra5n></path><path d="M224 8h16v1h-16z" fill-opacity=".147" data-astro-cid-zdwhra5n></path><path d="M224 8.01h16v1h-16z" data-astro-cid-zdwhra5n></path></g><g data-astro-cid-zdwhra5n><path d="M240 8h16v1h-16z" data-astro-cid-zdwhra5n></path><path d="M240 8h16v1h-16z" data-astro-cid-zdwhra5n></path></g><g data-astro-cid-zdwhra5n><path d="m256.013 7.933 15.982.134-.008 1-15.982-.134z" data-astro-cid-zdwhra5n></path><path d="m256.005 8.067 15.982-.134.008 1-15.982.134z" data-astro-cid-zdwhra5n></path></g><g data-astro-cid-zdwhra5n><path d="m272.066 7.688 15.908.624-.04 1-15.908-.624z" data-astro-cid-zdwhra5n></path><path d="m272.026 8.312 15.908-.624.04 1-15.908.624z" data-astro-cid-zdwhra5n></path></g><g data-astro-cid-zdwhra5n><path d="m288.203 7.174 15.699 1.658-.105.994-15.699-1.658z" data-astro-cid-zdwhra5n></path><path d="m288.098 8.832 15.699-1.658.105.994-15.699 1.658z" data-astro-cid-zdwhra5n></path></g><g data-astro-cid-zdwhra5n><path d="m304.515 6.327 15.186 3.37-.216.976-15.186-3.37z" data-astro-cid-zdwhra5n></path><path d="m304.299 9.697 15.186-3.37.216.976-15.186 3.37z" data-astro-cid-zdwhra5n></path></g><g data-astro-cid-zdwhra5n><path d="m321.029 5.349 14.294 5.366-.352.936-14.294-5.366z" data-astro-cid-zdwhra5n></path><path d="m320.677 10.715 14.294-5.366.352.936-14.294 5.366z" data-astro-cid-zdwhra5n></path></g><g data-astro-cid-zdwhra5n><path d="m337.578 4.577 13.308 6.96-.464.886-13.308-6.96z" data-astro-cid-zdwhra5n></path><path d="m337.114 11.537 13.308-6.96.464.886-13.308 6.96z" data-astro-cid-zdwhra5n></path></g><g data-astro-cid-zdwhra5n><path d="m354.041 4.057 12.46 8.046-.542.84-12.46-8.046z" data-astro-cid-zdwhra5n></path><path d="m353.499 12.103 12.46-8.046.542.84-12.46 8.046z" data-astro-cid-zdwhra5n></path></g><g data-astro-cid-zdwhra5n><path d="m370.403 3.712 11.791 8.773-.597.803-11.791-8.773z" data-astro-cid-zdwhra5n></path><path d="m369.806 12.485 11.791-8.773.597.803-11.791 8.773z" data-astro-cid-zdwhra5n></path></g><g data-astro-cid-zdwhra5n><path d="m386.679 3.479 11.277 9.27-.635.772-11.277-9.27z" data-astro-cid-zdwhra5n></path><path d="m386.044 12.749 11.277-9.27.635.772-11.277 9.27z" data-astro-cid-zdwhra5n></path></g><g data-astro-cid-zdwhra5n><path d="m402.885 3.318 10.891 9.614-.661.75-10.891-9.614z" data-astro-cid-zdwhra5n></path><path d="m402.224 12.932 10.89-9.614.662.75-10.89 9.614z" data-astro-cid-zdwhra5n></path></g><g data-astro-cid-zdwhra5n><path d="m419.037 3.208 10.607 9.85-.68.734-10.608-9.85z" data-astro-cid-zdwhra5n></path><path d="m418.356 13.059 10.607-9.85.68.732-10.606 9.85z" data-astro-cid-zdwhra5n></path></g><g data-astro-cid-zdwhra5n><path d="m435.143 3.135 10.407 10.01-.693.72-10.407-10.01z" data-astro-cid-zdwhra5n></path><path d="m434.45 13.145 10.407-10.01.693.72-10.407 10.01z" data-astro-cid-zdwhra5n></path></g><g data-astro-cid-zdwhra5n><path d="M451.212 3.088 461.49 13.2l-.701.713L450.51 3.8z" data-astro-cid-zdwhra5n></path><path d="m450.511 13.2 10.277-10.112.7.713-10.276 10.11z" data-astro-cid-zdwhra5n></path></g><g data-astro-cid-zdwhra5n><path d="m467.25 3.063 10.205 10.166-.706.708-10.204-10.166z" data-astro-cid-zdwhra5n></path><path d="m466.545 13.229 10.204-10.166.706.708-10.204 10.166z" data-astro-cid-zdwhra5n></path></g><g data-astro-cid-zdwhra5n><path d="m483.262 3.055 10.183 10.183-.707.707-10.183-10.183z" data-astro-cid-zdwhra5n></path><path d="m482.555 13.238 10.183-10.183.707.707-10.183 10.183z" data-astro-cid-zdwhra5n></path></g></svg></div><span class="sr-only">Menu</span></label> <input tabindex="-1" type="checkbox" id="nav-mobile-menu-trigger"><div class="nav-list"><a href="https://idx.google.com" class="nav-item"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M2 6.08447V13H14V6.08447L8.49075 2.98148C8.18608 2.80988 7.81392 2.80988 7.50925 2.98148L2 6.08447ZM1 6.08447V13C1 13.5523 1.44772 14 2 14H14C14.5523 14 15 13.5523 15 13V6.08447C15 5.7234 14.8054 5.39036 14.4907 5.21317L8.98149 2.11018C8.37216 1.76699 7.62784 1.76699 7.01851 2.11018L1.50925 5.21317C1.19465 5.39036 1 5.7234 1 6.08447Z" fill="currentColor"></path></svg> <span>Home</span> </a><a href="/blog" class="nav-item selected"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5.01333 13.0133C5.01333 12.4444 4.81778 11.9644 4.42667 11.5733C4.03556 11.1822 3.55556 10.9867 2.98667 10.9867V13.0133H5.01333ZM2.98667 2.98667C4.8 2.98667 6.47111 3.44889 8 4.37333C9.52889 5.26222 10.7378 6.47111 11.6267 8C12.5511 9.52889 13.0133 11.2 13.0133 13.0133H12C12 11.3778 11.5911 9.86667 10.7733 8.48C9.99111 7.09333 8.90667 6.00889 7.52 5.22667C6.13333 4.40889 4.62222 4 2.98667 4V2.98667ZM2.98667 6.98667C4.08889 6.98667 5.08444 7.27111 5.97333 7.84C6.89778 8.37333 7.62667 9.10222 8.16 10.0267C8.72889 10.9156 9.01333 11.9111 9.01333 13.0133H8C8 12.0889 7.76889 11.2533 7.30667 10.5067C6.88 9.72444 6.27556 9.12 5.49333 8.69333C4.74667 8.23111 3.91111 8 2.98667 8V6.98667Z" fill="currentColor"></path></svg> <span>Blog</span> </a><a href="https://developers.google.com/idx" target="_blank" rel="noopener" class="nav-item"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.01333 12V10.9867H10.0267V12H1.01333ZM1.01333 6.98667H14.9867V8H1.01333V6.98667ZM12 2.98667V4H1.01333V2.98667H12Z" fill="currentColor"></path></svg> <span>Docs</span> </a><a href="https://developers.google.com/idx/support/help" target="_blank" rel="noopener" class="nav-item"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9.01333 6.98667L4.96 4.96L6.98667 9.01333L11.04 11.04L9.01333 6.98667ZM9.44 9.44L7.52 8.48L6.56 6.56L8.48 7.52L9.44 9.44ZM13.9733 8.48H13.0133V7.52H13.9733C13.9022 6.56 13.6178 5.67111 13.12 4.85333C12.6222 4.03556 11.9644 3.37778 11.1467 2.88C10.3289 2.38222 9.44 2.09778 8.48 2.02667V2.98667H7.52V2.02667C6.56 2.09778 5.67111 2.38222 4.85333 2.88C4.07111 3.37778 3.41333 4.03556 2.88 4.85333C2.38222 5.63556 2.09778 6.50667 2.02667 7.46667H2.98667V8.48H2.02667C2.09778 9.44 2.38222 10.3289 2.88 11.1467C3.37778 11.9289 4.03556 12.5867 4.85333 13.12C5.67111 13.6178 6.56 13.9022 7.52 13.9733V13.0133H8.48V13.9733C9.44 13.9022 10.3289 13.6178 11.1467 13.12C11.9644 12.6222 12.6222 11.9644 13.12 11.1467C13.6178 10.3289 13.9022 9.44 13.9733 8.48ZM8 14.9867C6.72 14.9867 5.54667 14.6844 4.48 14.08C3.41333 13.44 2.56 12.5867 1.92 11.52C1.31556 10.4533 1.01333 9.28 1.01333 8C1.01333 6.72 1.31556 5.54667 1.92 4.48C2.56 3.41333 3.41333 2.57778 4.48 1.97333C5.54667 1.33333 6.72 1.01333 8 1.01333C9.28 1.01333 10.4533 1.33333 11.52 1.97333C12.5867 2.57778 13.4222 3.41333 14.0267 4.48C14.6667 5.54667 14.9867 6.72 14.9867 8C14.9867 9.28 14.6667 10.4533 14.0267 11.52C13.4222 12.5867 12.5867 13.44 11.52 14.08C10.4533 14.6844 9.28 14.9867 8 14.9867Z" fill="currentColor"></path></svg> <span>Support</span></a></div></div><a href="https://developers.google.com" title="Made by Google" class="max-md:hidden group p-3 md:p-4 flex justify-center" target="_blank" rel="noopener noreferrer"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 21" class="w-5 h-5 text-gray-300 group-hover:text-gray-400 transition-colors duration-500"><path class="fill-current" d="M20 11.04c0-.72-.063-1.436-.19-2.144h-9.597v3.929h5.532a4.727 4.727 0 0 1-2.05 3.163v2.548h3.284C18.899 16.761 20 14.139 20 11.039Z"></path><path class="fill-current" d="M13.69 15.988c-.916.617-2.094.977-3.477.977-2.66 0-4.926-1.792-5.735-4.207H1.086v2.628a10.201 10.201 0 0 0 3.766 4.098A10.228 10.228 0 0 0 10.212 21c2.76 0 5.079-.906 6.765-2.464l-3.287-2.548Z"></path><path class="fill-current" d="M4.16 10.807c0-.663.107-1.322.318-1.95V6.229H1.086a10.193 10.193 0 0 0 0 9.156l3.394-2.627a6.13 6.13 0 0 1-.32-1.95Z"></path><path class="fill-current" d="M10.213 4.65c1.505 0 2.854.516 3.92 1.528L17.05 3.27C15.28 1.624 12.97.615 10.213.615c-1.893 0-3.75.524-5.361 1.516a10.2 10.2 0 0 0-3.766 4.098L4.48 8.857c.81-2.415 3.073-4.208 5.733-4.208Z"></path></svg></a></nav><main class="md:relative min-h-screen flex flex-col justify-between overflow-x-clip md:grow"><div class="shine -z-10 absolute inset-0" role="presentation"></div><div id="blog-filter-bar"><div class="blog-container flex gap-0.5 sm:gap-2 justify-between items-center max-sm:pr-2.5 max-sm:pl-4"><nav class="relative max-sm:w-full flex sm:gap-1 py-2 md:border border-gray-300 md:rounded-full md:py-1.5 md:px-2 md:bg-gray-100 z-30"><a href="/blog/" class="filter-button text-yellow max-sm:aspect-square" data-astro-cid-abisfh57 data-astro-transition-scope="astro-75u3bcp5-5"><span class="filter-button-label" data-astro-cid-abisfh57>All</span> </a><a href="/blog/posts" class="filter-button text-purple" data-astro-cid-abisfh57 data-astro-transition-scope="astro-75u3bcp5-6"><svg class="w-4" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2 22V4c0-.55.196-1.02.587-1.413A1.926 1.926 0 0 1 4 2h16c.55 0 1.02.196 1.413.587C21.803 2.98 22 3.45 22 4v12c0 .55-.196 1.02-.587 1.413A1.926 1.926 0 0 1 20 18H6l-4 4Zm3.15-6H20V4H4v13.125L5.15 16Z" fill="currentColor"></path></svg> <span class="filter-button-label" data-astro-cid-abisfh57>Posts</span> </a><a href="/blog/articles" class="filter-button text-blue" data-astro-cid-abisfh57 data-astro-transition-scope="astro-75u3bcp5-7"><svg xmlns="http://www.w3.org/2000/svg" class="w-4" viewBox="0 0 24 24" fill="none"><path d="M7 17h7v-2H7v2Zm0-4h10v-2H7v2Zm0-4h10V7H7v2ZM5 21c-.55 0-1.02-.196-1.413-.587A1.926 1.926 0 0 1 3 19V5c0-.55.196-1.02.587-1.413A1.926 1.926 0 0 1 5 3h14c.55 0 1.02.196 1.413.587C20.803 3.98 21 4.45 21 5v14c0 .55-.196 1.02-.587 1.413A1.926 1.926 0 0 1 19 21H5Zm0-2h14V5H5v14Z" fill="currentColor"></path></svg> <span class="filter-button-label" data-astro-cid-abisfh57>Articles</span> </a><a href="/blog/release-notes" class="filter-button text-green disabled" data-astro-cid-abisfh57 data-astro-transition-scope="astro-75u3bcp5-8"><svg class="w-4" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M7 20.333V15H5.667a2.568 2.568 0 0 1-1.884-.783A2.568 2.568 0 0 1 3 12.333V9.667c0-.734.261-1.361.783-1.884A2.568 2.568 0 0 1 5.667 7H11l6.667-4v16L11 15H9.312v5.333H7Zm9-4.833V7l-4.5 2H5v4h6.5l4.5 2.5Zm3-.033V6.533a6.09 6.09 0 0 1 1.45 1.95c.367.767.55 1.606.55 2.517 0 .911-.183 1.75-.55 2.517a6.091 6.091 0 0 1-1.45 1.95Z" fill="currentColor"></path></svg> <span class="filter-button-label" data-astro-cid-abisfh57><span class="sm:hidden">Releases</span><span class="max-sm:hidden">Release Notes</span></span></a></nav><style>astro-island,astro-slot,astro-static-slot{display:contents}</style><script>(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).load=e;window.dispatchEvent(new Event("astro:load"));})();;(()=>{var A=Object.defineProperty;var g=(i,o,a)=>o in i?A(i,o,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[o]=a;var d=(i,o,a)=>g(i,typeof o!="symbol"?o+"":o,a);{let i={0:t=>m(t),1:t=>a(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(a(t)),5:t=>new Set(a(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t)},o=t=>{let[l,e]=t;return l in i?i[l](e):void 0},a=t=>t.map(o),m=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([l,e])=>[l,o(e)]));class y extends HTMLElement{constructor(){super(...arguments);d(this,"Component");d(this,"hydrator");d(this,"hydrate",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let c=this.querySelectorAll("astro-slot"),n={},h=this.querySelectorAll("template[data-astro-template]");for(let r of h){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("data-astro-template")||"default"]=r.innerHTML,r.remove())}for(let r of c){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("name")||"default"]=r.innerHTML)}let p;try{p=this.hasAttribute("props")?m(JSON.parse(this.getAttribute("props"))):{}}catch(r){let s=this.getAttribute("component-url")||"<unknown>",v=this.getAttribute("component-export");throw v&&(s+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute("props"),r),r}let u;await this.hydrator(this)(this.Component,p,n,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});d(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),c.disconnect(),this.childrenConnectedCallback()},c=new MutationObserver(()=>{var n;((n=this.lastChild)==null?void 0:n.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});c.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}async start(){let e=JSON.parse(this.getAttribute("opts")),c=this.getAttribute("client");if(Astro[c]===void 0){window.addEventListener(`astro:${c}`,()=>this.start(),{once:!0});return}try{await Astro[c](async()=>{let n=this.getAttribute("renderer-url"),[h,{default:p}]=await Promise.all([import(this.getAttribute("component-url")),n?import(n):()=>()=>{}]),u=this.getAttribute("component-export")||"default";if(!u.includes("."))this.Component=h[u];else{this.Component=h;for(let f of u.split("."))this.Component=this.Component[f]}return this.hydrator=p,this.hydrate},e,this)}catch(n){console.error(`[astro-island] Error hydrating ${this.getAttribute("component-url")}`,n)}}attributeChangedCallback(){this.hydrate()}}d(y,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",y)}})();</script><astro-island uid="qykv4" component-url="/_astro/FilterTags.DyDB2XGd.js" component-export="default" renderer-url="/_astro/client.Cx1FBVJX.js" props="{"tags":[1,[[0,{"sys":[0,{"id":[0,"qRYXmHXSlwvOzwncXmTJP"]}],"name":[0,"AI"],"slug":[0,"ai"],"linkedFrom":[0,{"contentTypeEntryCollection":[0,{"total":[0,7],"items":[1,[[0,{"parent":[0,null]}],[0,{"parent":[0,null]}],[0,{"parent":[0,null]}],[0,{"parent":[0,null]}],[0,{"parent":[0,null]}],[0,{"parent":[0,null]}],[0,{"parent":[0,null]}]]]}]}]}],[0,{"sys":[0,{"id":[0,"122Owvv3CspsdQhog2n0Cm"]}],"name":[0,"Nix"],"slug":[0,"nix"],"linkedFrom":[0,{"contentTypeEntryCollection":[0,{"total":[0,5],"items":[1,[[0,{"parent":[0,null]}],[0,{"parent":[0,null]}],[0,{"parent":[0,null]}],[0,{"parent":[0,null]}],[0,{"parent":[0,null]}]]]}]}]}],[0,{"sys":[0,{"id":[0,"3PSbKRNwmXhelzoYEZSDBT"]}],"name":[0,"Video"],"slug":[0,"video"],"linkedFrom":[0,{"contentTypeEntryCollection":[0,{"total":[0,4],"items":[1,[[0,{"parent":[0,null]}],[0,{"parent":[0,null]}],[0,{"parent":[0,null]}],[0,{"parent":[0,null]}]]]}]}]}],[0,{"sys":[0,{"id":[0,"vEukKDIYqSB8fEkTAg7Sx"]}],"name":[0,"Launch"],"slug":[0,"launch"],"linkedFrom":[0,{"contentTypeEntryCollection":[0,{"total":[0,4],"items":[1,[[0,{"parent":[0,null]}],[0,{"parent":[0,null]}],[0,{"parent":[0,null]}],[0,{"parent":[0,null]}]]]}]}]}],[0,{"sys":[0,{"id":[0,"70PYIPEAVc1jeq8W0Zc3nK"]}],"name":[0,"Docker"],"slug":[0,"docker"],"linkedFrom":[0,{"contentTypeEntryCollection":[0,{"total":[0,2],"items":[1,[[0,{"parent":[0,null]}],[0,{"parent":[0,null]}]]]}]}]}],[0,{"sys":[0,{"id":[0,"2RtuzXGMQ539Ck34h0upCy"]}],"name":[0,"TypeScript"],"slug":[0,"typescript"],"linkedFrom":[0,{"contentTypeEntryCollection":[0,{"total":[0,2],"items":[1,[[0,{"parent":[0,null]}],[0,{"parent":[0,null]}]]]}]}]}],[0,{"sys":[0,{"id":[0,"63mWWG2FvoaMJ5WzealYPG"]}],"name":[0,"Podcast"],"slug":[0,"podcast"],"linkedFrom":[0,{"contentTypeEntryCollection":[0,{"total":[0,2],"items":[1,[[0,{"parent":[0,null]}],[0,{"parent":[0,null]}]]]}]}]}],[0,{"sys":[0,{"id":[0,"72xjwxrF6V8Sb7VxItjwow"]}],"name":[0,"Templates"],"slug":[0,"introducing-idx-templates"],"linkedFrom":[0,{"contentTypeEntryCollection":[0,{"total":[0,1],"items":[1,[[0,{"parent":[0,null]}]]]}]}]}],[0,{"sys":[0,{"id":[0,"6YDNPmiJftn3mXeXbBndJd"]}],"name":[0,"Flask"],"slug":[0,"flask"],"linkedFrom":[0,{"contentTypeEntryCollection":[0,{"total":[0,1],"items":[1,[[0,{"parent":[0,null]}]]]}]}]}],[0,{"sys":[0,{"id":[0,"2sFYvkDG7yguCelnkJ6y3e"]}],"name":[0,"Firebase"],"slug":[0,"firebase"],"linkedFrom":[0,{"contentTypeEntryCollection":[0,{"total":[0,1],"items":[1,[[0,{"parent":[0,null]}]]]}]}]}],[0,{"sys":[0,{"id":[0,"3RWO0twK8xXls1vkUt750g"]}],"name":[0,"Express.js"],"slug":[0,"express-js"],"linkedFrom":[0,{"contentTypeEntryCollection":[0,{"total":[0,1],"items":[1,[[0,{"parent":[0,null]}]]]}]}]}],[0,{"sys":[0,{"id":[0,"Vh7HWUUqVGTJv0agVl2l9"]}],"name":[0,"Gemini"],"slug":[0,"gemini"],"linkedFrom":[0,{"contentTypeEntryCollection":[0,{"total":[0,1],"items":[1,[[0,{"parent":[0,null]}]]]}]}]}],[0,{"sys":[0,{"id":[0,"xnVZJDpJs7w07GHkxQ671"]}],"name":[0,"iOS Simulator"],"slug":[0,"ios-simulator"],"linkedFrom":[0,{"contentTypeEntryCollection":[0,{"total":[0,1],"items":[1,[[0,{"parent":[0,null]}]]]}]}]}],[0,{"sys":[0,{"id":[0,"4WaPOFYJDKyDBt50jZoieU"]}],"name":[0,"Android Emulator"],"slug":[0,"android-emulator"],"linkedFrom":[0,{"contentTypeEntryCollection":[0,{"total":[0,1],"items":[1,[[0,{"parent":[0,null]}]]]}]}]}],[0,{"sys":[0,{"id":[0,"1KOvqt3f7DGnAo2Sgtvf87"]}],"name":[0,"Architecture"],"slug":[0,"IDX Architecture"],"linkedFrom":[0,{"contentTypeEntryCollection":[0,{"total":[0,1],"items":[1,[[0,{"parent":[0,null]}]]]}]}]}],[0,{"sys":[0,{"id":[0,"6uT96Arjz1pJmHdqNZAVS5"]}],"name":[0,"php"],"slug":[0,"php"],"linkedFrom":[0,{"contentTypeEntryCollection":[0,{"total":[0,1],"items":[1,[[0,{"parent":[0,null]}]]]}]}]}],[0,{"sys":[0,{"id":[0,"3DiDUIDAfL54G6m3Wejfba"]}],"name":[0,"Angular"],"slug":[0,"angular"],"linkedFrom":[0,{"contentTypeEntryCollection":[0,{"total":[0,1],"items":[1,[[0,{"parent":[0,null]}]]]}]}]}],[0,{"sys":[0,{"id":[0,"7fqIczl9hBK65Ty9zXx2oJ"]}],"name":[0,"Interview"],"slug":[0,"interview"],"linkedFrom":[0,{"contentTypeEntryCollection":[0,{"total":[0,1],"items":[1,[[0,{"parent":[0,null]}]]]}]}]}],[0,{"sys":[0,{"id":[0,"4AO1XOZruGCup5WR6NHx26"]}],"name":[0,"Node.js"],"slug":[0,"node-js"],"linkedFrom":[0,{"contentTypeEntryCollection":[0,{"total":[0,1],"items":[1,[[0,{"parent":[0,null]}]]]}]}]}]]],"slug":[0,"kaushik-sathupadi"]}" ssr="" client="load" opts="{"name":"FilterTags","value":true}" await-children=""><button class="rounded-full bg-gray-100 border-gray-300 hover:bg-gray-200 active:bg-gray-300 border aspect-square flex justify-center items-center max-md:h-10 h-14 px-2 max-md:w-10 w-14 transition-colors z-30" aria-label="Filter by tag"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="12" viewBox="0 0 18 12" fill="none" class="min-w-[16px]"><path d="M8 12H10C10.55 12 11 11.55 11 11C11 10.45 10.55 10 10 10H8C7.45 10 7 10.45 7 11C7 11.55 7.45 12 8 12ZM0 1C0 1.55 0.45 2 1 2H17C17.55 2 18 1.55 18 1C18 0.45 17.55 0 17 0H1C0.45 0 0 0.45 0 1ZM4 7H14C14.55 7 15 6.55 15 6C15 5.45 14.55 5 14 5H4C3.45 5 3 5.45 3 6C3 6.55 3.45 7 4 7Z" fill="currentColor"></path></svg></button><div class="filter-tags"><div class="blog-container relative z-10 flex flex-wrap gap-1"><a href="/blog/tag/ai" class="text-link border border-gray-300 text-gray-400 bg-gray-100 rounded p-2 uppercase text-xs font-mono-fancy hover:bg-gray-200 hover:text-white hover:border-gray-400 transition-colors duration-300 bg-gray-100">AI</a> <a href="/blog/tag/nix" class="text-link border border-gray-300 text-gray-400 bg-gray-100 rounded p-2 uppercase text-xs font-mono-fancy hover:bg-gray-200 hover:text-white hover:border-gray-400 transition-colors duration-300 bg-gray-100">Nix</a> <a href="/blog/tag/video" class="text-link border border-gray-300 text-gray-400 bg-gray-100 rounded p-2 uppercase text-xs font-mono-fancy hover:bg-gray-200 hover:text-white hover:border-gray-400 transition-colors duration-300 bg-gray-100">Video</a> <a href="/blog/tag/launch" class="text-link border border-gray-300 text-gray-400 bg-gray-100 rounded p-2 uppercase text-xs font-mono-fancy hover:bg-gray-200 hover:text-white hover:border-gray-400 transition-colors duration-300 bg-gray-100">Launch</a> <a href="/blog/tag/docker" class="text-link border border-gray-300 text-gray-400 bg-gray-100 rounded p-2 uppercase text-xs font-mono-fancy hover:bg-gray-200 hover:text-white hover:border-gray-400 transition-colors duration-300 bg-gray-100">Docker</a> <a href="/blog/tag/typescript" class="text-link border border-gray-300 text-gray-400 bg-gray-100 rounded p-2 uppercase text-xs font-mono-fancy hover:bg-gray-200 hover:text-white hover:border-gray-400 transition-colors duration-300 bg-gray-100">TypeScript</a> <a href="/blog/tag/podcast" class="text-link border border-gray-300 text-gray-400 bg-gray-100 rounded p-2 uppercase text-xs font-mono-fancy hover:bg-gray-200 hover:text-white hover:border-gray-400 transition-colors duration-300 bg-gray-100">Podcast</a> <a href="/blog/tag/introducing-idx-templates" class="text-link border border-gray-300 text-gray-400 bg-gray-100 rounded p-2 uppercase text-xs font-mono-fancy hover:bg-gray-200 hover:text-white hover:border-gray-400 transition-colors duration-300 bg-gray-100">Templates</a> <a href="/blog/tag/flask" class="text-link border border-gray-300 text-gray-400 bg-gray-100 rounded p-2 uppercase text-xs font-mono-fancy hover:bg-gray-200 hover:text-white hover:border-gray-400 transition-colors duration-300 bg-gray-100">Flask</a> <a href="/blog/tag/firebase" class="text-link border border-gray-300 text-gray-400 bg-gray-100 rounded p-2 uppercase text-xs font-mono-fancy hover:bg-gray-200 hover:text-white hover:border-gray-400 transition-colors duration-300 bg-gray-100">Firebase</a> <a href="/blog/tag/express-js" class="text-link border border-gray-300 text-gray-400 bg-gray-100 rounded p-2 uppercase text-xs font-mono-fancy hover:bg-gray-200 hover:text-white hover:border-gray-400 transition-colors duration-300 bg-gray-100">Express.js</a> <a href="/blog/tag/gemini" class="text-link border border-gray-300 text-gray-400 bg-gray-100 rounded p-2 uppercase text-xs font-mono-fancy hover:bg-gray-200 hover:text-white hover:border-gray-400 transition-colors duration-300 bg-gray-100">Gemini</a> <a href="/blog/tag/ios-simulator" class="text-link border border-gray-300 text-gray-400 bg-gray-100 rounded p-2 uppercase text-xs font-mono-fancy hover:bg-gray-200 hover:text-white hover:border-gray-400 transition-colors duration-300 bg-gray-100">iOS Simulator</a> <a href="/blog/tag/android-emulator" class="text-link border border-gray-300 text-gray-400 bg-gray-100 rounded p-2 uppercase text-xs font-mono-fancy hover:bg-gray-200 hover:text-white hover:border-gray-400 transition-colors duration-300 bg-gray-100">Android Emulator</a> <a href="/blog/tag/IDX Architecture" class="text-link border border-gray-300 text-gray-400 bg-gray-100 rounded p-2 uppercase text-xs font-mono-fancy hover:bg-gray-200 hover:text-white hover:border-gray-400 transition-colors duration-300 bg-gray-100">Architecture</a> <a href="/blog/tag/php" class="text-link border border-gray-300 text-gray-400 bg-gray-100 rounded p-2 uppercase text-xs font-mono-fancy hover:bg-gray-200 hover:text-white hover:border-gray-400 transition-colors duration-300 bg-gray-100">php</a> <a href="/blog/tag/angular" class="text-link border border-gray-300 text-gray-400 bg-gray-100 rounded p-2 uppercase text-xs font-mono-fancy hover:bg-gray-200 hover:text-white hover:border-gray-400 transition-colors duration-300 bg-gray-100">Angular</a> <a href="/blog/tag/interview" class="text-link border border-gray-300 text-gray-400 bg-gray-100 rounded p-2 uppercase text-xs font-mono-fancy hover:bg-gray-200 hover:text-white hover:border-gray-400 transition-colors duration-300 bg-gray-100">Interview</a> <a href="/blog/tag/node-js" class="text-link border border-gray-300 text-gray-400 bg-gray-100 rounded p-2 uppercase text-xs font-mono-fancy hover:bg-gray-200 hover:text-white hover:border-gray-400 transition-colors duration-300 bg-gray-100">Node.js</a></div></div></astro-island></div></div><ul class="blog-container feed-list"><li class="feed-item"><a data-is-feed-link class="feed-item-link-overlay" href="/blog/article/insiders-look-at-gemini-in-idx"><span class="sr-only">Read An Insider鈥檚 Look at Gemini in IDX</span></a><div class="item-content-container type-article feed" data-astro-transition-scope="astro-rhsclbw6-9"><img src="/_astro/Frame_182_copy_Z1t8kJe.webp" alt="gemini in idx 3" class="w-full object-cover aspect-[16/5]" width="1600" height="836" loading="lazy" decoding="async"><div class="flex gap-4 p-4 md:p-6 md:gap-8"><div class="max-sm:hidden"><div class="w-12 h-12 rounded-lg bg-gray-200 shrink-0 p-1 flex justify-center items-center" data-astro-transition-scope="astro-bwq7iixi-1"><img src="/_astro/code-chevron.baLPjOK9_8yIad.svg" class="w-8 h-8" alt="Code Chevron" width="200" height="150" loading="lazy" decoding="async"></div></div><div class="max-w-full"><p class="title mb-4 text-2xl md:text-3xl md:leading-8">An Insider鈥檚 Look at Gemini in IDX</p><div class="flex items-center gap-4"><div class="sm:hidden w-12 h-12 rounded-lg bg-gray-200 shrink-0 p-1 flex justify-center items-center"><img src="/_astro/code-chevron.baLPjOK9_8yIad.svg" class="w-8 h-8" alt="Code Chevron" width="200" height="150" loading="lazy" decoding="async"></div><div class="flex flex-wrap"><a class="font-mono-fancy text-link mr-2 text-xs" href="/blog/author/kaushik-sathupadi">Kaushik Sathupadi,</a><a class="font-mono-fancy text-link mr-2 text-xs" href="/blog/author/ali-satter">Ali Satter</a><time datetime="2024-06-27T11:00:00.000-06:00" class="font-mono-fancy text-xs">June 2024</time></div></div></div></div></div></li><li class="feed-item"><a data-is-feed-link class="feed-item-link-overlay" href="/blog/article/build-with-gemini-in-idx"><span class="sr-only">Read Build with Gemini models in Project IDX</span></a><div class="item-content-container type-article feed" data-astro-transition-scope="astro-rhsclbw6-10"><img src="/_astro/IDX_Gemini_BlogHeader_J_1600x836_Z1vKBR9.webp" alt="Gemini API on IDX header" class="w-full object-cover aspect-[16/5]" width="1600" height="836" loading="lazy" decoding="async"><div class="flex gap-4 p-4 md:p-6 md:gap-8"><div class="max-sm:hidden"><div class="w-12 h-12 rounded-lg bg-gray-200 shrink-0 p-1 flex justify-center items-center" data-astro-transition-scope="astro-bwq7iixi-2"><img src="/_astro/code-chevron.baLPjOK9_8yIad.svg" class="w-8 h-8" alt="Code Chevron" width="200" height="150" loading="lazy" decoding="async"></div></div><div class="max-w-full"><p class="title mb-4 text-2xl md:text-3xl md:leading-8">Build with Gemini models in Project IDX</p><div class="mt-6 mb-6 flex flex-wrap gap-2"><a href="/blog/tag/ai" class="text-link border border-gray-300 text-gray-400 bg-gray-100 rounded p-2 uppercase text-xs font-mono-fancy null null null transition-colors duration-300 bg-gray-100">AI</a></div><div class="flex items-center gap-4"><div class="sm:hidden w-12 h-12 rounded-lg bg-gray-200 shrink-0 p-1 flex justify-center items-center"><img src="/_astro/code-chevron.baLPjOK9_8yIad.svg" class="w-8 h-8" alt="Code Chevron" width="200" height="150" loading="lazy" decoding="async"></div><div class="flex flex-wrap"><a class="font-mono-fancy text-link mr-2 text-xs" href="/blog/author/ali-satter">Ali Satter,</a><a class="font-mono-fancy text-link mr-2 text-xs" href="/blog/author/roman-nurik">Roman Nurik,</a><a class="font-mono-fancy text-link mr-2 text-xs" href="/blog/author/kaushik-sathupadi">Kaushik Sathupadi</a><time datetime="2024-02-15T00:00:00.000-05:00" class="font-mono-fancy text-xs">February 2024</time></div></div></div></div></div></li><li class="feed-item"><a data-is-feed-link class="feed-item-link-overlay" href="/blog/article/how-we-built-project-idx-a-high-level-overview"><span class="sr-only">Read How we built Project IDX: A high-level overview</span></a><div class="item-content-container type-article feed" data-astro-transition-scope="astro-rhsclbw6-11"><img src="/_astro/twitter-card-how-we-built-lefter-title__4__Z2cC4FW.webp" alt="How we built Project IDX Header" class="w-full object-cover aspect-[16/5]" width="1600" height="836" loading="lazy" decoding="async"><div class="flex gap-4 p-4 md:p-6 md:gap-8"><div class="max-sm:hidden"><div class="w-12 h-12 rounded-lg bg-gray-200 shrink-0 p-1 flex justify-center items-center" data-astro-transition-scope="astro-bwq7iixi-3"><img src="/_astro/code-chevron.baLPjOK9_8yIad.svg" class="w-8 h-8" alt="Code Chevron" width="200" height="150" loading="lazy" decoding="async"></div></div><div class="max-w-full"><p class="title mb-4 text-2xl md:text-3xl md:leading-8">How we built Project IDX: A high-level overview</p><div class="mt-6 mb-6 flex flex-wrap gap-2"><a href="/blog/tag/IDX Architecture" class="text-link border border-gray-300 text-gray-400 bg-gray-100 rounded p-2 uppercase text-xs font-mono-fancy null null null transition-colors duration-300 bg-gray-100">Architecture</a></div><div class="flex items-center gap-4"><div class="sm:hidden w-12 h-12 rounded-lg bg-gray-200 shrink-0 p-1 flex justify-center items-center"><img src="/_astro/code-chevron.baLPjOK9_8yIad.svg" class="w-8 h-8" alt="Code Chevron" width="200" height="150" loading="lazy" decoding="async"></div><div class="flex flex-wrap"><a class="font-mono-fancy text-link mr-2 text-xs" href="/blog/author/prakhar-srivastav">Prakhar Srivastav,</a><a class="font-mono-fancy text-link mr-2 text-xs" href="/blog/author/kaushik-sathupadi">Kaushik Sathupadi</a><time datetime="2024-01-09T00:00:00.000-05:00" class="font-mono-fancy text-xs">January 2024</time></div></div></div></div></div></li><li class="feed-item"><a data-is-feed-link class="feed-item-link-overlay" href="/blog/article/full-stack-development-in-project-idx"><span class="sr-only">Read Full-stack development in Project IDX</span></a><div class="item-content-container type-article feed" data-astro-transition-scope="astro-rhsclbw6-12"><img src="/_astro/image_HQKjp.webp" alt="Full-stack development hero image" class="w-full object-cover aspect-[16/5]" width="1600" height="476" loading="lazy" decoding="async"><div class="flex gap-4 p-4 md:p-6 md:gap-8"><div class="max-sm:hidden"><div class="w-12 h-12 rounded-lg bg-gray-200 shrink-0 p-1 flex justify-center items-center" data-astro-transition-scope="astro-bwq7iixi-4"><img src="/_astro/code-chevron.baLPjOK9_8yIad.svg" class="w-8 h-8" alt="Code Chevron" width="200" height="150" loading="lazy" decoding="async"></div></div><div class="max-w-full"><p class="title mb-4 text-2xl md:text-3xl md:leading-8">Full-stack development in Project IDX</p><div class="mt-6 mb-6 flex flex-wrap gap-2"><a href="/blog/tag/node-js" class="text-link border border-gray-300 text-gray-400 bg-gray-100 rounded p-2 uppercase text-xs font-mono-fancy null null null transition-colors duration-300 bg-gray-100">Node.js</a></div><div class="flex items-center gap-4"><div class="sm:hidden w-12 h-12 rounded-lg bg-gray-200 shrink-0 p-1 flex justify-center items-center"><img src="/_astro/code-chevron.baLPjOK9_8yIad.svg" class="w-8 h-8" alt="Code Chevron" width="200" height="150" loading="lazy" decoding="async"></div><div class="flex flex-wrap"><a class="font-mono-fancy text-link mr-2 text-xs" href="/blog/author/kaushik-sathupadi">Kaushik Sathupadi,</a><a class="font-mono-fancy text-link mr-2 text-xs" href="/blog/author/prakhar-srivastav">Prakhar Srivastav,</a><a class="font-mono-fancy text-link mr-2 text-xs" href="/blog/author/ashwin-raghav-mohan-ganesh">Ashwin Raghav Mohan Ganesh</a><time datetime="2023-11-16T00:00:00.000-05:00" class="font-mono-fancy text-xs">November 2023</time></div></div></div></div></div></li></ul><footer class="site-footer mt-10 mb-10 text-xs" data-astro-cid-sz7xmlte><div class="container flex gap-2 max-lg:flex-col" data-astro-cid-sz7xmlte><div class="site-footer-row is-start" data-astro-cid-sz7xmlte><a href="/status" target="_blank" rel="noopener" data-astro-cid-sz7xmlte><script>(()=>{var l=(s,i,o)=>{let r=async()=>{await(await s())()},t=typeof i.value=="object"?i.value:void 0,c={rootMargin:t==null?void 0:t.rootMargin},n=new IntersectionObserver(e=>{for(let a of e)if(a.isIntersecting){n.disconnect(),r();break}},c);for(let e of o.children)n.observe(e)};(self.Astro||(self.Astro={})).visible=l;window.dispatchEvent(new Event("astro:visible"));})();</script><astro-island uid="Z1WJNS1" component-url="/_astro/ServiceStatusDot.CHS8dBLT.js" component-export="default" renderer-url="/_astro/client.Cx1FBVJX.js" props="{"data-astro-cid-sz7xmlte":[0,true]}" ssr="" client="visible" opts="{"name":"ServiceStatusDot","value":true}" await-children=""><div class="w-2 h-2 rounded-full bg-gray-300"></div></astro-island>Status</a><div class="footer-separator" data-astro-cid-sz7xmlte></div><a href="https://community.idx.dev/" target="_blank" rel="noopener" data-astro-cid-sz7xmlte>Discussion Forum</a><div class="footer-separator" data-astro-cid-sz7xmlte></div><a href="https://idx.uservoice.com/" target="_blank" rel="noopener" data-astro-cid-sz7xmlte>Feature Requests</a></div><div class="site-footer-row is-end" data-astro-cid-sz7xmlte><a href="/" data-astro-cid-sz7xmlte>About IDX</a><div class="footer-separator" data-astro-cid-sz7xmlte></div><a href="/blog/rss.xml" target="_blank" rel="noopener" data-astro-cid-sz7xmlte><svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5.01333 13.0133C5.01333 12.4444 4.81778 11.9644 4.42667 11.5733C4.03556 11.1822 3.55556 10.9867 2.98667 10.9867V13.0133H5.01333ZM2.98667 2.98667C4.8 2.98667 6.47111 3.44889 8 4.37333C9.52889 5.26222 10.7378 6.47111 11.6267 8C12.5511 9.52889 13.0133 11.2 13.0133 13.0133H12C12 11.3778 11.5911 9.86667 10.7733 8.48C9.99111 7.09333 8.90667 6.00889 7.52 5.22667C6.13333 4.40889 4.62222 4 2.98667 4V2.98667ZM2.98667 6.98667C4.08889 6.98667 5.08444 7.27111 5.97333 7.84C6.89778 8.37333 7.62667 9.10222 8.16 10.0267C8.72889 10.9156 9.01333 11.9111 9.01333 13.0133H8C8 12.0889 7.76889 11.2533 7.30667 10.5067C6.88 9.72444 6.27556 9.12 5.49333 8.69333C4.74667 8.23111 3.91111 8 2.98667 8V6.98667Z" fill="currentColor"></path></svg></a><div class="footer-separator" data-astro-cid-sz7xmlte></div><a href="https://policies.google.com/terms" target="_blank" rel="noopener" data-astro-cid-sz7xmlte>Terms</a><div class="footer-separator" data-astro-cid-sz7xmlte></div><a href="https://policies.google.com/privacy" target="_blank" rel="noopener" data-astro-cid-sz7xmlte>Privacy</a></div></div></footer></main></body></html>