<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Alex Patterson</title>
    <description>The latest articles on DEV Community by Alex Patterson (@codercatdev).</description>
    <link>https://dev.to/codercatdev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F135713%2F21606883-4fdb-4d16-b182-759b026c42da.jpeg</url>
      <title>DEV Community: Alex Patterson</title>
      <link>https://dev.to/codercatdev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/codercatdev"/>
    <language>en</language>
    <item>
      <title>Introducing the AI-Powered App Testing Agent in Firebase: Web Architecture &amp; Implementation Guide</title>
      <dc:creator>Alex Patterson</dc:creator>
      <pubDate>Mon, 26 Oct 2026 04:26:12 +0000</pubDate>
      <link>https://dev.to/codingcatdev/introducing-the-ai-powered-app-testing-agent-in-firebase-web-architecture-implementation-guide-35f0</link>
      <guid>https://dev.to/codingcatdev/introducing-the-ai-powered-app-testing-agent-in-firebase-web-architecture-implementation-guide-35f0</guid>
      <description>&lt;p&gt;Original: &lt;a href="https://codingcat.dev/post/firebase-2025-04-app-testing-agent" rel="noopener noreferrer"&gt;https://codingcat.dev/post/firebase-2025-04-app-testing-agent&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Calling frontier multimodal models directly from a web or mobile client is a security minefield if you expose raw API keys or hardcode brittle system prompts in your frontend bundle. Following the announcement of &lt;strong&gt;Introducing the AI-Powered App Testing Agent&lt;/strong&gt; by Lee Kellogg on the &lt;a href="https://firebase.blog/posts/2025/04/app-testing-agent/" rel="noopener noreferrer"&gt;&lt;strong&gt;Official Firebase Blog&lt;/strong&gt;&lt;/a&gt; (2025-04-09), here is our hands-on CodingCat.dev breakdown of what actually shipped, how it works under the hood, and how we wire it into production TypeScript, Next.js, Astro, SvelteKit, React, and Angular applications. Ensuring your apps are high quality before release is crucial. Manual testing is a standard practice but it is expensive and time-consuming. Automated testing frameworks can have flaky tests and are difficult to maintain. To smooth out this part of the development process, The Firebase team announced a preview of the App Testing agent, which uses the power of AI to help test your app directly within App Distribution. It provides test coverage over your app’s core user journeys and since the agent will do the testing for you, your team has more time to focus on building exciting features that your users will love.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Mental Model: Why Introducing the AI-Powered App Testing Agent Matters for Web Devs
&lt;/h2&gt;

&lt;p&gt;As a Google Developer Expert (GDE) for Firebase and Senior Solutions Engineer at CodingCat.dev, I evaluate every Firebase update through one lens: does it reduce boilerplate while keeping our runtime security and cloud bills predictable? Firebase AI Logic lets you invoke Gemini and Imagen models from client and edge apps using the Firebase Web SDK while keeping your API credentials off the wire, enforcing Firebase App Check, and managing server-side prompt templates centrally.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;AJ Pro-Tip from Alex: Combine Firebase AI Logic with server prompt templates, Firebase Remote Config feature flags, and project spend caps so you can iterate on prompts or swap Gemini models instantly without redeploying your Next.js or Astro frontend.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  How It Works: Technical Breakdown &amp;amp; Implementation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Meet the App Testing agent
&lt;/h3&gt;

&lt;p&gt;The App Testing agent is a &lt;strong&gt;Gemini-powered **test case generation, management, and execution agent designed to work directly within App Distribution. You define test goals in **natural language&lt;/strong&gt;, and the agent uses AI to understand and navigate your app, simulate user interactions, and provide detailed test results.&lt;/p&gt;

&lt;p&gt;The App Testing agent is designed to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;help you automate and expand your functional and UI testing efforts&lt;/li&gt;
&lt;li&gt;be codeless, making the agent accessible to a wider range of team members&lt;/li&gt;
&lt;li&gt;be low maintenance by adapting to changes in your app so you spend less time fixing broken tests&lt;/li&gt;
&lt;li&gt;run tests simultaneously against various physical and virtual devices&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Testing a travel app
&lt;/h3&gt;

&lt;p&gt;Let’s say you are building a travel app that lets users describe their ideal trip in natural language and receive a matching itinerary. With the App Testing agent, you can create a test case focused on their core app flow.&lt;/p&gt;

&lt;p&gt;First, you create a test case with two steps. Each test step has a **goal **that tells the agent what to do. In this case, the two goals are:&lt;/p&gt;

&lt;p&gt;Next, to help the App Testing agent successfully navigate a few tricky parts of the UI, you can add &lt;strong&gt;hints&lt;/strong&gt;. For example, you add a hint that the agent must hide the keyboard after entering text in order to expose the submit button.&lt;/p&gt;

&lt;p&gt;Finally, you can optionally tell the agent what to expect during a passing test run by adding &lt;strong&gt;success criteria&lt;/strong&gt;, such as “The search has been started”.&lt;/p&gt;

&lt;p&gt;Once this test case is created, you can tell the App Testing agent, powered by &lt;a href="https://gemini.google.com/app" rel="noopener noreferrer"&gt;&lt;strong&gt;Gemini&lt;/strong&gt;&lt;/a&gt;, to run this test on a set of physical and/or virtual devices with different locales and orientations.&lt;/p&gt;

&lt;p&gt;After the test runs, you can see if the test:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;passed: the success criteria were met, and the itinerary was displayed&lt;/li&gt;
&lt;li&gt;failed: there is a potential regression or issue in the latest build&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To dig into a particular test run, you can view a step-by-step breakdown of the actions the agent took. You can review screenshots and explanations to understand how the agent navigated the app and why the test passed or failed.&lt;/p&gt;

&lt;p&gt;The agent’s AI capabilities power intuitive navigation of many app flows on its own. But as you can imagine, it’s not perfect, and sometimes it will take different actions for the same input. In the case where the agent has trouble navigating the app, you can refine the test case by adding hints or splitting the test case into smaller, more manageable steps.&lt;/p&gt;

&lt;h3&gt;
  
  
  Looking ahead
&lt;/h3&gt;

&lt;h2&gt;
  
  
  Show Me the Code: TypeScript &amp;amp; Web SDK Setup
&lt;/h2&gt;

&lt;p&gt;Here is the production baseline pattern we use at CodingCat.dev when wiring Introducing the AI-Powered App Testing Agent into a modern TypeScript web application:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;initializeApp&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;firebase/app&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;getAI&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;getGenerativeModel&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;GoogleAIBackend&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;firebase/ai&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;initializeAppCheck&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ReCaptchaEnterpriseProvider&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;firebase/app-check&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;initializeApp&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;NEXT_PUBLIC_FIREBASE_API_KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;projectId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;NEXT_PUBLIC_FIREBASE_PROJECT_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// Protect AI endpoints in web apps with Firebase App Check&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;undefined&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;initializeAppCheck&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;provider&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ReCaptchaEnterpriseProvider&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;NEXT_PUBLIC_RECAPTCHA_SITE_KEY&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="na"&gt;isTokenAutoRefreshEnabled&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ai&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;getAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;backend&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;GoogleAIBackend&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;geminiModel&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;getGenerativeModel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ai&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;gemini-2.5-flash&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Production Web Architecture &amp;amp; Security Checklist
&lt;/h2&gt;

&lt;p&gt;Whether we are deploying on &lt;a href="https://firebase.google.com/docs/app-hosting" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Hosting&lt;/strong&gt;&lt;/a&gt;, Cloudflare Workers, or Vercel, shipping AI features to production requires defense-in-depth across three layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;**Enforce Firebase App Check &amp;amp; Attestation: **Protect your web endpoints, Cloud Functions, Data Connect GraphQL resolvers, and Firebase AI Logic calls against unauthorized replay or billing abuse using &lt;a href="https://firebase.google.com/docs/app-check" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Check with reCAPTCHA Enterprise&lt;/strong&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;**Validate Locally with the Firebase Emulator Suite: **Run deterministic integration tests against local Firestore, Auth, Functions, and Data Connect PostgreSQL emulators before promoting schema or rule changes to production.&lt;/li&gt;
&lt;li&gt;**Keep Server &amp;amp; Client Boundaries Type-Safe: **Use the modular Firebase Web SDK and generated TypeScript bindings so SSR frameworks like Next.js, Astro, SvelteKit, and Angular serialize state cleanly without hydration flickers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Accelerate your full-stack web and AI development by pairing &lt;strong&gt;Introducing the AI-Powered App Testing Agent&lt;/strong&gt; with strict Security Rules, Firebase App Check, and local emulator testing. Come tell us on &lt;a href="https://x.com/CodingCatDev" rel="noopener noreferrer"&gt;&lt;strong&gt;X (@CodingCatDev)&lt;/strong&gt;&lt;/a&gt; and &lt;a href="https://www.linkedin.com/company/codingcatdev" rel="noopener noreferrer"&gt;&lt;strong&gt;LinkedIn (CodingCat.dev)&lt;/strong&gt;&lt;/a&gt; how you are using Firebase in your stack, and subscribe to the &lt;a href="https://www.youtube.com/@CodingCatDev?sub_confirmation=1" rel="noopener noreferrer"&gt;&lt;strong&gt;CodingCat.dev YouTube Channel&lt;/strong&gt;&lt;/a&gt; so you don't miss what we build next!&lt;/p&gt;

&lt;h2&gt;
  
  
  Watch Our Related Firebase Video Tutorial on YouTube
&lt;/h2&gt;

&lt;p&gt;Want to see how we architect and debug Firebase web applications live? Watch our related CodingCat.dev session &lt;a href="https://youtu.be/N25khadfUag" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase SQL with Data Connect&lt;/strong&gt;&lt;/a&gt; below, and make sure to &lt;a href="https://www.youtube.com/@CodingCatDev?sub_confirmation=1" rel="noopener noreferrer"&gt;&lt;strong&gt;Subscribe to CodingCat.dev on YouTube&lt;/strong&gt;&lt;/a&gt; for weekly full-stack web and AI deep dives:&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/N25khadfUag" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources, Official Docs &amp;amp; Related CodingCat.dev Guides
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;*&lt;em&gt;Primary Release Source: *&lt;/em&gt;&lt;a href="https://firebase.blog/posts/2025/04/app-testing-agent/" rel="noopener noreferrer"&gt;Introducing the AI-Powered App Testing Agent on the Official Firebase Blog&lt;/a&gt; (published 2025-04-09 by Lee Kellogg)&lt;/li&gt;
&lt;li&gt;*&lt;em&gt;Official Firebase Documentation: *&lt;/em&gt;&lt;a href="https://firebase.google.com/docs/web/setup" rel="noopener noreferrer"&gt;Firebase Developer Docs &amp;amp; Web SDK Reference&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev: &lt;a href="https://codingcat.dev/post/firebase-2025-03-monitor-genkit-features-in-production" rel="noopener noreferrer"&gt;Monitor your Genkit features in production&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev: &lt;a href="https://codingcat.dev/post/firebase-2025-04-apphosting-general-availability" rel="noopener noreferrer"&gt;Deploy Angular &amp;amp; Next.js apps with App Hosting, now GA!&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev: &lt;a href="https://codingcat.dev/podcast/firebase-sql-with-data-connect" rel="noopener noreferrer"&gt;Firebase SQL with Data Connect&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev: &lt;a href="https://codingcat.dev/podcast/build-a-custom-no-code-app-in-90-minutes" rel="noopener noreferrer"&gt;Build a Custom No-Code App in 90 Minutes&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions (FAQ)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What are the key capabilities introduced in Introducing the AI-Powered App Testing Agent?
&lt;/h3&gt;

&lt;p&gt;Introducing the AI-Powered App Testing Agent (announced 2025-04-09 by the Firebase team) enhances the platform for Firebase, Google Cloud, Web Dev, AI workloads. Ensuring your apps are high quality before release is crucial. Manual testing is a standard practice but it is expensive and time-consuming. Automated testing frameworks can have flaky tests and are difficult to maintain. To smooth out this part of the development process, The Firebase team announced a preview of the App Testing agent, which uses the power of AI to help test your app directly within App Distribution. It provides test coverage over your app’s core user journeys and since the agent will do the testing for you, your team has more time to focus on building exciting features that your users will love. Developers can review the primary announcement on the &lt;a href="https://firebase.blog/posts/2025/04/app-testing-agent/" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Blog&lt;/strong&gt;&lt;/a&gt; alongside our implementation patterns and production checklist above.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do web developers use Introducing the AI-Powered App Testing Agent with Next.js, SvelteKit, React, or Angular?
&lt;/h3&gt;

&lt;p&gt;Web developers can integrate these features using the modular Firebase JavaScript/TypeScript SDK, Firebase Data Connect web bindings, and &lt;a href="https://firebase.google.com/docs/app-hosting" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Hosting&lt;/strong&gt;&lt;/a&gt;. Always pair client-side SDK initialization with Firebase App Check and strict Security Rules, and test locally with the Firebase Local Emulator Suite before deploying.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where can I watch video tutorials on Firebase Web and AI development?
&lt;/h3&gt;

&lt;p&gt;You can watch our hands-on Firebase video walkthroughs on the &lt;a href="https://www.youtube.com/@CodingCatDev?sub_confirmation=1" rel="noopener noreferrer"&gt;&lt;strong&gt;CodingCat.dev YouTube Channel&lt;/strong&gt;&lt;/a&gt;, including &lt;a href="https://youtu.be/N25khadfUag" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase SQL with Data Connect&lt;/strong&gt;&lt;/a&gt;, and follow us on &lt;a href="https://x.com/CodingCatDev" rel="noopener noreferrer"&gt;&lt;strong&gt;X (@CodingCatDev)&lt;/strong&gt;&lt;/a&gt; for weekly full-stack tutorials.&lt;/p&gt;

</description>
      <category>firebase</category>
      <category>googlecloud</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Announcing Firebase Genkit 1.0 for Node.js: Web Architecture &amp; Implementation Guide</title>
      <dc:creator>Alex Patterson</dc:creator>
      <pubDate>Mon, 26 Oct 2026 04:26:11 +0000</pubDate>
      <link>https://dev.to/codingcatdev/announcing-firebase-genkit-10-for-nodejs-web-architecture-implementation-guide-3l25</link>
      <guid>https://dev.to/codingcatdev/announcing-firebase-genkit-10-for-nodejs-web-architecture-implementation-guide-3l25</guid>
      <description>&lt;p&gt;Original: &lt;a href="https://codingcat.dev/post/firebase-2025-02-announcing-genkit" rel="noopener noreferrer"&gt;https://codingcat.dev/post/firebase-2025-02-announcing-genkit&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Building AI features in TypeScript or Go quickly turns into spaghetti when you try to bolt structured output validation, tool calling, and OpenTelemetry tracing onto raw model API calls. Following the announcement of &lt;strong&gt;Announcing Firebase Genkit 1.0 for Node.js&lt;/strong&gt; by Chris Gill, Peter Friese on the &lt;a href="https://firebase.blog/posts/2025/02/announcing-genkit/" rel="noopener noreferrer"&gt;&lt;strong&gt;Official Firebase Blog&lt;/strong&gt;&lt;/a&gt; (2025-02-12), here is our hands-on CodingCat.dev breakdown of what actually shipped, how it works under the hood, and how we wire it into production TypeScript, Next.js, Astro, SvelteKit, React, and Angular applications. The demand for intelligent, personalized apps is skyrocketing. Integrating AI is no longer a future aspiration, it’s becoming a core requirement for engaging users and streamlining workflows. That’s where Firebase Genkit comes in.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Mental Model: Why Announcing Firebase Genkit 1.0 for Node.js Matters for Web Devs
&lt;/h2&gt;

&lt;p&gt;As a Google Developer Expert (GDE) for Firebase and Senior Solutions Engineer at CodingCat.dev, I evaluate every Firebase update through one lens: does it reduce boilerplate while keeping our runtime security and cloud bills predictable? Firebase Genkit gives full-stack engineers strongly typed flows, dotprompt templates, local developer UI trace inspection, and production observability wired directly into Google Cloud and Firebase.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;AJ Pro-Tip from Alex: Always wrap your Genkit flows with explicit Zod input/output schemas and enforce Firebase App Check attestation on callable endpoints so bots cannot rack up unauthenticated token spend.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  How It Works: Technical Breakdown &amp;amp; Implementation
&lt;/h2&gt;

&lt;p&gt;In this update, the Firebase team announced that after a successful &lt;a href="https://firebase.blog/posts/2024/05/introducing-genkit" rel="noopener noreferrer"&gt;&lt;strong&gt;preview at Google I/O 2024&lt;/strong&gt;&lt;/a&gt;, &lt;strong&gt;Genkit for Node.js is now at version 1.0 and ready for production use&lt;/strong&gt;. This is a significant milestone, and we couldn’t have reached it without the valuable feedback from the community. The Firebase engineering team has been working refining the core primitives, expanding features, and making Genkit more powerful and user-friendly.&lt;/p&gt;

&lt;p&gt;Genkit is an open source, developer-first framework for building AI-powered features for your apps&lt;/p&gt;

&lt;p&gt;Genkit is an open-source framework that enables developers to integrate AI-powered agents, automations, and features directly into their applications. Genkit offers out-of-the-box support for Google’s **Gemini **models, **Imagen and Anthropic **models via Vertex and a wide range of other models through the community plugins including OpenAI and GitHub. Furthermore, Genkit facilitates the use of self-hosted open models like Gemma, Llama, and DeepSeek via its Ollama integration. As of today, Genkit is production-ready for Node.js and in alpha for Go. It also has built-in local developer tooling for testing, debugging, and prompt management.&lt;/p&gt;

&lt;h3&gt;
  
  
  Core Building Blocks for AI
&lt;/h3&gt;

&lt;p&gt;Genkit provides powerful AI primitives that make building complex AI features easy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Unified Generation API: Use models from any provider within Genkit’s growing plugin ecosystem to generate content.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt;
  &lt;span class="nx"&gt;plugins&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="c1"&gt;// Set default model (Gemini 2.0 Flash)&lt;/span&gt;
  &lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;gemini20Flash&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// Simple generation&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Structured Generation: Generate and stream structured data, including JSON and custom formats, with built-in validation for easy app integration and data handling.&lt;/li&gt;
&lt;li&gt;Tool / Function Calling: Enable models to automatically call custom functions to complete complex tasks, unlocking sophisticated agentic capabilities.&lt;/li&gt;
&lt;li&gt;Vector Search (RAG): Improve the relevance and accuracy of generated content by retrieving important context from various data sources.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Powerful Developer Tooling for Rapid Iteration
&lt;/h3&gt;

&lt;p&gt;Genkit comes with a comprehensive suite of built-in developer tools designed to streamline your AI development. Genkit provides a dedicated CLI and local-first Developer UI that empowers you to build, text, and refine your AI applications.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rapid turn-around times: Effortlessly experiment with different AI functions, prompts, and queries to fine-tune your application’s behavior and optimize its performance. The intuitive interface allows you to quickly iterate and test variations, ensuring you achieve the desired results.&lt;/li&gt;
&lt;li&gt;Efficient debugging: Identify and resolve issues with ease using Genkit’s detailed execution traces. The Developer UI provides in-depth insights into the execution flow of your AI functions, allowing you to pinpoint errors and debug effectively.&lt;/li&gt;
&lt;li&gt;Comprehensive Evaluation: Assess the quality of generated results across multiple test cases. The Developer UI enables you to systematically build test datasets and evaluate your AI features and identify areas for improvement.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Genkit Developer UI is designed to give you control over your AI development, providing you with the insights needed to build high-quality AI applications efficiently.&lt;/p&gt;

&lt;h3&gt;
  
  
  Production Monitoring with Minimal Setup, Full Visibility
&lt;/h3&gt;

&lt;p&gt;Genkit includes built-in production monitoring. When you deploy Genkit to Firebase or Google Cloud, you gain access to our new AI monitoring dashboards directly within the Firebase Console.&lt;/p&gt;

&lt;p&gt;How many tokens do your AI features consume? What’s the latency of database access in a RAG flow? How many of your LLM calls fail? You can find the answers to these questions and more in the Firebase console. The Genkit console experience provides direct insights into key metrics and even allows you to inspect production traces of your application.&lt;/p&gt;

&lt;p&gt;These traces can also be exported and used for evaluations directly within Genkit, enabling you to iterate and improve your features. All of this empowers you to operate high-quality, safe, and efficient generative AI features in production.&lt;/p&gt;

&lt;p&gt;To enable AI monitoring for your Genkit app, import the Firebase plugin and configure telemetry as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt;

&lt;span class="nx"&gt;enableFirebaseTelemetry&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check out the &lt;a href="https://genkit.dev/docs/plugins/firebase" rel="noopener noreferrer"&gt;&lt;strong&gt;documentation for the Firebase plugin&lt;/strong&gt;&lt;/a&gt; for full instructions to set up Genkit Monitoring.&lt;/p&gt;

&lt;h3&gt;
  
  
  Building Agentive Apps
&lt;/h3&gt;

&lt;p&gt;In Genkit 1.0, we’ve stabilized the core primitives developers need to build any AI-powered feature.&lt;/p&gt;

&lt;p&gt;Building on top of these primitives, we are striving to make it even easier for developers to bring agentive experiences to their apps with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chat API: Use the multi-turn chat API (with plugin-friendly storage adapter) to create engaging, conversational agents.&lt;/li&gt;
&lt;li&gt;Session State: Leverage shared session state to create context-aware agents that can personalize interactions based on past activity.&lt;/li&gt;
&lt;li&gt;Multi-Agent Systems: Combine any prompt to create sophisticated multi-agent systems, leveraging existing primitives, and unlocking new possibilities for complex workflows.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is currently available through our &lt;code&gt;beta&lt;/code&gt; namespace, as we rapidly iterate based on feedback from you, the users.&lt;/p&gt;

&lt;p&gt;Here’s a complete multi-agent example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt;
    &lt;span class="nx"&gt;plugins&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;gemini20Flash&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt;
    &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
    &lt;span class="nx"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
    &lt;span class="nx"&gt;system&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
    &lt;span class="nx"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt;
    &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
    &lt;span class="nx"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;
    system: 
    tools: [
});

const
chat.
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Getting started
&lt;/h3&gt;

&lt;p&gt;Ready to get started? Check out the &lt;a href="https://genkit.dev/docs/get-started/" rel="noopener noreferrer"&gt;&lt;strong&gt;Genkit documentation&lt;/strong&gt;&lt;/a&gt;, which provides all the info you need to get going:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;**&lt;a href="https://genkit.dev/docs/get-started" rel="noopener noreferrer"&gt;Getting Started Guide&lt;/a&gt;: **Step-by-step instructions for installing Genkit and building your first AI app in minutes.&lt;/li&gt;
&lt;li&gt;**&lt;a href="https://genkit.dev/docs/flows" rel="noopener noreferrer"&gt;Building AI Workflows&lt;/a&gt;: **Dive deeper into the specific features and functionality of Genkit.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=3p1P5grjXIQ" rel="noopener noreferrer"&gt;&lt;strong&gt;Genkit Fundamentals Video:&lt;/strong&gt;&lt;/a&gt; A visual, comprehensive overview of the core concepts and features you need to start building.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://examples.genkit.dev/" rel="noopener noreferrer"&gt;&lt;strong&gt;Genkit by Example:&lt;/strong&gt;&lt;/a&gt; Explore key Genkit features in an interactive playground right next to the source code&lt;/li&gt;
&lt;li&gt;**&lt;a href="https://genkit.dev/docs/migrating-from-0.9" rel="noopener noreferrer"&gt;Migration Guide&lt;/a&gt;: **A comprehensive guide to help you upgrade from Genkit 0.9 to 1.0&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Production Web Architecture &amp;amp; Security Checklist
&lt;/h2&gt;

