Explorer
Content
videos
firebase-after-hours-14-live-vibe-coding-with-firebase-studio.md
videos firebase-studio firebase-after-hours-14-live-vibe-coding-with-firebase-studio.md

Firebase After Hours #14: Live Vibe Coding with Firebase Studio

Description

Join @PeterFriese and @NoheDev on Firebase After Hours as they vibe code an app (or two) using Firebase Studio. @RodyDavis (Developer Relations Engineer on Firebase Studio) will be their guest. Bring your questions about Firebase Studio, and they’ll answer them live!

Resources: From vibe to reality: Integrating Firebase in Firebase Studio → https://goo.gle/4lWAXf8 Forum: → https://community.firebasestudio.dev/

#Firebase #FirebaseAfterHours #FirebaseStudio #Streaming #GoogleCloud #LiveStream #DeveloperCommunity

Transcript

0:00 · [MUSIC PLAYING]

0:59 · PETER FRIESE: Hello, everybody and welcome to “Firebase After Hours,” number 14.

1:06 · Can you believe it?

1:07 · Number 14.

1:08 · When we started doing this, I had no idea that we would end up at a number like that.

1:14 · And we have no intention of stopping there.

1:17 · So welcome to the stream.

1:20 · We’ve got something really exciting for you today.

1:22 · But before we can get started, let’s do the housekeeping.

1:27 · So I want to remind everybody to be nice to each other.

1:31 · We have a live stream going and a live chat.

1:34 · So you can use the live chat to communicate with us.

1:37 · We want you to send us your questions.

1:40 · So please send questions that you want us to answer.

1:43 · And we will take the ones that make sense in the context of this live stream, which will be about Firebase Studio.

1:51 · And if there are any other ones that we can also answer and which we think might be interesting for folks on stream.

1:59 · But in the interest of everybody, let’s be polite.

2:05 · And if you hate something, then maybe not say it here, but say it into your pillow or into a bucket and say the nice things to us and be constructive.

2:19 · With that out of the way— oh, and I also see people are using the emojis.

2:25 · So please use the emojis if you like something.

2:27 · Press the heart emoji or the party popper.

2:31 · That’s always great.

2:32 · All right, so with that out of the way, let me bring on my most favorite co-host, Nohe.

2:41 · Here he is.

2:42 · Nohe, how’s it going?

2:43 · ALEXANDER NOHE: It’s good.

2:44 · I’m glad I made it to the most favorite ranking.

2:47 · PETER FRIESE: [LAUGHS] You are my most favorite.

2:49 · ALEXANDER NOHE: Well, you have so many to pick from.

2:51 · PETER FRIESE: [LAUGHS] Man, I haven’t seen you for such a long time.

2:56 · What’s happening?

2:58 · ALEXANDER NOHE: Have you?

3:00 · PETER FRIESE: Have you— I mean, I saw you five minutes ago.

3:04 · ALEXANDER NOHE: OK.

3:05 · Well, I mean— well, weren’t you also on vacation?

3:08 · I did a vacation last year.

3:10 · PETER FRIESE: Yeah, but we were on different vacations, so I was on an island in the north of Germany.

3:16 · And you probably— I didn’t see you there.

3:18 · So I assumed you were somewhere else.

3:18 · ALEXANDER NOHE: That’s the most details you gave me.

3:20 · So I think I went to a different island.

3:22 · PETER FRIESE: Yeah.

3:23 · That’s why I think.

3:24 · [LAUGHS] Which island did you go to?

3:28 · ALEXANDER NOHE: No, I went to Wyoming.

3:33 · I went to Yellowstone.

3:35 · It’s one of the national parks.

3:36 · Do you know why they call it Yellowstone?

3:40 · PETER FRIESE: I haven’t been there, but I hear great things.

3:42 · So next time I come, maybe we can go together.

3:46 · ALEXANDER NOHE: Yeah, yeah, we’ll take a little road trip.

3:49 · I saw a bear, some moose, some elk.

3:53 · PETER FRIESE: OK, wow.

3:53 · That sounds exciting.

3:55 · How far away were you from the bear?

3:58 · ALEXANDER NOHE: So the bear was the closest.

4:00 · I got maybe 10 feet away.

4:02 · It was a brown baby bear.

4:05 · PETER FRIESE: Oh, OK.

4:06 · ALEXANDER NOHE: It was not— the bear walked up to me.

4:09 · I didn’t walk up to it.

4:11 · Yeah.

4:13 · But we were just hiking along.

4:14 · PETER FRIESE: Now it sounds a little bit more scary.

4:17 · 10 feet, that’s not very far.

4:18 · ALEXANDER NOHE: Yeah.

4:19 · And then we had to climb over rocks.

4:21 · I dropped a camera lens that I was borrowing.

4:23 · So I actually broke the lens.

4:25 · PETER FRIESE: Oh, no.

4:26 · That sounds like an expensive vacation.

4:28 · ALEXANDER NOHE: Yeah.

4:29 · Well, it turned out to be one.

4:32 · Yeah, but it was good.

4:34 · How about— how was your island vacation in the north of Germany?

4:37 · PETER FRIESE: Yeah, it was really good.

4:38 · So we were on an island called Used, and it was absolutely fantastic weather.

4:45 · So we had sunshine.

4:46 · We were hanging around on the beach, doing bicycle rides.

4:52 · So yeah, it was a great time.

4:55 · Very relaxing.

4:57 · No bears, but we had a seagull.

4:59 · So the seagulls.

5:01 · Man, I tell you, we only had a jar of marmalade on our balcony.

5:06 · And then, next thing you know, this giant seagull lands on the balcony, trying to peck on the marmalade.

5:14 · [LAUGHTER] Well— all right, so we’re not here to talk about vacation.

5:22 · We’re here to talk about Firebase Studio.

5:26 · And we have a guest that knows everything about Firebase Studio, at least I hope.

5:34 · So here he is.

5:36 · RODY DAVIS: Hey.

5:36 · PETER FRIESE: Rody, hey.

5:38 · How is it going?

5:39 · RODY DAVIS: Going good.

5:40 · Yeah, super excited to come and code with y’all.

5:43 · And I feel like this will be a really fun stream.

5:46 · PETER FRIESE: Yeah, absolutely.

5:48 · So maybe we can start, and you can tell us what you do, what’s your role, and maybe a fun fact about you that you’re happy to share.

5:58 · RODY DAVIS: Yeah, so— yeah.

6:01 · My name is Rody.

6:02 · I am a DevRel on Firebase Studio, so helping people get access to our huge selection of templates, but also working across teams to make sure that everybody has a good experience there.

6:17 · And it’s been interesting with the advent of vibe coding, where now the audience is changing, too.

6:24 · You have people that have no experience with coding at all, all the way up to super experienced devs.

6:30 · And, more recently, I feel like I’ve been seeing a lot of people come back into coding later in their career.

6:36 · And now you have people that, oh, I used to do it, like, 15, 20 years ago, and I’m getting back into building.

6:42 · So yeah.

6:43 · And then a fun fact, I used to be an audio engineer before I was a software engineer.

6:48 · PETER FRIESE: Oh, is that why your audio signal sounds so good?

6:53 · RODY DAVIS: Yes, that’s why I have a proper mixing board to the left of me.

6:57 · PETER FRIESE: Nice, nice.

6:58 · I feel I need to spend some quality time with you so you can help me fix the audio on my stream.

7:04 · RODY DAVIS: Yeah, yeah.

7:05 · For sure.

7:07 · PETER FRIESE: All right, cool.

7:08 · So usually we do a game of what is your favorite indentation method, but before we started the stream, we were talking about food or vacation.

7:20 · So how about we take a new question, and instead of doing tabs versus spaces, how about we do, what is your favorite food?

7:30 · And why is it pasta?

7:31 · No, sorry.

7:32 · So what’s your favorite food?

7:33 · [LAUGHS] RODY DAVIS: Yeah, I think one of my favorite ones is sushi.

7:39 · But if I had to pick a specific thing inside there, probably, like, takoyaki from Japan, like the little octopus balls they fry.

7:46 · Those are pretty good.

7:48 · PETER FRIESE: Nice.

7:49 · Nohe, what about you?

7:51 · ALEXANDER NOHE: I really like Chicken Chesapeake.

7:54 · PETER FRIESE: What’s the second part?

7:56 · Chesapeake?

7:57 · ALEXANDER NOHE: Yeah, Chesapeake.

7:58 · It’s like a giant bay in North America.

8:02 · There’s like crabs that come out of the bay.

8:04 · RODY DAVIS: Nice.

8:04 · ALEXANDER NOHE: Then we eat the crabs.

8:06 · So Chicken Chesapeake is chicken, and it’s layered on top with a crab dip or other crab meat items.

