Storage

reference

object storage, file terminology and patterns

Firebase Storage is a wrapper around Google's Cloud Storage, a cloud storage service.

It is technically an object storage service because it stores immutable objects in a flat bucket, instead of files in a hierarchical filesystem.

Firebase Storage reintroduces the concept of files, folders and file hierarchy, primarily through the convention of using paths as object names, such as public/abc.png. The SDKs and docs use the term file instead of objects.

project's default bucket (implementation detail)

A Firebase project is given a default bucket. The bucket's URI serves to distinguish it from other ones. It is made of two components: a gs:// prefix and a domain name. The default bucket domain uses the project's name, which makes it globally unique. If we add another bucket, we must pick a globally unique name by ourselves:

"gs://<PROJECT-ID>.firebasestorage.app"
"gs://<PROJECT-ID>.appspot.com" // old default bucket URIs

"gs://<GLOBALLY-UNIQUE-ID>" // non-default bucket URI

Those are not HTTP URLs: no data is served if we force HTTP URLs out of them.

initialization and storage helper

The client SDK initializes with the default bucket unless we specify another one. storageService is a safer helper name since storage is already exported by Firebase:

const storageService = getStorage(app)
const storageService = getStorage(app, "gs://...")
earlymorning logo

© Antoine Weber 2026 - All rights reserved

Storage

reference

object storage, file terminology and patterns

Firebase Storage is a wrapper around Google's Cloud Storage, a cloud storage service.

It is technically an object storage service because it stores immutable objects in a flat bucket, instead of files in a hierarchical filesystem.

Firebase Storage reintroduces the concept of files, folders and file hierarchy, primarily through the convention of using paths as object names, such as public/abc.png. The SDKs and docs use the term file instead of objects.

project's default bucket (implementation detail)

A Firebase project is given a default bucket. The bucket's URI serves to distinguish it from other ones. It is made of two components: a gs:// prefix and a domain name. The default bucket domain uses the project's name, which makes it globally unique. If we add another bucket, we must pick a globally unique name by ourselves:

"gs://<PROJECT-ID>.firebasestorage.app"
"gs://<PROJECT-ID>.appspot.com" // old default bucket URIs

"gs://<GLOBALLY-UNIQUE-ID>" // non-default bucket URI

Those are not HTTP URLs: no data is served if we force HTTP URLs out of them.

initialization and storage helper

The client SDK initializes with the default bucket unless we specify another one. storageService is a safer helper name since storage is already exported by Firebase:

const storageService = getStorage(app)
const storageService = getStorage(app, "gs://...")