&lt;p&gt;Whether we are deploying on &lt;a href="https://firebase.google.com/docs/app-hosting" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Hosting&lt;/strong&gt;&lt;/a&gt;, Cloudflare Workers, or Vercel, shipping AI features to production requires defense-in-depth across three layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;**Enforce Firebase App Check &amp;amp; Attestation: **Protect your web endpoints, Cloud Functions, Data Connect GraphQL resolvers, and Firebase AI Logic calls against unauthorized replay or billing abuse using &lt;a href="https://firebase.google.com/docs/app-check" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Check with reCAPTCHA Enterprise&lt;/strong&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;**Validate Locally with the Firebase Emulator Suite: **Run deterministic integration tests against local Firestore, Auth, Functions, and Data Connect PostgreSQL emulators before promoting schema or rule changes to production.&lt;/li&gt;
&lt;li&gt;**Keep Server &amp;amp; Client Boundaries Type-Safe: **Use the modular Firebase Web SDK and generated TypeScript bindings so SSR frameworks like Next.js, Astro, SvelteKit, and Angular serialize state cleanly without hydration flickers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Accelerate your full-stack web and AI development by pairing &lt;strong&gt;Announcing Firebase Genkit 1.0 for Node.js&lt;/strong&gt; with strict Security Rules, Firebase App Check, and local emulator testing. Come tell us on &lt;a href="https://x.com/CodingCatDev" rel="noopener noreferrer"&gt;&lt;strong&gt;X (@CodingCatDev)&lt;/strong&gt;&lt;/a&gt; and &lt;a href="https://www.linkedin.com/company/codingcatdev" rel="noopener noreferrer"&gt;&lt;strong&gt;LinkedIn (CodingCat.dev)&lt;/strong&gt;&lt;/a&gt; how you are using Firebase in your stack, and subscribe to the &lt;a href="https://www.youtube.com/@CodingCatDev?sub_confirmation=1" rel="noopener noreferrer"&gt;&lt;strong&gt;CodingCat.dev YouTube Channel&lt;/strong&gt;&lt;/a&gt; so you don't miss what we build next!&lt;/p&gt;

&lt;h2&gt;
  
  
  Watch Our Related Firebase Video Tutorial on YouTube
&lt;/h2&gt;

&lt;p&gt;Want to see how we architect and debug Firebase web applications live? Watch our related CodingCat.dev session &lt;a href="https://youtu.be/bLrZxoC0VlQ" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Multisite Hosting&lt;/strong&gt;&lt;/a&gt; below, and make sure to &lt;a href="https://www.youtube.com/@CodingCatDev?sub_confirmation=1" rel="noopener noreferrer"&gt;&lt;strong&gt;Subscribe to CodingCat.dev on YouTube&lt;/strong&gt;&lt;/a&gt; for weekly full-stack web and AI deep dives:&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/bLrZxoC0VlQ" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources, Official Docs &amp;amp; Related CodingCat.dev Guides
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;*&lt;em&gt;Primary Release Source: *&lt;/em&gt;&lt;a href="https://firebase.blog/posts/2025/02/announcing-genkit/" rel="noopener noreferrer"&gt;Announcing Firebase Genkit 1.0 for Node.js on the Official Firebase Blog&lt;/a&gt; (published 2025-02-12 by Chris Gill, Peter Friese)&lt;/li&gt;
&lt;li&gt;*&lt;em&gt;Official Firebase Documentation: *&lt;/em&gt;&lt;a href="https://firebase.google.com/docs/web/setup" rel="noopener noreferrer"&gt;Firebase Developer Docs &amp;amp; Web SDK Reference&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev: &lt;a href="https://codingcat.dev/post/firebase-2025-02-dataconnect-schemas" rel="noopener noreferrer"&gt;Data Connect: All About Schemas&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev: &lt;a href="https://codingcat.dev/post/firebase-2025-02-gemini-genkit-pdf-structured-data" rel="noopener noreferrer"&gt;Extracting structured data from PDFs using Gemini 2.0 and Genkit&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev: &lt;a href="https://codingcat.dev/podcast/firebase-sql-with-data-connect" rel="noopener noreferrer"&gt;Firebase SQL with Data Connect&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev: &lt;a href="https://codingcat.dev/podcast/build-a-custom-no-code-app-in-90-minutes" rel="noopener noreferrer"&gt;Build a Custom No-Code App in 90 Minutes&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions (FAQ)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What are the key capabilities introduced in Announcing Firebase Genkit 1.0 for Node.js?
&lt;/h3&gt;

&lt;p&gt;Announcing Firebase Genkit 1.0 for Node.js (announced 2025-02-12 by the Firebase team) enhances the platform for Firebase, Google Cloud, Web Dev, AI workloads. The demand for intelligent, personalized apps is skyrocketing. Integrating AI is no longer a future aspiration, it’s becoming a core requirement for engaging users and streamlining workflows. That’s where Firebase Genkit comes in. Developers can review the primary announcement on the &lt;a href="https://firebase.blog/posts/2025/02/announcing-genkit/" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Blog&lt;/strong&gt;&lt;/a&gt; alongside our implementation patterns and production checklist above.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do web developers use Announcing Firebase Genkit 1.0 for Node.js with Next.js, SvelteKit, React, or Angular?
&lt;/h3&gt;

&lt;p&gt;Web developers can integrate these features using the modular Firebase JavaScript/TypeScript SDK, Firebase Data Connect web bindings, and &lt;a href="https://firebase.google.com/docs/app-hosting" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Hosting&lt;/strong&gt;&lt;/a&gt;. Always pair client-side SDK initialization with Firebase App Check and strict Security Rules, and test locally with the Firebase Local Emulator Suite before deploying.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where can I watch video tutorials on Firebase Web and AI development?
&lt;/h3&gt;

&lt;p&gt;You can watch our hands-on Firebase video walkthroughs on the &lt;a href="https://www.youtube.com/@CodingCatDev?sub_confirmation=1" rel="noopener noreferrer"&gt;&lt;strong&gt;CodingCat.dev YouTube Channel&lt;/strong&gt;&lt;/a&gt;, including &lt;a href="https://youtu.be/bLrZxoC0VlQ" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Multisite Hosting&lt;/strong&gt;&lt;/a&gt;, and follow us on &lt;a href="https://x.com/CodingCatDev" rel="noopener noreferrer"&gt;&lt;strong&gt;X (@CodingCatDev)&lt;/strong&gt;&lt;/a&gt; for weekly full-stack tutorials.&lt;/p&gt;

</description>
      <category>firebase</category>
      <category>googlecloud</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Data Connect Pricing in Firebase: Web Architecture &amp; Implementation Guide</title>
      <dc:creator>Alex Patterson</dc:creator>
      <pubDate>Mon, 26 Oct 2026 03:37:05 +0000</pubDate>
      <link>https://dev.to/codingcatdev/data-connect-pricing-in-firebase-web-architecture-implementation-guide-92</link>
      <guid>https://dev.to/codingcatdev/data-connect-pricing-in-firebase-web-architecture-implementation-guide-92</guid>
      <description>&lt;p&gt;Original: &lt;a href="https://codingcat.dev/post/firebase-2025-04-dataconnect-pricing-postga" rel="noopener noreferrer"&gt;https://codingcat.dev/post/firebase-2025-04-dataconnect-pricing-postga&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;**Data Connect Pricing **marks an important milestone for full-stack web and AI engineers building on Firebase and Google Cloud. Following the official announcement by Andrea Wu on the &lt;a href="https://firebase.blog/posts/2025/04/dataconnect-pricing-postga/" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Blog&lt;/strong&gt;&lt;/a&gt; (2025-04-22), this hands-on CodingCat.dev implementation guide breaks down how to adopt these capabilities in modern TypeScript, Next.js, SvelteKit, React, and Angular applications. Note: Firebase Data Connect has been renamed to SQL Connect. Learn more in the SQL Connect announcement. With Firebase Data Connect now generally available, there are some updates to public preview pricing. This blog post covers the pricing structure going forward for Data Connect.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Data Connect Pricing Matters for Full-Stack Web Developers
&lt;/h2&gt;

&lt;p&gt;When evaluating every new Firebase release for our production web apps and Google Developer Expert (GDE) architecture reviews, the first question is always how it improves developer velocity, runtime security, and end-user latency in the browser and on the server. Note: Firebase Data Connect has been renamed to SQL Connect. Learn more in the SQL Connect announcement.&lt;/p&gt;

&lt;p&gt;With Firebase &lt;a href="https://firebase.blog/posts/2025/04/dataconnect-general-availability" rel="noopener noreferrer"&gt;&lt;strong&gt;Data Connect now generally available&lt;/strong&gt;&lt;/a&gt;, there are some updates to &lt;a href="https://firebase.blog/posts/2024/11/dataconnect-pricing" rel="noopener noreferrer"&gt;&lt;strong&gt;public preview pricing&lt;/strong&gt;&lt;/a&gt;. This blog post covers the pricing structure going forward for Data Connect.&lt;/p&gt;

&lt;p&gt;At a high level, Data Connect consists of two billable components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the **Data Connect **service itself which has no-cost tiers&lt;/li&gt;
&lt;li&gt;**PostgreSQL instance on Cloud SQL **that contains your project data has a no-cost trial for 3 months, then permanent costs as low as $9.37 per month that follows &lt;a href="https://cloud.google.com/sql/docs/postgres/pricing" rel="noopener noreferrer"&gt;&lt;strong&gt;Google Cloud pricing&lt;/strong&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you use vector embeddings in your schema, there are associated costs for for Vertex AI as well.&lt;/p&gt;

&lt;p&gt;Let’s take a deeper look at the two billable components of Data Connect.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pricing for Data Connect service
&lt;/h3&gt;

&lt;p&gt;The Data Connect service pricing consists of two parts: network egress and operation count.&lt;/p&gt;

&lt;p&gt;The Data Connect service has no cost for network egress up to 10 GiB/month, and then it follows &lt;a href="https://cloud.google.com/vpc/pricing#internet_egress" rel="noopener noreferrer"&gt;&lt;strong&gt;Google Cloud Internet Data Transfer Rate Premium Tier pricing&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The amount of data transferred out of the database is going to incur costs for the Data Connect service, and the cost depends on the location of your database and the destination of the response. All data transferred to the database (i.e., data ingress) is free. There are no other associated costs with regards to network egress for the Data Connect service.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cloud.google.com/sql/docs/postgres/pricing" rel="noopener noreferrer"&gt;&lt;strong&gt;Google Cloud pricing&lt;/strong&gt;&lt;/a&gt; has a section for network egress. The good news is network egress is only charged once for data going out of your database. When you call the Data Connect service, that service calls Cloud SQL as in internal call and Cloud SQL will not generate any network egress costs.&lt;/p&gt;

&lt;p&gt;That being said, there might be inter-region costs as a result of transferring data to Cloud SQL cross-region replicas. However, this is unlikely with a single database, because your replicas are going to be created in the same region unless you select otherwise.&lt;/p&gt;

&lt;p&gt;You may also receive an additional network egress call if you call Cloud SQL directly, and an example of this is running data analytics that isn’t day-to-day application logic. This means you might see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SQL Connect egress charges for your regular Data Connect usage as described above, and&lt;/li&gt;
&lt;li&gt;Cloud SQL egress charges for your non-Data Connect usage
Therefore, you may see both Data Connect and CloudSQL network egress charges within a month for data transferring out, but that means you called both services.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Although queries and mutations are billable operations, there is no cost up to 250k operations per month, and then the cost is $4.00 per 1M operations.&lt;/p&gt;

&lt;p&gt;$4 per 1M operations sounds like a hefty cost (perhaps compared to the charges from &lt;a href="https://firebase.google.com/pricing" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Firestore&lt;/strong&gt;&lt;/a&gt;). But, Data Connect operations and Firestore access to documents are very different. One Data Connect operation can retrieve many records of data, while one document read gets one document which is comparable to one record. In a query or mutation with Data Connect, you can get an entire database’s worth of data (or even more with joins), and this is just one operation. To accomplish the same in Firestore, you would need the number of reads or writes equal to however many records there are in the database.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pricing for PostgreSQL instance on Cloud SQL
&lt;/h3&gt;

&lt;p&gt;There are costs associated with your PostgreSQL instance on Cloud SQL. For the sake of simplicity in this section, we’ll use “your instance” to stand for “your PostgreSQL instance on Cloud SQL”.&lt;/p&gt;

&lt;p&gt;You will be qualified for a no-cost trial if you accept the default configuration when you provision your instance. The trial details are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;5 free trials are available per billing account.&lt;/li&gt;
&lt;li&gt;1 free trial for your instance per Firebase project, although you can have multiple non-free instances within that project.&lt;/li&gt;
&lt;li&gt;The default configuration of your instance on Cloud SQL is equivalent to a &lt;a href="https://cloud.google.com/products/calculator?dl=CiRhNDU2NjBmOC1lODJiLTQ0NTctOTliNy00ZmEyZDAyYWFjYTMQBxokODA2Q0I5NzUtMTNEMC00QURFLTg5MUUtMDI2M0VGNzFBMDI0&amp;amp;e=13802955" rel="noopener noreferrer"&gt;&lt;strong&gt;db-f1-micro instance&lt;/strong&gt;&lt;/a&gt; that has 1 vCPU, 10 GB of storage, and 628.74 MB of memory.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;During the no-cost trial, you can add computing resources to your instance, set up a private IP for your instance, and create a read replica for your instance. Doing so incurs costs according to &lt;a href="https://cloud.google.com/sql/docs/postgres/pricing" rel="noopener noreferrer"&gt;&lt;strong&gt;Cloud SQL pricing&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;After 3 months, pricing starts as low as $9.37 / month, and pricing varies based on regions and configurations. Cloud SQL pricing consists of three components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://cloud.google.com/sql/docs/postgres/pricing#cpu-mem-pricing" rel="noopener noreferrer"&gt;&lt;strong&gt;CPU and memory&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cloud.google.com/sql/docs/postgres/pricing#storage-networking-prices" rel="noopener noreferrer"&gt;&lt;strong&gt;Storage and networking&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;See &lt;a href="https://cloud.google.com/sql/docs/postgres/pricing" rel="noopener noreferrer"&gt;&lt;strong&gt;Cloud SQL pricing&lt;/strong&gt;&lt;/a&gt; for more details.&lt;/p&gt;

&lt;h3&gt;
  
  
  Calling CloudSQL Directly
&lt;/h3&gt;

&lt;p&gt;If you are using Data Connect under the usual circumstances, you will not be calling CloudSQL directly, and in the case that you are, you will have egress charges and maybe operation count charges. This use-case is likely only for more advanced users, those who have knowledge of existing systems and are explicitly calling the CloudSQL service.&lt;/p&gt;

&lt;h3&gt;
  
  
  Vertex AI Pricing
&lt;/h3&gt;

&lt;p&gt;If you want to use Data Connect for &lt;a href="https://firebase.google.com/docs/data-connect/solutions-vector-similarity-search" rel="noopener noreferrer"&gt;&lt;strong&gt;vector similarity search&lt;/strong&gt;&lt;/a&gt;, you’ll need to integrate &lt;a href="https://cloud.google.com/vertex-ai" rel="noopener noreferrer"&gt;&lt;strong&gt;Vertex AI&lt;/strong&gt;&lt;/a&gt;’s &lt;a href="https://cloud.google.com/vertex-ai/generative-ai/docs/embeddings/get-text-embeddings" rel="noopener noreferrer"&gt;&lt;strong&gt;Embeddings API&lt;/strong&gt;&lt;/a&gt;. As such, there are charges for &lt;a href="https://cloud.google.com/vertex-ai/generative-ai/pricing#embedding-models" rel="noopener noreferrer"&gt;&lt;strong&gt;embedding generation&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Resources
&lt;/h3&gt;

&lt;p&gt;Pricing is an essential consideration for any used technology in app development, so we hope this is helpful for you in clarifying any questions and concerns you may have in using Firebase Data Connect. You can check out the Firebase &lt;a href="https://firebase.google.com/pricing" rel="noopener noreferrer"&gt;&lt;strong&gt;pricing documentation&lt;/strong&gt;&lt;/a&gt; and the Data Connect &lt;a href="https://firebase.google.com/docs/data-connect" rel="noopener noreferrer"&gt;&lt;strong&gt;documentation&lt;/strong&gt;&lt;/a&gt; for the most up-to-date information on pricing.&lt;/p&gt;

&lt;p&gt;In the meantime, give Data Connect a try, and you can also check out other deep-dive &lt;a href="https://firebase.blog/posts/2024/10/dataconnect-series-announce" rel="noopener noreferrer"&gt;&lt;strong&gt;articles&lt;/strong&gt;&lt;/a&gt; about Data Connect. We can’t wait to see what you build with it!&lt;/p&gt;

&lt;h2&gt;
  
  
  TypeScript &amp;amp; Web SDK Implementation Pattern
&lt;/h2&gt;

&lt;p&gt;Here is the baseline configuration pattern for integrating Data Connect Pricing into a modern TypeScript web application:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight graphql"&gt;&lt;code&gt;&lt;span class="c"&gt;# Firebase Data Connect Schema &amp;amp; Type-Safe Web Query&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="k"&gt;type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Project&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;table&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;UUID&lt;/span&gt;&lt;span class="p"&gt;!&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;default&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;expr&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;"&lt;/span&gt;&lt;span class="n"&gt;uuidV4&lt;/span&gt;&lt;span class="err"&gt;(&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="err"&gt;")&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;String&lt;/span&gt;&lt;span class="p"&gt;!&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;ownerUid&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;String&lt;/span&gt;&lt;span class="p"&gt;!&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;default&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;expr&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;"&lt;/span&gt;&lt;span class="n"&gt;auth&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="n"&gt;uid&lt;/span&gt;&lt;span class="err"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;createdAt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Timestamp&lt;/span&gt;&lt;span class="p"&gt;!&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;default&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;expr&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;"&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="err"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="k"&gt;query&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ListUserProjects&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;@auth&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;level&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;USER&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;projects&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;where&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ownerUid&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;eq_expr&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"auth.uid"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;orderBy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;createdAt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;DESC&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}])&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;createdAt&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Production Web Architecture &amp;amp; Security Checklist
&lt;/h2&gt;

&lt;p&gt;Whether you are deploying on &lt;a href="https://firebase.google.com/docs/app-hosting" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Hosting&lt;/strong&gt;&lt;/a&gt;, Cloudflare Workers, or Vercel, shipping AI features to production requires defense-in-depth across three layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;**Enforce Firebase App Check &amp;amp; Attestation: **Protect your web endpoints, Cloud Functions, Data Connect GraphQL resolvers, and Firebase AI Logic calls against unauthorized replay or billing abuse using &lt;a href="https://firebase.google.com/docs/app-check" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Check with reCAPTCHA Enterprise&lt;/strong&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;**Validate Locally with the Firebase Emulator Suite: **Run deterministic integration tests against local Firestore, Auth, Functions, and Data Connect PostgreSQL emulators before promoting schema or rule changes to production.&lt;/li&gt;
&lt;li&gt;**Keep Server &amp;amp; Client Boundaries Type-Safe: **Use the modular Firebase Web SDK and generated TypeScript bindings so SSR frameworks like Next.js, SvelteKit, and Angular serialize state cleanly without hydration flickers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Watch Our Related Firebase Video Tutorial on YouTube
&lt;/h2&gt;

&lt;p&gt;Want to see how we architect and debug Firebase web applications live? Watch our related CodingCat.dev session &lt;a href="https://youtu.be/N25khadfUag" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase SQL with Data Connect&lt;/strong&gt;&lt;/a&gt; below, and make sure to &lt;a href="https://www.youtube.com/@CodingCatDev?sub_confirmation=1" rel="noopener noreferrer"&gt;&lt;strong&gt;Subscribe to CodingCat.dev on YouTube&lt;/strong&gt;&lt;/a&gt; for weekly full-stack web and AI deep dives:&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/N25khadfUag" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources, Official Docs &amp;amp; Related CodingCat.dev Guides
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;*&lt;em&gt;Primary Release Source: *&lt;/em&gt;&lt;a href="https://firebase.blog/posts/2025/04/dataconnect-pricing-postga/" rel="noopener noreferrer"&gt;Data Connect Pricing on the Official Firebase Blog&lt;/a&gt; (published 2025-04-22 by Andrea Wu)&lt;/li&gt;
&lt;li&gt;*&lt;em&gt;Official Firebase Documentation: *&lt;/em&gt;&lt;a href="https://firebase.google.com/docs/web/setup" rel="noopener noreferrer"&gt;Firebase Developer Docs &amp;amp; Web SDK Reference&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev: &lt;a href="https://codingcat.dev/post/firebase-2025-04-vertex-ai-updates" rel="noopener noreferrer"&gt;React Native Support and Gemini Live APIs for Vertex AI in Firebase&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev: &lt;a href="https://codingcat.dev/post/firebase-2025-04-dataconnect-aggregate-fields" rel="noopener noreferrer"&gt;Aggregate Fields for Data Connect&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev: &lt;a href="https://codingcat.dev/podcast/firebase-sql-with-data-connect" rel="noopener noreferrer"&gt;Firebase SQL with Data Connect&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev: &lt;a href="https://codingcat.dev/podcast/build-a-custom-no-code-app-in-90-minutes" rel="noopener noreferrer"&gt;Build a Custom No-Code App in 90 Minutes&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions (FAQ)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What are the key capabilities introduced in Data Connect Pricing?
&lt;/h3&gt;

&lt;p&gt;Data Connect Pricing (announced 2025-04-22) enhances the Firebase platform for Firebase, Google Cloud, Web Dev, AI, SQL workloads. Note: Firebase Data Connect has been renamed to SQL Connect. Learn more in the SQL Connect announcement. Developers can review the official release notes on the &lt;a href="https://firebase.blog/posts/2025/04/dataconnect-pricing-postga/" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Blog&lt;/strong&gt;&lt;/a&gt; alongside the implementation patterns in this guide.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do web developers use Data Connect Pricing with Next.js, SvelteKit, React, or Angular?
&lt;/h3&gt;

&lt;p&gt;Web developers can integrate these features using the modular Firebase JavaScript/TypeScript SDK, Firebase Data Connect web bindings, and &lt;a href="https://firebase.google.com/docs/app-hosting" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Hosting&lt;/strong&gt;&lt;/a&gt;. Always pair client-side SDK initialization with Firebase App Check and strict Security Rules, and test locally with the Firebase Local Emulator Suite before deploying.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where can I watch video tutorials on Firebase Web and AI development?
&lt;/h3&gt;

&lt;p&gt;You can watch our hands-on Firebase video walkthroughs on the &lt;a href="https://www.youtube.com/@CodingCatDev?sub_confirmation=1" rel="noopener noreferrer"&gt;&lt;strong&gt;CodingCat.dev YouTube Channel&lt;/strong&gt;&lt;/a&gt;, including &lt;a href="https://youtu.be/N25khadfUag" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase SQL with Data Connect&lt;/strong&gt;&lt;/a&gt;, and browse our complete Firebase tutorial archive on CodingCat.dev.&lt;/p&gt;

</description>
      <category>firebase</category>
      <category>googlecloud</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Announcing Genkit for Python and Go in Firebase: Web Architecture &amp; Implementation Guide</title>
      <dc:creator>Alex Patterson</dc:creator>
      <pubDate>Mon, 26 Oct 2026 03:37:04 +0000</pubDate>
      <link>https://dev.to/codingcatdev/announcing-genkit-for-python-and-go-in-firebase-web-architecture-implementation-guide-3dba</link>
      <guid>https://dev.to/codingcatdev/announcing-genkit-for-python-and-go-in-firebase-web-architecture-implementation-guide-3dba</guid>
      <description>&lt;p&gt;Original: &lt;a href="https://codingcat.dev/post/firebase-2025-04-genkit-python-go" rel="noopener noreferrer"&gt;https://codingcat.dev/post/firebase-2025-04-genkit-python-go&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;**Announcing Genkit for Python and Go **marks an important milestone for full-stack web and AI engineers building on Firebase and Google Cloud. Following the official announcement by Chris Gill, Peter Friese on the &lt;a href="https://firebase.blog/posts/2025/04/genkit-python-go/" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Blog&lt;/strong&gt;&lt;/a&gt; (2025-04-09), this hands-on CodingCat.dev implementation guide breaks down how to adopt these capabilities in modern TypeScript, Next.js, SvelteKit, React, and Angular applications. Building intelligent features into your apps can be complex. Testing models, building prompts, and debugging your solution are all real challenges when building apps powered by large language models. We built Genkit to help you with these challenges. Genkit is an open-source framework with built-in tooling and observab&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Announcing Genkit for Python and Go Matters for Full-Stack Web Developers
&lt;/h2&gt;

&lt;p&gt;When evaluating every new Firebase release for our production web apps and Google Developer Expert (GDE) architecture reviews, the first question is always how it improves developer velocity, runtime security, and end-user latency in the browser and on the server. Building intelligent features into your apps can be complex. Testing models, building prompts, and debugging your solution are all real challenges when building apps powered by large language models.&lt;/p&gt;

&lt;p&gt;We built &lt;a href="https://github.com/firebase/genkit" rel="noopener noreferrer"&gt;&lt;strong&gt;Genkit&lt;/strong&gt;&lt;/a&gt; to help you with these challenges. Genkit is an open-source framework with built-in tooling and observability. Together, these capabilities provide both a unified API to build your app using a variety of AI models from Google, OpenAI, Anthropic, and open models through Ollama, etc. While you’re building the app, you’ll also get the tooling needed to help you iterate quickly on your solution and debug common problems, as well as the observability you need to monitor your app in production once you deploy to Google Cloud or Firebase.&lt;/p&gt;

&lt;p&gt;Earlier this year, we announced our stable release of &lt;a href="https://firebase.blog/posts/2025/02/announcing-genkit/" rel="noopener noreferrer"&gt;&lt;strong&gt;Genkit for Node.js&lt;/strong&gt;&lt;/a&gt;, and today we’re thrilled to announce the expansion of Genkit’s language support with Genkit for Python (Alpha) and Go (Beta).&lt;/p&gt;

&lt;p&gt;These new SDKs bring Genkit’s powerful capabilities to even more developer ecosystems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Genkit for Python (Alpha) is ideal for experimentation and early development. The API may evolve rapidly as we incorporate your feedback, but all essential capabilities are available to start building today.&lt;/li&gt;
&lt;li&gt;Genkit for Go (Beta) has a rich feature set, and increased reliability as it approaches production readiness.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whether you’re using Node.js, Python, or Go, you can now leverage Genkit’s consistent tools and concepts to build sophisticated AI-powered features with robust primitives, integrated tooling, and an extensible plugin system that simplifies prototyping, building, and deploying AI workflows.&lt;/p&gt;

&lt;p&gt;We’re also excited about partners that build plug-ins for Genkit such as &lt;a href="https://docs.pinecone.io/integrations/firebase-genkit" rel="noopener noreferrer"&gt;&lt;strong&gt;Pinecone&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://github.com/datastax/genkitx-astra-db" rel="noopener noreferrer"&gt;&lt;strong&gt;Astra DB&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://github.com/neo4j-partners/genkitx-neo4j" rel="noopener noreferrer"&gt;&lt;strong&gt;Neo4j&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://github.com/auth0-lab/auth0-ai-js/tree/main/packages/ai-genkit" rel="noopener noreferrer"&gt;&lt;strong&gt;AuthO&lt;/strong&gt;&lt;/a&gt;, and others. This growing ecosystem of plugins significantly expands Genkit’s capabilities, letting you to seamlessly integrate a wide array of specialized tools and services into their AI-powered applications.&lt;/p&gt;

&lt;p&gt;**Note: **Both SDKs are still in versions &amp;lt;1.0.0 and may have breaking changes without major version increments as we refine the APIs based on your feedback.&lt;/p&gt;

&lt;h3&gt;
  
  
  Genkit for Python (Alpha)
&lt;/h3&gt;

&lt;p&gt;If you’re building with Python, Genkit has intuitive and concise syntax for working with AI capabilities. The Python SDK offers a clean, asynchronous API with strong typing support through Pydantic integration.&lt;/p&gt;

&lt;p&gt;Python’s data class capabilities, enhanced by Pydantic for schema definition, shine in this Genkit example for structured output. Notice how the &lt;code&gt;RpgCharacter&lt;/code&gt; class clearly defines the expected format, ensuring the &lt;code&gt;structured_character_flow&lt;/code&gt; consistently returns AI-generated data in this predictable structure.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;from&lt;/span&gt;
&lt;span class="k"&gt;from&lt;/span&gt;
&lt;span class="k"&gt;from&lt;/span&gt;

&lt;span class="n"&gt;ai&lt;/span&gt; 
    &lt;span class="n"&gt;plugins&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt;
    &lt;span class="nc"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
    &lt;span class="n"&gt;backstory&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
    &lt;span class="n"&gt;abilities&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;

&lt;span class="o"&gt;@&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
    result 
        prompt
        output_schema
    )
    return
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Genkit is also designed with intuitive and concise syntax for defining tools, as illustrated in this example. Leveraging decorators and Pydantic for data modeling, creating a tool like &lt;code&gt;convert_currency&lt;/code&gt; and integrating it into an asynchronous flow becomes straightforward.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Imports and initialization omitted for brevity
&lt;/span&gt;
&lt;span class="k"&gt;class&lt;/span&gt;
    &lt;span class="nc"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 