8:17 · It’s pretty good.

8:18 · PETER FRIESE: Nice.

8:18 · RODY DAVIS: Is it a full on boil, like a normal seafood boil?

8:22 · ALEXANDER NOHE: You’re thinking of like a low country boil.

8:24 · That’s something different.

8:26 · Well, I assume you’re thinking of a low country boil, where you have the giant thing.

8:30 · You throw in the crawfish and the corn and the potatoes.

8:33 · RODY DAVIS: Yeah.

8:34 · So you just cook the crabs and get them out.

8:37 · ALEXANDER NOHE: Well, yeah.

8:38 · So you make the crab dip first, where it’s— it’s not really crab dip.

8:43 · It’s like a little bit of a crab cake blended with chicken on top.

8:48 · So you get the very filling chicken and then however much crab you picked off— RODY DAVIS: That’s nice.

8:55 · ALEXANDER NOHE: —or gotten from the jar or your cousin that runs the crab shack.

9:01 · Yeah.

9:02 · RODY DAVIS: Nice.

9:03 · How about you, Peter?

9:04 · PETER FRIESE: So if you’ve watched our last, most recent video, you might know that one of my favorite dishes is parmigiana.

9:15 · And usually you make it with aubergine.

9:18 · But my favorite is zucchini.

9:20 · So that would be my go-to.

9:23 · And anything that has tomato sauce in it, you can’t go wrong with it, I think.

9:28 · It just is perfect.

9:30 · RODY DAVIS: That’s awesome.

9:31 · PETER FRIESE: So everybody on the stream, tell us what you think.

9:35 · What’s your favorite dish?

9:36 · I already saw that people mentioned chimichurri and stuff.

9:41 · So feel free to let us know what you like.

9:45 · So let’s talk about Firebase Studio.

9:49 · So one of the first questions that we should probably talk about is, what is it?

9:56 · And how is it different from Firebase?

10:01 · RODY DAVIS: Yeah, that’s a good question.

10:04 · Yeah, and also people may be wondering, well, how is this different than just VS Code on my computer too?

10:10 · So Firebase Studio is, at its core, a computing platform that we enable and unlock people to use in the browser.

10:19 · So we’re built on top of NixOS, which is a VM that has a huge amount of packages in the Linux ecosystem.

10:27 · And because of that, we are able to support full server side, client side stacks, all running together.

10:36 · You can run Kubernetes or full Docker containers, all the way down to just a simple Go server.

10:44 · Really, it’s about— as long as you can configure it in Nix, you can usually get the template running.

10:49 · So Firebase Studio, which was previously Project IDX, wraps up all of that into a nice feature suite.

10:57 · But then, now part of Firebase, we are able to deeper integrate into creating Firebase services, like projects and API keys for Firebase AI Logic, and have deep relationships across Google to try to make that development experience better.

11:16 · And then, of course, at Google Cloud Next, when we launched, we also supported this new kind of natural language prompting.

11:24 · And that is kind of a new way for us to get into the space of helping people get past that blank canvas problem.

11:32 · So I have something I want to build.

11:34 · I’m not sure where to start.

11:35 · There’s a lot of templates.

11:37 · Might as well just throw it into the prompt to see what you can get.

11:40 · And one of the cool things about that is, even if you’re a really experienced dev and maybe mobile is like your wheelhouse, we still offer this prototyper because you could use it for your marketing site.

11:53 · You could use it for the things that you don’t want to build, but then focus your development time on something else.

11:59 · And because we run on top of these VMs, unlike a lot of the other tools, we have that experience wherever you go into any browser.

12:09 · And so I think that’s been fun.

12:11 · One of the things I like to show off at the booth is running Firebase Studio on my Google Pixel Fold.

12:18 · PETER FRIESE: Yeah, how is the development experience on a small device like that?

12:21 · RODY DAVIS: It’s interesting, especially if you have a keyboard and stuff like that.

12:25 · But, I mean, I think it’s just really awesome to be able to— oh, I just need to get access to that.

12:30 · I just need to make this one change.

12:32 · And one of my favorite things that we can do in Firebase Studio is— everybody likes to joke on Twitter and other places that, oh, here’s my new startup.

12:43 · It’s localhost blah blah blah.

12:46 · But with Firebase Studio, we launch public ports, so you can actually share localhost on Twitter, which is fun.

12:51 · PETER FRIESE: Yeah, yeah.

12:52 · Yeah, it’s really good fun.

12:54 · And what I really like is that you have this feature where you can display QR code and then show it on your phone.

13:01 · And that’s pretty cool.

13:03 · RODY DAVIS: And it’s getting into your actual VM too.

13:05 · Yeah.

13:06 · PETER FRIESE: Yeah, yeah.

13:06 · Exactly.

13:06 · So why don’t we take a look at how it works, and then we can look into some of the features, and maybe you can show us some of the stuff that you’re particularly excited about.

13:18 · And then maybe we can take some audience questions as well.

13:22 · And maybe— I don’t know— you have an idea what we can vibe code or the audience wants to come up with something.

13:29 · So I will bring on your screen, and then we can take it from there.

13:35 · RODY DAVIS: Awesome.

13:35 · So when you are first brought into Firebase Studio, you won’t have any projects yet.

13:43 · So this is going to be the screen that you have.

13:45 · It’s very similar to any other of the AI tools, but we offer a way to easily get started.

13:53 · One of the cool things that we launched recently is when you add a prompt, we can now suggest an improvement to that prompt.

14:01 · So it’ll already start to normalize the type of input that people are bringing, which is pretty cool in itself.

14:10 · And then, of course, if you want, you can click on Full Dashboard and get access to our templates.

14:17 · We have a huge variety of templates.

14:19 · There’s almost certainly a framework or a stack that you’re using that we have here.

14:26 · We have both mobile, web, and front end.

14:30 · Mobile is especially really popular.

14:33 · Our AI templates— people actually really like our databases inside of Firebase Studio because, notoriously, Postgres and these other ones can be tricky to get installed.

14:42 · And so now you can have a running Postgres instance running in the browser that you can connect to by public port.

14:49 · So you can kind of— what I like to do is create really nice staging environments and then connect to them from other places.

14:56 · And then we also have this new What’s New section that we launched just last week.

15:01 · And these are updates to these five templates that support our new agentive AI layout.

15:09 · And it kind of makes— one, we’ve updated the base system instructions, so you can have a more prototyper-esque type of experience, where you can just jump into the chat and say, change this, do this, do whatever.

15:23 · PETER FRIESE: OK.

15:25 · All right.

15:25 · That’s really interesting because when— that sounds a little bit like on [INAUDIBLE]— so we’ve got the prototyper that you showed in the beginning, where you have this box that you can use to kickstart your application from zero, essentially.

15:40 · And what you just said sounds a little bit like you would be in the IDE part of the IDE, and then you’d have another window that you could use to continue prototyping in there.

15:51 · Is that about correct?

15:52 · RODY DAVIS: Yeah, and we’re also just starting with these.

15:55 · But the goal is to try to bring this to more that makes sense.

15:57 · And so if there’s a popular framework, and you’re like, oh, I have to use Laravel for my— let’s see, where is it— for my entire application.

16:08 · That’s the only thing I use.

16:10 · Well, you could take what we’re doing here and apply that to your favorite template and already start to have this more agentive experience.

16:19 · PETER FRIESE: OK, that’s cool.

16:20 · So what I think we should be doing— so when I was at Cloud Summit in London, I had 15 minutes to vibe code an application.

16:31 · And because I know that it takes a while for the prototyper to do its work, I vibe coded two applications at the same time.

16:39 · One was a “Flappy Bird” clone.

16:43 · And the other one was an expense tracker.

16:46 · So it sounds like we might want to do the same.

16:50 · So I’m thinking one of the things that we should do is demonstrate how the initial prototyper works, like where you can put your prompt.

16:58 · And then I am super curious about the agentic experience in those templates here.

17:03 · So I want to see those two things.

17:06 · Can you make that work?

17:08 · RODY DAVIS: Sure, and what template do you prefer we start with?

17:11 · Because this would also be a— PETER FRIESE: I don’t know.

17:14 · Nohe, do you have any preference?

17:16 · ALEXANDER NOHE: Let’s go Flutter.

17:18 · RODY DAVIS: Nice.

17:18 · OK, cool.

17:19 · PETER FRIESE: Let’s do it.

17:21 · Oh, yeah, and then the other app should be a bird-themed app as well.

17:26 · [LAUGHTER] RODY DAVIS: Let’s see.

17:34 · And I will have you hide my screen in a second when I paste in an API key.

17:40 · PETER FRIESE: OK.

17:41 · Fair enough.

17:47 · ALEXANDER NOHE: Building environment.

