A Tour of Google IDX

tooling
review
webdev
Develop apps entirely in the cloud
Author
Published

November 4, 2023

Google IDX

IDX is a project from Google that aims to provide an entirely cloud based app development experience. From development to deployment and everything in between can be done from the comfort of your web browser and seamlessly integrated through Google’s cloud ecosystem. While hardly the first in this space, the project piqued my interest and I signed up for beta access to give it a spin.

Creating a new app

The onboarding experience was very smooth, my google account was required to sign up for the beta and immediately synced to my IDX account. At this stage there weren’t too many templates to choose a starter project from from the last option on the “Create A Workspace” page, it looks like Python, Go and importantly AI templates are coming soon, which I can imagine would accelerate interest in this project.

Editing Experience

A couple of clicks later, I was up and running. I really enjoyed how quickly and relatively friction-less it took to get to this stage.

Greeted by my familiar vscode/monaco editor, I found navigating the options straightforward. The 2 additional icons on top of the usual vscode options you see on the sidebar to the left are for the Firebase deployment and Project IDX options.

Crucially, the typing experience felt natural and latency free. Coding up a simple web app was fuss-free and the default settings had quality-of-life features for web development such as instant reloading previews and a colour picker.

Nix

A rather novel choice that IDX made was to use Nix as the package manager to define environment configurations for every workspace. Learning that Nix is a purely functional package manager piqued my interest as not too long ago I spent a year learning Scala At the outset, I do see a lot of sense in having a functional approach to dealing with package dependencies, but I’d love to spend more time with this tool to understand it more.

For my simple app, the Nix configuration was pre-populated and I could understand all the default settings made. The ability to edit the command used to preview your app defaults to the standard Python web server but can be changed for other languages if needed.

Python environment

While the Python workspace is coming soon, seeing that Python was used as the default web server for previews got me curious to poke around a bit.

I found the default python version to be 3.11 but it was truly a barebones environment that did not come with pip installed. This is not too surprisingly considering every development container is a fresh VM instance. I look forward to seeing the start python environment when it becomes available as I imagine there would be more batteries included for that workspace.

I ended my session with a quick check of the specs of the cloud machine that is provided for free. It turned out to be in-line with most basic tiers of cloud containers that I have come to expected.

Overall

What I liked so far

  • Delivers on the promise of a convenient way to develop apps
  • Classic and familiar editing experience, they resisted the urge to reinvent any wheel unnecessarily

  • Free (but I wait with bated breath to see how long this lasts)

What I’m looking forward to

  • Python workspace and app examples

  • AI coding assistant

  • More detailed documentation. The current docs feel a little light but we are still in beta.

  • Vim mode: I would prefer native bindings over Vim emulation offered via vscode extensions

Overall, Project IDX impressed me in my quick testing. It was a breeze to get started and the tooling made my development experience enjoyable! My little write up is missing my review of the deployment process but that’s solely because I did not have an existing Firebase account. If I revisit this project again in the future, I’ll be sure to try that experience out too.

Appendix

─ Session info ───────────────────────────────────────────────────────────────
 setting  value
 version  R version 4.3.2 (2023-10-31)
 os       macOS Sonoma 14.1.2
 system   x86_64, darwin20
 ui       X11
 language (EN)
 collate  en_US.UTF-8
 ctype    en_US.UTF-8
 tz       Asia/Singapore
 date     2024-01-13
 pandoc   3.1.10 @ /usr/local/bin/ (via rmarkdown)
 quarto   1.3.450

─ Packages ───────────────────────────────────────────────────────────────────
 package     * version date (UTC) lib source
 sessioninfo * 1.2.2   2021-12-06 [1] CRAN (R 4.3.0)

 [1] /Users/ddanieltan/Code/ddanieltan.com/renv/library/R-4.3/x86_64-apple-darwin20
 [2] /Users/ddanieltan/Library/Caches/org.R-project.R/R/renv/sandbox/R-4.3/x86_64-apple-darwin20/84ba8b13

──────────────────────────────────────────────────────────────────────────────
Somewhere, something incredible is waiting to be known – Carl Sagan

Reuse

Citation

BibTeX citation:
@online{tan2023,
  author = {Tan, Daniel},
  title = {A {Tour} of {Google} {IDX}},
  date = {2023-11-04},
  url = {https://www.ddanieltan.com/posts/google-idx},
  langid = {en}
}
For attribution, please cite this work as:
Tan, Daniel. 2023. “A Tour of Google IDX.” November 4, 2023. https://www.ddanieltan.com/posts/google-idx.