&lt;span class="o"&gt;@&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
    print
    return

@
async
    &lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt; 
        &lt;span class="n"&gt;prompt&lt;/span&gt;
        &lt;span class="n"&gt;tools&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://python.api.genkit.dev/reference/plugins/google-genai/" rel="noopener noreferrer"&gt;&lt;strong&gt;Google GenAI&lt;/strong&gt;&lt;/a&gt;: Access Google’s Gemini, Imagen, embedding models from Google AI Studio or Google Cloud Vertex AI.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://python.api.genkit.dev/reference/plugins/ollama/" rel="noopener noreferrer"&gt;&lt;strong&gt;Ollama&lt;/strong&gt;&lt;/a&gt;: Run open models like Gemma, Llama, and Mistral locally.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://python.api.genkit.dev/flask/" rel="noopener noreferrer"&gt;&lt;strong&gt;Flask Integration&lt;/strong&gt;&lt;/a&gt;: Easily serve your Genkit flows via a Flask web server.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://python.api.genkit.dev/reference/plugins/firestore/" rel="noopener noreferrer"&gt;&lt;strong&gt;Firestore&lt;/strong&gt;&lt;/a&gt;: Ground your generations with data retrieved using Firestore vector search.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Genkit for Go (Beta)
&lt;/h3&gt;

&lt;p&gt;If you’re building with Go, Genkit offers a robust and explicit API with strong type safety, making it suitable for building scalable applications approaching production readiness.&lt;/p&gt;

&lt;p&gt;This Go snippet illustrates Genkit’s approach to guaranteeing structured output by explicitly defining a &lt;code&gt;RpgCharacter&lt;/code&gt; struct and using &lt;code&gt;ai.WithOutputType&lt;/code&gt;. Observe how the characterPrompt is configured with the desired output type, ensuring the &lt;code&gt;structuredCharacterFlow&lt;/code&gt; reliably produces data conforming to the specified schema.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;package&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt;
    &lt;span class="s"&gt;"
    "&lt;/span&gt;
    &lt;span class="s"&gt;"
    "&lt;/span&gt;
    &lt;span class="s"&gt;"
    "&lt;/span&gt;
    &lt;span class="s"&gt;"
)

type
    Name      
    Backstory 
    Abilities []
}

func
    ctx 
    g, err 
        genkit.
        genkit.
    )
    if
        log.
    }

    characterPrompt, _ 
        ai.
        ai.
        ai.
    )

    genkit.
        func
            resp, err 
            if
                return
            }

            var
            if
                return
            }
            return
        },
    )

    mux 
    for
        mux.
    }
    log.
}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run the Go app and call your flow using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;curl&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;X&lt;/span&gt; &lt;span class="nx"&gt;POST&lt;/span&gt; &lt;span class="nx"&gt;localhost&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;8080&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;structuredCharacterFlow&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;H&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Content-Type: application/json&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;d&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;{"data": "Elara"}&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Genkit offers a robust and explicit way to define and integrate custom tools into your AI workflows, as shown below. This example clearly demonstrates the registration of the &lt;code&gt;convertCurrencyTool&lt;/code&gt; and its use within the &lt;code&gt;convertCurrencyFlow&lt;/code&gt;, emphasizing Go’s type safety and suitability for building scalable applications.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="c"&gt;// Imports omitted for brevity&lt;/span&gt;

&lt;span class="k"&gt;func&lt;/span&gt;
    &lt;span class="n"&gt;ctx&lt;/span&gt; 
    &lt;span class="n"&gt;g&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt; 
    &lt;span class="k"&gt;if&lt;/span&gt;
        &lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="n"&gt;convertCurrencyTool&lt;/span&gt; 
        &lt;span class="s"&gt;"
        func
            log.
            return
        },
    )

    flow 
        func
            return
                ai.
                ai.
                ai.
            )
        },
    )

    mux 
    mux.
    log.
}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;curl&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;X&lt;/span&gt; &lt;span class="nx"&gt;POST&lt;/span&gt; &lt;span class="nx"&gt;localhost&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;8080&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;convertCurrencyFlow&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;H&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Content-Type: application/json&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;d&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;{"data": 190.00}&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://genkit.dev/go/docs/plugins/google-genai" rel="noopener noreferrer"&gt;&lt;strong&gt;Google GenAI&lt;/strong&gt;&lt;/a&gt;: Access Gemini models and embeddings.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://genkit.dev/go/docs/plugins/google-genai/#vertex-ai" rel="noopener noreferrer"&gt;&lt;strong&gt;Google Cloud Vertex AI&lt;/strong&gt;&lt;/a&gt;: Integrate with Google Cloud’s AI platform.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://genkit.dev/go/docs//plugins/ollama" rel="noopener noreferrer"&gt;&lt;strong&gt;Ollama&lt;/strong&gt;&lt;/a&gt;: Run open models locally.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.pinecone.io/integrations/firebase-genkit" rel="noopener noreferrer"&gt;&lt;strong&gt;Pinecone&lt;/strong&gt;&lt;/a&gt;: Connect to Pinecone’s vector database.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://genkit.dev/go/docs/plugins/pgvector/" rel="noopener noreferrer"&gt;&lt;strong&gt;pgvector&lt;/strong&gt;&lt;/a&gt;: Integrate with PostgreSQL vector storage.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://genkit.dev/go/docs/plugins/google-cloud" rel="noopener noreferrer"&gt;&lt;strong&gt;Google Cloud Telemetry&lt;/strong&gt;&lt;/a&gt;: Export observability data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Developer tooling for rapid iteration
&lt;/h3&gt;

&lt;p&gt;Building AI applications involves unique challenges. Genkit provides dedicated tooling, consistent across Python, Go, and Node.js, to accelerate testing and development.&lt;/p&gt;

&lt;p&gt;Our CLI and intuitive browser-based **Developer UI **help you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Experiment Faster: Interactively run and iterate on your flows, prompts, and tools in dedicated playgrounds within the UI&lt;/li&gt;
&lt;li&gt;Debug Efficiently: Visualize detailed execution traces, inspect inputs/outputs (including structured data), view logs, and understand exactly how your flows are executing&lt;/li&gt;
&lt;li&gt;Evaluate Confidently: Test your AI workflows against predefined datasets and analyze scored metrics to ensure quality and reliability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Launch the Developer UI by running your app like so:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go: &lt;code&gt;genkit start, go run main.go&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Python: &lt;code&gt;genkit start, python main.py&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Get started
&lt;/h3&gt;

&lt;p&gt;Ready to build your next AI-powered application? Explore our comprehensive documentation and resources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python: &lt;a href="https://python.api.genkit.dev/" rel="noopener noreferrer"&gt;&lt;strong&gt;Get Started with Genkit for Python&lt;/strong&gt;&lt;/a&gt; (Alpha - Great for experimentation!)&lt;/li&gt;
&lt;li&gt;Go: &lt;a href="https://genkit.dev/go/docs/get-started-go/" rel="noopener noreferrer"&gt;&lt;strong&gt;Get Started with Genkit for Go&lt;/strong&gt;&lt;/a&gt; (Beta - Maturing towards production-readiness!)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What’s next?
&lt;/h3&gt;

&lt;p&gt;We are committed to continuously evolving and improving Genkit across all supported languages. We are actively working towards bringing Genkit for Python and Go to feature parity with Genkit for Node.js, as well as embracing language-specific benefits and integration.&lt;/p&gt;

&lt;p&gt;Got questions or feedback? Join us on our &lt;a href="https://discord.gg/qXt5zzQKpc" rel="noopener noreferrer"&gt;&lt;strong&gt;Discord server&lt;/strong&gt;&lt;/a&gt;, or &lt;a href="https://stackoverflow.com/questions/tagged/genkit" rel="noopener noreferrer"&gt;&lt;strong&gt;Stack Overflow&lt;/strong&gt;&lt;/a&gt;. For feature requests and bug reports, hit us up on the &lt;a href="https://github.com/firebase/genkit/issues" rel="noopener noreferrer"&gt;&lt;strong&gt;GitHub issue tracker&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Join our community, share your feedback, and help shape the future of Genkit! Whether you’re developing in Python or Go, now is the perfect time to explore the possibilities of building intelligent, agentive applications with Genkit.&lt;/p&gt;

&lt;p&gt;Happy coding, and we look forward to seeing what you create!&lt;/p&gt;

&lt;h2&gt;
  
  
  Production Web Architecture &amp;amp; Security Checklist
&lt;/h2&gt;

&lt;p&gt;Whether you are deploying on &lt;a href="https://firebase.google.com/docs/app-hosting" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Hosting&lt;/strong&gt;&lt;/a&gt;, Cloudflare Workers, or Vercel, shipping AI features to production requires defense-in-depth across three layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;**Enforce Firebase App Check &amp;amp; Attestation: **Protect your web endpoints, Cloud Functions, Data Connect GraphQL resolvers, and Firebase AI Logic calls against unauthorized replay or billing abuse using &lt;a href="https://firebase.google.com/docs/app-check" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Check with reCAPTCHA Enterprise&lt;/strong&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;**Validate Locally with the Firebase Emulator Suite: **Run deterministic integration tests against local Firestore, Auth, Functions, and Data Connect PostgreSQL emulators before promoting schema or rule changes to production.&lt;/li&gt;
&lt;li&gt;**Keep Server &amp;amp; Client Boundaries Type-Safe: **Use the modular Firebase Web SDK and generated TypeScript bindings so SSR frameworks like Next.js, SvelteKit, and Angular serialize state cleanly without hydration flickers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Watch Our Related Firebase Video Tutorial on YouTube
&lt;/h2&gt;

&lt;p&gt;Want to see how we architect and debug Firebase web applications live? Watch our related CodingCat.dev session &lt;a href="https://youtu.be/N25khadfUag" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase SQL with Data Connect&lt;/strong&gt;&lt;/a&gt; below, and make sure to &lt;a href="https://www.youtube.com/@CodingCatDev?sub_confirmation=1" rel="noopener noreferrer"&gt;&lt;strong&gt;Subscribe to CodingCat.dev on YouTube&lt;/strong&gt;&lt;/a&gt; for weekly full-stack web and AI deep dives:&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/N25khadfUag" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources, Official Docs &amp;amp; Related CodingCat.dev Guides
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;*&lt;em&gt;Primary Release Source: *&lt;/em&gt;&lt;a href="https://firebase.blog/posts/2025/04/genkit-python-go/" rel="noopener noreferrer"&gt;Announcing Genkit for Python and Go on the Official Firebase Blog&lt;/a&gt; (published 2025-04-09 by Chris Gill, Peter Friese)&lt;/li&gt;
&lt;li&gt;*&lt;em&gt;Official Firebase Documentation: *&lt;/em&gt;&lt;a href="https://firebase.google.com/docs/web/setup" rel="noopener noreferrer"&gt;Firebase Developer Docs &amp;amp; Web SDK Reference&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev: &lt;a href="https://codingcat.dev/post/firebase-2025-04-dataconnect-general-availability" rel="noopener noreferrer"&gt;Data Connect is now generally available!&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev: &lt;a href="https://codingcat.dev/post/firebase-2025-04-introducing-firebase-studio" rel="noopener noreferrer"&gt;Introducing Firebase Studio&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev: &lt;a href="https://codingcat.dev/podcast/firebase-sql-with-data-connect" rel="noopener noreferrer"&gt;Firebase SQL with Data Connect&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev: &lt;a href="https://codingcat.dev/podcast/build-a-custom-no-code-app-in-90-minutes" rel="noopener noreferrer"&gt;Build a Custom No-Code App in 90 Minutes&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions (FAQ)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What are the key capabilities introduced in Announcing Genkit for Python and Go?
&lt;/h3&gt;

&lt;p&gt;Announcing Genkit for Python and Go (announced 2025-04-09) enhances the Firebase platform for Firebase, Google Cloud, Web Dev, AI, TypeScript workloads. Building intelligent features into your apps can be complex. Testing models, building prompts, and debugging your solution are all real challenges when building apps powered by large language models. Developers can review the official release notes on the &lt;a href="https://firebase.blog/posts/2025/04/genkit-python-go/" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Blog&lt;/strong&gt;&lt;/a&gt; alongside the implementation patterns in this guide.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do web developers use Announcing Genkit for Python and Go with Next.js, SvelteKit, React, or Angular?
&lt;/h3&gt;

&lt;p&gt;Web developers can integrate these features using the modular Firebase JavaScript/TypeScript SDK, Firebase Data Connect web bindings, and &lt;a href="https://firebase.google.com/docs/app-hosting" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Hosting&lt;/strong&gt;&lt;/a&gt;. Always pair client-side SDK initialization with Firebase App Check and strict Security Rules, and test locally with the Firebase Local Emulator Suite before deploying.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where can I watch video tutorials on Firebase Web and AI development?
&lt;/h3&gt;

&lt;p&gt;You can watch our hands-on Firebase video walkthroughs on the &lt;a href="https://www.youtube.com/@CodingCatDev?sub_confirmation=1" rel="noopener noreferrer"&gt;&lt;strong&gt;CodingCat.dev YouTube Channel&lt;/strong&gt;&lt;/a&gt;, including &lt;a href="https://youtu.be/N25khadfUag" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase SQL with Data Connect&lt;/strong&gt;&lt;/a&gt;, and browse our complete Firebase tutorial archive on CodingCat.dev.&lt;/p&gt;

</description>
      <category>firebase</category>
      <category>googlecloud</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Live text search with Firestore pipelines and React in Firebase: Web Architecture &amp; Implementation Guide</title>
      <dc:creator>Alex Patterson</dc:creator>
      <pubDate>Mon, 26 Oct 2026 02:56:37 +0000</pubDate>
      <link>https://dev.to/codingcatdev/live-text-search-with-firestore-pipelines-and-react-in-firebase-web-architecture-implementation-i2d</link>
      <guid>https://dev.to/codingcatdev/live-text-search-with-firestore-pipelines-and-react-in-firebase-web-architecture-implementation-i2d</guid>
      <description>&lt;p&gt;Original: &lt;a href="https://codingcat.dev/post/firebase-2026-05-react-firestore-search" rel="noopener noreferrer"&gt;https://codingcat.dev/post/firebase-2026-05-react-firestore-search&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live text search with Firestore pipelines and React&lt;/strong&gt;marks an important milestone for full-stack web and AI engineers building on Firebase and Google Cloud. Following the official announcement by Jeff Huleatt on the&lt;a href="https://firebase.blog/posts/2026/05/react-firestore-search/" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Blog&lt;/strong&gt;&lt;/a&gt;(2026-05-28), this hands-on CodingCat.dev implementation guide breaks down how to adopt these capabilities in modern TypeScript, Next.js, SvelteKit, React, and Angular applications. Firestore Enterprise edition now has support for text search built-in! Here are a couple of ways to implement search in a React web app. First, I created a text index for the recipes collection. Firestore Enterprise databases don’t require indexes for most features, but they do require it for text search.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Live text search with Firestore pipelines and React Matters for Full-Stack Web Developers
&lt;/h2&gt;

&lt;p&gt;When evaluating every new Firebase release for our production web apps and Google Developer Expert (GDE) architecture reviews, the first question is always how it improves developer velocity, runtime security, and end-user latency in the browser and on the server.Firestore Enterprise edition now has support for text search built-in! Here are a couple of ways to implement search in a React web app.&lt;/p&gt;

&lt;h3&gt;
  
  
  Searching a collection
&lt;/h3&gt;

&lt;p&gt;First, I&lt;a href="https://g.dev/firebase/firestore-create-text-index-section" rel="noopener noreferrer"&gt;&lt;strong&gt;created a text index&lt;/strong&gt;&lt;/a&gt;for the&lt;code&gt;recipes&lt;/code&gt;collection. Firestore Enterprise databases&lt;a href="https://g.dev/firebase/firestore-pipeline-custom-indexing-rules" rel="noopener noreferrer"&gt;&lt;strong&gt;don’t require indexes&lt;/strong&gt;&lt;/a&gt;for most features, but they do require it for text search.&lt;/p&gt;

&lt;p&gt;The index includes multiple fields to give a better chance of returning a relevant result.&lt;/p&gt;

&lt;p&gt;Now, I can use the&lt;code&gt;.search()&lt;/code&gt;&lt;a href="https://g.dev/firebase/get-started-firestore-pipelines" rel="noopener noreferrer"&gt;&lt;strong&gt;pipeline&lt;/strong&gt;&lt;/a&gt;to search my indexed collection. Here’s an example in plain TypeScript, before I move on to adding it to a React app.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;
    &lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
    &lt;span class="nx"&gt;sort&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
  &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The&lt;code&gt;documentMatches&lt;/code&gt;expression in the&lt;code&gt;search&lt;/code&gt;stage searches across all of the indexed fields in the “Recipe search” index created above.&lt;/p&gt;

&lt;p&gt;To create a React component that can search a Firestore collection, it helps to use a query library that’s optimized for the React component lifecycle like&lt;a href="https://tanstack.com/query/latest" rel="noopener noreferrer"&gt;&lt;strong&gt;Tanstack Query&lt;/strong&gt;&lt;/a&gt;or&lt;a href="https://swr.vercel.app/" rel="noopener noreferrer"&gt;&lt;strong&gt;SWR&lt;/strong&gt;&lt;/a&gt;. In this case, I’m using Tanstack Query’s&lt;code&gt;useSuspenseQuery&lt;/code&gt;, which integrates with React&lt;a href="https://react.dev/reference/react/Suspense" rel="noopener noreferrer"&gt;&lt;strong&gt;Suspense&lt;/strong&gt;&lt;/a&gt;to make loading states to automatically show fallback content while a query is loading:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt;
    &lt;span class="nx"&gt;queryKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="nx"&gt;queryFn&lt;/span&gt;
      &lt;span class="kd"&gt;let&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;

      &lt;span class="k"&gt;if&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
        &lt;span class="nx"&gt;pipeline&lt;/span&gt; 
          &lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
          &lt;span class="c1"&gt;// show the most relevant items first&lt;/span&gt;
          &lt;span class="nx"&gt;sort&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
        &lt;span class="p"&gt;});&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;

      &lt;span class="nx"&gt;pipeline&lt;/span&gt; 
      &lt;span class="kd"&gt;const&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;
        &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
          &lt;span class="kd"&gt;const&lt;/span&gt;
          &lt;span class="k"&gt;return&lt;/span&gt;
        &lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="err"&gt;)}&lt;/span&gt;
      &lt;span class="err"&gt;&amp;lt;/&lt;/span&gt;
      &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;searchTerm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; 
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="nx"&gt;results&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;{searchTerm}&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="si"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;searchTerm&lt;/code&gt;is passed in as a prop from a parent component. I’m only adding&lt;code&gt;search&lt;/code&gt;to the pipeline if the&lt;code&gt;searchTerm&lt;/code&gt;is not empty. If the&lt;code&gt;searchTerm&lt;/code&gt;is empty, I return ten items from the collection, thanks to the&lt;code&gt;limit&lt;/code&gt;stage.&lt;/p&gt;

&lt;p&gt;Notice that there is no loading state management in my code.&lt;a href="https://tanstack.com/query/latest/docs/framework/react/guides/suspense" rel="noopener noreferrer"&gt;&lt;strong&gt;useSuspenseQuery&lt;/strong&gt;&lt;/a&gt;lets me offload that onto the parent components that wrap this component, which makes this&lt;code&gt;SearchResults&lt;/code&gt;component reusable.&lt;/p&gt;