17:48 · RODY DAVIS: Yeah, no, this is pretty exciting.

17:51 · I’ve been really pumped for this new type of experience that we’ve launched.

17:57 · One, it kind of just really highlights how flexible and powerful our templates are because the prototyper is great if you’re using Next.js and Tailwind and all the things that we’ve set up for you.

18:11 · But a lot of people have been asking, I wanted to use my favorite framework, Vue or Svelte.

18:16 · And it’s always giving me Next.js.

18:18 · So this is kind of like a step in that direction.

18:21 · PETER FRIESE: Yeah, absolutely.

18:25 · RODY DAVIS: So yeah, this is the new template layout.

18:28 · As you can see, by default, the chat’s on the right, and the previews are on the left.

18:34 · And then, of course, you still have access to all the code here too.

18:38 · And we also launched this new feature recently called Auto-Run, where it essentially— except for terminal commands, it will automatically add all the files without having to have you approve each one.

18:49 · PETER FRIESE: Nice RODY DAVIS: OK, let me go ahead and grab that API key real quick.

18:58 · ALEXANDER NOHE: I think this might be where we want to turn off Rody’s screen?

19:00 · RODY DAVIS: Yeah, go ahead.

19:01 · PETER FRIESE: OK, so I’ll target just you.

19:05 · RODY DAVIS: Just in case.

19:09 · I’m sure there’s eager viewers that are ready to screenshot.

19:12 · PETER FRIESE: Oh, yeah, yeah.

19:13 · So I had one video where I had an API key visible for literally two frames.

19:18 · And then somebody posted a comment in the video that pointed exactly to that thing.

19:24 · So we had to swap it out.

19:27 · RODY DAVIS: Amazing.

19:29 · OK, almost there.

19:32 · Sweet.

19:34 · Let me just put this.

19:37 · ALEXANDER NOHE: So while we wait for Rody to fetch the API key, can we see if he can pat his head and rub his belly at the same time?

19:45 · [LAUGHTER] RODY DAVIS: All right, now we’re good.

19:49 · ALEXANDER NOHE: Oh, we’re all good?

19:51 · All right.

19:52 · PETER FRIESE: [LAUGHS] RODY DAVIS: OK, so one of the cool things when you enter into this Auto-Run is, obviously, it’s very destructive in terms of it’s going to be just adding a bunch of files.

20:04 · So we will commit all of your changes to a local Git repo.

20:07 · So right here, you can see we generate a commit message.

20:11 · And we do that.

20:12 · And so if you do a whole session, and you really hate it, you can always right-click and restore.

20:19 · The other thing that you can do is built into the core Code OSS.

20:24 · You can also use your timeline and restore there as well, so already kind of nice ways to get around that.

20:32 · PETER FRIESE: Nice.

20:33 · RODY DAVIS: Awesome.

20:34 · And let’s see.

20:35 · Another fun thing we could do, too, is we recently launched support for Firebase MCP.

20:42 · So we can also add that as well.

20:45 · I can go ahead and log in.

20:50 · PETER FRIESE: So that would enable you to have the IDE remotely control your Firebase project and do things like create a project in the first place or create new accounts, list what’s in the database, and stuff like that?

21:08 · RODY DAVIS: Yeah.

21:09 · Go ahead and hide my screen one more time, too.

21:11 · PETER FRIESE: Yep, sure.

21:12 · RODY DAVIS: Thanks.

21:15 · Just realized it’d show the authorization code.

21:22 · OK.

21:22 · ALEXANDER NOHE: So a few questions came in on chat.

21:28 · And I’m trying to find them so that we can show them on the screen.

21:31 · But one of them was, are we planning to make it easy to integrate auth, database, storage, and other Firebase services easily with Studio projects?

21:42 · RODY DAVIS: Yeah, that’s a good question.

21:44 · And you can share my screen again.

21:46 · The goal is to make all the integrations as seamless as possible.

21:51 · I think you can already, right now, go to the Firebase Console and set up the authorized domains and some of the other redirects to get that working.

22:02 · One of the cool things about the Firebase MCP server— and you guys can fact check me if I’m wrong on this.

22:07 · But it can already do a lot of things like create Firebase projects and databases and configure a lot of the settings for you.

22:17 · ALEXANDER NOHE: Cool.

22:18 · RODY DAVIS: And then, so one of the cool things is we have this MCP JSON file that is blank.

22:24 · We have a code lab, where I’m just going to paste in the code snippet.

22:27 · And this enables the Firebase MCP server.

22:32 · And the way that you’ll know it’s running is, if you go into your logs— ALEXANDER NOHE: Hey, Rody, just to interrupt you, I think it’s about time I say my catchphrase.

22:43 · And I know you can read the screen, but I cannot read the screen.

22:48 · Could you make it just a little bit bigger?

22:50 · RODY DAVIS: Yeah, you got it.

22:51 · Let’s see.

22:57 · ALEXANDER NOHE: Thank you.

22:58 · Yeah, it should be uncomfortably large for you.

23:01 · RODY DAVIS: Yeah.

23:03 · Let’s see.

23:03 · OK.

23:04 · So when I went to the Gemini logs here in the output console, you’ll see that it’ll show all the tools that it has available.

23:13 · Sometimes it’ll take a second.

23:15 · And then as you make changes to the MCP JSON, it’ll also change what’s available there too.

23:20 · Like, for example, Flutter and Dart has an MCP server that you can also use on the beta channel, I believe.

23:27 · And so you could have multiple MCPs here, and they’d all be available in chat.

23:32 · PETER FRIESE: I love the fact that it adds 42 tools, but it also means we can’t add any more tools.

23:38 · RODY DAVIS: That’s right.

23:39 · Yeah, it’s the meaning of life.

23:41 · ALEXANDER NOHE: I did see one tool in there called Consult Assistant.

23:44 · Have you tried that tool yet?

23:46 · RODY DAVIS: I have not.

23:51 · ALEXANDER NOHE: It’s like third line, maybe.

23:54 · Oh, no, no, second line.

23:55 · You literally just highlighted it.

23:58 · That way, to the right.

23:59 · Yeah, that one.

24:00 · RODY DAVIS: Yeah, so any idea what we should prompt there to try to get it?

24:04 · We can also switch it to Ask mode, by the way.

24:06 · This is so you can interact but not make changes.

24:11 · ALEXANDER NOHE: Can you ask the Firebase Assistant, how do I add FlutterFire to this app?

24:26 · RODY DAVIS: OK, let’s see if it’ll come back.

24:28 · I’m also using Gemini 2.5 Pro here.

24:36 · Beginning Firebase setup.

24:37 · It’s just like it’s thinking, mapping out Firebase tasks.

24:44 · ALEXANDER NOHE: And then while we wait for this to respond, somebody mentioned that they are designing a web app.

24:51 · And is it always going to be slow?

24:55 · Or when they go live, will it be faster?

24:58 · RODY DAVIS: Slow as in building?

25:03 · ALEXANDER NOHE: This is the text that I have, my friend.

25:06 · PETER FRIESE: It runs very slowly.

25:09 · RODY DAVIS: It might be debug mode that’s slowing it down for the app.

25:12 · ALEXANDER NOHE: Ah, OK.

25:17 · RODY DAVIS: Let’s see if we can— I’m not sure if it actually used the tool or not.

25:21 · Let’s see if we can use the tool.

25:25 · It did give a correct set of instructions, though.

25:29 · ALEXANDER NOHE: How do you know when a tool is run in Ask mode?

25:31 · RODY DAVIS: It should prompt or show a little thing that says, using X tool.

25:38 · So it also might not work in Ask mode.

25:46 · Let me try it again in Agent.

25:51 · And you can always start a new chat, which is nice because you can actually have multiple histories of various chats going.

25:57 · So let’s try it again.

26:00 · Yeah, it totally could have just not worked in Ask mode.

26:10 · Let’s try my terminal command, but yeah.

26:11 · PETER FRIESE: But that’s a little bit more straightforward, right?

26:14 · RODY DAVIS: Yeah, let’s see.

26:17 · Just try one more before giving up.

26:21 · ALEXANDER NOHE: Maybe like, when should I use Firestore versus Firebase Data Connect?

26:29 · RODY DAVIS: Yeah, I think the issue is it’s trying to just use the raw model stuff.

26:43 · Let’s see.

26:45 · Here we go.

26:45 · Clarifying.

26:46 · OK.

26:46 · That’s what you’re supposed to see, though.

26:48 · That’s it actually talking to the tool.

26:53 · No active project was found.

26:55 · So that one, that may need a set for that.

27:00 · That’s good.

27:01 · I haven’t heard that before.

27:02 · PETER FRIESE: Can you ask the MCP server to give you the tool definition so that you can understand what the tool is good for?

