When we first began working on the Firebase Emulator Suite we dreamed of the day that every backend service in Firebase would have a local emulator. Today we can proudly say we're releasing another great emulator for Firebase Build products: the Cloud Storage for Firebase emulator.
The Cloud Storage for Firebase emulator integrates with the rest of the Firebase Emulator Suite, including the Firebase Auth emulator and the Cloud Functions emulator, unlocking the ability to locally test your app end-to-end like never before.
Just like the other components in the Firebase Emulator Suite, the Cloud Storage for Firebase emulator is part of the Firebase command-line interface which allows you to develop and test your app without connecting to production services.
The Cloud Storage for Firebase emulator supports the Web, Android, iOS and Admin (for Node.js) SDKs so regardless of where your app runs, you can use the new emulator.
The Cloud Storage for Firebase emulator supports all operations from the Web, iOS, and Android SDKs. This includes evaluating security rules, uploading and downloading files, and modifying metadata.
The emulator also supports all the most popular methods in the Firebase Admin SDK. This includes the same operations of uploading and downloading files along with metadata operations. If you're using more advanced Cloud Storage features which aren't supported, let us know. We'll continue to expand functionality over the coming months and your feedback will help us prioritize what to implement.
Make sure you update the Firebase CLI to at least version 9.11.0 and run the following command:
firebase init
Select Cloud Storage and the Emulators, when prompted, pick the Cloud Storage emulator. If this is a first time setup, you'll need to pick each Firebase product you need, such as Cloud Functions, Firestore and Realtime Database rules, as well as Hosting sites. Once everything you need is initialized, run the following command:
firebase emulators:start
This will start the Storage Emulator on localhost:9199 by default. Jump over to our documentation to connect your app to your new emulator!
Now that every Build product in Firebase has a local emulator, you can do the majority of your development entirely locally. We can't wait to see all the new stuff you'll build with your newly unlocked productivity. Make sure to send us a tweet and let us know what you make!
Posted by the Firebase team
Attendees at this year's virtual Google I/O that visited the Firebase I/O product page or our virtual booth in the Google I/O Adventure experience may have noticed a unicycle-riding robot with an antenna looking very excited to play a drawing game with everyone!
Firebase's mission is to help app developers succeed by offering products and services that developers can rely on throughout their development journey. It meets developers where they are by offering SDKs across various platforms providing web and mobile solutions.
It's a lofty goal and one we wanted to experience from a developers point of view. Introducing Firebase Quickdraw!
Our app started out as a collaborative hackathon project. Building from scratch on Firebase and inspired by Google QuickDraw, we set out to make a simple application that uses AI to understand human drawings.
Once the player starts the game, the app picks a random object from a list. After the player begins drawing the object, an AI bot ( Unaware of that target object ), attempts to guess what the drawing is. The bot either guesses correctly, with the game allocating the player points based on time remaining, or the clock runs out with no points allocated. The game repeats this process for 6 rounds.
When the game is completed the player is awarded a ranking on the daily leaderboard and offered the chance to play again. It's a similar idea to the game "Pictionary" as we all know it, but now with an AI bot!
We used multiple Firebase products to power our app. Here is an architecture diagram of the app’s main functionalities:
Static assets were hosted on Firebase Hosting. The combination of small js bundle size and Hosting’s global CDN gave the app a short initial load time.
We used a deployed TensorFlow model for classification. To learn more about how you can deploy AI models, take a look at the newly launched Google Cloud Vertex AI.
Daily score counts were stored in Cloud Firestore with Cloud Functions acting as the glue to bring everything together. Cloud Functions not only provided our client web app an API surface to send and receive the data needed to run the game, but was also used to run a simple cron job updating the daily scores in a Firestore document.
One of the most exciting moments in our little app’s life was when users began arriving through Google I/O’s website. Developers are very familiar with this moment: Your app is launched and users start trickling in for the very first time. It can be daunting since your app presumably has not been under intense traffic strain before and we wondered if our app’s performance might degrade as a result.
No problem! We used Firebase Performance Monitoring to monitor the web app’s load time and recognition API’s response time as more and more users started playing. This was made possible by the recent launch of real time data processing by Firebase Performance Monitoring.
To develop a better understanding of how players were interacting with the app, we used Google Analytics for Firebase, setting up custom events to track how many players started a game vs how many finished while getting insights into the demographics of our users via the easy to use dashboard view.
Firebase does take away a lot of the hassle associated with creating an app. Each of the products we used saved us a ton of time and headaches while enabling us to focus on providing our users a better experience. Firebase Hosting made it as easy to make assets available globally as running a single command (literally!). Firestore allowed us to save, update and use data in a very friendly and efficient way. Cloud Functions was there every time we needed to send and receive data and orchestrate back-end functionalities. And Firebase Performance Monitoring and Google Analytics for Firebase gave us insights into how users were experiencing the app in real time.
This powerful combination of complementary products made creating Firebase QuickDraw a fun journey for our team, we learnt a lot while gaining a better understanding of the development process our customers experience. We hope the many people who attended I/O and played our game had fun too!
As app developers, you want to focus on building functionality that increases the utility of your app for your users. Here at Firebase, our mission is to help app developers succeed, and our services like Firebase Authentication, Firestore, Performance Monitoring, Analytics and others help you focus on what's relevant for developing your app and advancing your business instead of having to build and run infrastructure and services yourself.
With Firebase Extensions, we took this concept to the next level and made it easy for you to quickly add functionality to your app. Instead of having to implement these features yourself, Firebase Extensions allow you to add pre-built and tested functionality with just a few clicks. On top of that, Firebase Extensions are configurable, so you can easily adapt them to your needs.
Solve business problems using Firebase Extensions
But sometimes, you need even more power and flexibility.
For example, you might need an easy-to-use way to set up a marketing campaign that follows all the best practices and industry standards. Sending emails is not enough - you need a solution that supports double opt-in, streamlined and beautiful templates, and a dashboard that provides detailed insights into your campaign.
Or, you might need a customer messaging solution that makes it easy to reach out to your users directly, no matter where they are, to keep them up-to-date on the status of their urgent delivery. And of course you need a solution that grows with your business and works in new markets and countries you're expanding into and supports the local messaging platforms.
Or - you might want to turn your blog about artisanal coffee into a business with a subscription service that allows you to put some of your content behind a paywall.
Implementing all these features and integrations yourself can be a daunting task, and - let's be honest - wouldn't you rather focus on building the core functionality of your app instead of wasting precious time on building solutions for challenges others have already solved? After all, other people have invested a lot of time and thought into building these services, so no need to reinvent the wheel.
With Firebase Extensions, you can leverage existing solutions solve business problems with integrations from industry leaders such as MessageBird, Algolia, Mailchimp, and Stripe.
At Google I/O this year, we announced the following new Firebase Extensions:
And last year, we launched Run Subscription Payments with Stripe and Send Invoices using Stripe, which make it easier to control access to paid content and send brandable invoices using Stripe's payment system.
All of these Extensions are built and maintained by these companies, and are available as open source on GitHub. This means you can read the source code and learn how they were built, adapt them to your specific needs, and even file feature requests for new functionality. Most of our early access users have told us that the configuration options available in the Extensions and the power and flexibility of our partners' services met most of their requirements.
The road ahead
In the spirit of our mission, we want to bring more Firebase Extensions to the platform to enable you to focus on what matters most to you: implementing the best version of your app to solve real business problems and delight your users.
If you have any suggestions for Firebase Extensions, any features you'd like to see us implement, or any partners you'd like us to bring to the platform, please don't hesitate to reach out to us using our feedback form.
We can't wait to see what you build next with the new Firebase Extensions, and look forward to hearing from you!
It's amazing to see you using Crashlytics on so many different Apple products – and even wanting to expand that usage! We have always focused on making Crashlytics the best crash reporter on iOS, from our user-friendly onboarding process, to our lightweight SDK. So we’ve made some updates to ensure you can run the Crashlytics SDK seamlessly on all Apple consumer hardware.
In December 2020, we released full support for Apple Silicon Macs running iOS or macOS apps. This means any of the following configurations running on Apple Silicon will work with Crashlytics:
To make it easier to see crashes on these platforms, we added support for filtering in the Firebase console, using the Device filter. We're already working on improving this experience, so stay tuned!
With the introduction of iOS 14, the number of system libraries and libraries used by apps has increased. These libraries can increase startup time as Crashlytics lists the libraries loaded into the app for symbolicating crash reports. In version 7.5.0 of the Crashlytics SDK, we shipped a change to remove this bottleneck, significantly improving the customer experience. For apps with this version of the SDK, we’ve observed a median startup time of about 14 milliseconds, a 75% reduction!
In addition, we’ve improved the speed of our client-side build tools, especially for apps with large binary and dSYM files. This tool processes dSYMs on your build machine before upload to ensure it matches your build environment and Xcode version as closely as possible. We observed the symbol conversion time for a 600 MB dSYM improved from about 12 minutes to 45 seconds. This will help speed up CI builds for your apps and make it possible to rapidly test crashes locally.
We’ve also invested in making sure we fully support App Clips. Crashlytics continues to be a lightweight crash reporter in terms of binary size, so you shouldn’t have to commit much of your App Clip’s 10 MB limit to the Crashlytics installation.
Recently, the community pitched in to get the Crashlytics SDK running on watchOS, adding support for common crashes and non-fatals. Since watchOS is continuing to build out better support for responding to crashes, we’re always happy to accept contributions to improve this!
Open sourcing the Crashlytics SDK as part of the move to Firebase has brought huge benefits. The community has been integral in determining the popularity of various features, and we want to thank folks who have reached out on GitHub, Firebase Support, and other channels to outline their use cases for Crashlytics. We want to especially thank members of the community who have made code changes to improve the SDK directly.
We are continually investing in support for Apple apps, and there’s more coming to help developers diagnose stability issues with their apps. We’re proud of the investments we’ve made here and are excited to continue supporting the Apple app ecosystem.
In November, we added the first new location for the Realtime Database outside the United States, in Belgium. Today, we are adding Singapore as well. We encourage any Firebase developer with a large userbase in Asia to consider using this new location to reduce latency.
All new and existing Firebase developers can create databases in Singapore. Developers on our paid plan can create multiple databases, even mixing databases in multiple locations within a single project.
We’re also announcing that all three locations — the United States, Belgium, and Singapore — are Generally Available. They are ready for your production data today.
Log into the Firebase console to create a database in Singapore, or check out our documentation to learn how to use our APIs to provision databases programmatically.
We’re delighted that the Realtime Database now has locations around the world, and we can’t wait to see what you build.