&lt;p&gt;I’m calling&lt;code&gt;initializeApp&lt;/code&gt;and&lt;code&gt;initializeFirestore&lt;/code&gt;on every query, mostly for clarity’s sake in this sample. That’s no problem because these functions are&lt;a href="https://github.com/firebase/firebase-js-sdk/pull/5207" rel="noopener noreferrer"&gt;&lt;strong&gt;idempotent&lt;/strong&gt;&lt;/a&gt;, but in a real React app you’d probably initialize them once elsewhere in your app and import them into components that need them.&lt;/p&gt;

&lt;h3&gt;
  
  
  React patterns for search
&lt;/h3&gt;

&lt;p&gt;Now that we have a component that can search Firestore, let’s look at a basic search, and then upgrade that to a live search that updates as the user types. Both of these components use the SearchResults component above.&lt;/p&gt;

&lt;p&gt;In this&lt;code&gt;Search&lt;/code&gt;component, a new search starts when the user submits a search form.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;
        &lt;span class="err"&gt;&amp;lt;&lt;/span&gt;
          &lt;span class="err"&gt;&amp;lt;&lt;/span&gt;
          &lt;span class="err"&gt;&amp;lt;&lt;/span&gt;
        &lt;span class="err"&gt;&amp;lt;/&lt;/span&gt;
        &lt;span class="err"&gt;&amp;lt;&lt;/span&gt;
          &lt;span class="err"&gt;&amp;lt;&lt;/span&gt;
        &lt;span class="err"&gt;&amp;lt;/&lt;/span&gt;
      &lt;span class="err"&gt;&amp;lt;/&lt;/span&gt;
    &lt;span class="err"&gt;&amp;lt;&lt;/span&gt;&lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I’m maintaining&lt;code&gt;searchTerm&lt;/code&gt;with&lt;code&gt;useState&lt;/code&gt;and passing it as a prop to the&lt;code&gt;SearchResults&lt;/code&gt;component. I’ve wrapped&lt;code&gt;SearchResults&lt;/code&gt;in a&lt;code&gt;Suspense&lt;/code&gt;component that will automatically render the&lt;code&gt;fallback&lt;/code&gt;while we wait for the search to complete.&lt;/p&gt;

&lt;p&gt;To set the&lt;code&gt;searchTerm&lt;/code&gt;, I have an&lt;code&gt;input&lt;/code&gt;of type&lt;code&gt;search&lt;/code&gt;within a form. In the form’s&lt;a href="https://react.dev/reference/react-dom/components/form#handle-form-submission-on-the-client" rel="noopener noreferrer"&gt;&lt;strong&gt;action prop&lt;/strong&gt;&lt;/a&gt;I have a handler that gets the search query from&lt;code&gt;formData&lt;/code&gt;and updates&lt;code&gt;searchTerm&lt;/code&gt;. That in turn causes the&lt;code&gt;Search&lt;/code&gt;component to re-render, passing a new search term to&lt;code&gt;SearchResults&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;In the&lt;code&gt;LiveSearch&lt;/code&gt;component, I’ve implemented the same form as above, but with an enhancement. Now, searches also happen as the user types. The input is&lt;a href="https://developer.mozilla.org/en-US/docs/Glossary/Debounce" rel="noopener noreferrer"&gt;&lt;strong&gt;debounced&lt;/strong&gt;&lt;/a&gt;to avoid performing unnecessary searches.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt;

  &lt;span class="c1"&gt;// Keep track of the currently typed search query,&lt;/span&gt;
  &lt;span class="c1"&gt;// and use it to start a search after a delay&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt;
  &lt;span class="nx"&gt;useEffect&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt;
      &lt;span class="nx"&gt;setSearchTerm&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt; 

    &lt;span class="k"&gt;return&lt;/span&gt;
      &lt;span class="nx"&gt;clearTimeout&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;liveSearchTerm&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;
        &lt;span class="err"&gt;&amp;lt;&lt;/span&gt;
          &lt;span class="err"&gt;&amp;lt;&lt;/span&gt;
            &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;
            &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;
            &lt;span class="na"&gt;placeholder&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;
            &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;
            &lt;span class="na"&gt;onChange&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;
          &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;
        &lt;span class="err"&gt;&amp;lt;/&lt;/span&gt;
        &lt;span class="err"&gt;&amp;lt;&lt;/span&gt;
          &lt;span class="err"&gt;&amp;lt;&lt;/span&gt;
        &lt;span class="err"&gt;&amp;lt;/&lt;/span&gt;
      &lt;span class="err"&gt;&amp;lt;/&lt;/span&gt;
    &lt;span class="err"&gt;&amp;lt;&lt;/span&gt;&lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The search input updates the&lt;code&gt;liveSearchTerm&lt;/code&gt;state variable whenever it changes. Since I’ve included&lt;code&gt;liveSearchTerm&lt;/code&gt;in the dependency array of&lt;code&gt;useEffect&lt;/code&gt;, the debouncing function re-runs every time&lt;code&gt;liveSearchTerm&lt;/code&gt;changes, calling&lt;code&gt;setSearchTerm&lt;/code&gt;on a 300ms delay.&lt;/p&gt;

&lt;p&gt;Live search would work if I stopped there. However, there would be an annoying flash of loading state every time&lt;code&gt;searchTerm&lt;/code&gt;updates, as&lt;code&gt;SearchResults&lt;/code&gt;re-queries the Firestore collection:&lt;/p&gt;

&lt;p&gt;To prevent that, I’ve introduced another variable,&lt;code&gt;deferredSearchTerm&lt;/code&gt;, that is synced with&lt;code&gt;searchTerm&lt;/code&gt;via&lt;code&gt;useDeferredValue&lt;/code&gt;to&lt;a href="https://react.dev/reference/react/useDeferredValue#showing-stale-content-while-fresh-content-is-loading" rel="noopener noreferrer"&gt;&lt;strong&gt;show stale content while fresh content is loading&lt;/strong&gt;&lt;/a&gt;. Now, instead of a flash of loading state every time&lt;code&gt;searchTerm&lt;/code&gt;changes, React knows to just keep the results of the last search on the screen until the new search completes.&lt;/p&gt;

&lt;p&gt;It might seem like the debouncing&lt;code&gt;useEffect&lt;/code&gt;hook and&lt;code&gt;useDeferredValue&lt;/code&gt;are redundant, but they’re solving two different problems. Debouncing cuts the number of searches against the database, reducing cost, while&lt;code&gt;useDeferredValue&lt;/code&gt;prevents loading state jank.&lt;/p&gt;

&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;p&gt;Live search is a great way to let users find things quickly in your app, and with Firestore pipelines and modern React APIs, it doesn’t take much code to implement.&lt;/p&gt;

&lt;p&gt;To make this even better, here are ideas for some other potential enhancements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Store the search term in the URL query string so that a search can be bookmarked, or even executed in a&lt;a href="https://react.dev/reference/rsc/server-components" rel="noopener noreferrer"&gt;&lt;strong&gt;Server Component&lt;/strong&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Right now,&lt;code&gt;search&lt;/code&gt;is performed if the query is at least 1 character long. Based on what you’re searching through, it might make sense to restrict search even more, to a minimum of 3 or 4 characters.&lt;/li&gt;
&lt;li&gt;Include the search score of each item by using&lt;a href="https://g.dev/firebase/firestore-text-search-add-fields-stage" rel="noopener noreferrer"&gt;&lt;strong&gt;addFields&lt;/strong&gt;&lt;/a&gt;in the search stage.&lt;/li&gt;
&lt;li&gt;Use other pipeline features to allow more advanced filtering of data, like in the&lt;a href="https://github.com/FirebaseExtended/FriendlyMeals-web/blob/5198b05d193765b150ed0dfa98c6168788345a60/app/firebase/data.ts#L140-L217" rel="noopener noreferrer"&gt;&lt;strong&gt;FriendlyMeals-web sample&lt;/strong&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’re inspired to try this out, let us know how it went on&lt;a href="https://x.com/firebase" rel="noopener noreferrer"&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;or&lt;a href="https://www.linkedin.com/showcase/firebase/" rel="noopener noreferrer"&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt;&lt;/a&gt;!&lt;/p&gt;

&lt;h2&gt;
  
  
  Production Web Architecture &amp;amp; Security Checklist
&lt;/h2&gt;

&lt;p&gt;Whether you are deploying on&lt;a href="https://firebase.google.com/docs/app-hosting" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Hosting&lt;/strong&gt;&lt;/a&gt;, Cloudflare Workers, or Vercel, shipping React features to production requires defense-in-depth across three layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enforce Firebase App Check &amp;amp; Attestation:&lt;/strong&gt;Protect your web endpoints, Cloud Functions, Data Connect GraphQL resolvers, and Firebase AI Logic calls against unauthorized replay or billing abuse using&lt;a href="https://firebase.google.com/docs/app-check" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Check with reCAPTCHA Enterprise&lt;/strong&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validate Locally with the Firebase Emulator Suite:&lt;/strong&gt;Run deterministic integration tests against local Firestore, Auth, Functions, and Data Connect PostgreSQL emulators before promoting schema or rule changes to production.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep Server &amp;amp; Client Boundaries Type-Safe:&lt;/strong&gt;Use the modular Firebase Web SDK and generated TypeScript bindings so SSR frameworks like Next.js, SvelteKit, and Angular serialize state cleanly without hydration flickers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Watch Our Related Firebase Video Tutorial on YouTube
&lt;/h2&gt;

&lt;p&gt;Want to see how we architect and debug Firebase web applications live? Watch our related CodingCat.dev session&lt;a href="https://youtu.be/kHrIyTLVerg" rel="noopener noreferrer"&gt;&lt;strong&gt;Building a web application with Next.js and Firebase - Firebase Summit 2021&lt;/strong&gt;&lt;/a&gt;below, and make sure to&lt;a href="https://www.youtube.com/@CodingCatDev?sub_confirmation=1" rel="noopener noreferrer"&gt;&lt;strong&gt;Subscribe to CodingCat.dev on YouTube&lt;/strong&gt;&lt;/a&gt;for weekly full-stack web and AI deep dives:&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/kHrIyTLVerg" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources, Official Docs &amp;amp; Related CodingCat.dev Guides
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Primary Release Source:&lt;/strong&gt;&lt;a href="https://firebase.blog/posts/2026/05/react-firestore-search/" rel="noopener noreferrer"&gt;Live text search with Firestore pipelines and React on the Official Firebase Blog&lt;/a&gt;(published 2026-05-28 by Jeff Huleatt)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Official Firebase Documentation:&lt;/strong&gt;&lt;a href="https://firebase.google.com/docs/web/setup" rel="noopener noreferrer"&gt;Firebase Developer Docs &amp;amp; Web SDK Reference&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/post/firebase-2026-05-google-io-2026-announcements" rel="noopener noreferrer"&gt;What’s new from Firebase at Google I/O 2026&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/post/firebase-2026-05-building-cooking-assistant-ai-logic" rel="noopener noreferrer"&gt;Building a cooking assistant with Firebase AI Logic&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/podcast/firebase-sql-with-data-connect" rel="noopener noreferrer"&gt;Firebase SQL with Data Connect&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/podcast/build-a-custom-no-code-app-in-90-minutes" rel="noopener noreferrer"&gt;Build a Custom No-Code App in 90 Minutes&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions (FAQ)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What are the key capabilities introduced in Live text search with Firestore pipelines and React?
&lt;/h3&gt;

&lt;p&gt;Live text search with Firestore pipelines and React (announced 2026-05-28) enhances the Firebase platform for Firebase, Google Cloud, Web Dev, React, TypeScript workloads. Firestore Enterprise edition now has support for text search built-in! Here are a couple of ways to implement search in a React web app. Developers can review the official release notes on the&lt;a href="https://firebase.blog/posts/2026/05/react-firestore-search/" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Blog&lt;/strong&gt;&lt;/a&gt;alongside the implementation patterns in this guide.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do web developers use Live text search with Firestore pipelines and React with Next.js, SvelteKit, React, or Angular?
&lt;/h3&gt;

&lt;p&gt;Web developers can integrate these features using the modular Firebase JavaScript/TypeScript SDK, Firebase Data Connect web bindings, and&lt;a href="https://firebase.google.com/docs/app-hosting" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Hosting&lt;/strong&gt;&lt;/a&gt;. Always pair client-side SDK initialization with Firebase App Check and strict Security Rules, and test locally with the Firebase Local Emulator Suite before deploying.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where can I watch video tutorials on Firebase Web and AI development?
&lt;/h3&gt;

&lt;p&gt;You can watch our hands-on Firebase video walkthroughs on the&lt;a href="https://www.youtube.com/@CodingCatDev?sub_confirmation=1" rel="noopener noreferrer"&gt;&lt;strong&gt;CodingCat.dev YouTube Channel&lt;/strong&gt;&lt;/a&gt;, including&lt;a href="https://youtu.be/kHrIyTLVerg" rel="noopener noreferrer"&gt;&lt;strong&gt;Building a web application with Next.js and Firebase - Firebase Summit 2021&lt;/strong&gt;&lt;/a&gt;, and browse our complete Firebase tutorial archive on CodingCat.dev.&lt;/p&gt;

</description>
      <category>firebase</category>
      <category>googlecloud</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Bringing Google Maps to Friendly Meals with Firebase AI Logic: Web Architecture &amp; Implementation Guide</title>
      <dc:creator>Alex Patterson</dc:creator>
      <pubDate>Mon, 26 Oct 2026 02:56:36 +0000</pubDate>
      <link>https://dev.to/codingcatdev/bringing-google-maps-to-friendly-meals-with-firebase-ai-logic-web-architecture-implementation-4j58</link>
      <guid>https://dev.to/codingcatdev/bringing-google-maps-to-friendly-meals-with-firebase-ai-logic-web-architecture-implementation-4j58</guid>
      <description>&lt;p&gt;Original: &lt;a href="https://codingcat.dev/post/firebase-2026-07-bringing-google-maps-friendly-meals" rel="noopener noreferrer"&gt;https://codingcat.dev/post/firebase-2026-07-bringing-google-maps-friendly-meals&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bringing Google Maps to Friendly Meals with Firebase AI Logic&lt;/strong&gt;marks an important milestone for full-stack web and AI engineers building on Firebase and Google Cloud. Following the official announcement by Marina Coelho on the&lt;a href="https://firebase.blog/posts/2026/07/bringing-google-maps-friendly-meals/" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Blog&lt;/strong&gt;&lt;/a&gt;(2026-07-28), this hands-on CodingCat.dev implementation guide breaks down how to adopt these capabilities in modern TypeScript, Next.js, SvelteKit, React, and Angular applications. A couple of months ago, I shared how I used Firebase AI Logic to build a hands-free, real-time cooking assistant for the Friendly Meals Android app. It was great for answering my cooking questions while I had my hands covered in flour, and for adding ingredients to my shopping list in a conversational style. But then s&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Bringing Google Maps to Friendly Meals with Firebase AI Logic Matters for Full-Stack Web Developers
&lt;/h2&gt;

&lt;p&gt;When evaluating every new Firebase release for our production web apps and Google Developer Expert (GDE) architecture reviews, the first question is always how it improves developer velocity, runtime security, and end-user latency in the browser and on the server.A couple of months ago, I shared how I used Firebase AI Logic to build a hands-free, real-time cooking assistant for the Friendly Meals Android app. It was great for answering my cooking questions while I had my hands covered in flour, and for adding ingredients to my shopping list in a conversational style. But then something happened the other night as I was cooking dinner: I didn’t have most of the ingredients I needed for a recipe, and my shopping list was huge.&lt;/p&gt;

&lt;p&gt;So I wondered: what if I could tap a button to find nearby stores with these ingredients? Checking closing times, distance, and parking inside the app is far more convenient than filtering through Google Maps manually. Read through to learn how I added spatial intelligence to Friendly Meals using*&lt;em&gt;Grounding with Google Maps via Firebase AI Logic.&lt;/em&gt;*&lt;/p&gt;

&lt;h3&gt;
  
  
  The power of location-aware AI
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Firebase AI Logic&lt;/strong&gt;provides secure, client-side SDKs that let mobile and web apps talk directly to Google’s generative models without setting up complicated server-side architecture. With the addition of*&lt;em&gt;grounding with Google Maps&lt;/em&gt;*, you can now link Gemini’s intelligence directly to Google’s massive database of over 250 million real-world places.&lt;/p&gt;

&lt;p&gt;By grounding Gemini’s responses with Google Maps data, the cooking assistant achieves two things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Real-time data access:&lt;/strong&gt;Recommendations for stores, markets, or restaurants are anchored to actual, existing businesses. The model knows current operational statuses, business hours, and location specifics (like address and parking information).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Geographic personalization:&lt;/strong&gt;By biasing the request with the user’s current latitude and longitude, the assistant’s advice becomes highly localized, which is great when you want to display the results ordered by how near a store is to the user.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How Friendly Meals implements Maps grounding
&lt;/h3&gt;

&lt;p&gt;Let’s dive into the code for the Friendly Meals Android app, written in Kotlin, and look at the key changes required to create the Store Finder feature.&lt;/p&gt;

&lt;p&gt;Just like other features in this app, I want to keep the Store Finder feature flexible without forcing users to update the app when I want to try a new AI model, or a new prompt. I can achieve that by storing these pieces of information in a&lt;a href="https://firebase.google.com/docs/ai-logic/server-prompt-templates/get-started?api=dev" rel="noopener noreferrer"&gt;&lt;strong&gt;prompt template&lt;/strong&gt;&lt;/a&gt;, in the Firebase console:&lt;/p&gt;

&lt;p&gt;By using prompt templates, I’m storing my prompt, input schema, model configurations and tools server-side. This way, I’m not only able to update my prompt and configuration without releasing a new app version, but I’m also protecting my intellectual property by not exposing it client-side.&lt;/p&gt;

&lt;p&gt;To use the prompt template in my Android app, I only need to reference the template ID when making the API call, and pass in the parameters defined in the template configuration. The Firebase AI Logic API takes care of executing the call to the chosen Gemini model and returning the response to my app. This is done in the&lt;code&gt;findStores&lt;/code&gt;function:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;suspend&lt;/span&gt;
  &lt;span class="nx"&gt;ingredients&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
  &lt;span class="nx"&gt;latitude&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
  &lt;span class="nx"&gt;longitude&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
  &lt;span class="nx"&gt;currentTime&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
  &lt;span class="nx"&gt;dayOfWeek&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
&lt;span class="p"&gt;):&lt;/span&gt; 
  &lt;span class="c1"&gt;// Initialize the AI model with the Google Maps tool&lt;/span&gt;
  &lt;span class="nx"&gt;val&lt;/span&gt;
    &lt;span class="nx"&gt;tools&lt;/span&gt; 
    &lt;span class="nx"&gt;toolConfig&lt;/span&gt; 
      &lt;span class="nx"&gt;retrievalConfig&lt;/span&gt; 
        &lt;span class="nx"&gt;latLng&lt;/span&gt; 
        &lt;span class="nx"&gt;languageCode&lt;/span&gt; 
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt;
    &lt;span class="c1"&gt;// Call the generative model and get the response text&lt;/span&gt;
    &lt;span class="nx"&gt;val&lt;/span&gt;
      &lt;span class="nx"&gt;templateId&lt;/span&gt; 
      &lt;span class="nx"&gt;inputs&lt;/span&gt; 
        &lt;span class="nx"&gt;INGREDIENTS_FIELD&lt;/span&gt; &lt;span class="nx"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;ingredients&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
        &lt;span class="nx"&gt;DAY_FIELD&lt;/span&gt; &lt;span class="nx"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;dayOfWeek&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;TIME_FIELD&lt;/span&gt; &lt;span class="nx"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;currentTime&lt;/span&gt;
      &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="nx"&gt;val&lt;/span&gt;

    &lt;span class="c1"&gt;// Make sure the JSON is clean by replacing potential JSON headers&lt;/span&gt;
    &lt;span class="nx"&gt;val&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;

    &lt;span class="c1"&gt;// Convert JSON object to an object of the type StoreFinderResult&lt;/span&gt;
    &lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; 
    &lt;span class="nx"&gt;Log&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
    &lt;span class="nx"&gt;emptyList&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;companion&lt;/span&gt;
  &lt;span class="c1"&gt;//Remote Config Keys&lt;/span&gt;
  &lt;span class="k"&gt;private&lt;/span&gt;

  &lt;span class="c1"&gt;//Template input fields&lt;/span&gt;
  &lt;span class="k"&gt;private&lt;/span&gt;
  &lt;span class="k"&gt;private&lt;/span&gt;
  &lt;span class="k"&gt;private&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To give Gemini access to real-time maps data, I provide&lt;code&gt;TemplateTool.googleMaps()&lt;/code&gt;to the model initialization blocks. That involves retrieving the user’s latitude and longitude, which enables the app to return a highly localized list of stores. I’ll dive into how you can extract latitude and longitude data on Android apps in the next section of this blog.&lt;/p&gt;

&lt;p&gt;Once the model is initialized, I call the&lt;code&gt;generateContent&lt;/code&gt;function passing in the template ID and the input parameters: the list of ingredients in the shopping list, retrieved from&lt;a href="https://g.dev/firebase/firestore-friendly-meals" rel="noopener noreferrer"&gt;&lt;strong&gt;Firestore&lt;/strong&gt;&lt;/a&gt;, and the current day and time, retrieved using the&lt;code&gt;LocalDateTime&lt;/code&gt;Java library.&lt;/p&gt;

&lt;p&gt;When I get a response from Gemini, I extract the text from this response (which should be in JSON format), and make sure the JSON is clean by replacing potential JSON headers. I then convert this “clean” JSON to an object that my codebase can understand:&lt;code&gt;StoreFinderResult&lt;/code&gt;. This is the object that I use to populate the&lt;a href="https://g.dev/android/jetpack-compose-friendly-meals" rel="noopener noreferrer"&gt;&lt;strong&gt;Compose UI&lt;/strong&gt;&lt;/a&gt;that you saw at the beginning of this blog, which is built with a&lt;a href="https://g.dev/android/compose-bottom-sheets" rel="noopener noreferrer"&gt;&lt;strong&gt;bottom sheet&lt;/strong&gt;&lt;/a&gt;component.&lt;/p&gt;

&lt;p&gt;To&lt;a href="https://g.dev/android/location-aware-apps" rel="noopener noreferrer"&gt;&lt;strong&gt;build location-aware Android apps&lt;/strong&gt;&lt;/a&gt;that can extract latitude and longitude data, first I need to&lt;a href="https://g.dev/android/play-services-declare-dependencies" rel="noopener noreferrer"&gt;&lt;strong&gt;add the playServicesLocation dependency&lt;/strong&gt;&lt;/a&gt;, then add some permissions to the&lt;code&gt;AndroidManifest.xml&lt;/code&gt;file:&lt;/p&gt;

&lt;p&gt;Then, when the user taps on the Store Finder button, I call the&lt;code&gt;RequestMultiplePermissions&lt;/code&gt;function, which handles the flow of requesting the user to grant permissions if they haven’t done so yet. Once the permission is granted, I extract the current location with the&lt;code&gt;getCurrentLocation&lt;/code&gt;function:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// This is the primary entry point in Google Play services for accessing device location on Android&lt;/span&gt;
&lt;span class="nx"&gt;val&lt;/span&gt;
  &lt;span class="nx"&gt;LocationServices&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Launcher to request multiple runtime permissions and handle the result&lt;/span&gt;
&lt;span class="nx"&gt;val&lt;/span&gt;
  &lt;span class="nx"&gt;contract&lt;/span&gt; 