27:10 · RODY DAVIS: Yeah.

27:19 · Let’s see.

27:28 · There we go.

27:34 · Pretty cool.

27:35 · PETER FRIESE: OK, so the Firebase AI— Firebase Assistant is basically Gemini in Firebase, right?

27:43 · RODY DAVIS: Yeah, is that the— nice, yeah.

27:46 · That’s cool.

27:48 · PETER FRIESE: Yeah, that’s pretty cool.

27:50 · RODY DAVIS: Right on.

27:52 · PETER FRIESE: All right.

27:53 · So what should we do with this application here?

27:55 · So it’s a basic application.

27:58 · But can we add a feature?

28:03 · RODY DAVIS: Let’s see if we can first switch to Agent Auto-Run.

28:09 · Let’s build a fun— here we go.

28:13 · Let’s do, build a— this is always one I like to try, just because it requires state, logic, and layout.

28:23 · And I usually like to do, build me a retro-themed calculator because it usually— depending on the luck of the draw, it’ll have a nice segmented display with the nice green.

28:36 · PETER FRIESE: Nice.

28:38 · ALEXANDER NOHE: Are these solar powered too?

28:40 · RODY DAVIS: Yeah.

28:40 · [LAUGHTER] That would be awesome.

28:45 · It’d be cool if you could have the effects of motion on it too.

28:50 · ALEXANDER NOHE: Oh, yeah.

28:56 · RODY DAVIS: Let’s see.

28:57 · Yeah, let’s just start with that.

28:58 · So I want to start with a prompt that someone might put into the normal prototyper that’s just asking for something, but not really specific on the type of change.

29:10 · If you go into our IDX/AI rules, these are the new rules that we launched.

29:16 · And so you can see that there’s a lot of opinions in here.

29:19 · But that’s the best part about rules is they are opinionated.

29:22 · You can go and change these.

29:24 · And it will have your opinions baked into those rules.

29:27 · PETER FRIESE: Oh, so they’re in your project?

29:29 · RODY DAVIS: Yes, yeah.

29:30 · So if you completely hate what we put together, please change it.

29:35 · And then just restart the chat.

29:36 · And you will have it use your favorite state management, your favorite routing framework, your database, you name it.

29:42 · PETER FRIESE: Nice.

29:43 · Yeah, good stuff.

29:43 · ALEXANDER NOHE: Could we have it for every text string that it shows prefix it with a Z?

29:51 · RODY DAVIS: I guess.

29:52 · Yeah, you could.

29:53 · I mean, I think, obviously, the longer the rules, the less it may pay attention to any specific rule.

30:01 · ALEXANDER NOHE: Oh.

30:02 · RODY DAVIS: And so— yeah, yeah.

30:03 · So one of the first steps it’s supposed to do is come up with a blueprint and a plan, but we’ll see if it actually does that here.

30:11 · PETER FRIESE: Yeah.

30:12 · So that was actually a question from someone on the chat who said, quick question, Rody, I noticed the more messages and prompts sent in the chat directly affects the responsiveness of the model.

30:24 · Perhaps Firebase Studio can develop a way to clear workspace data.

30:28 · RODY DAVIS: So you can do slash clear to remove all the chats in a session.

30:34 · And that’s a way to really speed it up already.

30:38 · And then there’s some other techniques we can do.

30:41 · Like, if it’s really slow, you can go to your workspace list and click Restart.

30:45 · And that will provision a new one for you as well.

30:48 · PETER FRIESE: Is there also a way to summarize the previous conversation and roll it down.

30:54 · RODY DAVIS: You can with Gemini CLI, which we have pre-installed now.

30:58 · You can just go to terminal and type Gemini and have all those features.

31:02 · PETER FRIESE: OK.

31:03 · RODY DAVIS: Also, here’s the blueprint that it generated, which is cool.

31:05 · It’s similar to the prototyper.

31:07 · Like, it describes the UI, the design features, and the structure.

31:11 · And let’s do a restart to make sure.

31:17 · It did not set it up in the— let me do a full restart.

31:23 · PETER FRIESE: Maybe it’s on the Plus button.

31:28 · RODY DAVIS: I think it needs to be fully reloaded.

31:30 · Let’s see.

31:34 · ALEXANDER NOHE: Yeah, hot reload is not— no, that did just come out to the web, right, because I saw something— RODY DAVIS: For Flutter, it came out for Chrome, but not web server, which is what we use.

31:44 · ALEXANDER NOHE: Oh, OK.

31:45 · RODY DAVIS: Yeah, there’s plans to support it in the future.

31:46 · ALEXANDER NOHE: Can we get to the Android preview?

31:48 · RODY DAVIS: Yeah, it’s also restarting.

31:50 · ALEXANDER NOHE: Ah.

31:52 · RODY DAVIS: It just installed Google Fonts, so it’s probably installing that package.

31:56 · ALEXANDER NOHE: While we wait for a hot reload, there was a question about the Attachment button.

32:02 · And clicking on the Attachment button— ooh, look at that.

32:06 · RODY DAVIS: Yeah.

32:07 · ALEXANDER NOHE: It allows you to upload images, but not— RODY DAVIS: Yeah, you can— ALEXANDER NOHE: —not files.

32:12 · RODY DAVIS: —upload drawings, images, or even files from the workspace.

32:17 · ALEXANDER NOHE: Sorry, it looks like the question was in the overview in the base window.

32:25 · Do you know what I’m talking about, where you launch Studio, the prompting?

32:28 · RODY DAVIS: Oh, that one only supports images, I believe, or only— yeah, only images, yeah.

32:34 · ALEXANDER NOHE: Yeah, so I think there’s a feature request to support markdown there.

32:39 · RODY DAVIS: Yep.

32:40 · I also have that feature request out.

32:42 · PETER FRIESE: Oh, to input markdown right in the initial prompt?

32:46 · RODY DAVIS: Yeah.

32:47 · I will say that we support— if you go to the open in Firebase Studio docs for a button, it supports sending stuff to the prototyper, which I have not found a limit to the amount of text you can provide there.

33:01 · So I have submitted full docs created with Gemini Deep Research to there.

33:05 · And it’ll just— like, you can add it as context inside of there.

33:08 · PETER FRIESE: Yeah.

33:09 · What I did found is that once you have the blueprint, you can say, let me edit the blueprint, and that’s a markdown file as well, and then do whatever you want.

33:19 · But yeah, obviously, you’d want to also start out from a markdown file.

33:24 · RODY DAVIS: I was just about to code like a normal person.

33:27 · So let me use AI to make that [INAUDIBLE].

33:30 · PETER FRIESE: Like a savage.

33:31 · RODY DAVIS: Yeah.

33:33 · Remove the debug banner.

33:37 · So, as you can see, it came with a pretty cool UI already with a nice retro font and already with some animations.

33:45 · And that kind of shows you that we just gave it— it generated a retro-themed themed calculator, but it did the work of creating a plan.

33:54 · The nice thing about the blueprint is it really makes an elaborate expansion on top of your prompt, and then also your intention.

34:02 · It’s almost like a PRD.

34:03 · And then we generated all those files at once.

34:08 · So that was 1, 2, 3— three files with a pubspec change.

34:12 · And this is something that’s in the rules, too, is instead of updating the pubspec manually, it uses the CLI, which we prompted it to, so it always knows the correct way to do it.

34:23 · So for our Angular template, when you add a new component, it uses the Angular CLI to generate the new components and routes.

34:30 · So I think doing it this way lets the model do what it’s best at, and then, also, what the tools are do what they’re best at as well.

34:42 · ALEXANDER NOHE: So one thing that I’ve noticed using Gemini CLI is that when I have a really targeted fix, it tends to be really good at that.

34:55 · Whereas, when I vibe code with Firebase Studio, sometimes I want to have a targeted fix.

34:59 · I’m like, change this thing to do this, or the math is not exactly mathing correctly.

35:05 · RODY DAVIS: Yeah.

35:06 · ALEXANDER NOHE: Is there a way to go— ooh, is there a way to figure out where in my project this button is?

35:14 · Like the 9 button, is this a single button on a screen that’s reused for all the number buttons?

35:19 · Because all the operations are one shade.

35:21 · All the number buttons are another shade.

35:22 · Is there a way for me to figure that out by prompting Gemini in Studio, or is there something, maybe, else going on?

35:29 · RODY DAVIS: So I think one of the ways— like, that’s what you would use the Ask mode for.

35:34 · You could ask those type of questions.

35:37 · And then we’ve indexed all the files, and so it would know which file is where, and then, also, the context and state dynamically of what you’ve just added and updated.

35:48 · Is that similar to what you’re asking?

35:51 · ALEXANDER NOHE: Maybe.

