We just released @thoughtbot/react-native-social-auth; a modern Google Sign-In library for React Native built on top of Android’s Credential Manager and the current GoogleSignIn-iOS SDK. It ships with a Google-branding-compliant button component, a first-party Expo config plugin, and a TypeScript-first API. npm: @thoughtbot/react-native-social-auth Github: github.com/thoughtbot/react-native-social-auth import { GoogleSignIn, GoogleSignInButton, } from '@thoughtbot/react-native-social-auth'; Goog
Thoughtbot
https://robots.thoughtbot.com/ · 23 posts · history since 2026 · active
Yesterday
24 Jul
One of the perks of being in the thoughtbot universe is that we meet a ton of people building cool things, and many of them are startup founders, mentors or advisors. Lately, we’ve chatted with them about how they’re using AI tools for startups, both where AI adds value and where they’re seeing risks. AI tools have made it possible…
17 Jul
IT and software leaders at healthcare organizations are feeling the pressure to deliver software faster while maintaining compliance and reliability. Our recent healthcare software delivery research (coming soon!) found that 68% of organizations struggle to increase software delivery velocity without introducing operational or governance risk. Let’s talk about it! On July 30, I’ll have the pleasure of moderating a panel…
15 Jul
For more than a decade, Upcase was where thoughtbot taught Ruby on Rails. You’d work through a trail, get stuck, watch one of us solve the same problem, and come out a little sharper. Thousands of developers used it to take “junior” out of their title. We don’t say that lightly. In 2018, we transitioned Upcase from a paid subscription…
14 Jul
This week’s episode is a radical one, let’s Muppet-cast a software development team!
13 Jul
I have been working on an app that still sits on React Native 0.77 and the old architecture. Slowly, as I was getting a grip on the new architecture, one of the first big refactors was related to the navigation. We were using JavaScript stack navigators, so the plan was to move everything over to native stack navigators. We migrated…
10 Jul
The London Ruby User Group’s July meetup is this Monday, 13 July at 6:00pm at GoCardless’s offices near Farringdon and Barbican tube stations. Former-thoughtbotter Ismael Celis will talk about reactive command-oriented apps in Ruby, followed by me (Fritz Meissner) on fixing long-standing flakiness in Capybara tests, and how AI did and did not help. There’s an introduction to my talk…
7 Jul
Sally and Joël join forces to discuss the different ways to interpret the role of a ‘principle’ or ‘staff’ engineer, and the handwaving around what those titles mean in terms of the gradation.
3 Jul
We wanted to illustrate the difference between a vibe coded website and what a thoughtbot designer can produce. We also wanted to highlight the risk vibe coding poses to your business. So to demonstrate these points, we redesigned a vibe coded professional services website. Below are the before and after videos of the site. Now, let’s dive into how we…
1 Jul
Roux is thoughtbot’s new CSS framework, created by Elaina Natario. Roux is being used by thoughtbotters and non-thoughtbot contributors. It’s simple and modern and we love it. But we still had an itch Roux didn’t scratch. thoughtbot developers and designers are looking for a component library we can call our own. Folks want a go-to for their projects, something that…
25 Jun
With our 23rd anniversary happening this year, I’ve spent a lot of time thinking about what should happen to thoughtbot after I’m gone, and what the next generation of thoughtbot ownership and governance looks like. The most common path for companies like ours is to be sold to another consulting company, strategic acquirer, or private equity. While that may lead…
23 Jun
Aji and Joël discuss graph and tree structures, their connection to the emergent properties, attributes and qualities found from a largely connected group of data.
You know the drill if you’ve validated the same rule on a few attributes. One presence validation is one matcher, and five of them turn into five nearly identical lines that don’t tell the next reader much: it { is_expected.to validate_presence_of(:first_name) } it { is_expected.to validate_presence_of(:last_name) } it { is_expected.to validate_presence_of(:email) } Shoulda Matchers 8.0 is out on RubyGems, and…
22 Jun
Recently I stopped a group of flaky tests from running in CI. 60% of CI runs were failing because of this group, which was unsustainable. Three weeks later I was able to restore that group to CI, with 0% failures on main1 resulting. Our “non-flaky” tests now give more false positives than the (previously) flaky group. This is not really…
19 Jun
Playwright ships with a black-box recorder that records every detail of every test, giving you a treasure trove of information for debugging flaky tests. Most Rails apps I’ve worked on don’t use it. It’s called the Trace Viewer, and if you’re running Capybara with Playwright via playwright-ruby-client, turning it on takes a single block in rails_helper.rb. When Playwright records a…
18 Jun
Brighton Ruby 2026 will take place in a few days and the thoughtbot team will be there to meet you all in real life, learn from all the great talks, and enjoy a day by the English coast. We love Brighton Ruby and enjoyed it for many years. It is a single-day, single-track conference packed with great energy and great…
Our hosts Chad and Sami team up this week to discuss AI code bases and whether they can be built to be developer friendly and with best practices in mind.
17 Jun
The checklist I expected Last week I attended a workshop on neuroinclusivity in learning design. I expected to come away with a checklist. Use larger fonts Send slides in advance Offer cameras off Use a dyslexia-friendly typeface Instead, the biggest takeaway was that there is no checklist. Hold on - I know you want something tangible, it’s coming - stay…
16 Jun
Your most-viewed page might be one no human has ever opened. That is what AI crawlers have done to view tracking in 2026. I ran into this problem on a production app that needed engagement tracking. The first version tracked everything server-side, the way Rails apps have done analytics for years. It broke within a day. We used Ahoy for…
Aji and Sally are back together again, this time to discuss the different apps they use to make their workflows and To Do lists easier and quicker to achieve.
10 Jun
Stop. Right now, stop reading and take 2 minutes. Draw how to make toast. That’s it. No further instruction. No clarification. Just those words on repeat. “Draw how to make toast.” The moment you say it, something interesting happens. Everyone stops. Instantly engaged. Then the questions start. “What do you mean?” “Can I use a pencil?” “Do you want steps?”…
9 Jun
So one day a client came to me and said: “we want a Chrome extension.” Simple enough, right? First thing to know: the client didn’t want to build a real extension from scratch with its own codebase and logic. They wanted a wrapper, essentially their existing Rails app, dressed up and living inside a Chrome extension panel. Same features, same…
8 Jun
As AI-assisted software development becomes more widely adopted, more of the Ruby code in our Rails apps is being written by agents. Each team has its own conventions for how that code should look and behave, and we want those conventions enforced automatically rather than relying on the agent to remember them on its own. This is part of a…