iOS Engineer at Meta (2026): Buck2, Litho, Hermes, Bootcamp
In short
Meta runs one of the largest iOS engineering orgs outside Apple. The role spans Facebook, Instagram, WhatsApp, Threads, Messenger, and Reality Labs (visionOS work). The technical stack is unusual: Buck2 instead of Xcode build, ComponentKit (Meta's UIKit declarative-UI framework, predecessor to SwiftUI's design ideas) for parts of Facebook and Instagram, React Native + Hermes for Marketplace and Ads Manager, and Swift / Objective-C for newer modules. Hiring funnel is the standard Meta bootcamp + team-matching shape. E5 (Senior) is the terminal level for most engineers; E6 (Staff) is reached by a smaller subset. Total comp at E5 clusters $370k–$540k per levels.fyi 2026 Meta data.
Key takeaways
- Meta's leveling: E3 / IC3 (junior), E4 / IC4 (mid), E5 / IC5 (senior — terminal for most), E6 / IC6 (staff), E7 / IC7 (principal). 'E' is engineering, 'IC' is individual contributor — same scale, different name across orgs.
- Build system: Buck2 (open-sourced 2022, github.com/facebook/buck2) replaced Xcode build for most of Meta's iOS apps. Familiarity with BUCK files and target-graph thinking is expected at senior+ — interview reports surface this.
- ComponentKit (Meta's declarative UI framework, github.com/facebook/componentkit) is on the Facebook and Instagram codebases. SwiftUI fluency does not substitute — ComponentKit's API is Objective-C++ with a distinct mental model.
- React Native + Hermes (github.com/facebook/hermes) ships in Marketplace, some parts of Ads Manager, and several internal tools. Hermes is Meta's optimised JavaScript engine for mobile; iOS engineers on RN-using teams are expected to debug across the JS/native bridge.
- Bootcamp + team-matching: hires start in a 6-week bootcamp, do introductory commits across multiple codebases, then match with a team. iOS engineers should expect to interview generically and team-match into iOS-heavy work, not interview directly with the destination team.
What Meta publishes about the role
Meta's iOS engineering footprint is published across metacareers.com/jobs as iOS Software Engineer, Mobile Engineer, or generic Software Engineer roles tagged with the team's mobile-app charter. The product surfaces:
- Facebook iOS: The legacy app. Buck2 build, mixed Objective-C / Swift, ComponentKit-heavy. The codebase is large enough that iOS engineers specialise into News Feed, Stories, Search, Marketplace, or Ads.
- Instagram iOS: Separate codebase from Facebook, also Buck2 + ComponentKit-heavy with Swift adoption growing. Camera, Feed, Reels, Stories, DM, Shop are the main surfaces.
- WhatsApp iOS: Distinct stack — historically more Objective-C-heavy, smaller team, secrecy culture inherited from the acquisition era.
- Messenger iOS: Modernised in the 2020 'Project LightSpeed' rewrite — moved off RN, adopted a custom messaging-stack architecture written for low-memory, fast-cold-launch use cases.
- Threads iOS: Newer (launched July 2023), shares infrastructure with Instagram. Leans into modern Swift more than the legacy apps.
- Reality Labs iOS: visionOS apps, Quest companion apps. Uses ARKit / RealityKit for cross-platform spatial work.
Meta's engineering blog (engineering.fb.com) publishes mobile-architecture content regularly: the Hermes JS engine ('Hermes opens up Hermes-Hello-World', 2019), Buck2 deep-dives ('Building Buck2', 2023), Litho / ComponentKit, and the Messenger LightSpeed rewrite ('Project LightSpeed', 2020). These are the canonical references for understanding Meta's iOS infrastructure.
The interview: bootcamp, team-matching, and what makes it Meta-shaped
Meta's iOS interview funnel:
- Recruiter screen. 30 minutes. Career timeline + level calibration.
- Coding screen. 45 minutes, two algorithm problems on coderpad. Pure Swift is fine.
- On-site (4–5 rounds):
- Two coding rounds — same algorithmic shape as the screen, harder problems.
- One product / system design round at E4+ — mobile-specific at iOS interviews. Common asks: design Instagram Stories, design WhatsApp message sync, design a feed with offline-first reads.
- One iOS-specific knowledge round — UIKit lifecycle, memory, threading, occasionally architecture.
- One behavioral.
- Bootcamp (post-offer). 6 weeks. Hires commit to multiple codebases (FB, IG, internal tools), shadow on-call, attend cross-org talks. Designed to give Meta a calibration signal across teams before placement.
- Team-matching. After bootcamp, hires interview with 2–4 teams that have open headcount and pick. iOS-heavy teams are well-represented but not guaranteed.
The Meta-shaped specifics: system design at iOS interviews is mobile-specific — offline-first reads, sync conflict resolution, push-notification fan-out, app launch time, background work limits. This differs from Apple's framework-design round and Google's distributed-systems lean. Meta also weights coding more than peer companies — system-design fail is recoverable; coding fail typically isn't.
The stack you will actually work in
Meta's iOS apps don't run on a stock Apple stack. The major divergences:
// COMPONENTKIT — Meta's declarative-UI framework. Predates SwiftUI by ~5 years.
// Lives at github.com/facebook/componentkit (Objective-C++).
//
// Mental model: pure functions from props to component trees,
// reconciled diff-style against the previous tree. Same insight as React /
// SwiftUI; older API. Senior iOS engineers at Meta read it daily.
//
// SwiftUI fluency is necessary (newer surfaces) but doesn't substitute.
// HERMES — Meta's JavaScript engine optimised for mobile.
// Lives at github.com/facebook/hermes (C++, embedded in React Native).
// Ships in Marketplace, parts of Ads Manager, some internal tools.
//
// iOS engineers on RN teams debug across the JS/native bridge:
// - JS error in Hermes → mapped through source maps → React Native red box
// - Native crash → swizzling boundary at the bridge call → root cause in JS
//
// Engineering blog posts:
// engineering.fb.com/2019/07/12/android/hermes/ (intro)
// engineering.fb.com/2022/04/27/developer-tools/buck2-our-open-source-build-system/
// (Buck2 announcement)
// BUCK2 — Meta's Rust-rewritten build system. Default build for FB / IG / WhatsApp.
// BUCK files declare targets:
ios_library(
name = "NewsFeedComponents",
srcs = glob(["*.m", "*.swift"]),
deps = [
"//Apps/Common/UI:UICore",
"//Apps/NewsFeed/Models:Post",
],
visibility = ["//Apps/NewsFeed/..."],
)
// Familiarity with BUCK target graph is expected at senior+ — you'll add
// targets, refactor visibility, debug 'target not visible' errors.The Project LightSpeed rewrite of Messenger iOS (Meta engineering blog, March 2020 — engineering.fb.com/2020/03/02/data-infrastructure/messenger) is the canonical case study of Meta-iOS architecture work. The rewrite moved off RN and an Erlang-based backend, cut binary size from 1.7M lines of code to 360K, and dropped cold-start time by 2x. The architectural choices documented there — server-driven UI, single-database client, abstracted view-models — are widely applied across Meta's other mobile apps.
Compensation: E5 reality and the levels.fyi data
Meta is California-headquartered, subject to SB-1162 pay-transparency. Per levels.fyi/companies/facebook/salaries/software-engineer (2026 data):
| Level | Title | Total comp (US, 2026) |
|---|---|---|
| E3 / IC3 | Software Engineer (junior) | $210k – $290k |
| E4 / IC4 | Software Engineer | $280k – $400k |
| E5 / IC5 | Senior Software Engineer | $370k – $540k |
| E6 / IC6 | Staff Software Engineer | $540k – $830k |
| E7 / IC7 | Principal / Senior Staff | $830k – $1.3M+ |
The pay-transparency-required range on a typical Senior iOS Engineer posting at Meta in California is around $213k–$293k base salary, plus stock and bonus that double the package at the upper end. RSUs vest 25% per year over 4 years with quarterly distributions; refreshes happen at the annual performance cycle.
Frequently asked questions
- How does Meta's bootcamp work for iOS engineers?
- All Meta hires (not just iOS) go through a 6-week bootcamp where you commit to multiple codebases, attend cross-org talks, and complete onboarding tasks across 2–3 teams. iOS engineers are not pre-matched to a team; you team-match at the end of bootcamp by interviewing with teams that have open headcount. iOS-heavy teams (Facebook, Instagram, WhatsApp, Messenger, Threads) are well-represented but not guaranteed — engineers who really want a specific team should signal that aggressively to recruiting.
- Does Meta still use UIKit or has it migrated to SwiftUI?
- Mixed and not migrating wholesale. Most production Meta iOS apps use a UIKit + ComponentKit base with SwiftUI adopted on newer screens. ComponentKit's declarative model is similar to SwiftUI's, so engineers fluent in one ramp on the other quickly. Swift + SwiftUI fluency is expected at the interview; UIKit + ComponentKit fluency is on-the-job learning. Meta does not have a public 'migrate to SwiftUI' charter — the existing infrastructure is too deep.
- What's E5 like at Meta vs senior at Apple?
- Comparable in scope but different shape. Meta E5 is heavily focused on shipping cadence, system-design contributions, and cross-team partnership — most E5s spend their entire career at E5. Apple ICT4 (the rough equivalent) leans more toward framework / API craft on a longer timescale. Meta promotes more aggressively from E4 to E5 (most engineers reach E5 in 2-3 years post-hire); Apple's ICT3-to-ICT4 is more variable. Compensation at E5 in CA roughly matches ICT4 mid-band at Apple.
- Should I expect to write Objective-C at Meta?
- Yes, especially if you join Facebook or Instagram. Both apps have substantial Objective-C surface area in the legacy codebase. New code is primarily Swift, but reading and modifying ObjC is a daily activity at senior+. ComponentKit is Objective-C++ — even Swift-only feature work can require touching ComponentKit code. WhatsApp leans the most Objective-C-heavy of the major apps; Threads and Messenger lean the most Swift-heavy.
- How does Meta interview differ from Apple?
- Three differences: (1) System-design at Meta is mobile-specific (offline-first sync, push fan-out, app launch); Apple's is framework-design (how would you design URLSession). (2) Coding weight is higher at Meta — coding fail is hard to recover; system-design fail is more recoverable. (3) Behavioral at Meta uses the LiveStrong / Hard-Things / Conflict framework explicitly; Apple is more open-ended. The bootcamp + team-matching post-offer is also unique to Meta among FAANG.
- Is Meta remote-friendly for iOS engineers?
- Variable. Meta's hybrid policy is 3 days in office (Tuesday / Wednesday / Thursday) at most teams. Fully-remote roles exist but are limited and often capped at specific levels (E4–E6). Hubs: Menlo Park (HQ, primary), Seattle, NYC, London, Tel Aviv. Reality Labs work is concentrated at Menlo Park and Burlingame; WhatsApp historically more Menlo Park. Check the specific posting — Meta is required to disclose location and remote eligibility under California law.
- What public Meta iOS code should I read?
- Three repositories to actually open: (1) ComponentKit at github.com/facebook/componentkit — Objective-C++ declarative UI, the predecessor pattern to SwiftUI; (2) Hermes at github.com/facebook/hermes — Meta's JS engine for mobile, useful even if you never touch RN to understand the constraints; (3) Buck2 at github.com/facebook/buck2 — the build system. The Engineering blog at engineering.fb.com has architecture posts on each. The Messenger LightSpeed rewrite (March 2020) and Buck2 announcement (April 2022) are the canonical reads.
Sources
- Meta Careers — search for iOS engineer roles.
- levels.fyi — Meta Software Engineer compensation by level.
- Meta Engineering blog — mobile architecture posts.
- GitHub — ComponentKit (Meta's Objective-C++ declarative UI framework).
- GitHub — Hermes (Meta's optimised JS engine for mobile).
- GitHub — Buck2 (Meta's build system, used by FB / IG / WhatsApp).
- Meta Engineering — Project LightSpeed: rewriting Messenger iOS (March 2020).
- Meta Engineering — Buck2 open source announcement (April 2023).
About the author. Blake Crosley founded ResumeGeni and writes about product design, hiring technology, and ATS optimization. More writing at blakecrosley.com.