35:53 · I was working on something recently where I knew that I wanted it to have a certain behavior.

36:00 · And rather than just ask Gemini for the entire app, I said, in this file, change this thing.

36:06 · Is there a way to figure out from this which file that would be so that I could take a look myself?

36:13 · Do you know what I’m trying to ask?

36:14 · RODY DAVIS: I think so.

36:16 · I think you’re asking— so I guess the way I would do that is if I know the file ahead of time, I usually tell Gemini directly in the chat, update or read this file, describe this file to me, or, what do I need to do to make this file better?

36:33 · Something like that.

36:33 · And then I’m having a conversation with that file.

36:37 · With the file from the workspace, you can even add it there too if it’s like a deeply nested one too.

36:43 · ALEXANDER NOHE: What if I don’t know the file?

36:45 · RODY DAVIS: So I would actually just start by asking, because Gemini CLI is really good at this.

36:51 · And even in this mode too, we have an index list of all the stuff in your workspace.

36:55 · So you can say, I’m trying to find out where this is in the code base.

37:01 · And it could search stuff like that.

37:04 · ALEXANDER NOHE: Oh, OK.

37:05 · RODY DAVIS: Yeah.

37:06 · Because we’ve actually sent the list of the files and the recent stuff and everything like that.

37:11 · Gemini CLI will actually run regex queries and other stuff too.

37:16 · ALEXANDER NOHE: And figure out exactly— RODY DAVIS: Mm-hmm.

37:19 · ALEXANDER NOHE: Oh, OK.

37:20 · RODY DAVIS: Yeah.

37:22 · ALEXANDER NOHE: Neat.

37:23 · RODY DAVIS: So there’s different goals and different trade-offs, for sure.

37:27 · But yeah, I think sometimes you’re like, this is a new code base.

37:31 · I’m explorative, trying to figure out where everything is and how it’s working.

37:37 · One of the things I’ve done usually, either with CLI or regular, is just try to generate markdown files of what it thinks the app architecture is and try to have it go through and scan and create state and build it up.

37:53 · Or even like for these files, generate a series of tests, then run them, because then that kind of also generates a contract of what it thinks that the correct output should be.

38:05 · And then, as I’m going too, I like to have it generate documentation comments in the code too.

38:12 · So it’s kind of just leaving it better as it goes.

38:16 · ALEXANDER NOHE: Oh, OK.

38:17 · Yeah, yeah, yeah.

38:19 · RODY DAVIS: Because also, it’s natural language text, so it’s great for context when it loads in the file too.

38:25 · ALEXANDER NOHE: Speaking of context, is there a limit to the number of tokens we can use in Firebase Studio?

38:32 · RODY DAVIS: So we’re using Gemini 2.5 Pro here.

38:34 · We switched.

38:35 · So Gemini supports up to a million.

38:40 · Obviously, it’s less than that with the context that we send in.

38:44 · But I think context is one thing, but usable context is different, right?

38:50 · When you’re working with code, I think it’s a lot different than just chatting with a PDF.

38:55 · And the more that you give it, the harder it is to find the exact things that you’re looking for and to have meaningful change output.

39:04 · I’ve noticed that my best performance is when I’m— even in CLI, I’m hitting like 75%, 80% context window.

39:13 · I feel it’s like the sweet spot for— I have a lot of context in there, but then I still have a lot of performance, because the performance will go down the more you fill it.

39:24 · Even with caching, it still takes a while to load it in.

39:28 · It still takes a while to parse and run inference on that too.

39:33 · So it’s just definitely a trade-off.

39:36 · But there are times when you want to fill it up and do Ask questions like that.

39:43 · ALEXANDER NOHE: Cool.

39:47 · Peter looks like he’s dying to ask a question.

39:49 · PETER FRIESE: [LAUGHS] Yeah, so you mentioned that you can ask it to generate documentation.

40:01 · So why don’t we ask it to generate a diagram of this calculator for us?

40:06 · RODY DAVIS: Yeah, let’s do it.

40:07 · OK.

40:10 · Let’s do, in the blueprint.md, generate a diagram of the application features and state.

40:28 · Let’s see if we can do that.

40:34 · So we can see it reads, and then we’ll make the changes, and then also apply the edit out.

40:40 · We did switch to Auto-Run here.

40:43 · Doing a nice mermaid diagram— nice.

40:47 · So let’s go ahead and— hey.

40:53 · PETER FRIESE: All right.

40:54 · ALEXANDER NOHE: Ooh.

40:57 · Wow.

40:57 · PETER FRIESE: Can we preview the diagram somehow?

41:00 · RODY DAVIS: Preview.

41:03 · ALEXANDER NOHE: I think you want markdown preview, which might be an extension.

41:07 · Or if you do Command-Shift-P too, open up the command palette.

41:10 · RODY DAVIS: Yeah.

41:11 · I think we— ALEXANDER NOHE: Would that work?

41:12 · No.

41:12 · RODY DAVIS: I wonder if we render it in our— I don’t know if the built-in— PETER FRIESE: Oh, can you go— so I see the button, so right next to the diamond icon, yeah.

41:21 · RODY DAVIS: Yeah, that’s the one I just did, yeah.

41:23 · I don’t think we render mermaid diagrams in here.

41:27 · PETER FRIESE: Oh, OK.

41:28 · ALEXANDER NOHE: Not yet.

41:29 · RODY DAVIS: Yeah, not yet.

41:32 · PETER FRIESE: OK, feature request.

41:34 · ALEXANDER NOHE: Yeah.

41:34 · RODY DAVIS: Yeah.

41:35 · I’m trying to figure out— I mean, I know GitHub will render it and other places, but yeah, I mean, at least it rendered the diagram, which is cool.

41:46 · Let’s see.

41:47 · It has the list of operations, the different states, subgraph.

41:55 · Yeah, this is a calculator in state diagram.

41:58 · That’s cool.

42:00 · Nice.

42:02 · Yeah.

42:03 · And then the other thing too, we could take this further and be like, OK, great, update the code you generated to have documentation comments, and write some unit and widget tests, and run the test, checking for errors and fixing any issues.

42:45 · OK.

42:46 · And then we’ll do, create plan and get started.

42:54 · See if we can try this out.

42:55 · So this is a relatively complex question with a series of compound things that I’m wanting it to do.

43:03 · So obviously, I want it to do a chain of thought first and then— all right, we’ll go ahead, and it looks like it’s refactoring it.

43:13 · It’s moving things around to a more layered architecture, which is cool.

43:22 · Oh, it looks like the calculator is responsive.

43:24 · Nice.

43:25 · ALEXANDER NOHE: Well, you can’t see the results at the top, though, right?

43:31 · RODY DAVIS: Yeah, I mean, if you don’t show the answer, it could be correct, so TBD.

43:36 · ALEXANDER NOHE: We just hope.

43:38 · [LAUGHTER] RODY DAVIS: Go ahead and move this down.

43:45 · If you add the results but never look at it, is it correct?

43:48 · Is it a superposition of what you’ve added?

43:54 · All right.

43:55 · So it generated the test.

43:56 · Let’s go ahead and run them.

43:57 · It’s probably going to fail on the default one.

44:00 · I think we’ve already removed it.

44:01 · We’ll see.

44:03 · But one of the nice things about having Gemini run the commands here is it will return all the standard error and standard out.

44:12 · So it can fix screens and fix any issues.

44:20 · Yeah, it looks like there’s some errors that are going to return.

44:26 · ALEXANDER NOHE: So while this is running, we have a few more questions.

44:30 · RODY DAVIS: Sounds good.

44:32 · ALEXANDER NOHE: It’s hard to keep up with all of them.

44:34 · So why isn’t Android-native development not supported by Firebase Studio yet?

44:39 · RODY DAVIS: So we do support it.

44:40 · It’s on pause right now.

44:41 · But we do have Android Studio Cloud, where you can go onto the mobile one and launch an Android Studio workspace.

44:50 · ALEXANDER NOHE: Nice.

44:52 · Chrome extensions— can we use Studio to build those?

44:56 · RODY DAVIS: Yeah, I mean, you can.

44:58 · I think, Nohe, you’ve explored this a little bit too.

45:00 · I think you can build the extension and download and pull out the bundle.

45:05 · I mean, I don’t think you could run a debug version of the Chrome extension because it needs the Chrome APIs, and we’re running in an iframe.

45:13 · But you can literally do whatever you’re going to do inside of Code OSS.

45:18 · ALEXANDER NOHE: Cool.

45:19 · And then, what’s this going to cost me, Rody?

45:24 · RODY DAVIS: Yeah, so we have our pricing page, but everybody gets three free workspaces and then one free Flutter and React Native space.

45:33 · And then you can join the GDP program to get more workspaces.

