Shopify (Shopify App)
internship09-2025 - 12-2025
Shopify (Shopify App)

In Fall 2025, I returned to Shopify for a second internship, this time joining the Shopify App team. My term was split between shipping user-facing features and deep infrastructure work to improve the stability of the mobile testing pipelines.

Mobile SEO

Engineered the webview-based SEO listing editor for mobile.

Sidekick AI

Built the first multi-context AI intent flow using deep links and "Magic Fields".

CI/CD Infra

Optimized Web Canary pipelines using Web Manifests to run tests and reduce noise.

Test Stability

Authored lint rules and migrated interaction patterns to eliminate flaky E2E tests.

Native vs Webview

One of the biggest technical takeaways was learning how to seamlessly bridge Native mobile navigation with Webview content.

SEO Editor on Mobile

My primary product deliverable was bringing the web SEO Editor to the mobile app. Merchants heavily requested the ability to edit search engine listings (meta titles/descriptions) for their products directly from their phones.

While the core editing logic existed on the web, porting it to mobile wasn't just a copy-paste job. I had to build the native navigation infrastructure to route users into the correct webview context. This involved:

  • State Synchronization: Managing the handshake between the native layer (loading states, navigation headers) and the webview content to ensure the UI felt "native" and responsive.
  • Deep Linking: implementing the routing logic to handle deep links, ensuring users land on the correct product context when opening the editor and making sure that modifications are successfully saved on the backend.

Sidekick & AI Intents

I also worked on integrating Sidekick, Shopify's AI assistant, into the product editing flow. This was the first Sidekick flow that required the AI to navigate across multiple screens and webviews to complete an action.

I worked with the new Intents structure to handle "Magic Fields." When a merchant asks Sidekick to "Rewrite this product description for SEO," the AI generates the content, and my code handles passing that data through URL parameters into the webview, pre-filling the specific fields for the user to review. This required careful handling of data serialization between the native AI chat interface and the embedded web editor.

I had to make major structural changes to how product data is handled during the editing process to ensure that all changes through Sidekick can be successfully handled by the backend.

Testing Infrastructure

A significant portion of my term was dedicated to Developer Experience and CI/CD. Mobile E2E tests are notoriously flaky, and I worked to make them reliable.

Stabilizing E2E Tests

I noticed that many tests were failing because they tried to interact with elements before they were interactable. I audited the test suite and migrated interactions from the standard .click() method to a more robust tapElement() wrapper which better simulates real mobile touch events.

To prevent regressions, I wrote a custom Lint rule that automatically flags usage of .click() in mobile spec files, enforcing the use of tapElement() and waitForDisplayed() across the codebase. This permanently raised the code quality standard for the entire team.

Canary Pipelines & Bitrise

I took ownership of the Web Canary pipelines on Bitrise. These pipelines run the latest web code inside the mobile container to catch regressions before they hit production.

I optimized the CI workflow by integrating Web Manifests, allowing the test runner to dynamically select and run only the relevant test suites based on the changed code. I also engineered the logic for Slack notifications, ensuring that the team was only alerted for genuine failures, filtering out manual triggers and unrelated build noise.

The Experience

I'll be honest, my first week was mostly spent staring at progress bars. Between running dev up (Shopify's massive dependency tool) and waiting 4 hours for Xcode to install, I was definitely not a fan of mobile development.

But once the environment was actually running, I found a lot of satisfaction in the work. While building the SEO editor was fun, I surprisingly enjoyed the infrastructure work a lot too. Optimizing the CI pipelines and writing lint rules wasn't "flashy" user-facing work, but I liked knowing that my changes were saving other developers time and stopping the build from breaking for the entire team.

While I think I do prefer working product side, I'm super thankful for the opportunity to work on infra as it gave me more exposure to the entire engineering process and how things work at a large company like Shopify.

BFCM & Editions

Since I was there in the Fall, I got to experience the legendary Black Friday Cyber Monday (BFCM) code freeze. Seeing the engineering culture shift from "ship fast" to "absolute stability" was super interesting. I got to watch the traffic monitors in real-time as millions of dollars of transactions flowed through the systems my friends and I were working on.

It was also really cool getting to experience Shopify Editions from inside the engineering team. While I've always been a fan of what the team puts together for their releases, having more context on the impact of the work across all the teams was very fascinating.

Fun Stuff

As I mentioned, this was my second term at Shopify and again I can't emphasize enough just how great working at Shopify is. The culture is amazing, there are super talented people all around, and the work is incredibly impactful.

I have to give a shout out to my mentor Dinna Turong who made the entire experience working on mobile so much better. She was super helpful and always managed to make pairing sessions fun.

Although I don't plan to return to Shopify for a third term, I would definitely recommend it to anyone looking for a great internship experience!