Get started with the amazing new Firebase Extensions 🌩️ feature announced today. Deploy serverless solutions to the cloud with the click of a button.  https://fireship.io

Firebase Extensions: https://firebase.google.com/products/extensions/

#firebase #serverless 

Take the Firebase quiz 🤓

iOS https://itunes.apple.com/us/app/fireship/id1462592372?mt=8
Android https://play.google.com/store/apps/details?id=io.fireship.quizapp

Upgrade to Fireship PRO at https://fireship.io/pro
Use code lORhwXd2 for 25% off your first payment.
2024-02-04T06:34:10.505Z
nova-2
2-general-nova
2024-01-09.29447
30089e05-99d1-4376-b32e-c263170674af
23704004-2cb5-4b80-a352-7446c64e68ed
f4aad45da2b90be5ee89b6104a334d6d6468381f32a215438c05acefcb6eb9da
67875a7f-c9c4-48a0-aa55-5bdb8a91c34a
deprecated
Today at Firebase Summit, a big new feature was announced, Firebase Extensions.
Imagine if the cloud had something like a WordPress plugin system, where you can install or opt in to specific features based on the needs of your application.
And with this initial release, we have 9 plugins that handle things like image Resizing, distributed counters, transactional email, and more.
And once again, Firebase has made a bunch of my past videos obsolete.
I'm about to end this My whole career.
So today, I want to show you how to not write code by using Firebase Extensions.
If you're new here, like and subscribe, and consider becoming a pro member at FireShip.
Io if you're serious about building apps on the Firebase platform.
To get started, you'll need to have a Firebase project, and if you go down here to bottom, you'll see a new option for extensions.
Let's go ahead and install the first one we see to resize images.
Now unfortunately for me about a year ago, I created a video about resizing images with a cloud function.
But this extension provides the exact same functionality with no effort on my part, and it's tested and maintained by the smart people at Google.
Let's go ahead and click install, and you'll see it takes us to a page to configure the extension.
The first thing it'll have you do is review the architecture or APIs enabled by this extension.
When it comes to image resizing, you'll need to have a cloud storage bucket and then a cloud function to handle the resizing after a file is uploaded to that bucket.
Go ahead and click next, and then it will have you review the access granted to the extension.
Firebase will automatically create the appropriate service account that has I'm roles assigned for whatever resources this extension needs.
Then the 3rd step is where we configure and customize the behavior of the extension.
In this case, we'll go ahead and have it generate thumbnails for 205101000 pixel sizes.
Then we'll go ahead and specify a directory in the bucket named thumbs, which is where the thumbnails will be saved.
It will take a few minutes to install, because what it's doing under the hood is deploying a cloud function to your project.
After it's complete, you'll be able to review the configuration details, and then if you go to the functions tab, you'll see that cloud function deployed in your functions list.
And if you're really interested in how the function works under the hood, you can go to the GCP console, to Cloud Functions, click the source tab, and then you can see the full source code for the function.
And all of the extensions are open sourced, so you can see them on GitHub as well.
And hopefully in the near future, they'll open the system to third party developers, meaning you could extend and potentially monetize the Firebase platform as a developer.
But I'm really just speculating there.
I have no idea if or when that'll happen.
So now that we have this extension installed, let's go into our storage bucket and upload a file there and see what happens.
You can see our storage bucket is completely empty, and I'll go ahead and upload the cover image for this video.
After the upload is complete, we'll go ahead and refresh the page, and you'll now see we have a thumbs history here that has magically resized this image to the sizes that we specified.
So if you have an app that handles high resolution file uploads, this extension gives you an incredibly simple pipeline for resizing and optimizing those images.
Now let's go ahead and take a look at a second extension that makes another one of my videos obsolete, and that is the translate text extension.
This particular extension works with Google's Cloud Translation API.
And that is a paid API, although it does have a free tier.
So you need to at least have a billing account set up and be on the Blaze plan for this Firebase project.
We can go ahead and follow these same steps as before, but I'm also going to add Japanese and Arabic language codes to the translations.
And there's over a 100 different language codes for you to choose from.
Now this extension will be looking for a collection in Firestore.
We'll go ahead and call that comments.
And then when that document is created, it will look at the text field on the document and then translate the text into an object called translated.
Let's go ahead and give that a couple minutes to install, and then head over to the Firestore database.
We'll create the comments collection, add a document to it that has a text property on the document.
And after it's created, it should automatically translate that text view.
Now, this should happen in a matter of seconds, but nothing actually happened here.
So what went wrong?
Are Firebase extensions broken, or did I do something wrong?
We can find out by going to the Cloud Function logs.
What you'll notice is that most of the translations ran properly, except for the Japanese language code.
And so this was actually my fault.
JP is not the proper language code, it's actually JA.
And I wanted to show you this because extensions aren't fail safe.
If you don't add the right configuration options, they won't work properly.
We can fix the issue by going back to the extension tab, and reconfiguring the extension's parameters.
I'll just go ahead and change the language code from jp to ja, and then we just have to wait a couple minutes for those changes to propagate or for the underlying cloud function to be redeployed.
Now Now if we go back to Firestore and add a new comment to the comments collection, you'll see it translates the text in no more than 2 seconds.
So it is incredibly awesome to just able that kind of feature with a click of a button.
Now, I have to admit that building a translation feature from scratch really isn't that big of a deal.
It's just a simple API call that you can make from your back end code.
So the translation extension is really just a minor convenience in my opinion.
However, something that's not so trivial is setting up a distributed counter, when you have an extremely high volume of writes going to a single document.
So normally, Firestore limits you to about 1 write per second, which you can burst above, but what if you have a social media app and you have an extremely viral post that's generating 10,000 likes per second?
Handling a massive volume of writes like that would require you to shard the database and also carefully aggregate the count across those shards.
Needless to say, it's not exactly an easy process, but now there's an extension for that.
Let's go ahead and install the distributed counter extension, and it's going to install 3 different cloud functions in this project.
Then after the installation is finished, There will be a few additional steps to take on your part.
In this particular case, you'll need to update your Firestore security rules so that write access is granted to that shard's collection, and then it will also give you a command run to set up a cron job in your Google Cloud Platform project, and its job is to ping the controller function to make that the shards are scaled properly.
And last but not least, it gives you a script that you can use in your front end code, so it's also extending the Firebase JavaScript SDK.
Now this is a feature that's not required by a lot of apps, but if your app is seeing a huge volume of writes, you'll probably want to get this implemented very quickly because it means your app is scaling up quickly.
And having something packaged up and ready to go like this is extremely valuable.
I'm gonna go ahead and wrap things up there.
I feel like I don't have much else to talk about because extensions are just so easy.
But in the future we'll look at some more complex examples with actual front end framework integrations.
And make sure to let me know what you think about Firebase Extensions in the comments.
Thanks for watching, and I will talk to you soon.
What?
Bada bop boom.
How?