45:38 · ALEXANDER NOHE: GDP— Gross Domestic Product program?

45:41 · RODY DAVIS: That is correct— no, Google Developer Program.

45:44 · ALEXANDER NOHE: Oh, OK, gotcha.

45:45 · I get those mixed up all the time.

45:47 · And then what about tagging or editing individual files?

45:51 · Why can’t we?

45:52 · RODY DAVIS: You can.

45:53 · You can just reference it by name.

45:56 · We have an index of the entire file list that you have.

46:00 · Like as you saw earlier, I just said, update blueprint.md, and it knew because of the ones in my file list.

46:11 · In Gemini CLI, you can tag it with an at symbol.

46:14 · And we have Gemini CLI right here.

46:15 · ALEXANDER NOHE: You can also do that here, right, in the Attachment button, if you go down there?

46:20 · RODY DAVIS: So yeah, you can attach it, but it would load it as a context file as opposed to a file path.

46:28 · So it’s less prescriptive on, I want you to update this file.

46:33 · It’s more like, here’s a file its context is in.

46:36 · PETER FRIESE: So I think one of the advantages of being able to tag a file is that you can be sure that you’re talking about the right file.

46:43 · Specifically, if you are in a project that has a large folder structure, and you might have a list of those files with the same name, right?

46:52 · RODY DAVIS: I literally just go copy relative path, and I paste it in, and just do it that way.

46:56 · PETER FRIESE: Yeah.

46:57 · OK.

46:58 · So while that works, I think this sounds like a feature request.

47:02 · This is something that the team is looking into or people should be going on UserVoice to request.

47:11 · RODY DAVIS: Yeah, or you can use Gemini CLI right now and tag those by name as well too, yeah.

47:16 · PETER FRIESE: Yeah.

47:18 · So if I do something with the Gemini CLI, will it take the blueprint into consideration?

47:26 · RODY DAVIS: Yep, because it also has context of the same folder structure that you’ve launched.

47:32 · And so one of the things we’ve done is make sure that these rules files work for both.

47:37 · Like, we generated a Gemini.md for the same thing that we have for the AI rules.

47:41 · So it’s going to have the same context there for this type of prototyping experience.

47:46 · PETER FRIESE: So the only difference would be that if I have a chat conversation going in the prototyping chat UI, and then I go into the CLI, it wouldn’t have the chat context, right?

47:59 · RODY DAVIS: Yeah.

48:00 · PETER FRIESE: Except if I asked, can you please summarize this conversation for me?

48:03 · And then typed it into a CLI.

48:06 · RODY DAVIS: Or write it to a markdown file.

48:08 · I think that’s the blueprint— a good way to do that, yeah.

48:10 · PETER FRIESE: Yeah, exactly.

48:13 · ALEXANDER NOHE: Can we actually look at the test that it wrote?

48:16 · RODY DAVIS: Yeah.

48:17 · And yeah, it went through the tests, caught errors, and even fixed the other ones.

48:22 · So let’s go in here.

48:23 · ALEXANDER NOHE: So whenever I fail a test, I usually just delete the test and move on with my life.

48:28 · RODY DAVIS: Nice.

48:29 · It did delete the default widget test.

48:31 · That was for the Hello World project that it generates the counter.

48:36 · ALEXANDER NOHE: Oh, how’d it fail that one?

48:40 · RODY DAVIS: Because when we— yeah.

48:42 · Oh, yeah.

48:43 · ALEXANDER NOHE: No, I’m making a joke.

48:44 · RODY DAVIS: So what’s cool is it generated a unit test like I asked it to.

48:50 · So that was the domain.

48:52 · And then it also generated a widget test, which is for the UI testing, so that’s cool.

48:58 · ALEXANDER NOHE: OK.

49:01 · RODY DAVIS: Which I always forget the correct way to write widget test.

49:04 · So it’s always great that Gemini can write these as well.

49:09 · ALEXANDER NOHE: I used to write a lot of test files.

49:11 · Like, how creative at doing the wrong thing can it get with test files, do you think?

49:17 · RODY DAVIS: I think— ALEXANDER NOHE: Oh, hold on, there’s a division by 0 there, right, towards the bottom?

49:24 · RODY DAVIS: Yeah.

49:25 · Let’s see.

49:26 · Division by 0, yeah.

49:28 · ALEXANDER NOHE: Oh, look at that.

49:30 · RODY DAVIS: I’ve actually found with Gemini 2.5 Pro, natural language to unit test is actually pretty great if you know the— well, one, it can just kind of generate whatever.

49:41 · But if you have a very guided series of things you want to test, what I usually do is I provide it a couple pseudocode examples.

49:48 · And then it will stamp out and continue the pattern.

49:52 · I’ve had pretty good luck with that.

49:54 · ALEXANDER NOHE: So Rody, I want to ask you about your intentions.

49:59 · Is it intentional that Firebase Studio don’t handle the database provisioning like Firestore?

50:04 · In most docs, it’s just a prompt.

50:06 · But one has to go to Firestore to provision it.

50:08 · Otherwise, it fails.

50:09 · Can you talk about that?

50:13 · RODY DAVIS: Doesn’t the Firebase MCP server now support generating Firestore?

50:19 · ALEXANDER NOHE: I believe you might be right.

50:21 · RODY DAVIS: It might be one of the new tools.

50:23 · So one of the things that the Firebase MCP that we’re investing in is the fact that it can generate a lot of these things from the console that you would have had to do otherwise.

50:36 · So ideally, the Firebase MCP just gets ultra powerful over time.

50:42 · And then we’re just able to integrate with that and then use that as like a connection point.

50:48 · ALEXANDER NOHE: So I was definitely paying attention.

50:50 · But for Peter, who wasn’t, does the Firebase MCP come already set up out of the box when you launch Studio?

50:57 · RODY DAVIS: It does not, but you can follow our codelab or any of the other docs on how to— it’s just literally a one-line copy into this.

51:06 · Like, you just paste in this one section, and then it installs the Firebase tools.

51:11 · The Firebase tools are pre-installed on the machine.

51:13 · But this just allows you to connect it.

51:16 · And you can also do dot Gemini slash MCP, if you want, in the Gemini CLI as well.

51:24 · ALEXANDER NOHE: Very cool.

51:25 · RODY DAVIS: Yeah.

51:30 · Yeah, so let’s have it to do another change.

51:32 · Let’s do, make the calculator have a nice color gradient with animated borders.

51:49 · This is a more complex UI thing, but it might be cool to see what it comes back with.

51:55 · I found the iteration to be really nice to be able to try out different ideas, especially knowing that it’s going to be inside of a Git repo.

52:05 · I can just restore it anytime.

52:08 · ALEXANDER NOHE: How do you go about restoring it if you are running something, and you’re like, oh, gosh, that— RODY DAVIS: Yeah.

52:14 · ALEXANDER NOHE: Oh, right there.

52:15 · RODY DAVIS: So you can literally just go in here, and you can— I believe it’s— yeah, Checkout or Cherry Pick.

52:21 · And you can also even do revert changes, I believe.

52:25 · And yeah, if you have a staged one, you can always discard all those as well.

52:29 · But like I said, VS Code also has this feature.

52:32 · I don’t know why it’s not showing up, but the timeline also will usually show changes as well.

52:38 · ALEXANDER NOHE: OK.

52:40 · RODY DAVIS: Let’s do— but yeah, it’s already like we’re trying to bring the best of what people love about the prototyper into Firebase Studio.

52:56 · And I think this kind of makes it a nice way to start with whatever framework.

53:03 · I think we started with web and React and Next.js and Angular and Flutter because those are the most visual ones that we had.

53:12 · But there’s nothing stopping you from setting up the Go template or setting up, like I said, Vue or Svelte or something like that.

53:20 · So we actually encourage the community to try it out and share their own rules files and their own MCP server setups and stuff like that, because I also played around with Astro and getting this working too.

53:33 · And it’s kind of cool to just vibe code a content-generated site.

53:38 · So yeah, it’s fun.

53:40 · PETER FRIESE: So does that mean if I have any kind of workspace— so let’s say I have a project that has been sitting around somewhere in GitHub.

53:52 · And it uses some sort of technology stack that might not even be supported.

53:59 · Can I import it into Firebase Studio and then use the prototyper to start working on my project again?

54:10 · RODY DAVIS: So you can follow the files here.

54:13 · You just have to, in VS Code settings, make sure that agentic workspace is true, and make sure that you have a rules file there.

54:23 · You can copy it and customize it to whatever your project is specific.

54:28 · But then you just literally go into import repo.

54:30 · And as long as those files are there— oh, and then dev.nix.

54:34 · You would definitely need that if you don’t have one already.