&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;permissions&lt;/span&gt; 
  &lt;span class="c1"&gt;// Check permission results and default to false if not present&lt;/span&gt;
  &lt;span class="nx"&gt;val&lt;/span&gt;
  &lt;span class="nx"&gt;val&lt;/span&gt;

  &lt;span class="c1"&gt;// Fetch location if at least one permission level is granted&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt;
    &lt;span class="nx"&gt;coroutineScope&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
      &lt;span class="nx"&gt;val&lt;/span&gt;
      &lt;span class="nx"&gt;val&lt;/span&gt;

      &lt;span class="c1"&gt;// Asynchronously request the most recent current location&lt;/span&gt;
      &lt;span class="nx"&gt;val&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;

      &lt;span class="k"&gt;if&lt;/span&gt;
        &lt;span class="c1"&gt;// Triggers the call to the AI model to find stores&lt;/span&gt;
        &lt;span class="nx"&gt;onSuccess&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt; 
        &lt;span class="c1"&gt;// Triggers UI message if location services are disabled&lt;/span&gt;
        &lt;span class="nx"&gt;showError&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Triggers the system permission dialog for both fine and coarse location&lt;/span&gt;
&lt;span class="nx"&gt;permissionLauncher&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
  &lt;span class="nx"&gt;arrayOf&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And that’s all you need to do to perform a successful call to Gemini, grounding its response in real-time data from Google Maps!&lt;/p&gt;

&lt;h3&gt;
  
  
  Going to production
&lt;/h3&gt;

&lt;p&gt;As always, make sure you are protecting your apps with*&lt;em&gt;Firebase App Check&lt;/em&gt;*before deploying them to production. App Check attests that incoming traffic originates from your untampered Android app on a legitimate device. It helps protect your backend from abuse, such as billing fraud, phishing, app impersonation, and data poisoning. Check out the&lt;a href="https://g.dev/ai/logic-app-check" rel="noopener noreferrer"&gt;&lt;strong&gt;App Check documentation&lt;/strong&gt;&lt;/a&gt;to learn more about it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bring grounding with Maps to your apps
&lt;/h3&gt;

&lt;p&gt;By pairing client-side code via Firebase AI Logic with the data depth of Google Maps, you evolve your AI features to interactive spatial flows that can guide users in the physical world.&lt;/p&gt;

&lt;p&gt;Head over to the&lt;a href="https://github.com/FirebaseExtended/FriendlyMeals-Android" rel="noopener noreferrer"&gt;&lt;strong&gt;Friendly Meals GitHub repository&lt;/strong&gt;&lt;/a&gt;to review the codebase in full. If you want to check specifically the changes introduced for this feature,&lt;a href="https://github.com/FirebaseExtended/FriendlyMeals-Android/pull/8/" rel="noopener noreferrer"&gt;&lt;strong&gt;check out this pull request&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Production Web Architecture &amp;amp; Security Checklist
&lt;/h2&gt;

&lt;p&gt;Whether you are deploying on&lt;a href="https://firebase.google.com/docs/app-hosting" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Hosting&lt;/strong&gt;&lt;/a&gt;, Cloudflare Workers, or Vercel, shipping AI features to production requires defense-in-depth across three layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enforce Firebase App Check &amp;amp; Attestation:&lt;/strong&gt;Protect your web endpoints, Cloud Functions, Data Connect GraphQL resolvers, and Firebase AI Logic calls against unauthorized replay or billing abuse using&lt;a href="https://firebase.google.com/docs/app-check" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Check with reCAPTCHA Enterprise&lt;/strong&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validate Locally with the Firebase Emulator Suite:&lt;/strong&gt;Run deterministic integration tests against local Firestore, Auth, Functions, and Data Connect PostgreSQL emulators before promoting schema or rule changes to production.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep Server &amp;amp; Client Boundaries Type-Safe:&lt;/strong&gt;Use the modular Firebase Web SDK and generated TypeScript bindings so SSR frameworks like Next.js, SvelteKit, and Angular serialize state cleanly without hydration flickers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Watch Our Related Firebase Video Tutorial on YouTube
&lt;/h2&gt;

&lt;p&gt;Want to see how we architect and debug Firebase web applications live? Watch our related CodingCat.dev session&lt;a href="https://youtu.be/N25khadfUag" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase SQL with Data Connect&lt;/strong&gt;&lt;/a&gt;below, and make sure to&lt;a href="https://www.youtube.com/@CodingCatDev?sub_confirmation=1" rel="noopener noreferrer"&gt;&lt;strong&gt;Subscribe to CodingCat.dev on YouTube&lt;/strong&gt;&lt;/a&gt;for weekly full-stack web and AI deep dives:&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/N25khadfUag" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources, Official Docs &amp;amp; Related CodingCat.dev Guides
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Primary Release Source:&lt;/strong&gt;&lt;a href="https://firebase.blog/posts/2026/07/bringing-google-maps-friendly-meals/" rel="noopener noreferrer"&gt;Bringing Google Maps to Friendly Meals with Firebase AI Logic on the Official Firebase Blog&lt;/a&gt;(published 2026-07-28 by Marina Coelho)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Official Firebase Documentation:&lt;/strong&gt;&lt;a href="https://firebase.google.com/docs/web/setup" rel="noopener noreferrer"&gt;Firebase Developer Docs &amp;amp; Web SDK Reference&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/post/firebase-2026-06-firestore-serialization-react" rel="noopener noreferrer"&gt;Zero-flicker Firestore SSR with React&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/post/firebase-2026-07-three-layer-security" rel="noopener noreferrer"&gt;Triple-layer security for Firebase web apps&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/podcast/firebase-sql-with-data-connect" rel="noopener noreferrer"&gt;Firebase SQL with Data Connect&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/podcast/build-a-custom-no-code-app-in-90-minutes" rel="noopener noreferrer"&gt;Build a Custom No-Code App in 90 Minutes&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions (FAQ)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What are the key capabilities introduced in Bringing Google Maps to Friendly Meals with Firebase AI Logic?
&lt;/h3&gt;

&lt;p&gt;Bringing Google Maps to Friendly Meals with Firebase AI Logic (announced 2026-07-28) enhances the Firebase platform for Firebase, Google Cloud, Web Dev, AI, TypeScript, Security workloads. A couple of months ago, I shared how I used Firebase AI Logic to build a hands-free, real-time cooking assistant for the Friendly Meals Android app. It was great for answering my cooking questions while I had my hands covered in flour, and for adding ingredients to my shopping list in a conversational style. But then something happened the other night as I was cooking dinner: I didn’t have most of the ingredients I needed for a recipe, and my shopping list was huge. Developers can review the official release notes on the&lt;a href="https://firebase.blog/posts/2026/07/bringing-google-maps-friendly-meals/" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Blog&lt;/strong&gt;&lt;/a&gt;alongside the implementation patterns in this guide.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do web developers use Bringing Google Maps to Friendly Meals with Firebase AI Logic with Next.js, SvelteKit, React, or Angular?
&lt;/h3&gt;

&lt;p&gt;Web developers can integrate these features using the modular Firebase JavaScript/TypeScript SDK, Firebase Data Connect web bindings, and&lt;a href="https://firebase.google.com/docs/app-hosting" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Hosting&lt;/strong&gt;&lt;/a&gt;. Always pair client-side SDK initialization with Firebase App Check and strict Security Rules, and test locally with the Firebase Local Emulator Suite before deploying.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where can I watch video tutorials on Firebase Web and AI development?
&lt;/h3&gt;

&lt;p&gt;You can watch our hands-on Firebase video walkthroughs on the&lt;a href="https://www.youtube.com/@CodingCatDev?sub_confirmation=1" rel="noopener noreferrer"&gt;&lt;strong&gt;CodingCat.dev YouTube Channel&lt;/strong&gt;&lt;/a&gt;, including&lt;a href="https://youtu.be/N25khadfUag" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase SQL with Data Connect&lt;/strong&gt;&lt;/a&gt;, and browse our complete Firebase tutorial archive on CodingCat.dev.&lt;/p&gt;

</description>
      <category>firebase</category>
      <category>googlecloud</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Antigravity and Firebase MCP accelerate app development: Web Architecture &amp; Implementation Guide</title>
      <dc:creator>Alex Patterson</dc:creator>
      <pubDate>Mon, 26 Oct 2026 02:56:03 +0000</pubDate>
      <link>https://dev.to/codingcatdev/antigravity-and-firebase-mcp-accelerate-app-development-web-architecture-implementation-guide-jmk</link>
      <guid>https://dev.to/codingcatdev/antigravity-and-firebase-mcp-accelerate-app-development-web-architecture-implementation-guide-jmk</guid>
      <description>&lt;p&gt;Original: &lt;a href="https://codingcat.dev/post/firebase-2025-11-firebase-mcp-and-antigravity" rel="noopener noreferrer"&gt;https://codingcat.dev/post/firebase-2025-11-firebase-mcp-and-antigravity&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Antigravity and Firebase MCP accelerate app development&lt;/strong&gt;marks an important milestone for full-stack web and AI engineers building on Firebase and Google Cloud. Following the official announcement by Alexander Nohe on the&lt;a href="https://firebase.blog/posts/2025/11/firebase-mcp-and-antigravity/" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Blog&lt;/strong&gt;&lt;/a&gt;(2025-11-21), this hands-on CodingCat.dev implementation guide breaks down how to adopt these capabilities in modern TypeScript, Next.js, SvelteKit, React, and Angular applications. The Firebase MCP server can be added to Antigravity to power up your application development We have been hard at work making sure that the Firebase MCP server works really well with not only the Gemini CLI, but all the places that you may want to use an MCP server. This includes Google’s newest release, the Antigravit&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Antigravity and Firebase MCP accelerate app development Matters for Full-Stack Web Developers
&lt;/h2&gt;

&lt;p&gt;When evaluating every new Firebase release for our production web apps and Google Developer Expert (GDE) architecture reviews, the first question is always how it improves developer velocity, runtime security, and end-user latency in the browser and on the server.The Firebase MCP server can be added to Antigravity to power up your application development&lt;/p&gt;

&lt;p&gt;We have been hard at work making sure that the&lt;a href="https://firebase.google.com/docs/ai-assistance/mcp-server" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase MCP server&lt;/strong&gt;&lt;/a&gt;works really well with not only the Gemini CLI, but all the places that you may want to use an MCP server. This includes Google’s newest release, the&lt;a href="https://antigravity.google/" rel="noopener noreferrer"&gt;&lt;strong&gt;Antigravity IDE&lt;/strong&gt;&lt;/a&gt;. Let’s take a look at how to add the Firebase MCP server to Antigravity and what Antigravity can do with our MCP server.&lt;/p&gt;

&lt;h3&gt;
  
  
  Adding Firebase MCP to Antigravity
&lt;/h3&gt;

&lt;p&gt;To add the Firebase MCP server, open Antigravity and go to the drop-down menu in the Agent window. Select “MCP servers”, then choose Firebase from the list of available MCP servers. This will open a description of the MCP server, where you can click install to add our Firebase MCP server.&lt;/p&gt;

&lt;h3&gt;
  
  
  Link your current app to Firebase
&lt;/h3&gt;

&lt;p&gt;To get started, tell the agent to initialize Firebase in your current project. The agent will then develop an implementation plan using the MCP server to link Firebase to your project. If the agent needs more information to complete a task, it will pause and ask for your input. Once the task is complete, Antigravity provides a walkthrough of the steps it took to link Firebase to your app.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ask Antigravity to build your app
&lt;/h3&gt;

&lt;p&gt;Using Antigravity we can then specify a series of steps that we want the agent to take in building our app. I prompted a racing game that incorporated sign in using email and password login from Firebase and Cloud Firestore for a leaderboard. Antigravity, using its suite of MCP tools from the Firebase MCP server, fetched the API keys for my web app, so I didn’t need to visit the Firebase console, and implemented both features without issue.&lt;/p&gt;

&lt;p&gt;I then went to test out the game and it worked as I expected.&lt;/p&gt;

&lt;h3&gt;
  
  
  Deploy the app with Firebase Hosting
&lt;/h3&gt;

&lt;p&gt;The Antigravity agent already has access to Firebase Hosting via the Firebase MCP server. The agent understands can consult with the Firebase MCP server to verify the steps to deploy to Firebase Hosting. The agent makes a deployment plan which includes compiling the code and then running the&lt;code&gt;firebase deploy --only hosting&lt;/code&gt;command to get the app onto Firebase Hosting. We don’t need to run any commands ourselves other than asking the agent to deploy for us. Once this is done, we can share the game we built with our friends!&lt;/p&gt;

&lt;p&gt;The Firebase MCP server also supports&lt;a href="https://firebase.google.com/docs/app-hosting" rel="noopener noreferrer"&gt;&lt;strong&gt;App Hosting&lt;/strong&gt;&lt;/a&gt;, which is optimized for server-rendered Next.js and Angular web apps.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Accelerate your app development with Antigravity and the Firebase MCP server. Come tell us on&lt;a href="http://x.com/Firebase" rel="noopener noreferrer"&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;and&lt;a href="https://www.linkedin.com/showcase/firebase/" rel="noopener noreferrer"&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt;&lt;/a&gt;how you are using Firebase with Antigravity, we cannot wait to see what you build next!&lt;/p&gt;

&lt;h2&gt;
  
  
  TypeScript &amp;amp; Web SDK Implementation Pattern
&lt;/h2&gt;

&lt;p&gt;Here is the baseline configuration pattern for integrating Antigravity and Firebase MCP accelerate app development into a modern TypeScript web application:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;initializeApp&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;firebase/app&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;getAI&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;getGenerativeModel&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;GoogleAIBackend&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;firebase/ai&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;initializeAppCheck&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ReCaptchaEnterpriseProvider&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;firebase/app-check&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;initializeApp&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;NEXT_PUBLIC_FIREBASE_API_KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;projectId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;NEXT_PUBLIC_FIREBASE_PROJECT_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// Protect AI endpoints in web apps with Firebase App Check&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;undefined&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;initializeAppCheck&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;provider&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ReCaptchaEnterpriseProvider&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;NEXT_PUBLIC_RECAPTCHA_SITE_KEY&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="na"&gt;isTokenAutoRefreshEnabled&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ai&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;getAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;backend&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;GoogleAIBackend&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;geminiModel&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;getGenerativeModel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ai&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;gemini-2.5-flash&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Production Web Architecture &amp;amp; Security Checklist
&lt;/h2&gt;

&lt;p&gt;Whether you are deploying on&lt;a href="https://firebase.google.com/docs/app-hosting" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Hosting&lt;/strong&gt;&lt;/a&gt;, Cloudflare Workers, or Vercel, shipping AI features to production requires defense-in-depth across three layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enforce Firebase App Check &amp;amp; Attestation:&lt;/strong&gt;Protect your web endpoints, Cloud Functions, Data Connect GraphQL resolvers, and Firebase AI Logic calls against unauthorized replay or billing abuse using&lt;a href="https://firebase.google.com/docs/app-check" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Check with reCAPTCHA Enterprise&lt;/strong&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validate Locally with the Firebase Emulator Suite:&lt;/strong&gt;Run deterministic integration tests against local Firestore, Auth, Functions, and Data Connect PostgreSQL emulators before promoting schema or rule changes to production.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep Server &amp;amp; Client Boundaries Type-Safe:&lt;/strong&gt;Use the modular Firebase Web SDK and generated TypeScript bindings so SSR frameworks like Next.js, SvelteKit, and Angular serialize state cleanly without hydration flickers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Watch Our Related Firebase Video Tutorial on YouTube
&lt;/h2&gt;

&lt;p&gt;Want to see how we architect and debug Firebase web applications live? Watch our related CodingCat.dev session&lt;a href="https://youtu.be/kHrIyTLVerg" rel="noopener noreferrer"&gt;&lt;strong&gt;Building a web application with Next.js and Firebase - Firebase Summit 2021&lt;/strong&gt;&lt;/a&gt;below, and make sure to&lt;a href="https://www.youtube.com/@CodingCatDev?sub_confirmation=1" rel="noopener noreferrer"&gt;&lt;strong&gt;Subscribe to CodingCat.dev on YouTube&lt;/strong&gt;&lt;/a&gt;for weekly full-stack web and AI deep dives:&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/kHrIyTLVerg" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources, Official Docs &amp;amp; Related CodingCat.dev Guides
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Primary Release Source:&lt;/strong&gt;&lt;a href="https://firebase.blog/posts/2025/11/firebase-mcp-and-antigravity/" rel="noopener noreferrer"&gt;Antigravity and Firebase MCP accelerate app development on the Official Firebase Blog&lt;/a&gt;(published 2025-11-21 by Alexander Nohe)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Official Firebase Documentation:&lt;/strong&gt;&lt;a href="https://firebase.google.com/docs/web/setup" rel="noopener noreferrer"&gt;Firebase Developer Docs &amp;amp; Web SDK Reference&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/post/firebase-2025-11-gemini-3-firebase-ai-logic" rel="noopener noreferrer"&gt;Bring any idea to life with Gemini 3 and Firebase AI Logic&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/post/firebase-2025-12-securing-ai-agents" rel="noopener noreferrer"&gt;Securing AI agents and tool calls&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/podcast/firebase-sql-with-data-connect" rel="noopener noreferrer"&gt;Firebase SQL with Data Connect&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/podcast/build-a-custom-no-code-app-in-90-minutes" rel="noopener noreferrer"&gt;Build a Custom No-Code App in 90 Minutes&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions (FAQ)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What are the key capabilities introduced in Antigravity and Firebase MCP accelerate app development?
&lt;/h3&gt;

&lt;p&gt;Antigravity and Firebase MCP accelerate app development (announced 2025-11-21) enhances the Firebase platform for Firebase, Google Cloud, Web Dev, AI, MCP, Next.js, Angular, Serverless workloads. The Firebase MCP server can be added to Antigravity to power up your application development Developers can review the official release notes on the&lt;a href="https://firebase.blog/posts/2025/11/firebase-mcp-and-antigravity/" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Blog&lt;/strong&gt;&lt;/a&gt;alongside the implementation patterns in this guide.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do web developers use Antigravity and Firebase MCP accelerate app development with Next.js, SvelteKit, React, or Angular?
&lt;/h3&gt;

&lt;p&gt;Web developers can integrate these features using the modular Firebase JavaScript/TypeScript SDK, Firebase Data Connect web bindings, and&lt;a href="https://firebase.google.com/docs/app-hosting" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Hosting&lt;/strong&gt;&lt;/a&gt;. Always pair client-side SDK initialization with Firebase App Check and strict Security Rules, and test locally with the Firebase Local Emulator Suite before deploying.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where can I watch video tutorials on Firebase Web and AI development?
&lt;/h3&gt;

&lt;p&gt;You can watch our hands-on Firebase video walkthroughs on the&lt;a href="https://www.youtube.com/@CodingCatDev?sub_confirmation=1" rel="noopener noreferrer"&gt;&lt;strong&gt;CodingCat.dev YouTube Channel&lt;/strong&gt;&lt;/a&gt;, including&lt;a href="https://youtu.be/kHrIyTLVerg" rel="noopener noreferrer"&gt;&lt;strong&gt;Building a web application with Next.js and Firebase - Firebase Summit 2021&lt;/strong&gt;&lt;/a&gt;, and browse our complete Firebase tutorial archive on CodingCat.dev.&lt;/p&gt;

</description>
      <category>firebase</category>
      <category>googlecloud</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Unveiling Firestore Pipeline operations in Firebase: Web Architecture &amp; Implementation Guide</title>
      <dc:creator>Alex Patterson</dc:creator>
      <pubDate>Mon, 26 Oct 2026 02:56:02 +0000</pubDate>
      <link>https://dev.to/codingcatdev/unveiling-firestore-pipeline-operations-in-firebase-web-architecture-implementation-guide-2p11</link>
      <guid>https://dev.to/codingcatdev/unveiling-firestore-pipeline-operations-in-firebase-web-architecture-implementation-guide-2p11</guid>
      <description>&lt;p&gt;Original: &lt;a href="https://codingcat.dev/post/firebase-2026-01-firestore-enterprise-pipeline-operations" rel="noopener noreferrer"&gt;https://codingcat.dev/post/firebase-2026-01-firestore-enterprise-pipeline-operations&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Unveiling Firestore Pipeline operations&lt;/strong&gt;marks an important milestone for full-stack web and AI engineers building on Firebase and Google Cloud. Following the official announcement by Morgan Chen, Tyler Crowe, Minh Nguyen on the&lt;a href="https://firebase.blog/posts/2026/01/firestore-enterprise-pipeline-operations/" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Blog&lt;/strong&gt;&lt;/a&gt;(2026-01-15), this hands-on CodingCat.dev implementation guide breaks down how to adopt these capabilities in modern TypeScript, Next.js, SvelteKit, React, and Angular applications. Today, in partnership with Google Cloud, we’re unveiling a significant evolution for Firestore that gives you a completely reimagined query engine designed for maximum expressiveness and power. Along with Firestore’s new Pipeline operations, this advanced query engine features over a hundred new query capabilities driv&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Unveiling Firestore Pipeline operations Matters for Full-Stack Web Developers
&lt;/h2&gt;

&lt;p&gt;When evaluating every new Firebase release for our production web apps and Google Developer Expert (GDE) architecture reviews, the first question is always how it improves developer velocity, runtime security, and end-user latency in the browser and on the server.Today, in partnership with Google Cloud, we’re unveiling a significant evolution for Firestore that gives you a completely reimagined query engine designed for maximum expressiveness and power. Along with Firestore’s new Pipeline operations, this advanced query engine features over a hundred new query capabilities driven by the latest advancements within the Firestore Enterprise edition. Now you can build even more complex and efficient applications while still getting the real-time sync, offline caching, and AI-powered coding help you love.&lt;/p&gt;

&lt;h3&gt;
  
  
  With a new query engine comes new querying capabilities
&lt;/h3&gt;

&lt;p&gt;To introduce Pipeline operations, we overhauled Firestore Enterprise’s query engine to give you more queryability and flexibility, something you’ve long requested. This new query engine brings us to feature parity with other major NoSQL databases and also allows us to add more rich query features.&lt;/p&gt;

&lt;p&gt;Starting today, you can*&lt;em&gt;chain together multiple stages within a query for things like arbitrary aggregations, map operations, and string matching using regular expressions.&lt;/em&gt;*You can run queries with indexes being optional, giving you full control over when you want to create indexes to improve query performance. To give you an idea of what’s now possible, here’s an example:&lt;/p&gt;

&lt;p&gt;Note: This example assumes you’re familiar with Firestore’s&lt;a href="https://g.dev/firebase/firestore-data-model" rel="noopener noreferrer"&gt;&lt;strong&gt;data model&lt;/strong&gt;&lt;/a&gt;and&lt;a href="https://g.dev/firebase/firestore-queries-guide" rel="noopener noreferrer"&gt;&lt;strong&gt;query methods&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Suppose you have an app for sharing food recipes, and you allow user-defined tags on recipes. You might represent a recipe as a document with some fields for essential data like the recipe text itself. Since a tag can be represented with just a string, you could add tags directly to the recipe document as an array of strings:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;title:&lt;/span&gt;&lt;span class="w"&gt; 
  &lt;/span&gt;&lt;span class="err"&gt;instructions:&lt;/span&gt;&lt;span class="w"&gt; 
  &lt;/span&gt;&lt;span class="err"&gt;authorId:&lt;/span&gt;&lt;span class="w"&gt; 
  &lt;/span&gt;&lt;span class="err"&gt;tags:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you’re familiar with Firestore, you know how to write a query to search for all recipes that contain a given tag. But what if you want to present a list of most-popular suggested search tags for the user? Previously, there was no way to extract the array data from this document and aggregate it within a query. You would have to maintain tag metadata elsewhere in your database and keep it up-to-date.&lt;/p&gt;

&lt;p&gt;With Pipeline operations in Firestore Enterprise edition, we can unnest the array and pick out the most popular tags to suggest to the user. Here’s how to do just that in JavaScript:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Fetch 10 tags sorted by most popular.&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt;

  &lt;span class="c1"&gt;// Starting with the collection of recipe documents:&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;

  &lt;span class="c1"&gt;// Unnest each tag within the `tags` array to its own document.&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;

  &lt;span class="c1"&gt;// Count the number of instances of each tag across recipes and&lt;/span&gt;
  &lt;span class="c1"&gt;// consolidate documents sharing a tagName into a single document&lt;/span&gt;
  &lt;span class="c1"&gt;// per tagName.&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;
    &lt;span class="nx"&gt;accumulators&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="nx"&gt;groups&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;

  &lt;span class="c1"&gt;// Sort the resulting tags by their count.&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;

  &lt;span class="c1"&gt;// Limit query results to just the top ten tags.&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;

  &lt;span class="p"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Samples in this post show the syntax for the Node.js Admin SDK, but you can find syntax for other languages and platforms&lt;a href="https://g.dev/firebase/firestore-pipeline-stage-syntax" rel="noopener noreferrer"&gt;&lt;strong&gt;in the docs&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Firestore now embodies the best of both worlds, letting you choose between the simple performance guarantee of Standard edition and the new, more powerful Enterprise edition.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pipeline operations