Speaker 0: Today at Firebase Summit, a big new feature was announced, Firebase Extensions. Imagine if the cloud had something like a WordPress plugin system, where you can install or opt in to specific features based on the needs of your application. And with this initial release, we have 9 plugins that handle things like image Resizing, distributed counters, transactional email, and more. And once again, Firebase has made a bunch of my past videos obsolete. I'm about to end this My whole career.

So today, I want to show you how to not write code by using Firebase Extensions. If you're new here, like and subscribe, and consider becoming a pro member at FireShip. Io if you're serious about building apps on the Firebase platform. To get started, you'll need to have a Firebase project, and if you go down here to bottom, you'll see a new option for extensions. Let's go ahead and install the first one we see to resize images.

Now unfortunately for me about a year ago, I created a video about resizing images with a cloud function. But this extension provides the exact same functionality with no effort on my part, and it's tested and maintained by the smart people at Google. Let's go ahead and click install, and you'll see it takes us to a page to configure the extension. The first thing it'll have you do is review the architecture or APIs enabled by this extension. When it comes to image resizing, you'll need to have a cloud storage bucket and then a cloud function to handle the resizing after a file is uploaded to that bucket.

Go ahead and click next, and then it will have you review the access granted to the extension. Firebase will automatically create the appropriate service account that has I'm roles assigned for whatever resources this extension needs. Then the 3rd step is where we configure and customize the behavior of the extension. In this case, we'll go ahead and have it generate thumbnails for 205101000 pixel sizes. Then we'll go ahead and specify a directory in the bucket named thumbs, which is where the thumbnails will be saved.

It will take a few minutes to install, because what it's doing under the hood is deploying a cloud function to your project. After it's complete, you'll be able to review the configuration details, and then if you go to the functions tab, you'll see that cloud function deployed in your functions list. And if you're really interested in how the function works under the hood, you can go to the GCP console, to Cloud Functions, click the source tab, and then you can see the full source code for the function. And all of the extensions are open sourced, so you can see them on GitHub as well. And hopefully in the near future, they'll open the system to third party developers, meaning you could extend and potentially monetize the Firebase platform as a developer.

But I'm really just speculating there. I have no idea if or when that'll happen. So now that we have this extension installed, let's go into our storage bucket and upload a file there and see what happens. You can see our storage bucket is completely empty, and I'll go ahead and upload the cover image for this video. After the upload is complete, we'll go ahead and refresh the page, and you'll now see we have a thumbs history here that has magically resized this image to the sizes that we specified.

So if you have an app that handles high resolution file uploads, this extension gives you an incredibly simple pipeline for resizing and optimizing those images. Now let's go ahead and take a look at a second extension that makes another one of my videos obsolete, and that is the translate text extension. This particular extension works with Google's Cloud Translation API. And that is a paid API, although it does have a free tier. So you need to at least have a billing account set up and be on the Blaze plan for this Firebase project.

We can go ahead and follow these same steps as before, but I'm also going to add Japanese and Arabic language codes to the translations. And there's over a 100 different language codes for you to choose from. Now this extension will be looking for a collection in Firestore. We'll go ahead and call that comments. And then when that document is created, it will look at the text field on the document and then translate the text into an object called translated.

Let's go ahead and give that a couple minutes to install, and then head over to the Firestore database. We'll create the comments collection, add a document to it that has a text property on the document. And after it's created, it should automatically translate that text view. Now, this should happen in a matter of seconds, but nothing actually happened here. So what went wrong?

Are Firebase extensions broken, or did I do something wrong? We can find out by going to the Cloud Function logs. What you'll notice is that most of the translations ran properly, except for the Japanese language code. And so this was actually my fault. JP is not the proper language code, it's actually JA.

And I wanted to show you this because extensions aren't fail safe. If you don't add the right configuration options, they won't work properly. We can fix the issue by going back to the extension tab, and reconfiguring the extension's parameters. I'll just go ahead and change the language code from jp to ja, and then we just have to wait a couple minutes for those changes to propagate or for the underlying cloud function to be redeployed. Now Now if we go back to Firestore and add a new comment to the comments collection, you'll see it translates the text in no more than 2 seconds.

So it is incredibly awesome to just able that kind of feature with a click of a button. Now, I have to admit that building a translation feature from scratch really isn't that big of a deal. It's just a simple API call that you can make from your back end code. So the translation extension is really just a minor convenience in my opinion. However, something that's not so trivial is setting up a distributed counter, when you have an extremely high volume of writes going to a single document.

So normally, Firestore limits you to about 1 write per second, which you can burst above, but what if you have a social media app and you have an extremely viral post that's generating 10,000 likes per second? Handling a massive volume of writes like that would require you to shard the database and also carefully aggregate the count across those shards. Needless to say, it's not exactly an easy process, but now there's an extension for that. Let's go ahead and install the distributed counter extension, and it's going to install 3 different cloud functions in this project. Then after the installation is finished, There will be a few additional steps to take on your part.

In this particular case, you'll need to update your Firestore security rules so that write access is granted to that shard's collection, and then it will also give you a command run to set up a cron job in your Google Cloud Platform project, and its job is to ping the controller function to make that the shards are scaled properly. And last but not least, it gives you a script that you can use in your front end code, so it's also extending the Firebase JavaScript SDK. Now this is a feature that's not required by a lot of apps, but if your app is seeing a huge volume of writes, you'll probably want to get this implemented very quickly because it means your app is scaling up quickly. And having something packaged up and ready to go like this is extremely valuable. I'm gonna go ahead and wrap things up there.