54:37 · But as long as— ALEXANDER NOHE: Like, Peter’s looking for Vapor and Swift, if I had to guess.

54:43 · RODY DAVIS: Nice, yeah.

54:44 · You could use server-side Swift here.

54:45 · Yeah, for sure.

54:46 · And you could run it.

54:48 · PETER FRIESE: Yeah, I was looking into that.

54:50 · And I hit a wall because I wanted to use the latest version of Swift, Swift 6.

54:56 · And apparently, that is not supported on Nix.

54:59 · Somebody seems to be working on that.

55:01 · RODY DAVIS: Yeah, you can do unstable.

55:04 · So if something isn’t supported, you can also, in the packages, you can— there’s a way in Nix to actually just install the binary directly from a GitHub release.

55:16 · And so, with that SHA, you could literally install the binary and do all the different kind of stuff.

55:23 · So there’s definitely escape hatches for that.

55:25 · But yeah, I agree that sometimes if there’s a version that’s just slightly too new or just whatever, it can be annoying.

55:32 · But one of the whole core tenets of Nix is all of the packages get updated together with the channel, so everything’s guaranteed to work.

55:41 · And so all 120,000 packages will compile because of the way that they do like their monorepo and stuff.

55:51 · PETER FRIESE: Interesting.

55:52 · OK.

55:53 · But coming back to my original question, so if I add those three lines to my pre-existing repository, I could somehow make that agentive enabled?

56:07 · RODY DAVIS: Yep, exactly.

56:08 · PETER FRIESE: Is that correct?

56:08 · RODY DAVIS: Yep.

56:09 · Mm-hmm.

56:10 · PETER FRIESE: Nice.

56:11 · RODY DAVIS: Looks like it generated a nice animated calculator that’s showing up.

56:18 · PETER FRIESE: We should make the color change in response to the value.

56:23 · RODY DAVIS: Yeah, let’s see.

56:25 · To the numbers?

56:26 · PETER FRIESE: Yeah.

56:27 · ALEXANDER NOHE: Yeah.

56:28 · PETER FRIESE: In response to the result. The higher the result, the hotter the number, the hotter the color.

56:34 · ALEXANDER NOHE: More neon.

56:36 · RODY DAVIS: Like real-life conditional formatting.

56:37 · PETER FRIESE: [LAUGHS] Exactly.

56:51 · RODY DAVIS: Yeah, this will be cool.

56:54 · Yeah, it’s also just kind of fun to— like, you could build this in a period of time.

57:02 · But while it was generating, we were having discussions about other stuff.

57:06 · It lets you focus on the things that you as a developer enjoy, which is thinking about the abstract of the application.

57:13 · And also, at any point, you just can go into the code and do it a different way.

57:19 · There’s many times where Gemini will take it a wrong direction.

57:23 · And I’m like, OK, let me give it a better stub to start from.

57:26 · And then from that stub, you will have a way more high-quality result because AI generation’s kind of like image generation, where if you try to generate an image with five words, it’s going to not be what you probably had in mind for what you’re trying to generate.

57:45 · And so if you think about project and code generation the same way, be very descriptive, or at least like, this is the things that I want you to do, avoid the things that I don’t want you to do, but also just kind of guiding it and growing it into the direction you’re wanting as well.

58:02 · PETER FRIESE: Yeah, that was a question around an aspect of vibe coding.

58:10 · You have the tool generate code.

58:13 · And then, even if you are a seasoned developer, and you might be an expert in the framework that it’s using, sometimes it’s hard to spot mistakes in the code.

58:23 · So here, a user asked, if the AI makes a mistake in the code that’s hard to spot, like a hidden bug or security problem, how does the tool help me find and fix it, even if I don’t notice right away?

58:37 · RODY DAVIS: So one of the things about being a developer is you should view AI-generated code as untrusted legacy code too because it is code that you didn’t write or code that is immediately stale.

58:51 · And what do you do with untrusted code?

58:54 · You write unit tests.

58:56 · You run fuzzing.

58:59 · You do pen testing.

59:00 · All these approaches still apply to vibe coding.

59:03 · So that’s why I had it generate a series of tests, like you said, Peter.

59:08 · It even tested for— or Nohe, it divided by 0.

59:11 · Like, you want to cover all of your cases.

59:15 · And the more that you can generate unit tests and widget tests of being— even if it’s three more times tests than it is actual code, or even simulation testing, or anything, you want to get to a point where you’re covering at least a sufficient amount of the code paths.

59:33 · And you can get closer by— different tools used, like code coverage.

59:38 · And I’ve been like, OK, run code coverage, check which files still need coverage, try to write new unit tests, and go through a loop and have it try to check for all the branches because, usually, you’ll uncover different errors there.

59:53 · I think the less tests and the less reviewing that you’ve done in a code base, the more likely it is to have a subtle off-by-one error or a subtle security issue.

1:00:04 · But we also have tools that will help you as well.

1:00:06 · We have Firebase App Check, which will make sure that the correct users are there.

1:00:10 · We have Firebase Auth, which will make sure that your application is protected and locked down to only authorized users.

1:00:18 · We have ways to do Firebase security rules to make sure that only the correct data is done.

1:00:23 · So even outside of your application, you can still sandbox it to a certain degree.

1:00:27 · But yeah, at the end of the day, you still need to write tests and have it generate the types of things that you would do even if you were another developer on the team reviewing code from someone else that’s working on some new feature.

1:00:41 · ALEXANDER NOHE: Are you saying I can’t just say, hey, there’s a bug in here, go find it, even if I don’t know whether or not there’s a bug in there?

1:00:48 · RODY DAVIS: You can, but it might generate a new bug while it fixes the old one.

1:00:52 · One of the things about programming is, oftentimes, a fix for one thing will uncover two different things.

1:01:00 · ALEXANDER NOHE: Yeah.

1:01:01 · And then you have that load-bearing bug that’s rooted into the application.

1:01:05 · Everybody’s like, oh, no, you just have to save, close, save, close, and then you can add a new layer in.

1:01:10 · Yeah.

1:01:10 · RODY DAVIS: It becomes a feature at that point, yeah.

1:01:12 · ALEXANDER NOHE: Yeah.

1:01:13 · PETER FRIESE: Yeah.

1:01:14 · So adding on to my previous question, here is a user who said they have been using Firebase Studio successfully as someone with zero knowledge about coding.

1:01:27 · And they’re struggling to get their app into the Google Play store.

1:01:31 · So let’s talk about that part of the question next.

1:01:35 · But first, coming back to what you said, Rody, which I totally agree with, you have to review the code.

1:01:45 · You have to treat it as something that you didn’t write yourself.

1:01:48 · You need to test it.

1:01:49 · You need to know how to make it secure.

1:01:53 · So that requires lots of knowledge that for us is second nature.

1:01:58 · But for somebody who is completely new to coding, they might not even know that there are security risks and how to deal with them.

1:02:11 · So what should people that come from a completely different field do in order to not get caught out?

1:02:19 · RODY DAVIS: So one of the things that I would suggest is if you’re coming into this with not a lot of experience, or maybe you did it a long time ago, or just changing industries or whatever, that’s where our other Gemini tools are really useful.

1:02:34 · So Gemini Deep Research is a great way to get answers and more questions to the things that you don’t even know to ask.

1:02:44 · So if you literally put in there, How do I get my app into the Google Play Store?

1:02:50 · What are the list of things I need to do?

1:02:52 · It would do a full research page on exactly, step by step, on the ways you get your metadata done for the screenshots, ways to do your review, how to upload the Play Store, step by step, often tutorials.

1:03:09 · So use tools like that to really help you get around the knowledge gaps, because you’ll be surprised at how straightforward that is.

1:03:20 · Firebase Studio is just a development platform, an IDE, so we’re just one part of the puzzle.

1:03:26 · But I would definitely suggest Gemini and Gemini Deep Research for that kind of stuff.

1:03:32 · PETER FRIESE: Yeah, I remember we had this discussion when we were at Google I/O Connect in Berlin.

1:03:39 · And you told me about how you do research with the tool.

1:03:43 · And then I tried it out and asked it to research restaurants near where I live.

1:03:48 · And it was really great.

1:03:49 · So it came out with this really nicely written article that almost was like something that you would read in a restaurant review magazine.

1:03:58 · And I was like, oh, you should totally check out this one here.

1:04:01 · RODY DAVIS: Exactly.

1:04:02 · PETER FRIESE: So yeah.

1:04:02 · RODY DAVIS: And also, NotebookLM is great too.

1:04:04 · Yeah, you can basically take the research docs and then put them in a NotebookLM and ask more directed questions there too.

1:04:10 · PETER FRIESE: Yeah.

1:04:11 · ALEXANDER NOHE: I’ve been putting in my financial statements into NotebookLM because I saw a guide on this online.