&lt;/h3&gt;

&lt;p&gt;Pipeline operations are a set of APIs built into the Firestore SDKs that allow developers to describe transformations within Firestore that are composed of stages, expressions, and functions. Like in a programming language, stages and expressions can be combined in nearly any way, provided the data types are correct. This vastly improves on the capabilities of Standard edition queries. You can try out Pipeline operations immediately by updating your client SDKs to the latest version and connecting your client to an Firestore Enterprise edition database (you’ll need to create a new database). After upgrading, you can convert existing queries to Pipeline operations:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Existing query&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt;

&lt;span class="c1"&gt;// Convert the query into a pipeline&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And then you can immediately begin working with the new Pipeline operations.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// From the last snippet&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We’ve added over a hundred new query features in this update and we’re working on even more, so stay tuned for more updates. You can see the full list of new features in the&lt;a href="https://g.dev/firebase/firestore-pipelines-overview" rel="noopener noreferrer"&gt;&lt;strong&gt;docs&lt;/strong&gt;&lt;/a&gt;. Pipeline operations are available now on Android, iOS, web, and the admin SDKs and will be coming to Flutter, Unity, and C++ soon.&lt;/p&gt;

&lt;p&gt;Firestore Enterprise edition doesn’t index collections by default, nor does it require a collection be indexed in order for it to be queried. For veteran Firestore developers, this means Enterprise edition will generally be more performant when writing data and incur lower storage costs. Querying large unindexed collections will be slow, so Firestore provides query analysis tools like&lt;a href="https://g.dev/firebase/firestore-query-explain" rel="noopener noreferrer"&gt;&lt;strong&gt;Query Explain&lt;/strong&gt;&lt;/a&gt;and&lt;a href="https://g.dev/firebase/firestore-query-insights" rel="noopener noreferrer"&gt;&lt;strong&gt;Query Insights&lt;/strong&gt;&lt;/a&gt;to help you identify performance bottlenecks in your queries so you can build only the indexes your app really needs.&lt;/p&gt;

&lt;p&gt;Enterprise edition also supports&lt;a href="https://g.dev/firebase/firestore-index-density-specs" rel="noopener noreferrer"&gt;&lt;strong&gt;sparse, non-sparse&lt;/strong&gt;&lt;/a&gt;and&lt;a href="https://g.dev/firebase/firestore-unique-index-constraints" rel="noopener noreferrer"&gt;&lt;strong&gt;unique indexes&lt;/strong&gt;&lt;/a&gt;, useful for enforcing collection behavior as well as improving query performance.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should I use the Enterprise edition?
&lt;/h3&gt;

&lt;p&gt;Despite its name, Firestore Enterprise edition is for everyone. You can create an Enterprise edition database via Firebase console and get started with a generous free tier just like Standard edition. When choosing between the two, there are a couple of significant differences:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Firestore Enterprise edition combines writes and deletes, as simply write operations. It also includes a free tier for write operations. This means you’ll often get more mileage out of the free tier when prototyping on Enterprise edition, especially compared to Standard edition, unless you’re doing a perfectly equal number of deletes and non-delete writes.&lt;/li&gt;
&lt;li&gt;Enterprise edition bills by data chunks for reads and write operations, so if you have small documents you’ll generally be billed for less. See the&lt;a href="https://g.dev/firebase/firestore-enterprise-pricing-pipelines" rel="noopener noreferrer"&gt;&lt;strong&gt;pricing guide&lt;/strong&gt;&lt;/a&gt;for more details.&lt;/li&gt;
&lt;li&gt;Enterprise edition leaves you in charge of your database indexes, meaning it won’t automatically create single field indexes for you like Standard edition does. This impacts both performance and pricing, unindexed collections may be more expensive and slower to query.&lt;/li&gt;
&lt;li&gt;And, of course, Enterprise edition supports Pipeline operations.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How do I adopt this in my existing Firestore app?
&lt;/h3&gt;

&lt;p&gt;You can use Firestore’s&lt;a href="https://g.dev/firebase/firestore-import-export" rel="noopener noreferrer"&gt;&lt;strong&gt;import and export service&lt;/strong&gt;&lt;/a&gt;to migrate your data from an existing Standard edition database into a new Enterprise edition database. Keep in mind you’ll need to recreate your indexes and security rules in the new database, and any existing versions of client apps that point to the old database will still read from and write to the old database.&lt;/p&gt;

&lt;p&gt;Once you’ve created your Enterprise edition database, all you need to do is update your SDK to the latest Firestore SDK and initialize it with the name of the database you created earlier.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt;
  &lt;span class="nx"&gt;projectId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
  &lt;span class="nx"&gt;databaseId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Can I stay on Standard edition forever?
&lt;/h3&gt;

&lt;p&gt;Yes! Standard edition isn’t going anywhere. The SDKs’ query methods you’re familiar with will also continue to remain available, so you do not need to migrate your code in the future. However, pipeline operations will result in a server error if run against a Standard edition database.&lt;/p&gt;

&lt;h3&gt;
  
  
  What’s next?
&lt;/h3&gt;

&lt;p&gt;Regardless of what stage of the app development lifecycle you’re in, Firestore Enterprise edition is ready in public preview for all of your database needs. Take a look at the new&lt;a href="https://g.dev/firebase/firestore-pipelines-overview" rel="noopener noreferrer"&gt;&lt;strong&gt;docs&lt;/strong&gt;&lt;/a&gt;to get started, and if you have any feedback, you can contact us&lt;a href="https://firebase.uservoice.com/forums/948424-general?category_id=464890" rel="noopener noreferrer"&gt;&lt;strong&gt;here&lt;/strong&gt;&lt;/a&gt;or on the issue trackers of the GitHub repositories for the Firestore SDKs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Production Web Architecture &amp;amp; Security Checklist
&lt;/h2&gt;

&lt;p&gt;Whether you are deploying on&lt;a href="https://firebase.google.com/docs/app-hosting" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Hosting&lt;/strong&gt;&lt;/a&gt;, Cloudflare Workers, or Vercel, shipping AI features to production requires defense-in-depth across three layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enforce Firebase App Check &amp;amp; Attestation:&lt;/strong&gt;Protect your web endpoints, Cloud Functions, Data Connect GraphQL resolvers, and Firebase AI Logic calls against unauthorized replay or billing abuse using&lt;a href="https://firebase.google.com/docs/app-check" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Check with reCAPTCHA Enterprise&lt;/strong&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validate Locally with the Firebase Emulator Suite:&lt;/strong&gt;Run deterministic integration tests against local Firestore, Auth, Functions, and Data Connect PostgreSQL emulators before promoting schema or rule changes to production.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep Server &amp;amp; Client Boundaries Type-Safe:&lt;/strong&gt;Use the modular Firebase Web SDK and generated TypeScript bindings so SSR frameworks like Next.js, SvelteKit, and Angular serialize state cleanly without hydration flickers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Watch Our Related Firebase Video Tutorial on YouTube
&lt;/h2&gt;

&lt;p&gt;Want to see how we architect and debug Firebase web applications live? Watch our related CodingCat.dev session&lt;a href="https://youtu.be/wGbEM0CXMuI" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Security Rules: Effortless control over your app's data.&lt;/strong&gt;&lt;/a&gt;below, and make sure to&lt;a href="https://www.youtube.com/@CodingCatDev?sub_confirmation=1" rel="noopener noreferrer"&gt;&lt;strong&gt;Subscribe to CodingCat.dev on YouTube&lt;/strong&gt;&lt;/a&gt;for weekly full-stack web and AI deep dives:&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/wGbEM0CXMuI" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources, Official Docs &amp;amp; Related CodingCat.dev Guides
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Primary Release Source:&lt;/strong&gt;&lt;a href="https://firebase.blog/posts/2026/01/firestore-enterprise-pipeline-operations/" rel="noopener noreferrer"&gt;Unveiling Firestore Pipeline operations on the Official Firebase Blog&lt;/a&gt;(published 2026-01-15 by Morgan Chen, Tyler Crowe, Minh Nguyen)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Official Firebase Documentation:&lt;/strong&gt;&lt;a href="https://firebase.google.com/docs/web/setup" rel="noopener noreferrer"&gt;Firebase Developer Docs &amp;amp; Web SDK Reference&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/post/firebase-2026-01-continuous-improvement" rel="noopener noreferrer"&gt;Improve AI output with continuous improvement&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/post/firebase-2026-01-boost-accuracy-with-the-prompt-optimizer" rel="noopener noreferrer"&gt;Boost accuracy with the prompt optimizer&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/podcast/firebase-sql-with-data-connect" rel="noopener noreferrer"&gt;Firebase SQL with Data Connect&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/podcast/build-a-custom-no-code-app-in-90-minutes" rel="noopener noreferrer"&gt;Build a Custom No-Code App in 90 Minutes&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions (FAQ)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What are the key capabilities introduced in Unveiling Firestore Pipeline operations?
&lt;/h3&gt;

&lt;p&gt;Unveiling Firestore Pipeline operations (announced 2026-01-15) enhances the Firebase platform for Firebase, Google Cloud, Web Dev, AI, TypeScript, Security workloads. Today, in partnership with Google Cloud, we’re unveiling a significant evolution for Firestore that gives you a completely reimagined query engine designed for maximum expressiveness and power. Along with Firestore’s new Pipeline operations, this advanced query engine features over a hundred new query capabilities driven by the latest advancements within the Firestore Enterprise edition. Now you can build even more complex and efficient applications while still getting the real-time sync, offline caching, and AI-powered coding help you love. Developers can review the official release notes on the&lt;a href="https://firebase.blog/posts/2026/01/firestore-enterprise-pipeline-operations/" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Blog&lt;/strong&gt;&lt;/a&gt;alongside the implementation patterns in this guide.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do web developers use Unveiling Firestore Pipeline operations with Next.js, SvelteKit, React, or Angular?
&lt;/h3&gt;

&lt;p&gt;Web developers can integrate these features using the modular Firebase JavaScript/TypeScript SDK, Firebase Data Connect web bindings, and&lt;a href="https://firebase.google.com/docs/app-hosting" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Hosting&lt;/strong&gt;&lt;/a&gt;. Always pair client-side SDK initialization with Firebase App Check and strict Security Rules, and test locally with the Firebase Local Emulator Suite before deploying.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where can I watch video tutorials on Firebase Web and AI development?
&lt;/h3&gt;

&lt;p&gt;You can watch our hands-on Firebase video walkthroughs on the&lt;a href="https://www.youtube.com/@CodingCatDev?sub_confirmation=1" rel="noopener noreferrer"&gt;&lt;strong&gt;CodingCat.dev YouTube Channel&lt;/strong&gt;&lt;/a&gt;, including&lt;a href="https://youtu.be/wGbEM0CXMuI" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Security Rules: Effortless control over your app's data.&lt;/strong&gt;&lt;/a&gt;, and browse our complete Firebase tutorial archive on CodingCat.dev.&lt;/p&gt;

</description>
      <category>firebase</category>
      <category>googlecloud</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Coffee with Firebase Studio's App Prototyping agent: Web Architecture &amp; Implementation Guide</title>
      <dc:creator>Alex Patterson</dc:creator>
      <pubDate>Mon, 26 Oct 2026 02:55:32 +0000</pubDate>
      <link>https://dev.to/codingcatdev/coffee-with-firebase-studios-app-prototyping-agent-web-architecture-implementation-guide-2noe</link>
      <guid>https://dev.to/codingcatdev/coffee-with-firebase-studios-app-prototyping-agent-web-architecture-implementation-guide-2noe</guid>
      <description>&lt;p&gt;Original: &lt;a href="https://codingcat.dev/post/firebase-2025-09-coffee-with-app-prototyping-agent" rel="noopener noreferrer"&gt;https://codingcat.dev/post/firebase-2025-09-coffee-with-app-prototyping-agent&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Coffee with Firebase Studio's App Prototyping agent&lt;/strong&gt;marks an important milestone for full-stack web and AI engineers building on Firebase and Google Cloud. Following the official announcement by James O'Reilly on the&lt;a href="https://firebase.blog/posts/2025/09/coffee-with-app-prototyping-agent/" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Blog&lt;/strong&gt;&lt;/a&gt;(2025-09-09), this hands-on CodingCat.dev implementation guide breaks down how to adopt these capabilities in modern TypeScript, Next.js, SvelteKit, React, and Angular applications. This morning I decided to have a coffee chat with Firebase Studio’s App Prototyping agent. I thought if we got to know each other better we could improve our working relationship so I asked a few questions. TIL… Click the Generate button within each chat window to reveal Gemini’s responses.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Coffee with Firebase Studio's App Prototyping agent Matters for Full-Stack Web Developers
&lt;/h2&gt;

&lt;p&gt;When evaluating every new Firebase release for our production web apps and Google Developer Expert (GDE) architecture reviews, the first question is always how it improves developer velocity, runtime security, and end-user latency in the browser and on the server.This morning I decided to have a coffee chat with Firebase Studio’s App Prototyping agent. I thought if we got to know each other better we could improve our working relationship so I asked a few questions. TIL…&lt;/p&gt;

&lt;p&gt;Click the*&lt;em&gt;Generate&lt;/em&gt;*button within each chat window to reveal Gemini’s responses.&lt;/p&gt;

&lt;h3&gt;
  
  
  The chat
&lt;/h3&gt;

&lt;p&gt;How might we work together more effectively?&lt;/p&gt;

&lt;p&gt;Are there other ways we can make the process smoother?&lt;/p&gt;

&lt;p&gt;What's the best way for people new to AI code generation to approach it as a form of pair programming?&lt;/p&gt;

&lt;h3&gt;
  
  
  What’s next?
&lt;/h3&gt;

&lt;p&gt;My coffee with the agent was surprisingly insightful. It helped me shift my mindset from simply giving commands to engaging in a true collaboration.&lt;/p&gt;

&lt;p&gt;The best way to understand this new dynamic is to experience it yourself!&lt;/p&gt;

&lt;p&gt;If you’re ready to see how this collaborative approach can transform your development workflow, fire up a new project in&lt;a href="https://g.dev/firebase/studio-app-prototyping" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Studio&lt;/strong&gt;&lt;/a&gt;. Start a conversation, give it a goal, and see what you can build together. You might be surprised at how natural your new pair-programming partnership feels.&lt;/p&gt;

&lt;h3&gt;
  
  
  Footnotes
&lt;/h3&gt;

&lt;h2&gt;
  
  
  TypeScript &amp;amp; Web SDK Implementation Pattern
&lt;/h2&gt;

&lt;p&gt;Here is the baseline configuration pattern for integrating Coffee with Firebase Studio's App Prototyping agent into a modern TypeScript web application:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;initializeApp&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;firebase/app&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;getAI&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;getGenerativeModel&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;GoogleAIBackend&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;firebase/ai&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;initializeAppCheck&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ReCaptchaEnterpriseProvider&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;firebase/app-check&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;initializeApp&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;NEXT_PUBLIC_FIREBASE_API_KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;projectId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;NEXT_PUBLIC_FIREBASE_PROJECT_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// Protect AI endpoints in web apps with Firebase App Check&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;undefined&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;initializeAppCheck&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;provider&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ReCaptchaEnterpriseProvider&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;NEXT_PUBLIC_RECAPTCHA_SITE_KEY&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="na"&gt;isTokenAutoRefreshEnabled&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ai&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;getAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;backend&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;GoogleAIBackend&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;geminiModel&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;getGenerativeModel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ai&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;gemini-2.5-flash&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Production Web Architecture &amp;amp; Security Checklist
&lt;/h2&gt;

&lt;p&gt;Whether you are deploying on&lt;a href="https://firebase.google.com/docs/app-hosting" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Hosting&lt;/strong&gt;&lt;/a&gt;, Cloudflare Workers, or Vercel, shipping AI features to production requires defense-in-depth across three layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enforce Firebase App Check &amp;amp; Attestation:&lt;/strong&gt;Protect your web endpoints, Cloud Functions, Data Connect GraphQL resolvers, and Firebase AI Logic calls against unauthorized replay or billing abuse using&lt;a href="https://firebase.google.com/docs/app-check" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Check with reCAPTCHA Enterprise&lt;/strong&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validate Locally with the Firebase Emulator Suite:&lt;/strong&gt;Run deterministic integration tests against local Firestore, Auth, Functions, and Data Connect PostgreSQL emulators before promoting schema or rule changes to production.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep Server &amp;amp; Client Boundaries Type-Safe:&lt;/strong&gt;Use the modular Firebase Web SDK and generated TypeScript bindings so SSR frameworks like Next.js, SvelteKit, and Angular serialize state cleanly without hydration flickers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Watch Our Related Firebase Video Tutorial on YouTube
&lt;/h2&gt;

&lt;p&gt;Want to see how we architect and debug Firebase web applications live? Watch our related CodingCat.dev session&lt;a href="https://youtu.be/N25khadfUag" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase SQL with Data Connect&lt;/strong&gt;&lt;/a&gt;below, and make sure to&lt;a href="https://www.youtube.com/@CodingCatDev?sub_confirmation=1" rel="noopener noreferrer"&gt;&lt;strong&gt;Subscribe to CodingCat.dev on YouTube&lt;/strong&gt;&lt;/a&gt;for weekly full-stack web and AI deep dives:&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/N25khadfUag" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources, Official Docs &amp;amp; Related CodingCat.dev Guides
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Primary Release Source:&lt;/strong&gt;&lt;a href="https://firebase.blog/posts/2025/09/coffee-with-app-prototyping-agent/" rel="noopener noreferrer"&gt;Coffee with Firebase Studio's App Prototyping agent on the Official Firebase Blog&lt;/a&gt;(published 2025-09-09 by James O'Reilly)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Official Firebase Documentation:&lt;/strong&gt;&lt;a href="https://firebase.google.com/docs/web/setup" rel="noopener noreferrer"&gt;Firebase Developer Docs &amp;amp; Web SDK Reference&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/post/firebase-2025-09-dataconnect-searches" rel="noopener noreferrer"&gt;Full-text search and other searches with Data Connect&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/post/firebase-2025-09-firebase-ai-logic-updates" rel="noopener noreferrer"&gt;New Firebase AI Logic features to explore - September 2025 updates&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/podcast/firebase-sql-with-data-connect" rel="noopener noreferrer"&gt;Firebase SQL with Data Connect&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/podcast/build-a-custom-no-code-app-in-90-minutes" rel="noopener noreferrer"&gt;Build a Custom No-Code App in 90 Minutes&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions (FAQ)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What are the key capabilities introduced in Coffee with Firebase Studio's App Prototyping agent?
&lt;/h3&gt;

&lt;p&gt;Coffee with Firebase Studio's App Prototyping agent (announced 2025-09-09) enhances the Firebase platform for Firebase, Google Cloud, Web Dev, AI workloads. This morning I decided to have a coffee chat with Firebase Studio’s App Prototyping agent. I thought if we got to know each other better we could improve our working relationship so I asked a few questions. TIL… Developers can review the official release notes on the&lt;a href="https://firebase.blog/posts/2025/09/coffee-with-app-prototyping-agent/" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Blog&lt;/strong&gt;&lt;/a&gt;alongside the implementation patterns in this guide.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do web developers use Coffee with Firebase Studio's App Prototyping agent with Next.js, SvelteKit, React, or Angular?
&lt;/h3&gt;

&lt;p&gt;Web developers can integrate these features using the modular Firebase JavaScript/TypeScript SDK, Firebase Data Connect web bindings, and&lt;a href="https://firebase.google.com/docs/app-hosting" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Hosting&lt;/strong&gt;&lt;/a&gt;. Always pair client-side SDK initialization with Firebase App Check and strict Security Rules, and test locally with the Firebase Local Emulator Suite before deploying.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where can I watch video tutorials on Firebase Web and AI development?
&lt;/h3&gt;

&lt;p&gt;You can watch our hands-on Firebase video walkthroughs on the&lt;a href="https://www.youtube.com/@CodingCatDev?sub_confirmation=1" rel="noopener noreferrer"&gt;&lt;strong&gt;CodingCat.dev YouTube Channel&lt;/strong&gt;&lt;/a&gt;, including&lt;a href="https://youtu.be/N25khadfUag" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase SQL with Data Connect&lt;/strong&gt;&lt;/a&gt;, and browse our complete Firebase tutorial archive on CodingCat.dev.&lt;/p&gt;

</description>
      <category>firebase</category>
      <category>googlecloud</category>
      <category>webdev</category>
    </item>
    <item>
      <title>App Hosting has faster deployments, route-based monitoring, and improved CI/CD setup in Firebase: Web Architecture &amp; Implementation Guide</title>
      <dc:creator>Alex Patterson</dc:creator>
      <pubDate>Mon, 26 Oct 2026 02:55:31 +0000</pubDate>
      <link>https://dev.to/codingcatdev/app-hosting-has-faster-deployments-route-based-monitoring-and-improved-cicd-setup-in-firebase-27k5</link>
      <guid>https://dev.to/codingcatdev/app-hosting-has-faster-deployments-route-based-monitoring-and-improved-cicd-setup-in-firebase-27k5</guid>
      <description>&lt;p&gt;Original: &lt;a href="https://codingcat.dev/post/firebase-2025-08-apphosting-august-update" rel="noopener noreferrer"&gt;https://codingcat.dev/post/firebase-2025-08-apphosting-august-update&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;App Hosting has faster deployments, route-based monitoring, and improved CI/CD setup&lt;/strong&gt;marks an important milestone for full-stack web and AI engineers building on Firebase and Google Cloud. Following the official announcement by Jeff Huleatt on the&lt;a href="https://firebase.blog/posts/2025/08/apphosting-august-update/" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Blog&lt;/strong&gt;&lt;/a&gt;(2025-08-25), this hands-on CodingCat.dev implementation guide breaks down how to adopt these capabilities in modern TypeScript, Next.js, SvelteKit, React, and Angular applications. We’re excited to share some recent updates to App Hosting that make it an even better platform for your full-stack web apps! Since our last update (which included more ways to deploy), we’ve:&lt;/p&gt;

&lt;h2&gt;
  
  
  Why App Hosting has faster deployments, route-based monitoring, and improved CI/CD setup Matters for Full-Stack Web Developers
&lt;/h2&gt;

&lt;p&gt;When evaluating every new Firebase release for our production web apps and Google Developer Expert (GDE) architecture reviews, the first question is always how it improves developer velocity, runtime security, and end-user latency in the browser and on the server.We’re excited to share some recent updates to App Hosting that make it an even better platform for your full-stack web apps!&lt;/p&gt;

&lt;p&gt;Since our&lt;a href="https://firebase.blog/posts/2025/05/more-ways-to-deploy-app-hosting/" rel="noopener noreferrer"&gt;&lt;strong&gt;last update&lt;/strong&gt;&lt;/a&gt;(which included more ways to deploy), we’ve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Made deployments faster by optimizing how apps are built&lt;/li&gt;
&lt;li&gt;Enhanced the monitoring dashboard to provide deeper insights into specific parts of your app&lt;/li&gt;
&lt;li&gt;Added GitHub connection management to the Firebase console, so you have the flexibility to set up CI/CD after your first deployment&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Faster deployments
&lt;/h3&gt;

&lt;p&gt;Your App Hosting deployments are getting faster. We’re rolling out a series of optimizations to the build pipeline, and the first is now live. The Next.js adapter for App Hosting now creates smaller containers for your server by optimizing which files are included in the deployment. This means the app binary that gets deployed is lighter weight and takes less time to upload and download.&lt;/p&gt;

&lt;p&gt;Our internal monitoring suggests this change has made builds*&lt;em&gt;30% faster for customers&lt;/em&gt;*on average. This is just the first of many steps toward our goal of dramatically reducing deployment time on App Hosting.&lt;/p&gt;