I feel like I don't have much else to talk about because extensions are just so easy. But in the future we'll look at some more complex examples with actual front end framework integrations. And make sure to let me know what you think about Firebase Extensions in the comments. Thanks for watching, and I will talk to you soon. What?

Bada bop boom. How?
Today at Firebase Summit, a big new feature was announced, Firebase Extensions. Imagine if the cloud had something like a WordPress plugin system, where you can install or opt in to specific features based on the needs of your application. And with this initial release, we have 9 plugins that handle things like image Resizing, distributed counters, transactional email, and more. And once again, Firebase has made a bunch of my past videos obsolete. I'm about to end this My whole career. So today, I want to show you how to not write code by using Firebase Extensions. If you're new here, like and subscribe, and consider becoming a pro member at FireShip. Io if you're serious about building apps on the Firebase platform. To get started, you'll need to have a Firebase project, and if you go down here to bottom, you'll see a new option for extensions.
Let's go ahead and install the first one we see to resize images. Now unfortunately for me about a year ago, I created a video about resizing images with a cloud function. But this extension provides the exact same functionality with no effort on my part, and it's tested and maintained by the smart people at Google.
youtube
Let's go ahead and click install, and you'll see it takes us to a page to configure the extension. The first thing it'll have you do is review the architecture or APIs enabled by this extension. When it comes to image resizing, you'll need to have a cloud storage bucket and then a cloud function to handle the resizing after a file is uploaded to that bucket. Go ahead and click next, and then it will have you review the access granted to the extension. Firebase will automatically create the appropriate service account that has I'm roles assigned for whatever resources this extension needs.
Then the 3rd step is where we configure and customize the behavior of the extension. In this case, we'll go ahead and have it generate thumbnails for 205101000 pixel sizes. Then we'll go ahead and specify a directory in the bucket named thumbs, which is where the thumbnails will be saved.
photography
It will take a few minutes to install, because what it's doing under the hood is deploying a cloud function to your project. After it's complete, you'll be able to review the configuration details, and then if you go to the functions tab, you'll see that cloud function deployed in your functions list. And if you're really interested in how the function works under the hood, you can go to the GCP console, to Cloud Functions, click the source tab, and then you can see the full source code for the function. And all of the extensions are open sourced, so you can see them on GitHub as well. And hopefully in the near future, they'll open the system to third party developers, meaning you could extend and potentially monetize the Firebase platform as a developer. But I'm really just speculating there. I have no idea if or when that'll happen. So now that we have this extension installed, let's go into our storage bucket and upload a file there and see what happens. You can see our storage bucket is completely empty, and I'll go ahead and upload the cover image for this video. After the upload is complete, we'll go ahead and refresh the page, and you'll now see we have a thumbs history here that has magically resized this image to the sizes that we specified.
So if you have an app that handles high resolution file uploads, this extension gives you an incredibly simple pipeline for resizing and optimizing those images. Now let's go ahead and take a look at a second extension that makes another one of my videos obsolete, and that is the translate text extension. This particular extension works with Google's Cloud Translation API. And that is a paid API, although it does have a free tier. So you need to at least have a billing account set up and be on the Blaze plan for this Firebase project.
streaming
youtube
We can go ahead and follow these same steps as before, but I'm also going to add Japanese and Arabic language codes to the translations. And there's over a 100 different language codes for you to choose from. Now this extension will be looking for a collection in Firestore. We'll go ahead and call that comments. And then when that document is created, it will look at the text field on the document and then translate the text into an object called translated. Let's go ahead and give that a couple minutes to install, and then head over to the Firestore database. We'll create the comments collection, add a document to it that has a text property on the document.
languages
publishing
documentation
And after it's created, it should automatically translate that text view. Now, this should happen in a matter of seconds, but nothing actually happened here. So what went wrong? Are Firebase extensions broken, or did I do something wrong? We can find out by going to the Cloud Function logs.
What you'll notice is that most of the translations ran properly, except for the Japanese language code. And so this was actually my fault. JP is not the proper language code, it's actually JA. And I wanted to show you this because extensions aren't fail safe. If you don't add the right configuration options, they won't work properly.
languages
japan
dialects
We can fix the issue by going back to the extension tab, and reconfiguring the extension's parameters. I'll just go ahead and change the language code from jp to ja, and then we just have to wait a couple minutes for those changes to propagate or for the underlying cloud function to be redeployed. Now Now if we go back to Firestore and add a new comment to the comments collection, you'll see it translates the text in no more than 2 seconds. So it is incredibly awesome to just able that kind of feature with a click of a button. Now, I have to admit that building a translation feature from scratch really isn't that big of a deal. It's just a simple API call that you can make from your back end code. So the translation extension is really just a minor convenience in my opinion. However, something that's not so trivial is setting up a distributed counter, when you have an extremely high volume of writes going to a single document. So normally, Firestore limits you to about 1 write per second, which you can burst above, but what if you have a social media app and you have an extremely viral post that's generating 10,000 likes per second?
Handling a massive volume of writes like that would require you to shard the database and also carefully aggregate the count across those shards. Needless to say, it's not exactly an easy process, but now there's an extension for that. Let's go ahead and install the distributed counter extension, and it's going to install 3 different cloud functions in this project.
databases
data management
Then after the installation is finished, There will be a few additional steps to take on your part. In this particular case, you'll need to update your Firestore security rules so that write access is granted to that shard's collection, and then it will also give you a command run to set up a cron job in your Google Cloud Platform project, and its job is to ping the controller function to make that the shards are scaled properly. And last but not least, it gives you a script that you can use in your front end code, so it's also extending the Firebase JavaScript SDK.
Now this is a feature that's not required by a lot of apps, but if your app is seeing a huge volume of writes, you'll probably want to get this implemented very quickly because it means your app is scaling up quickly. And having something packaged up and ready to go like this is extremely valuable.
software
software development
I'm gonna go ahead and wrap things up there. I feel like I don't have much else to talk about because extensions are just so easy. But in the future we'll look at some more complex examples with actual front end framework integrations. And make sure to let me know what you think about Firebase Extensions in the comments. Thanks for watching, and I will talk to you soon. What? Bada bop boom. How?
Today at Firebase Summit, a big new feature was announced, Firebase Extensions. Imagine if the cloud had something like a WordPress plugin system, where you can install or opt in to specific features based on the needs of your application. And with this initial release, we have 9 plugins that handle things like image Resizing, distributed counters, transactional email, and more. And once again, Firebase has made a bunch of my past videos obsolete. I'm about to end this My whole career. So today, I want to show you how to not write code by using Firebase Extensions. If you're new here, like and subscribe, and consider becoming a pro member at FireShip. Io if you're serious about building apps on the Firebase platform. To get started, you'll need to have a Firebase project, and if you go down here to bottom, you'll see a new option for extensions. Let's go ahead and install the first one we see to resize images. Now unfortunately for me about a year ago, I created a video about resizing images with a cloud function. But this extension provides the exact same functionality with no effort on my part, and it's tested and maintained by the smart people at Google. Let's go ahead and click install, and you'll see it takes us to a page to configure the extension. The first thing it'll have you do is review the architecture or APIs enabled by this extension. When it comes to image resizing, you'll need to have a cloud storage bucket and then a cloud function to handle the resizing after a file is uploaded to that bucket. Go ahead and click next, and then it will have you review the access granted to the extension. Firebase will automatically create the appropriate service account that has I'm roles assigned for whatever resources this extension needs. Then the 3rd step is where we configure and customize the behavior of the extension. In this case, we'll go ahead and have it generate thumbnails for 205101000 pixel sizes. Then we'll go ahead and specify a directory in the bucket named thumbs, which is where the thumbnails will be saved. It will take a few minutes to install, because what it's doing under the hood is deploying a cloud function to your project. After it's complete, you'll be able to review the configuration details, and then if you go to the functions tab, you'll see that cloud function deployed in your functions list. And if you're really interested in how the function works under the hood, you can go to the GCP console, to Cloud Functions, click the source tab, and then you can see the full source code for the function. And all of the extensions are open sourced, so you can see them on GitHub as well. And hopefully in the near future, they'll open the system to third party developers, meaning you could extend and potentially monetize the Firebase platform as a developer. But I'm really just speculating there. I have no idea if or when that'll happen. So now that we have this extension installed, let's go into our storage bucket and upload a file there and see what happens. You can see our storage bucket is completely empty, and I'll go ahead and upload the cover image for this video. After the upload is complete, we'll go ahead and refresh the page, and you'll now see we have a thumbs history here that has magically resized this image to the sizes that we specified. So if you have an app that handles high resolution file uploads, this extension gives you an incredibly simple pipeline for resizing and optimizing those images. Now let's go ahead and take a look at a second extension that makes another one of my videos obsolete, and that is the translate text extension. This particular extension works with Google's Cloud Translation API. And that is a paid API, although it does have a free tier. So you need to at least have a billing account set up and be on the Blaze plan for this Firebase project. We can go ahead and follow these same steps as before, but I'm also going to add Japanese and Arabic language codes to the translations. And there's over a 100 different language codes for you to choose from. Now this extension will be looking for a collection in Firestore. We'll go ahead and call that comments. And then when that document is created, it will look at the text field on the document and then translate the text into an object called translated. Let's go ahead and give that a couple minutes to install, and then head over to the Firestore database. We'll create the comments collection, add a document to it that has a text property on the document. And after it's created, it should automatically translate that text view. Now, this should happen in a matter of seconds, but nothing actually happened here. So what went wrong? Are Firebase extensions broken, or did I do something wrong? We can find out by going to the Cloud Function logs. What you'll notice is that most of the translations ran properly, except for the Japanese language code. And so this was actually my fault. JP is not the proper language code, it's actually JA. And I wanted to show you this because extensions aren't fail safe. If you don't add the right configuration options, they won't work properly. We can fix the issue by going back to the extension tab, and reconfiguring the extension's parameters. I'll just go ahead and change the language code from jp to ja, and then we just have to wait a couple minutes for those changes to propagate or for the underlying cloud function to be redeployed. Now Now if we go back to Firestore and add a new comment to the comments collection, you'll see it translates the text in no more than 2 seconds. So it is incredibly awesome to just able that kind of feature with a click of a button. Now, I have to admit that building a translation feature from scratch really isn't that big of a deal. It's just a simple API call that you can make from your back end code. So the translation extension is really just a minor convenience in my opinion. However, something that's not so trivial is setting up a distributed counter, when you have an extremely high volume of writes going to a single document. So normally, Firestore limits you to about 1 write per second, which you can burst above, but what if you have a social media app and you have an extremely viral post that's generating 10,000 likes per second? Handling a massive volume of writes like that would require you to shard the database and also carefully aggregate the count across those shards. Needless to say, it's not exactly an easy process, but now there's an extension for that. Let's go ahead and install the distributed counter extension, and it's going to install 3 different cloud functions in this project. Then after the installation is finished, There will be a few additional steps to take on your part. In this particular case, you'll need to update your Firestore security rules so that write access is granted to that shard's collection, and then it will also give you a command run to set up a cron job in your Google Cloud Platform project, and its job is to ping the controller function to make that the shards are scaled properly. And last but not least, it gives you a script that you can use in your front end code, so it's also extending the Firebase JavaScript SDK. Now this is a feature that's not required by a lot of apps, but if your app is seeing a huge volume of writes, you'll probably want to get this implemented very quickly because it means your app is scaling up quickly. And having something packaged up and ready to go like this is extremely valuable. I'm gonna go ahead and wrap things up there. I feel like I don't have much else to talk about because extensions are just so easy. But in the future we'll look at some more complex examples with actual front end framework integrations. And make sure to let me know what you think about Firebase Extensions in the comments. Thanks for watching, and I will talk to you soon. What? Bada bop boom. How?
Today
today
at
at
Firebase
firebase
Summit,
summit
a
a
big
big
new
new
feature
feature
was
was
announced,
announced
Firebase
firebase
Extensions.
extensions
Imagine
imagine
if
if
the
the
cloud
cloud
had
had
something
something
like
like
a
a
WordPress
wordpress
plugin
plugin
system,
system
where
where
you
you
can
can
install
install
or
or
opt
opt
in
in
to
to
specific
specific
features
features
based
based
on
on
the
the
needs
needs
of
of
your
your
application.
application
And
and
with
with
this
this
initial
initial
release,
release
we
we
have
have
9
9
plugins
plugins
that
that
handle
handle
things
things
like
like
image
image
Resizing,
resizing
distributed
distributed
counters,
counters
transactional
transactional
email,
email
and
and
more.
more
And
and
once
once
again,
again
Firebase
firebase
has
has
made
made
a
a
bunch
bunch
of
of
my
my
past
past
videos
videos
obsolete.
obsolete
I'm
i'm
about
about
to
to
end
end
this
this
My
my
whole
whole
career.
career
So
so
today,
today
I
i
want
want
to
to
show
show
you
you
how
how
to
to
not
not
write
write
code
code
by
by
using
using
Firebase
firebase
Extensions.
extensions
If
if
you're
you're
new
new
here,
here
like
like
and
and
subscribe,
subscribe
and
and
consider
consider
becoming
becoming
a
a
pro
pro
member
member
at
at
FireShip.
fireship
Io
io
if
if
you're
you're
serious
serious
about
about
building
building
apps
apps
on
on
the
the
Firebase
firebase
platform.
platform
To
to
get
get
started,
started
you'll
you'll
need
need
to
to
have
have
a
a
Firebase
firebase
project,
project
and
and
if
if
you
you
go
go
down
down
here
here
to
to
bottom,
bottom
you'll
you'll
see
see
a
a
new
new
option
option
for
for
extensions.
extensions
Let's
let's
go
go
ahead
ahead
and
and
install
install
the
the
first
first
one
one
we
we
see
see
to
to
resize
resize
images.
images
Now
now
unfortunately
unfortunately
for
for
me
me
about
about
a
a
year
year
ago,
ago
I
i
created
created
a
a
video
video
about
about
resizing
resizing
images
images
with
with
a
a
cloud
cloud
function.
function
But
but
this
this
extension
extension
provides
provides
the
the
exact
exact
same
same
functionality
functionality
with
with
no
no
effort
effort
on
on
my
my
part,
part
and
and
it's
it's
tested
tested
and
and
maintained
maintained
by
by
the
the
smart
smart
people
people
at
at
Google.
google
Let's
let's
go
go
ahead
ahead
and
and
click
click
install,
install
and
and
you'll
you'll
see
see
it
it
takes
takes
us
us
to
to
a
a
page
page
to
to
configure
configure
the
the
extension.
extension
The
the
first
first
thing
thing
it'll
it'll
have
have
you
you
do
do
is
is
review
review
the
the
architecture
architecture
or
or
APIs
apis
enabled
enabled
by
by
this
this
extension.
extension
When
when
it
it
comes
comes
to
to
image
image
resizing,
resizing
you'll
you'll
need
need
to
to
have
have
a
a
cloud
cloud
storage
storage
bucket
bucket
and
and
then
then
a
a
cloud
cloud
function
function
to
to
handle
handle
the
the
resizing
resizing
after
after
a
a
file
file
is
is
uploaded
uploaded
to
to
that
that
bucket.
bucket
Go
go
ahead
ahead
and
and
click
click
next,
next
and
and
then
then
it
it
will
will
have
have
you
you
review
review
the
the
access
access
granted
granted
to
to
the
the
extension.
extension
Firebase
firebase
will
will
automatically
automatically
create
create
the
the
appropriate
appropriate
service
service
account
account
that
that
has
has
I'm
i'm
roles
roles
assigned
assigned
for
for
whatever
whatever
resources
resources
this
this
extension
extension
needs.
needs
Then
then
the
the
3rd
3rd
step
step
is
is
where
where
we
we
configure
configure
and
and
customize
customize
the
the
behavior
behavior
of
of
the
the
extension.
extension
In
in
this
this
case,
case
we'll
we'll
go
go
ahead
ahead
and
and
have
have
it
it
generate
generate
thumbnails
thumbnails
for
for
205101000
205101000
pixel
pixel
sizes.
sizes
Then
then
we'll
we'll
go
go
ahead
ahead
and
and
specify
specify
a
a
directory
directory
in
in
the
the
bucket
bucket
named
named
thumbs,
thumbs
which
which
is
is
where
where
the
the
thumbnails
thumbnails
will
will
be
be
saved.
saved
It
it
will
will
take
take
a
a
few
few
minutes
minutes
to
to
install,
install
because
because
what
what
it's
it's
doing
doing
under
under
the
the
hood
hood
is
is
deploying
deploying
a
a
cloud
cloud
function
function
to
to
your
your
project.
project
After
after
it's
it's
complete,
complete
you'll
you'll
be
be
able
able
to
to
review
review
the
the
configuration
configuration
details,
details
and
and
then
then
if
if
you
you
go
go
to
to
the
the
functions
functions
tab,
tab
you'll
you'll
see
see
that
that
cloud
cloud
function
function
deployed
deployed
in
in
your
your
functions
functions
list.
list
And
and
if
if
you're
you're
really
really
interested
interested
in
in
how
how
the
the
function
function
works
works
under
under
the
the
hood,
hood
you
you
can
can
go
go
to
to
the
the
GCP
gcp
console,
console
to
to
Cloud
cloud
Functions,
functions
click
click
the
the
source
source
tab,
tab
and
and
then
then
you
you
can
can
see
see
the
the
full
full
source
source
code
code
for
for
the
the
function.
function
And
and
all
all
of
of
the
the
extensions
extensions
are
are
open
open
sourced,
sourced
so
so
you
you
can
can
see
see
them
them
on
on
GitHub
github
as
as
well.
well
And
and
hopefully
hopefully
in
in
the
the
near
near
future,
future
they'll
they'll
open
open
the
the
system
system
to
to
third
third
party
party
developers,
developers
meaning
meaning
you
you
could
could
extend
extend
and
and
potentially
potentially
monetize
monetize
the
the
Firebase
firebase
platform
platform
as
as
a
a
developer.
developer
But
but
I'm
i'm
really
really
just
just
speculating
speculating
there.
there
I
i
have
have
no
no
idea
idea
if
if
or
or
when
when
that'll
that'll
happen.
happen
So
so
now
now
that
that
we
we
have
have
this
this
extension
extension
installed,
installed
let's
let's
go
go
into
into
our
our
storage
storage
bucket
bucket
and
and
upload
upload
a
a
file
file
there
there
and
and
see
see
what
what
happens.
happens
You
you
can
can
see
see
our
our
storage
storage
bucket
bucket
is
is
completely
completely
empty,
empty
and
and
I'll
i'll
go
go
ahead
ahead
and
and
upload
upload
the
the
cover
cover
image
image
for
for
this
this
video.
video
After
after
the
the
upload
upload
is
is
complete,
complete
we'll
we'll
go
go
ahead
ahead
and
and
refresh
refresh
the
the
page,
page
and
and
you'll
you'll
now
now
see
see
we
we
have
have
a
a
thumbs
thumbs
history
history
here
here
that
that
has
has
magically
magically
resized
resized
this
this
image
image
to
to
the
the
sizes
sizes
that
that
we
we
specified.
specified
So
so
if
if
you
you
have
have
an
an
app
app
that
that
handles
handles
high
high
resolution
resolution
file
file
uploads,
uploads
this
this
extension
extension
gives
gives
you
you
an
an
incredibly
incredibly
simple
simple
pipeline
pipeline
for
for
resizing
resizing
and
and
optimizing
optimizing
those
those
images.
images
Now
now
let's
let's
go
go
ahead
ahead
and
and
take
take
a
a
look
look
at
at
a
a
second
second
extension
extension
that
that
makes
makes
another
another
one
one
of
of
my
my
videos
videos
obsolete,
obsolete
and
and
that
that
is
is
the
the
translate
translate
text
text
extension.
extension
This
this
particular
particular
extension
extension
works
works
with
with
Google's
google's
Cloud
cloud
Translation
translation
API.
api
And
and
that
that
is
is
a
a
paid
paid
API,
api
although
although
it
it
does
does
have
have
a
a
free
free
tier.
tier
So
so
you
you
need
need
to
to
at
at
least
least
have
have
a
a
billing
billing
account
account
set
set
up
up
and
and
be
be
on
on
the
the
Blaze
blaze
plan
plan
for
for
this
this
Firebase
firebase
project.
project
We
we
can
can
go
go
ahead
ahead
and
and
follow
follow
these
these
same
same
steps
steps
as
as
before,
before
but
but
I'm
i'm
also
also
going
going
to
to
add
add
Japanese
japanese
and
and
Arabic
arabic
language
language
codes
codes
to
to
the
the
translations.
translations
And
and
there's
there's
over
over
a
a
100
100
different
different
language
language
codes
codes
for
for
you
you
to
to
choose
choose
from.
from
Now
now
this
this
extension
extension
will
will
be
be
looking
looking
for
for
a
a
collection
collection
in
in
Firestore.
firestore
We'll
we'll
go
go
ahead
ahead
and
and
call
call
that
that
comments.
comments
And
and
then
then
when
when
that
that
document
document
is
is
created,
created
it
it
will
will
look
look
at
at
the
the
text
text
field
field
on
on
the
the
document
document
and
and
then
then
translate
translate
the
the
text
text
into
into
an
an
object
object
called
called
translated.
translated
Let's
let's
go
go
ahead
ahead
and
and
give
give
that
that
a
a
couple
couple
minutes
minutes
to
to
install,
install
and
and
then
then
head
head
over
over
to
to
the
the
Firestore
firestore
database.
database
We'll
we'll
create
create
the
the
comments
comments
collection,
collection
add
add
a
a
document
document
to
to
it
it
that
that
has
has
a
a
text
text
property
property
on
on
the
the
document.
document
And
and
after
after
it's
it's
created,
created
it
it
should
should
automatically
automatically
translate
translate
that
that
text
text
view.
view
Now,
now
this
this
should
should
happen
happen
in
in
a
a
matter
matter
of
of
seconds,
seconds
but
but
nothing
nothing
actually
actually
happened
happened
here.
here
So
so
what
what
went
went
wrong?
wrong
Are
are
Firebase
firebase
extensions
extensions
broken,
broken
or
or
did
did
I
i
do
do
something
something
wrong?
wrong
We
we
can
can
find
find
out
out
by
by
going
going
to
to
the
the
Cloud
cloud
Function
function
logs.
logs
What
what
you'll
you'll
notice
notice
is
is
that
that
most
most
of
of
the
the
translations
translations
ran
ran
properly,
properly
except
except
for
for
the
the
Japanese
japanese
language
language
code.
code
And
and
so
so
this
this
was
was
actually
actually
my
my
fault.
fault
JP
jp
is
is
not
not
the
the
proper
proper
language
language
code,
code
it's
it's
actually
actually
JA.
ja
And
and
I
i
wanted
wanted
to
to
show
show
you
you
this
this
because
because
extensions
extensions
aren't
aren't
fail
fail
safe.
safe
If
if
you
you
don't
don't
add
add
the
the
right
right
configuration
configuration
options,
options
they
they
won't
won't
work
work
properly.
properly
We
we
can
can
fix
fix
the
the
issue
issue
by
by
going
going
back
back
to
to
the
the
extension
extension
tab,
tab
and
and
reconfiguring
reconfiguring
the
the
extension's
extension's
parameters.
parameters
I'll
i'll
just
just
go
go
ahead
ahead
and
and
change
change
the
the
language
language
code
code
from
from
jp
jp
to
to
ja,
ja
and
and
then
then
we
we
just
just
have
have
to
to
wait
wait
a
a
couple
couple
minutes
minutes
for
for
those
those
changes
changes
to
to
propagate
propagate
or
or
for
for
the
the
underlying
underlying
cloud
cloud
function
function
to
to
be
be
redeployed.
redeployed
Now
now
Now
now
if
if
we
we
go
go
back
back
to
to
Firestore
firestore
and
and
add
add
a
a
new
new
comment
comment
to
to
the
the
comments
comments
collection,
collection
you'll
you'll
see
see
it
it
translates
translates
the
the
text
text
in
in
no
no
more
more
than
than
2
2
seconds.
seconds
So
so
it
it
is
is
incredibly
incredibly
awesome
awesome
to
to
just
just
able
able
that
that
kind
kind
of
of
feature
feature
with
with
a
a
click
click
of
of
a
a
button.
button
Now,
now
I
i
have
have
to
to
admit
admit
that
that
building
building
a
a
translation
translation
feature
feature
from
from
scratch
scratch
really
really
isn't
isn't
that
that
big
big
of
of
a
a
deal.
deal
It's
it's
just
just
a
a
simple
simple
API
api
call
call
that
that
you
you
can
can
make
make
from
from
your
your
back
back
end
end
code.
code
So
so
the
the
translation
translation
extension
extension
is
is
really
really
just
just
a
a
minor
minor
convenience
convenience
in
in
my
my
opinion.
opinion
However,
however
something
something
that's
that's
not
not
so
so
trivial
trivial
is
is
setting
setting
up
up
a
a
distributed
distributed
counter,
counter
when
when
you
you
have
have
an
an
extremely
extremely
high
high
volume
volume
of
of
writes
writes
going
going
to
to
a
a
single
single
document.
document
So
so
normally,
normally
Firestore
firestore
limits
limits
you
you
to
to
about
about
1
1
write
write
per
per
second,
second
which
which
you
you
can
can
burst
burst
above,
above
but
but
what
what
if
if
you
you
have
have
a
a
social
social
media
media
app
app
and
and
you
you
have
have
an
an
extremely
extremely
viral
viral
post
post
that's
that's
generating
generating
10,000
10,000
likes
likes
per
per
second?
second
Handling
handling
a
a
massive
massive
volume
volume
of
of
writes
writes
like
like
that
that
would
would
require
require
you
you
to
to
shard
shard
the
the
database
database
and
and
also
also
carefully
carefully
aggregate
aggregate
the
the
count
count
across
across
those
those
shards.
shards
Needless
needless
to
to
say,
say
it's
it's
not
not
exactly
exactly
an
an
easy
easy
process,
process
but
but
now
now
there's
there's
an
an
extension
extension
for
for
that.
that
Let's
let's
go
go
ahead
ahead
and
and
install
install
the
the
distributed
distributed
counter
counter
extension,
extension
and
and
it's
it's
going
going
to
to
install
install
3
3
different
different
cloud
cloud
functions
functions
in
in
this
this
project.
project
Then
then
after
after
the
the
installation
installation
is
is
finished,
finished
There
there
will
will
be
be
a
a
few
few
additional
additional
steps
steps
to
to
take
take
on
on
your
your
part.
part
In
in
this
this
particular
particular
case,
case
you'll
you'll
need
need
to
to
update
update
your
your
Firestore
firestore
security
security
rules
rules
so
so
that
that
write
write
access
access
is
is
granted
granted
to
to
that
that
shard's
shard's
collection,
collection
and
and
then
then
it
it
will
will
also
also
give
give
you
you
a
a
command
command
run
run
to
to
set
set
up
up
a
a
cron
cron
job
job
in
in
your
your
Google
google
Cloud
cloud
Platform
platform
project,
project
and
and
its
its
job
job
is
is
to
to
ping
ping
the
the
controller
controller
function
function
to
to
make
make
that
that
the
the
shards
shards
are
are
scaled
scaled
properly.
properly
And
and
last
last
but
but
not
not
least,
least
it
it
gives
gives
you
you
a
a
script
script
that
that
you
you
can
can
use
use
in
in
your
your
front
front
end
end
code,
code
so
so
it's
it's
also
also
extending
extending
the
the
Firebase
firebase
JavaScript
javascript
SDK.
sdk
Now
now
this
this
is
is
a
a
feature
feature
that's
that's
not
not
required
required
by
by
a
a
lot
lot
of
of
apps,
apps
but
but
if
if
your
your
app
app
is
is
seeing
seeing
a
a
huge
huge
volume
volume
of
of
writes,
writes
you'll
you'll
probably
probably
want
want
to
to
get
get
this
this
implemented
implemented
very
very
quickly
quickly
because
because
it
it
means
means
your
your
app
app
is
is
scaling
scaling
up
up
quickly.
quickly
And
and
having
having
something
something
packaged
packaged
up
up
and
and
ready
ready
to
to
go
go
like
like
this
this
is
is
extremely
extremely
valuable.
valuable
I'm
i'm
gonna
gonna
go
go
ahead
ahead
and
and
wrap
wrap
things
things
up
up
there.
there
I
i
feel
feel
like
like
I
i
don't
don't
have
have
much
much
else
else
to
to
talk
talk
about
about
because
because
extensions
extensions
are
are
just
just
so
so
easy.
easy
But
but
in
in
the
the
future
future
we'll
we'll
look
look
at
at
some
some
more
more
complex
complex
examples
examples
with
with
actual
actual
front
front
end
end
framework
framework
integrations.
integrations
And
and
make
make
sure
sure
to
to
let
let
me
me
know
know
what
what
you
you
think
think
about
about
Firebase
firebase
Extensions
extensions
in
in
the
the
comments.
comments
Thanks
thanks
for
for
watching,
watching
and
and
I
i
will
will
talk
talk
to
to
you
you
soon.
soon
What?
what
Bada
bada
bop
bop
boom.
boom
How?
how
success
The speakers discuss various features of using Guinea Extensions" for various purposes, including image resizing and text translation. They also show a free paid CloudMV extension for text translation and explain how to install and configure extensions. The speakers also discuss the use of obtain translation features and the potential for future examples with front end integrations. They conclude by discussing the use of the " comment" and adding a document with a text property, as well as the configuration of language codes and install the distributed counter extension.
Firebase Extensions Quickstart
Today at Firebase Summit, a big new feature was announced, Firebase Extensions. Imagine if the cloud had something like a WordPress plugin system, where you can install or opt in to specific features based on the needs of your application. And with this initial release, we have 9 plugins that handle things like image Resizing, distributed counters, transactional email, and more. And once again, Firebase has made a bunch of my past videos obsolete. I'm about to end this My whole career. So today, I want to show you how to not write code by using Firebase Extensions. If you're new here, like and subscribe, and consider becoming a pro member at FireShip. Io if you're serious about building apps on the Firebase platform. To get started, you'll need to have a Firebase project, and if you go down here to bottom, you'll see a new option for extensions. Let's go ahead and install the first one we see to resize images. Now unfortunately for me about a year ago, I created a video about resizing images with a cloud function. But this extension provides the exact same functionality with no effort on my part, and it's tested and maintained by the smart people at Google. Let's go ahead and click install, and you'll see it takes us to a page to configure the extension. The first thing it'll have you do is review the architecture or APIs enabled by this extension. When it comes to image resizing, you'll need to have a cloud storage bucket and then a cloud function to handle the resizing after a file is uploaded to that bucket. Go ahead and click next, and then it will have you review the access granted to the extension. Firebase will automatically create the appropriate service account that has I'm roles assigned for whatever resources this extension needs. Then the 3rd step is where we configure and customize the behavior of the extension. In this case, we'll go ahead and have it generate thumbnails for 205101000 pixel sizes. Then we'll go ahead and specify a directory in the bucket named thumbs, which is where the thumbnails will be saved. It will take a few minutes to install, because what it's doing under the hood is deploying a cloud function to your project. After it's complete, you'll be able to review the configuration details, and then if you go to the functions tab, you'll see that cloud function deployed in your functions list. And if you're really interested in how the function works under the hood, you can go to the GCP console, to Cloud Functions, click the source tab, and then you can see the full source code for the function. And all of the extensions are open sourced, so you can see them on GitHub as well. And hopefully in the near future, they'll open the system to third party developers, meaning you could extend and potentially monetize the Firebase platform as a developer. But I'm really just speculating there. I have no idea if or when that'll happen. So now that we have this extension installed, let's go into our storage bucket and upload a file there and see what happens. You can see our storage bucket is completely empty, and I'll go ahead and upload the cover image for this video. After the upload is complete, we'll go ahead and refresh the page, and you'll now see we have a thumbs history here that has magically resized this image to the sizes that we specified. So if you have an app that handles high resolution file uploads, this extension gives you an incredibly simple pipeline for resizing and optimizing those images. Now let's go ahead and take a look at a second extension that makes another one of my videos obsolete, and that is the translate text extension. This particular extension works with Google's Cloud Translation API. And that is a paid API, although it does have a free tier. So you need to at least have a billing account set up and be on the Blaze plan for this Firebase project. We can go ahead and follow these same steps as before, but I'm also going to add Japanese and Arabic language codes to the translations. And there's over a 100 different language codes for you to choose from. Now this extension will be looking for a collection in Firestore. We'll go ahead and call that comments. And then when that document is created, it will look at the text field on the document and then translate the text into an object called translated. Let's go ahead and give that a couple minutes to install, and then head over to the Firestore database. We'll create the comments collection, add a document to it that has a text property on the document. And after it's created, it should automatically translate that text view. Now, this should happen in a matter of seconds, but nothing actually happened here. So what went wrong? Are Firebase extensions broken, or did I do something wrong? We can find out by going to the Cloud Function logs. What you'll notice is that most of the translations ran properly, except for the Japanese language code. And so this was actually my fault. JP is not the proper language code, it's actually JA. And I wanted to show you this because extensions aren't fail safe. If you don't add the right configuration options, they won't work properly. We can fix the issue by going back to the extension tab, and reconfiguring the extension's parameters. I'll just go ahead and change the language code from jp to ja, and then we just have to wait a couple minutes for those changes to propagate or for the underlying cloud function to be redeployed. Now Now if we go back to Firestore and add a new comment to the comments collection, you'll see it translates the text in no more than 2 seconds. So it is incredibly awesome to just able that kind of feature with a click of a button. Now, I have to admit that building a translation feature from scratch really isn't that big of a deal. It's just a simple API call that you can make from your back end code. So the translation extension is really just a minor convenience in my opinion. However, something that's not so trivial is setting up a distributed counter, when you have an extremely high volume of writes going to a single document. So normally, Firestore limits you to about 1 write per second, which you can burst above, but what if you have a social media app and you have an extremely viral post that's generating 10,000 likes per second? Handling a massive volume of writes like that would require you to shard the database and also carefully aggregate the count across those shards. Needless to say, it's not exactly an easy process, but now there's an extension for that. Let's go ahead and install the distributed counter extension, and it's going to install 3 different cloud functions in this project. Then after the installation is finished, There will be a few additional steps to take on your part. In this particular case, you'll need to update your Firestore security rules so that write access is granted to that shard's collection, and then it will also give you a command run to set up a cron job in your Google Cloud Platform project, and its job is to ping the controller function to make that the shards are scaled properly. And last but not least, it gives you a script that you can use in your front end code, so it's also extending the Firebase JavaScript SDK. Now this is a feature that's not required by a lot of apps, but if your app is seeing a huge volume of writes, you'll probably want to get this implemented very quickly because it means your app is scaling up quickly. And having something packaged up and ready to go like this is extremely valuable. I'm gonna go ahead and wrap things up there. I feel like I don't have much else to talk about because extensions are just so easy. But in the future we'll look at some more complex examples with actual front end framework integrations. And make sure to let me know what you think about Firebase Extensions in the comments. Thanks for watching, and I will talk to you soon. What? Bada bop boom. How?
The speakers discuss various features of using Guinea Extensions" for various purposes, including image resizing and text translation. They also show a free paid CloudMV extension for text translation and explain how to install and configure extensions. The speakers also discuss the use of obtain translation features and the potential for future examples with front end integrations. They conclude by discussing the use of the " comment" and adding a document with a text property, as well as the configuration of language codes and install the distributed counter extension.