1:04:17 · I was like, oh, I’ll just try it.

1:04:18 · And then I was like, wow, you’re really good at doing this thing, like paying your bills on time.

1:04:22 · And I was like, oh, thanks.

1:04:24 · RODY DAVIS: Yeah, I uploaded 62 PDFs for me and my wife for getting a house.

1:04:29 · And so we had all of the disclosures that they gave us.

1:04:33 · And tools like this make it so easy to scan and parse long documents of structured texts.

1:04:40 · As a human, it’s really hard to read that in a quick manner.

1:04:45 · But yeah, use these tools for what they’re good at because there’s a lot of tutorials out there on how to publish your app on the App Store.

1:04:51 · But usually, there’s a ton of information.

1:04:55 · It’s spread across Stack Overflow and Stack Exchange and Reddit and search.

1:05:00 · But Gemini Deep Research basically takes all that and normalizes it into one place and has a series of steps that are often going to be pretty good.

1:05:09 · PETER FRIESE: Yeah.

1:05:10 · ALEXANDER NOHE: If you ever need an ego boost, like you just wake up one day, and you’re like, man, I’m not feeling it, put your resume into NotebookLM, and have it generate a podcast.

1:05:20 · It’ll be like, this guy— PETER FRIESE: Oh, yeah, that’s fantastic.

1:05:22 · RODY DAVIS: Oh, I thought you were going to say, have it roast you.

1:05:25 · ALEXANDER NOHE: Oh.

1:05:26 · Ooh, that actually might be fun too.

1:05:28 · Can you guide it like that and be like, roast this guy?

1:05:30 · RODY DAVIS: I’m sure it can.

1:05:31 · There is a system prompt setting for it.

1:05:36 · PETER FRIESE: Nice.

1:05:37 · ALEXANDER NOHE: Definitely going to be looking this up.

1:05:38 · PETER FRIESE: All right.

1:05:39 · So I know that lots of people asked about how they can get their feature requests to the team.

1:05:47 · So I wanted to show this here, which is the UserVoice that the Firebase team is using.

1:05:53 · So this is a site that’s public, you can go to, and you can search for anything.

1:06:00 · And I did a quick search for Studio.

1:06:02 · And you can see that there’s already a couple of people who asked about Flutter and Android Studio in Firebase Studio.

1:06:14 · And you can submit your own feature request.

1:06:19 · But chances are that there already are people who are interested in the same thing.

1:06:24 · So you can sign in and upvote the thing.

1:06:27 · And then, eventually, we’ll have the resources and time to work on these.

1:06:33 · And you can go through all of these, and you’ll see that there are a bunch of those feature requests that are actually implemented in the product.

1:06:45 · So that is one way to reach out to the team.

1:06:50 · Rody, is there any other way how people could get in touch with the Firestore team and say, hey, I have this really fantastic idea?

1:06:59 · Here it is.

1:06:59 · Here is the prototype or whatever.

1:07:01 · How can they do that?

1:07:02 · RODY DAVIS: Yeah.

1:07:03 · For the Studio team, I think the best place would be— the forum is great.

1:07:08 · So we also have a forum.

1:07:10 · We check Reddit.

1:07:11 · We check Twitter and LinkedIn.

1:07:15 · The best place would be to have official place, like on the forum or tools like that, because that’s where we can easily close out things when they’re resolved, point people to the correct resources.

1:07:28 · And then we also have the Firebase community that we’re also a part of as well.

1:07:34 · Yeah, if you have any issues, we are happy to answer them and help them.

1:07:40 · One of the interesting things about Firebase Studio is people will come with Firebase issues or Gemini issues or app issues.

1:07:49 · And it’s literally infinite the amount of things that could be.

1:07:54 · So yeah, but we’ll easily be able to direct you to the right people.

1:07:58 · PETER FRIESE: Yeah.

1:07:59 · And we’ll put links to all those resources in the video description so people can find it after this live stream ends.

1:08:08 · Nohe, did we cover most questions on the live stream?

1:08:12 · ALEXANDER NOHE: I think so.

1:08:14 · There was a question about Data Connect that I saw come through.

1:08:18 · Maybe we should do another Data Connect live stream eventually?

1:08:21 · PETER FRIESE: Yeah.

1:08:22 · ALEXANDER NOHE: Yeah.

1:08:22 · PETER FRIESE: Yeah.

1:08:24 · We should do one where we have people from all those teams and then make them work together and implement an application.

1:08:31 · ALEXANDER NOHE: We should do it like the holiday special that we planned last year.

1:08:34 · PETER FRIESE: Yeah, I know.

1:08:35 · I know.

1:08:36 · And maybe we could reuse— ALEXANDER NOHE: That would have saved the year.

1:08:38 · PETER FRIESE: Maybe we could reuse that really funny skit that we did.

1:08:42 · ALEXANDER NOHE: Yeah, yeah.

1:08:43 · Rody, were you in on the holiday special that we talked about?

1:08:47 · RODY DAVIS: I know what you’re talking about, but I wasn’t in on it.

1:08:49 · ALEXANDER NOHE: OK, great, great, great.

1:08:50 · Yeah, yeah, yeah.

1:08:51 · OK.

1:08:52 · Ah, that would be fun to do on a live stream.

1:08:56 · PETER FRIESE: Yeah, absolutely.

1:08:58 · Yeah.

1:08:59 · And then, because it’s a live stream, it’s a live stream, right?

1:09:03 · Just saying.

1:09:05 · All right, Rody, we’re almost at time.

1:09:09 · Is there anything that we didn’t discuss that you are dying to tell people about?

1:09:15 · RODY DAVIS: I think the biggest thing would be, just come try it out.

1:09:19 · If you haven’t used Firebase Studio recently, it’s probably changed in the last week.

1:09:24 · So we’re always working on shipping updates and making it better and rapidly improving it.

1:09:31 · And even down to the day, if you’re having issues with Gemini, the issue might get resolved the next day.

1:09:38 · And so if anybody is having issues opening workspaces, definitely let us know on the forums, and we’ll see if we can get that resolved pretty quickly.

1:09:47 · But I’ll just say, also, I really like using Gemini CLI inside Firebase Studio.

1:09:52 · It is super underrated how powerful it is to have a full VM that you can just ask and iterate on questions.

1:09:59 · And even running Gemini CLI alongside the regular Gemini chat and having it update our previews, it’s kind of a magical experience.

1:10:09 · We can have them all running task in different threads.

1:10:12 · So yeah, no, it’s a fun time.

1:10:14 · PETER FRIESE: Is there a place where people can go and see the release notes?

1:10:20 · RODY DAVIS: Yeah, I think that we have the main Firebase release notes.

1:10:24 · We probably most often put it on the blog and then share it on social channels and things like that.

1:10:31 · We’re usually pretty good about making little short snippets.

1:10:33 · PETER FRIESE: Yeah, I was thinking about Firebase Studio.

1:10:36 · Is there a place where I can go and say, OK, so what has changed in the last week?

1:10:41 · RODY DAVIS: Yeah, we have a general roadmap and some other things that I’ve shown.

1:10:46 · But I’m not aware of anything other than just updating our docs and releasing social posts.

1:10:53 · PETER FRIESE: OK.

1:10:54 · Cool.

1:10:54 · All right.

1:10:55 · Yeah, we’ll post all the links in the description.

1:10:59 · RODY DAVIS: Awesome.

1:11:00 · PETER FRIESE: And I think, with that, it is time to say thank you, Rody.

1:11:05 · Thanks for coming on.

1:11:07 · Thanks for showing us some of the cool new features and taking questions from Nohe and me and the audience.

1:11:15 · RODY DAVIS: Thanks for having me.

1:11:16 · PETER FRIESE: Yeah, we’ll bring you back for the grand thing that we’ll roast the entire team.

1:11:24 · RODY DAVIS: Nice.

1:11:25 · PETER FRIESE: All right.

1:11:26 · RODY DAVIS: That’s great, yeah.

1:11:28 · PETER FRIESE: Cool.

1:11:28 · Nohe, do you have any final words before I click the button to send everybody back home?

1:11:35 · ALEXANDER NOHE: No, click the button, Peter.

1:11:37 · PETER FRIESE: All right.

1:11:38 · RODY DAVIS: All right.

1:11:38 · PETER FRIESE: Thanks for tuning in, everybody.

1:11:40 · Thanks for joining us.

1:11:41 · And go try it out.

1:11:43 · Let us know what you think.

1:11:45 · And we’ll post all the links so you can send your feedback.

1:11:47 · Thanks, and see you in the next one.

1:11:50 · RODY DAVIS: All right.

1:11:51 · Bye.

1:11:54 · [MUSIC PLAYING]