&lt;h3&gt;
  
  
  Route-based monitoring
&lt;/h3&gt;

&lt;p&gt;The App Hosting dashboard in the Firebase console has stats for your whole app, both on the Overview and Usage tabs:&lt;/p&gt;

&lt;p&gt;These stats, which are based on metrics reported from Cloud CDN and Cloud Run, can give a great overview of the general health and performance of a web app. But some parts of an app are much more important than others, and that’s where route-based monitoring comes in. This new feature allows you to specify up to 20 routes in your app that are important to you, and shows metrics specific to each.&lt;/p&gt;

&lt;p&gt;There are a variety of metrics designed to answer important questions about each route:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Requests: “How popular is this route?”&lt;/li&gt;
&lt;li&gt;Errors: “Does my site work?”&lt;/li&gt;
&lt;li&gt;Latency: “Do users have to wait a long time for my server-rendered pages to load?”&lt;/li&gt;
&lt;li&gt;CDN cache hit rate: “How can I reduce latency and cost?”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, the&lt;code&gt;checkout/*&lt;/code&gt;route of an e-commerce app is business-critical. If it starts showing elevated error rates, you can tell at a glance.&lt;/p&gt;

&lt;p&gt;For product pages, you’d likely focus more on the CDN cache hit rate and latency metrics to make sure that shoppers can view new items quickly, and at minimal cost to you.&lt;/p&gt;

&lt;p&gt;The requests to your backend can even serve as a basic analytics tool to understand your customer behavior based on requests to your backend without the need to add any additional scripts to your website. In the example above,&lt;code&gt;shop/computers/*&lt;/code&gt;is about equal with&lt;code&gt;shop/action-figures/*&lt;/code&gt;, but if one suddenly jumps above the other after a new marketing campaign, it would be a good indicator that the marketing efforts are working.&lt;/p&gt;

&lt;p&gt;Just like the other charts in the App Hosting dashboard, rollouts are clearly marked so that you can see the impact of recent changes.&lt;/p&gt;

&lt;p&gt;Add routes to your app today! Click “Manage routes” in the Firebase console to get started. Also, take a look at the&lt;a href="https://g.dev/firebase/app-hosting-route-monitoring" rel="noopener noreferrer"&gt;&lt;strong&gt;Monitor routes&lt;/strong&gt;&lt;/a&gt;documentation to learn more about accepted route patterns, pricing, and use cases.&lt;/p&gt;

&lt;h3&gt;
  
  
  Add a GitHub connection
&lt;/h3&gt;

&lt;p&gt;App Hosting used to only support adding a GitHub connection at the time a backend was created, which meant you couldn’t easily switch a backend from a local deployment workflow to one with CI/CD. Now, you can set up continuous deployment for a backend at any time.&lt;/p&gt;

&lt;p&gt;For example, you can&lt;a href="https://g.dev/firebase/studio-deploy-app-hosting-section" rel="noopener noreferrer"&gt;&lt;strong&gt;publish to App Hosting from Firebase Studio&lt;/strong&gt;&lt;/a&gt;without having a GitHub repo set up so you can quickly share your prototyped app with friends. When you’re ready to professionalize your workflow with CI/CD, you can&lt;a href="https://g.dev/firebase/studio-github-integration" rel="noopener noreferrer"&gt;&lt;strong&gt;create a GitHub repository for the app&lt;/strong&gt;&lt;/a&gt;and connect your existing App Hosting backend to it. You can work on new features in branches, review in a pull request, and merge to your main branch knowing that App Hosting will deploy newly-merged pull requests automatically and securely.&lt;/p&gt;

&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;p&gt;We hope these updates make it easier for you to deploy and monitor your full-stack web apps. While you try them out, we’ll keep working to make App Hosting even better.&lt;/p&gt;

&lt;p&gt;If you haven’t already, head over to the&lt;a href="https://g.dev/firebase/app-hosting-console-august-update" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase console&lt;/strong&gt;&lt;/a&gt;and explore our&lt;a href="https://g.dev/firebase/app-hosting-august-update-docs" rel="noopener noreferrer"&gt;&lt;strong&gt;documentation&lt;/strong&gt;&lt;/a&gt;to deploy your first app. As always, if you have questions, you can reach out on any of our&lt;a href="https://firebase.google.com/support" rel="noopener noreferrer"&gt;&lt;strong&gt;support channels&lt;/strong&gt;&lt;/a&gt;, or post questions on Stack Overflow. And if you have ideas for any new features, let us know on&lt;a href="https://firebase.uservoice.com/forums/948424-general?category_id=501599" rel="noopener noreferrer"&gt;&lt;strong&gt;UserVoice&lt;/strong&gt;&lt;/a&gt;!&lt;/p&gt;

&lt;h2&gt;
  
  
  TypeScript &amp;amp; Web SDK Implementation Pattern
&lt;/h2&gt;

&lt;p&gt;Here is the baseline configuration pattern for integrating App Hosting has faster deployments, route-based monitoring, and improved CI/CD setup into a modern TypeScript web application:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;initializeApp&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;getApps&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;firebase/app&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;getFirestore&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;collection&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;where&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;getDocs&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;firebase/firestore&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;getAuth&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;firebase/auth&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;firebaseConfig&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;NEXT_PUBLIC_FIREBASE_API_KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;authDomain&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;projectId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;NEXT_PUBLIC_FIREBASE_PROJECT_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;getApps&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nf"&gt;getApps&lt;/span&gt;&lt;span class="p"&gt;()[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;initializeApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;firebaseConfig&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;db&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;getFirestore&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;auth&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;getAuth&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Production Web Architecture &amp;amp; Security Checklist
&lt;/h2&gt;

&lt;p&gt;Whether you are deploying on&lt;a href="https://firebase.google.com/docs/app-hosting" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Hosting&lt;/strong&gt;&lt;/a&gt;, Cloudflare Workers, or Vercel, shipping Next.js features to production requires defense-in-depth across three layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enforce Firebase App Check &amp;amp; Attestation:&lt;/strong&gt;Protect your web endpoints, Cloud Functions, Data Connect GraphQL resolvers, and Firebase AI Logic calls against unauthorized replay or billing abuse using&lt;a href="https://firebase.google.com/docs/app-check" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Check with reCAPTCHA Enterprise&lt;/strong&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validate Locally with the Firebase Emulator Suite:&lt;/strong&gt;Run deterministic integration tests against local Firestore, Auth, Functions, and Data Connect PostgreSQL emulators before promoting schema or rule changes to production.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep Server &amp;amp; Client Boundaries Type-Safe:&lt;/strong&gt;Use the modular Firebase Web SDK and generated TypeScript bindings so SSR frameworks like Next.js, SvelteKit, and Angular serialize state cleanly without hydration flickers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Watch Our Related Firebase Video Tutorial on YouTube
&lt;/h2&gt;

&lt;p&gt;Want to see how we architect and debug Firebase web applications live? Watch our related CodingCat.dev session&lt;a href="https://youtu.be/kHrIyTLVerg" rel="noopener noreferrer"&gt;&lt;strong&gt;Building a web application with Next.js and Firebase - Firebase Summit 2021&lt;/strong&gt;&lt;/a&gt;below, and make sure to&lt;a href="https://www.youtube.com/@CodingCatDev?sub_confirmation=1" rel="noopener noreferrer"&gt;&lt;strong&gt;Subscribe to CodingCat.dev on YouTube&lt;/strong&gt;&lt;/a&gt;for weekly full-stack web and AI deep dives:&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/kHrIyTLVerg" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources, Official Docs &amp;amp; Related CodingCat.dev Guides
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Primary Release Source:&lt;/strong&gt;&lt;a href="https://firebase.blog/posts/2025/08/apphosting-august-update/" rel="noopener noreferrer"&gt;App Hosting has faster deployments, route-based monitoring, and improved CI/CD setup on the Official Firebase Blog&lt;/a&gt;(published 2025-08-25 by Jeff Huleatt)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Official Firebase Documentation:&lt;/strong&gt;&lt;a href="https://firebase.google.com/docs/web/setup" rel="noopener noreferrer"&gt;Firebase Developer Docs &amp;amp; Web SDK Reference&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/post/firebase-2025-07-grounding-google-search-ai-logic" rel="noopener noreferrer"&gt;Grounding with Google Search in the Firebase AI Logic client SDKs&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/post/firebase-2025-08-firestore-mongodb-general-availability" rel="noopener noreferrer"&gt;Firestore with MongoDB compatibility is now generally available&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/podcast/firebase-sql-with-data-connect" rel="noopener noreferrer"&gt;Firebase SQL with Data Connect&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/podcast/build-a-custom-no-code-app-in-90-minutes" rel="noopener noreferrer"&gt;Build a Custom No-Code App in 90 Minutes&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions (FAQ)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What are the key capabilities introduced in App Hosting has faster deployments, route-based monitoring, and improved CI/CD setup?
&lt;/h3&gt;

&lt;p&gt;App Hosting has faster deployments, route-based monitoring, and improved CI/CD setup (announced 2025-08-25) enhances the Firebase platform for Firebase, Google Cloud, Web Dev, Next.js, Serverless workloads. We’re excited to share some recent updates to App Hosting that make it an even better platform for your full-stack web apps! Developers can review the official release notes on the&lt;a href="https://firebase.blog/posts/2025/08/apphosting-august-update/" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Blog&lt;/strong&gt;&lt;/a&gt;alongside the implementation patterns in this guide.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do web developers use App Hosting has faster deployments, route-based monitoring, and improved CI/CD setup with Next.js, SvelteKit, React, or Angular?
&lt;/h3&gt;

&lt;p&gt;Web developers can integrate these features using the modular Firebase JavaScript/TypeScript SDK, Firebase Data Connect web bindings, and&lt;a href="https://firebase.google.com/docs/app-hosting" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Hosting&lt;/strong&gt;&lt;/a&gt;. Always pair client-side SDK initialization with Firebase App Check and strict Security Rules, and test locally with the Firebase Local Emulator Suite before deploying.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where can I watch video tutorials on Firebase Web and AI development?
&lt;/h3&gt;

&lt;p&gt;You can watch our hands-on Firebase video walkthroughs on the&lt;a href="https://www.youtube.com/@CodingCatDev?sub_confirmation=1" rel="noopener noreferrer"&gt;&lt;strong&gt;CodingCat.dev YouTube Channel&lt;/strong&gt;&lt;/a&gt;, including&lt;a href="https://youtu.be/kHrIyTLVerg" rel="noopener noreferrer"&gt;&lt;strong&gt;Building a web application with Next.js and Firebase - Firebase Summit 2021&lt;/strong&gt;&lt;/a&gt;, and browse our complete Firebase tutorial archive on CodingCat.dev.&lt;/p&gt;

</description>
      <category>firebase</category>
      <category>googlecloud</category>
      <category>webdev</category>
    </item>
    <item>
      <title>What's new in Firebase at I/O 2025: Web Architecture &amp; Implementation Guide</title>
      <dc:creator>Alex Patterson</dc:creator>
      <pubDate>Mon, 26 Oct 2026 02:55:01 +0000</pubDate>
      <link>https://dev.to/codingcatdev/whats-new-in-firebase-at-io-2025-web-architecture-implementation-guide-41hi</link>
      <guid>https://dev.to/codingcatdev/whats-new-in-firebase-at-io-2025-web-architecture-implementation-guide-41hi</guid>
      <description>&lt;p&gt;Original: &lt;a href="https://codingcat.dev/post/firebase-2025-05-whats-new-at-google-io" rel="noopener noreferrer"&gt;https://codingcat.dev/post/firebase-2025-05-whats-new-at-google-io&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's new in Firebase at I/O 2025&lt;/strong&gt;marks an important milestone for full-stack web and AI engineers building on Firebase and Google Cloud. Following the official announcement by Aja Hammerly, Seba Gnagnarella on the&lt;a href="https://firebase.blog/posts/2025/05/whats-new-at-google-io/" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Blog&lt;/strong&gt;&lt;/a&gt;(2025-05-20), this hands-on CodingCat.dev implementation guide breaks down how to adopt these capabilities in modern TypeScript, Next.js, SvelteKit, React, and Angular applications. Update: As of August 2026, Vertex AI in Firebase is now called Firebase AI Logic and Vertex AI Gemini API is now called Agent Platform Gemini API. Google I/O is one of the most exciting events of the year, and we’re using this moment to share how we’re helping you build the next generation of apps by providing an end-t&lt;/p&gt;

&lt;h2&gt;
  
  
  Why What's new in Firebase at I/O 2025 Matters for Full-Stack Web Developers
&lt;/h2&gt;

&lt;p&gt;When evaluating every new Firebase release for our production web apps and Google Developer Expert (GDE) architecture reviews, the first question is always how it improves developer velocity, runtime security, and end-user latency in the browser and on the server.Update: As of August 2026, Vertex AI in Firebase is now called Firebase AI Logic and Vertex AI Gemini API is now called Agent Platform Gemini API.&lt;/p&gt;

&lt;p&gt;Google I/O is one of the most exciting events of the year, and we’re using this moment to share how we’re helping you build the next generation of apps by providing an end-to-end platform to accelerate the complete application lifecycle. Specifically, we’ve been focused on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Helping you build full-stack AI apps easily, all from one place with&lt;a href="https://firebase.blog/posts/2025/05/whats-new-at-google-io/#streamline-full-stack-app-development-with-firebase-studio" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Studio&lt;/strong&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Giving you flexibility to integrate AI into your existing apps in the way that suits your needs through&lt;a href="https://firebase.blog/posts/2025/05/whats-new-at-google-io/#enhance-existing-apps-with-ai-using-firebase-ai-logic" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase AI Logic&lt;/strong&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Optimizing development velocity with&lt;a href="https://firebase.blog/posts/2025/05/whats-new-at-google-io/#optimizing-development-velocity-with-ai-assistance-and-other-updates-across-our-platform" rel="noopener noreferrer"&gt;&lt;strong&gt;AI assistance&lt;/strong&gt;&lt;/a&gt;, and updates to&lt;a href="https://firebase.blog/posts/2025/05/whats-new-at-google-io/#more-ways-to-deploy-with-app-hosting-and-automatic-emulator-configuration" rel="noopener noreferrer"&gt;&lt;strong&gt;App Hosting&lt;/strong&gt;&lt;/a&gt;,&lt;a href="https://firebase.blog/posts/2025/05/whats-new-at-google-io/#ai-powered-onboarding-and-schema-generation-in-data-connect" rel="noopener noreferrer"&gt;&lt;strong&gt;Data Connect&lt;/strong&gt;&lt;/a&gt;, and more&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’re tuning into I/O, you can learn more about these launches in our&lt;a href="https://io.google/2025/explore/pa-keynote-10" rel="noopener noreferrer"&gt;&lt;strong&gt;What’s New in Firebase session&lt;/strong&gt;&lt;/a&gt;, or read on for a snapshot of what’s new.&lt;/p&gt;

&lt;h3&gt;
  
  
  Streamline full-stack app development with Firebase Studio
&lt;/h3&gt;

&lt;p&gt;We first introduced a preview of&lt;a href="http://firebase.google.com/studio" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Studio&lt;/strong&gt;&lt;/a&gt;, our new cloud-based AI workspace, last month at&lt;a href="https://firebase.blog/posts/2025/04/introducing-firebase-studio" rel="noopener noreferrer"&gt;&lt;strong&gt;Cloud Next&lt;/strong&gt;&lt;/a&gt;. With Firebase Studio, you can lean on AI assistance throughout your development to create fully functional apps with just prompts, or jump into the code thanks to the full power of a customizable IDE and underlying VM. In just over a month, our community has already created&lt;a href="https://firebase.blog/posts/2025/05/announcing-gemini-25-in-firebase-studio" rel="noopener noreferrer"&gt;&lt;strong&gt;over 1.5 million workspaces&lt;/strong&gt;&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;We recently&lt;a href="https://firebase.blog/posts/2025/05/announcing-gemini-25-in-firebase-studio" rel="noopener noreferrer"&gt;&lt;strong&gt;announced&lt;/strong&gt;&lt;/a&gt;that Firebase Studio is now powered by Gemini 2.5, Google’s most intelligent model yet, for more feature rich apps and more polished UIs. Today, we’re unveiling new features that will give you greater control over your app’s design and help automate your backend setup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bring Figma designs to life in Firebase Studio&lt;/strong&gt;Using the&lt;a href="https://www.builder.io/c/docs/builder-figma-plugin#builder-figma-plugin" rel="noopener noreferrer"&gt;&lt;strong&gt;Builder.io&lt;/strong&gt;&lt;/a&gt;plugin, you can now import your app designs from Figma into Firebase Studio, and then use Gemini in Firebase to add features and functionality. For example, Gemini can add additional screens or stitch together user flows by following your prompts in chat, without requiring you to write any code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Image placeholder support&lt;/strong&gt;You can now easily swap basic placeholder images for high-fidelity visuals with the App Prototyping agent. Simply click the image you want to change and then search and select a replacement from Unsplash’s extensive library.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Firebase backend integrations&lt;/strong&gt;Another big update coming to the App Prototyping agent is the ability to detect, set up, and provision your app’s backend. If your prompt includes a database or authentication, Firebase Studio will recommend&lt;a href="https://firebase.google.com/products/auth" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Authentication&lt;/strong&gt;&lt;/a&gt;and&lt;a href="https://firebase.google.com/products/firestore" rel="noopener noreferrer"&gt;&lt;strong&gt;Firestore&lt;/strong&gt;&lt;/a&gt;in the App Blueprint alongside other important components like AI resources and UI elements. When you’re ready to publish your app, Firebase Studio will provision your backend services to ensure your app’s data can be stored and retrieved properly and deploy it to&lt;a href="https://firebase.google.com/products/app-hosting" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Hosting&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This feature started rolling out today and all users will get access soon. If you prefer a different stack or your needs change as your app grows, you can still jump into the coding workspace and extend your apps with any backend.&lt;/p&gt;

&lt;p&gt;To see the full list of new features for Firebase Studio and get tips on how to use them, check out&lt;a href="https://firebase.blog/posts/2025/05/studio-updates-from-io" rel="noopener noreferrer"&gt;&lt;strong&gt;this blog post&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Enhance existing apps with AI using Firebase AI Logic
&lt;/h3&gt;

&lt;p&gt;At Google I/O last year, we launched&lt;a href="https://firebase.blog/posts/2024/05/introducing-vertex-ai-firebase/" rel="noopener noreferrer"&gt;&lt;strong&gt;Vertex AI in Firebase&lt;/strong&gt;&lt;/a&gt;so you could harness the capabilities of the Gemini family of models directly from your mobile and web apps. We also introduced the&lt;a href="https://firebase.blog/posts/2025/02/announcing-genkit" rel="noopener noreferrer"&gt;&lt;strong&gt;Genkit&lt;/strong&gt;&lt;/a&gt;framework, designed to give you a server-side solution for leveraging Gemini and other models. At I/O today, we’re bringing these investments in AI tooling, frameworks, and SDKs closer together by evolving Vertex AI in Firebase into&lt;a href="https://firebase.google.com/products/firebase-ai-logic" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase AI Logic&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We’re also releasing a slew of new features for our client integration, this includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Direct access to the Gemini Developer API → With our client SDK, you can now use the Gemini Developer API alongside the already available Vertex AI Gemini API to directly integrate Google’s Gemini and Imagen models into your app. Plus, you can use&lt;a href="https://firebase.google.com/products/app-check" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Check&lt;/strong&gt;&lt;/a&gt;to verify client requests and&lt;a href="https://firebase.google.com/products/remote-config" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Remote Config&lt;/strong&gt;&lt;/a&gt;to enable dynamic updates to prompts, model parameters, and feature flags.&lt;/li&gt;
&lt;li&gt;Hybrid inference with Gemini Nano on Chrome → Firebase AI Logic allows you to do on-device inference with Gemini Nano or use a cloud-hosted Gemini model if on-device capabilities are unavailable. This lets your app offer faster, more private, and potentially offline AI capabilities to users when AI tasks are executed locally.&lt;/li&gt;
&lt;li&gt;Gemini API in Unity &amp;amp; Android XR → We’re releasing a preview of the Firebase AI Logic SDK for Unity so you can now integrate Gemini models directly into your games and Android XR experiences.&lt;/li&gt;
&lt;li&gt;Image generation with Gemini → You could already access Imagen models client-side for text-to-image generation. Now, we’ve made it possible to generate and edit images using the multimodal capabilities of Gemini.&lt;/li&gt;
&lt;li&gt;Expanded AI monitoring dashboard → We’ve added new insights into usage patterns, performance metrics, and debugging information from the Firebase AI Logic client SDKs to the AI monitoring dashboard so you can optimize your AI implementation and create better experiences for users.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While Firebase AI Logic’s client SDKs excel at simplifying client-side model access, many AI applications require server-side flexibility and integration. For these scenarios, we offer&lt;a href="https://genkit.dev/" rel="noopener noreferrer"&gt;&lt;strong&gt;Genkit&lt;/strong&gt;&lt;/a&gt;, our powerful open-source framework that supports server-side development in Firebase AI Logic. You can learn more about Genkit’s key features and recent releases&lt;a href="https://firebase.blog/posts/2025/05/building-ai-apps" rel="noopener noreferrer"&gt;&lt;strong&gt;here&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Optimizing development velocity with AI assistance and other updates across our platform
&lt;/h3&gt;

&lt;p&gt;Transforming your app with generative AI goes beyond just adding AI-powered features - it also means accelerating your app development with AI assistance. Today, we’re giving you a first look at the Firebase Model Context Protocol (MCP) Server in the Firebase CLI.&lt;/p&gt;

&lt;p&gt;The Firebase MCP Server allows AI assistance tools to directly interact with Firebase resources and services. With the Firebase MCP Server, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create Firebase projects and apps, and download the correct SDK configuration&lt;/li&gt;
&lt;li&gt;Answer questions about your production app’s Firebase backend (ex. “What provider did&lt;a href="mailto:user@example.com"&gt;&lt;strong&gt;user@example.com&lt;/strong&gt;&lt;/a&gt;use to create their account?” or “List my Firestore collections, grab 3 documents from each, and use it to create a summary of my data model”)&lt;/li&gt;
&lt;li&gt;Highlight the most important crashes occurring in production and their impact on users to troubleshoot issues in context&lt;/li&gt;
&lt;li&gt;Trigger changes to the user environment (ex. set up databases,&lt;a href="https://firebase.google.com/docs/auth/admin/custom-claims" rel="noopener noreferrer"&gt;&lt;strong&gt;set auth claims&lt;/strong&gt;&lt;/a&gt;, etc.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://firebase.google.com/products/app-hosting" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Hosting&lt;/strong&gt;&lt;/a&gt;lets you build and deploy modern, full-stack web apps with the security and scalability of Google Cloud. Now there are two new ways to seamlessly deploy your web apps even if you aren’t using GitHub to store your source code.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deploy your source code right from your local machine with the Firebase CLI. If you have other Firebase deployments like security rules in place, everything will now deploy from one command.&lt;/li&gt;
&lt;li&gt;Use Terraform. Speed up rollouts and have greater control by skipping the build process entirely when you use Terraform to deploy your own container image instead of relying on App Hosting to build from your source code.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Finally, if you’re using the Firebase Emulator Suite to run your web app and backend Firebase services locally, App Hosting will now*&lt;em&gt;automatically use the emulated version of those services&lt;/em&gt;*instead of production so you can safely test your app without risking your production data.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://firebase.blog/posts/2025/05/more-ways-to-deploy-app-hosting" rel="noopener noreferrer"&gt;&lt;strong&gt;Check out&lt;/strong&gt;&lt;/a&gt;more updates to Firebase App Hosting.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://firebase.google.com/products/data-connect" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Data Connect&lt;/strong&gt;&lt;/a&gt;gives you the ability to build secure, scalable apps with Cloud SQL for PostgreSQL. Recent updates let you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Gemini in Firebase to simplify schema creation during onboarding and help craft and refine your queries and mutations. Work freely in the console, Firebase Studio, or VSCode with the Gemini Code Assist and Data Connect extensions.&lt;/li&gt;
&lt;li&gt;Perform more sophisticated data retrieval, improve efficiency, and scale more easily with transactions that support additional server values and multi-step capabilities.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Get more information on these Data Connect launches&lt;a href="https://firebase.blog/posts/2025/05/dataconnect-io-updates" rel="noopener noreferrer"&gt;&lt;strong&gt;here&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Coming soon: Firebase phone number verification
&lt;/h3&gt;

&lt;p&gt;Whenever possible, we try to leave you with sneak peeks of things we are working on, but not quite ready for launch. At I/O in the Chrome booth, we are&lt;a href="https://cloud.google.com/blog/topics/telecommunications/firebase-phone-number-verification-for-ogi-based-apps?e=48754805" rel="noopener noreferrer"&gt;&lt;strong&gt;showcasing a demo&lt;/strong&gt;&lt;/a&gt;of phone number verification, which is coming to Firebase later this year. Soon, you’ll be able to streamline user onboarding, reduce verification costs, and eliminate SMS abuse vectors by directly obtaining verified phone numbers for your app users from their subscribed carriers! Stay tuned.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bringing AI to every app developer
&lt;/h3&gt;

&lt;p&gt;As AI continues to rapidly reshape the technology and tools you use everyday, we remain committed to helping you navigate this profound moment with confidence and ease. As AI transforms what apps are possible and how they are developed, we will continue to transform Firebase into the app development platform of the future.&lt;/p&gt;

&lt;p&gt;You can stay up to date on the latest news and best practices on using all Firebase products by subscribing to our&lt;a href="https://www.youtube.com/firebase" rel="noopener noreferrer"&gt;&lt;strong&gt;YouTube channel&lt;/strong&gt;&lt;/a&gt;, reading our&lt;a href="https://firebase.blog/" rel="noopener noreferrer"&gt;&lt;strong&gt;blog&lt;/strong&gt;&lt;/a&gt;, and following us on&lt;a href="https://x.com/firebase" rel="noopener noreferrer"&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;and&lt;a href="https://www.linkedin.com/showcase/firebase/" rel="noopener noreferrer"&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  TypeScript &amp;amp; Web SDK Implementation Pattern
&lt;/h2&gt;

&lt;p&gt;Here is the baseline configuration pattern for integrating What's new in Firebase at I/O 2025 into a modern TypeScript web application:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight graphql"&gt;&lt;code&gt;&lt;span class="c"&gt;# Firebase Data Connect Schema &amp;amp; Type-Safe Web Query&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="k"&gt;type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Project&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;table&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;UUID&lt;/span&gt;&lt;span class="p"&gt;!&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;default&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;expr&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;"&lt;/span&gt;&lt;span class="n"&gt;uuidV4&lt;/span&gt;&lt;span class="err"&gt;(&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="err"&gt;")&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;String&lt;/span&gt;&lt;span class="p"&gt;!&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;ownerUid&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;String&lt;/span&gt;&lt;span class="p"&gt;!&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;default&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;expr&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;"&lt;/span&gt;&lt;span class="n"&gt;auth&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="n"&gt;uid&lt;/span&gt;&lt;span class="err"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;createdAt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Timestamp&lt;/span&gt;&lt;span class="p"&gt;!&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;default&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;expr&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;"&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="err"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="k"&gt;query&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ListUserProjects&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;@auth&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;level&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;USER&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;projects&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;where&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ownerUid&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;eq_expr&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"auth.uid"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;orderBy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;createdAt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;DESC&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}])&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;createdAt&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Production Web Architecture &amp;amp; Security Checklist
&lt;/h2&gt;

&lt;p&gt;Whether you are deploying on&lt;a href="https://firebase.google.com/docs/app-hosting" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Hosting&lt;/strong&gt;&lt;/a&gt;, Cloudflare Workers, or Vercel, shipping AI features to production requires defense-in-depth across three layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enforce Firebase App Check &amp;amp; Attestation:&lt;/strong&gt;Protect your web endpoints, Cloud Functions, Data Connect GraphQL resolvers, and Firebase AI Logic calls against unauthorized replay or billing abuse using&lt;a href="https://firebase.google.com/docs/app-check" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Check with reCAPTCHA Enterprise&lt;/strong&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validate Locally with the Firebase Emulator Suite:&lt;/strong&gt;Run deterministic integration tests against local Firestore, Auth, Functions, and Data Connect PostgreSQL emulators before promoting schema or rule changes to production.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep Server &amp;amp; Client Boundaries Type-Safe:&lt;/strong&gt;Use the modular Firebase Web SDK and generated TypeScript bindings so SSR frameworks like Next.js, SvelteKit, and Angular serialize state cleanly without hydration flickers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Watch Our Related Firebase Video Tutorial on YouTube
&lt;/h2&gt;

&lt;p&gt;Want to see how we architect and debug Firebase web applications live? Watch our related CodingCat.dev session&lt;a href="https://youtu.be/N25khadfUag" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase SQL with Data Connect&lt;/strong&gt;&lt;/a&gt;below, and make sure to&lt;a href="https://www.youtube.com/@CodingCatDev?sub_confirmation=1" rel="noopener noreferrer"&gt;&lt;strong&gt;Subscribe to CodingCat.dev on YouTube&lt;/strong&gt;&lt;/a&gt;for weekly full-stack web and AI deep dives:&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/N25khadfUag" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources, Official Docs &amp;amp; Related CodingCat.dev Guides
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Primary Release Source:&lt;/strong&gt;&lt;a href="https://firebase.blog/posts/2025/05/whats-new-at-google-io/" rel="noopener noreferrer"&gt;What's new in Firebase at I/O 2025 on the Official Firebase Blog&lt;/a&gt;(published 2025-05-20 by Aja Hammerly, Seba Gnagnarella)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Official Firebase Documentation:&lt;/strong&gt;&lt;a href="https://firebase.google.com/docs/web/setup" rel="noopener noreferrer"&gt;Firebase Developer Docs &amp;amp; Web SDK Reference&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/post/firebase-2025-05-studio-updates-from-io" rel="noopener noreferrer"&gt;Top Firebase Studio updates from Google I/O 2025&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/post/firebase-2025-05-studio-tips-tricks" rel="noopener noreferrer"&gt;Firebase Studio: Tips and Tricks&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/podcast/firebase-sql-with-data-connect" rel="noopener noreferrer"&gt;Firebase SQL with Data Connect&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/podcast/build-a-custom-no-code-app-in-90-minutes" rel="noopener noreferrer"&gt;Build a Custom No-Code App in 90 Minutes&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions (FAQ)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What are the key capabilities introduced in What's new in Firebase at I/O 2025?
&lt;/h3&gt;

&lt;p&gt;What's new in Firebase at I/O 2025 (announced 2025-05-20) enhances the Firebase platform for Firebase, Google Cloud, Web Dev, AI, MCP, SQL, Next.js, TypeScript, Security, Serverless workloads. Update: As of August 2026, Vertex AI in Firebase is now called Firebase AI Logic and Vertex AI Gemini API is now called Agent Platform Gemini API. Developers can review the official release notes on the&lt;a href="https://firebase.blog/posts/2025/05/whats-new-at-google-io/" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Blog&lt;/strong&gt;&lt;/a&gt;alongside the implementation patterns in this guide.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do web developers use What's new in Firebase at I/O 2025 with Next.js, SvelteKit, React, or Angular?
&lt;/h3&gt;

&lt;p&gt;Web developers can integrate these features using the modular Firebase JavaScript/TypeScript SDK, Firebase Data Connect web bindings, and&lt;a href="https://firebase.google.com/docs/app-hosting" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Hosting&lt;/strong&gt;&lt;/a&gt;. Always pair client-side SDK initialization with Firebase App Check and strict Security Rules, and test locally with the Firebase Local Emulator Suite before deploying.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where can I watch video tutorials on Firebase Web and AI development?
&lt;/h3&gt;

&lt;p&gt;You can watch our hands-on Firebase video walkthroughs on the&lt;a href="https://www.youtube.com/@CodingCatDev?sub_confirmation=1" rel="noopener noreferrer"&gt;&lt;strong&gt;CodingCat.dev YouTube Channel&lt;/strong&gt;&lt;/a&gt;, including&lt;a href="https://youtu.be/N25khadfUag" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase SQL with Data Connect&lt;/strong&gt;&lt;/a&gt;, and browse our complete Firebase tutorial archive on CodingCat.dev.&lt;/p&gt;

</description>
      <category>firebase</category>
      <category>googlecloud</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Announcing Gemini 2.5 in Firebase Studio: Web Architecture &amp; Implementation Guide</title>
      <dc:creator>Alex Patterson</dc:creator>
      <pubDate>Mon, 26 Oct 2026 02:55:00 +0000</pubDate>
      <link>https://dev.to/codingcatdev/announcing-gemini-25-in-firebase-studio-web-architecture-implementation-guide-27gi</link>
      <guid>https://dev.to/codingcatdev/announcing-gemini-25-in-firebase-studio-web-architecture-implementation-guide-27gi</guid>
      <description>&lt;p&gt;Original: &lt;a href="https://codingcat.dev/post/firebase-2025-05-announcing-gemini-25-in-firebase-studio" rel="noopener noreferrer"&gt;https://codingcat.dev/post/firebase-2025-05-announcing-gemini-25-in-firebase-studio&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Announcing Gemini 2.5 in Firebase Studio&lt;/strong&gt;marks an important milestone for full-stack web and AI engineers building on Firebase and Google Cloud. Following the official announcement by Aja Hammerly, Ali Satter on the&lt;a href="https://firebase.blog/posts/2025/05/announcing-gemini-25-in-firebase-studio/" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Blog&lt;/strong&gt;&lt;/a&gt;(2025-05-07), this hands-on CodingCat.dev implementation guide breaks down how to adopt these capabilities in modern TypeScript, Next.js, SvelteKit, React, and Angular applications. Since we launched the preview of Firebase Studio a few weeks ago, many of you have already used it to create over 1.5 million workspaces. It’s amazing to see the apps that you’ve published across a wide variety of use cases, from e-commerce sites, CRM tools, and games, to interview coaches, educational tutors, and sale&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Announcing Gemini 2.5 in Firebase Studio Matters for Full-Stack Web Developers
&lt;/h2&gt;

&lt;p&gt;When evaluating every new Firebase release for our production web apps and Google Developer Expert (GDE) architecture reviews, the first question is always how it improves developer velocity, runtime security, and end-user latency in the browser and on the server.Since we launched the preview of Firebase Studio a few weeks ago, many of you have already used it to create over 1.5 million workspaces. It’s amazing to see the apps that you’ve published across a wide variety of use cases, from e-commerce sites, CRM tools, and games, to interview coaches, educational tutors, and sales planners. Today, we’re making the applications you generate with Firebase Studio even better by enhancing its built-in App Prototyping agent to use Gemini 2.5, Google’s most powerful AI model. All Firebase Studio preview users now have access to Gemini 2.5 when prototyping applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Firebase Studio with Gemini 2.5
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://developers.googleblog.com/en/gemini-2-5-pro-io-improved-coding-performance" rel="noopener noreferrer"&gt;&lt;strong&gt;Gemini 2.5&lt;/strong&gt;&lt;/a&gt;is a powerful thinking model, capable of reasoning about prompts and problems in much more sophisticated ways. It is particularly good at coding tasks and performs very well on several benchmarks of coding capabilities. Upgrading Firebase Studio‘s App Prototyping agent to use Gemini 2.5 has brought many positive changes, and we’ll highlight a few of them here.&lt;/p&gt;

&lt;p&gt;First, applications created with the newest version of the application prototyper have improved UI. The designs it creates use modern web design principles and layouts. Here’s one example:&lt;/p&gt;

&lt;p&gt;Gemini 2.5’s thinking capabilities and improved performance on coding tasks are integral to how Firebase Studio helps you create and edit more complex applications, including those involving multi-step AI flows, mathematical calculations, sound, images, and more.&lt;/p&gt;

&lt;h3&gt;
  
  
  Exploring some example apps
&lt;/h3&gt;

&lt;p&gt;Talking about the new capabilities is nice, but experiencing what’s possible is more fun. Let’s look at just a few of the example applications we created with the App Prototyping agent in Firebase Studio and Gemini 2.5.&lt;/p&gt;

&lt;p&gt;This interactive music tutor app was built in less than ten minutes, including a lesson catalog to help beginner, intermediate, and advanced users learn to play a musical instrument. Using only natural language prompts, we initially generated the app to teach piano lessons. It was fascinating to see how the App Prototyping agent automatically constructed a few sample lessons and found the appropriate JavaScript libraries it needed to generate the piano sounds. We then prompted the agent to expand the number of lessons and add support for violin, which it did with ease. But we found an issue, we noticed that the violin sound wasn’t quite right on the first try. After tweaking the prompt from a general request to “make it sound like a real violin” to a more specific request to “lengthen the vibration of the violin strings,” the music tutor app was ready to teach violin lessons.&lt;/p&gt;

&lt;p&gt;This app helps manage the user’s daily schedule and to-do list in under 30 minutes. First, it retrieves your tasks from your Google Workspace task list and your appointments from your Google Calendar. Next, it schedules your tasks around your appointments, breaking up any large tasks into smaller, more manageable pieces, and optionally adds them to your calendar. The App Prototyping agent not only integrated the Tasks and Calendar APIs, but it also gave the developer instructions on how to set up OAuth in the Google Cloud console.&lt;/p&gt;

&lt;p&gt;With this app, we imagined an engaging, educational experience that explains quantum physics phenomena, including the concepts involved, a visualization, and a way to run experiments. It was impressive to see how little prompting was needed, three to be exact, for the App Prototyping agent to produce multiple detailed and interactive tutorials, like&lt;a href="https://cds.cern.ch/record/111654/files/vol1p195-200_001.pdf" rel="noopener noreferrer"&gt;&lt;strong&gt;the Bell test&lt;/strong&gt;&lt;/a&gt;,&lt;a href="https://www.nobelprize.org/prizes/themes/the-dual-nature-of-light-as-reflected-in-the-nobel-archives/" rel="noopener noreferrer"&gt;&lt;strong&gt;double-slit experiment&lt;/strong&gt;&lt;/a&gt;,&lt;a href="https://www.scientificamerican.com/article/quantum-tunneling-is-not-instantaneous-physicists-show/" rel="noopener noreferrer"&gt;&lt;strong&gt;quantum tunneling experiment&lt;/strong&gt;&lt;/a&gt;, and&lt;a href="https://www.nature.com/articles/srep06115" rel="noopener noreferrer"&gt;&lt;strong&gt;two-qubit simulator&lt;/strong&gt;&lt;/a&gt;. The app supports using different configurations of two particles to see how they affect each other.&lt;/p&gt;

&lt;p&gt;We also wondered what would happen if we took a real-world task, like managing our team’s social media posts. Within 10 minutes, we created a social media collaboration app that helps organize social media posts. It includes features for getting AI suggestions for optimal posting time, adding and modifying scheduled posts, categorizing posts, and managing the calendar. A particularly nice touch is a feature that lets you get AI recommendations on the optimal time to schedule a post. On the other hand, the initial version of the calendar feature had a layout that required scrolling down to view each day’s list of posts on a larger screen. So we prompted the App Prototyping agent to redesign the feature to be easier to read and within seconds, the updates were ready and refreshed in the app preview.&lt;/p&gt;

&lt;p&gt;We created an app with a built-in, visual programming environment in about 20 minutes. This app allows users to combine different components to build AI enhanced workflows for different tasks, and examine and debug the system at every stage in the workflow. It is using AI agents to build an environment to build more AI agents, all in natural language. In this example, the app uses a weather API to help plan outdoor adventures that are suitable for the current conditions.&lt;/p&gt;

&lt;p&gt;We test drove building an app in under 10 minutes that uses AI to generate and tailor workout plans based on multiple different inputs. The user could choose their fitness level, muscle groups, age group, and schedule availability, and the app generates the plan based on those inputs. Unlike other apps that rely on dummy data to create the different workout plans, we wanted to see how creative this app could be. So we delegated all workout plan creation to an AI flow. It was fun to try the different variations as we generated each tailored workout plan based on our chosen criteria.&lt;/p&gt;

&lt;p&gt;And of course we built a lot of games. Below is a simple&lt;a href="https://en.wikipedia.org/wiki/Mancala" rel="noopener noreferrer"&gt;&lt;strong&gt;Mancala&lt;/strong&gt;&lt;/a&gt;game. The initial prompt was just “mancala” and that generated a two person version of the game. A second prompt “play against the AI” created the functionality below and then the developer spent about 10 minutes iterating on the color scheme and UI, including adding a dark mode.&lt;/p&gt;

&lt;h3&gt;
  
  
  Enhancing developer productivity
&lt;/h3&gt;

&lt;p&gt;We’ve made additional improvements to Firebase Studio App Prototyping agent, including UI optimizations to better support developers creating applications on mobile.&lt;/p&gt;

&lt;p&gt;We’ve also used Gemini 2.5’s thinking capabilities to provide more detailed explanations about the changes Gemini is making to files in your project as you iteratively improve and add features to the applications you create.&lt;/p&gt;

&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;p&gt;We’ll continue to integrate new Gemini models and AI capabilities into Firebase Studio to improve the product and address your feedback. We encourage you to try the improved App Prototyping agent, powered by Gemini 2.5. Share your creations with us on social media using #FirebaseStudio, and reach out to our team in the&lt;a href="https://community.firebasestudio.dev/" rel="noopener noreferrer"&gt;&lt;strong&gt;forums&lt;/strong&gt;&lt;/a&gt;with any feedback or questions.&lt;/p&gt;

&lt;h2&gt;
  
  
  TypeScript &amp;amp; Web SDK Implementation Pattern
&lt;/h2&gt;

&lt;p&gt;Here is the baseline configuration pattern for integrating Announcing Gemini 2.5 in Firebase Studio into a modern TypeScript web application:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;initializeApp&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;firebase/app&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;getAI&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;getGenerativeModel&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;GoogleAIBackend&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;firebase/ai&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;initializeAppCheck&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ReCaptchaEnterpriseProvider&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;firebase/app-check&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;initializeApp&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;NEXT_PUBLIC_FIREBASE_API_KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;projectId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;NEXT_PUBLIC_FIREBASE_PROJECT_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// Protect AI endpoints in web apps with Firebase App Check&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;undefined&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;initializeAppCheck&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;provider&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ReCaptchaEnterpriseProvider&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;NEXT_PUBLIC_RECAPTCHA_SITE_KEY&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="na"&gt;isTokenAutoRefreshEnabled&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ai&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;getAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;backend&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;GoogleAIBackend&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;geminiModel&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;getGenerativeModel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ai&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;gemini-2.5-flash&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Production Web Architecture &amp;amp; Security Checklist
&lt;/h2&gt;

&lt;p&gt;Whether you are deploying on&lt;a href="https://firebase.google.com/docs/app-hosting" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Hosting&lt;/strong&gt;&lt;/a&gt;, Cloudflare Workers, or Vercel, shipping AI features to production requires defense-in-depth across three layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enforce Firebase App Check &amp;amp; Attestation:&lt;/strong&gt;Protect your web endpoints, Cloud Functions, Data Connect GraphQL resolvers, and Firebase AI Logic calls against unauthorized replay or billing abuse using&lt;a href="https://firebase.google.com/docs/app-check" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Check with reCAPTCHA Enterprise&lt;/strong&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validate Locally with the Firebase Emulator Suite:&lt;/strong&gt;Run deterministic integration tests against local Firestore, Auth, Functions, and Data Connect PostgreSQL emulators before promoting schema or rule changes to production.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep Server &amp;amp; Client Boundaries Type-Safe:&lt;/strong&gt;Use the modular Firebase Web SDK and generated TypeScript bindings so SSR frameworks like Next.js, SvelteKit, and Angular serialize state cleanly without hydration flickers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Watch Our Related Firebase Video Tutorial on YouTube
&lt;/h2&gt;

&lt;p&gt;Want to see how we architect and debug Firebase web applications live? Watch our related CodingCat.dev session&lt;a href="https://youtu.be/N25khadfUag" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase SQL with Data Connect&lt;/strong&gt;&lt;/a&gt;below, and make sure to&lt;a href="https://www.youtube.com/@CodingCatDev?sub_confirmation=1" rel="noopener noreferrer"&gt;&lt;strong&gt;Subscribe to CodingCat.dev on YouTube&lt;/strong&gt;&lt;/a&gt;for weekly full-stack web and AI deep dives:&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/N25khadfUag" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources, Official Docs &amp;amp; Related CodingCat.dev Guides
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Primary Release Source:&lt;/strong&gt;&lt;a href="https://firebase.blog/posts/2025/05/announcing-gemini-25-in-firebase-studio/" rel="noopener noreferrer"&gt;Announcing Gemini 2.5 in Firebase Studio on the Official Firebase Blog&lt;/a&gt;(published 2025-05-07 by Aja Hammerly, Ali Satter)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Official Firebase Documentation:&lt;/strong&gt;&lt;a href="https://firebase.google.com/docs/web/setup" rel="noopener noreferrer"&gt;Firebase Developer Docs &amp;amp; Web SDK Reference&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/post/firebase-2025-05-dataconnect-atomic-data-modifications" rel="noopener noreferrer"&gt;Atomic Data Modifications for Data Connect&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/post/firebase-2025-05-building-ai-apps" rel="noopener noreferrer"&gt;Building AI-powered apps with Firebase AI Logic&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/podcast/firebase-sql-with-data-connect" rel="noopener noreferrer"&gt;Firebase SQL with Data Connect&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related on CodingCat.dev:&lt;a href="https://codingcat.dev/podcast/build-a-custom-no-code-app-in-90-minutes" rel="noopener noreferrer"&gt;Build a Custom No-Code App in 90 Minutes&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions (FAQ)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What are the key capabilities introduced in Announcing Gemini 2.5 in Firebase Studio?
&lt;/h3&gt;

&lt;p&gt;Announcing Gemini 2.5 in Firebase Studio (announced 2025-05-07) enhances the Firebase platform for Firebase, Google Cloud, Web Dev, AI workloads. Since we launched the preview of Firebase Studio a few weeks ago, many of you have already used it to create over 1.5 million workspaces. It’s amazing to see the apps that you’ve published across a wide variety of use cases, from e-commerce sites, CRM tools, and games, to interview coaches, educational tutors, and sales planners. Today, we’re making the applications you generate with Firebase Studio even better by enhancing its built-in App Prototyping agent to use Gemini 2.5, Google’s most powerful AI model. All Firebase Studio preview users now have access to Gemini 2.5 when prototyping applications. Developers can review the official release notes on the&lt;a href="https://firebase.blog/posts/2025/05/announcing-gemini-25-in-firebase-studio/" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase Blog&lt;/strong&gt;&lt;/a&gt;alongside the implementation patterns in this guide.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do web developers use Announcing Gemini 2.5 in Firebase Studio with Next.js, SvelteKit, React, or Angular?
&lt;/h3&gt;

&lt;p&gt;Web developers can integrate these features using the modular Firebase JavaScript/TypeScript SDK, Firebase Data Connect web bindings, and&lt;a href="https://firebase.google.com/docs/app-hosting" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase App Hosting&lt;/strong&gt;&lt;/a&gt;. Always pair client-side SDK initialization with Firebase App Check and strict Security Rules, and test locally with the Firebase Local Emulator Suite before deploying.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where can I watch video tutorials on Firebase Web and AI development?
&lt;/h3&gt;

&lt;p&gt;You can watch our hands-on Firebase video walkthroughs on the&lt;a href="https://www.youtube.com/@CodingCatDev?sub_confirmation=1" rel="noopener noreferrer"&gt;&lt;strong&gt;CodingCat.dev YouTube Channel&lt;/strong&gt;&lt;/a&gt;, including&lt;a href="https://youtu.be/N25khadfUag" rel="noopener noreferrer"&gt;&lt;strong&gt;Firebase SQL with Data Connect&lt;/strong&gt;&lt;/a&gt;, and browse our complete Firebase tutorial archive on CodingCat.dev.&lt;/p&gt;

</description>
      <category>firebase</category>
      <category>googlecloud</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
