iOS Engineer Hub

iOS Engineer at Linear (2026): CRDT Sync, Public Method, Small Team

In short

Linear is a small (sub-200-person) software company that ships an issue tracker and project planning tool. The iOS app and macOS app are part of a tightly-coordinated cross-platform sync architecture built around CRDTs (Conflict-free Replicated Data Types). The company's engineering culture is documented publicly in the Linear Method (linear.app/method) — the canonical read for understanding what Linear values. The interview is take-home heavy with a craft-focused review process. Total comp at Senior is broadly in the $200k-$300k range per published bands; Linear has been transparent about pay since 2022.

Key takeaways

  • Linear's sync engine uses CRDTs — every client (iOS, macOS, web) syncs to a TypeScript backend with conflict-free merge. CTO Tuomas Artman has spoken publicly about the architecture: 'Linear's Sync Engine' (2020 Linear blog, linear.app/blog/scaling-the-linear-sync-engine).
  • The Linear Method (linear.app/method) is the public document of how Linear builds product. Reading it is the strongest signal of fit; the iOS interview includes questions about whether you've internalised the method.
  • Engineering team is small — under 100 people in 2026 per public job-pages updates. iOS-specific engineers are a handful; the role spans the iOS app, macOS app, and contributes to sync infrastructure.
  • Interview format: recruiter screen, take-home (substantial — typically a small Linear-shaped feature), code review of the take-home with the hiring engineer, system-design conversation, founder / leadership conversation.
  • Public salary bands: Linear has historically published salary bands in their own postings. Senior iOS in 2026 is typically $200k–$280k base + equity. Below FAANG-tier ceilings, but with substantial equity upside given Linear's growth trajectory.

What Linear publishes about the role

Linear's iOS roles are at linear.app/careers, posted as iOS Engineer or Mobile Engineer. The product surface is small but high-leverage:

  • iOS app: The iPhone / iPad client for Linear. Built in Swift / SwiftUI with deep integration into the sync engine.
  • macOS app: Native macOS client. Shares substantial code with the iOS app via SwiftUI's cross-platform support.
  • Sync infrastructure contributions: The CRDT-based sync engine is shared between iOS, macOS, and web. iOS engineers at Linear regularly contribute to the TypeScript backend and the shared sync protocol — the cross-stack ownership is a hallmark of small-team Linear culture.

Linear's engineering content lives at linear.app/blog with periodic technical deep-dives. The canonical reads:

  • 'Scaling the Linear Sync Engine' (2020, Tuomas Artman / engineering team) — describes the CRDT-based sync architecture, the choice of operation-based CRDTs, and how conflicts resolve across clients.
  • 'The Linear Method' (linear.app/method) — not a blog post but a hosted document explaining how Linear builds product. Required reading.
  • Tuomas Artman has given multiple public talks (e.g., Local-First Conf, RailsConf 'Sync Engines for Local-First Software') on Linear's sync architecture.

The interview: take-home heavy, craft-focused

Linear's iOS interview shape:

  1. Recruiter screen. Career timeline and Method-fit signal. Linear screens hard for cultural fit with the Method.
  2. Take-home project. Substantial — typically a self-contained iOS feature that mirrors how Linear thinks about product. Time estimate 8–12 hours; the spec is open-ended on purpose. The bar is craft: clean code, sensible architecture, considered animations and interactions, accessibility implemented from the start.
  3. Code review. 60–90 minutes. The hiring engineer walks through the take-home with you, asks follow-up questions, requests changes live. This is where Linear assesses how you think about your own code under review.
  4. Architecture / system design. 60 minutes. Conversational rather than whiteboard. Common asks: 'How would you sync data between iOS and a backend with offline support?' Strong candidates name CRDTs, operation-based vs state-based trade-offs, and the consistency / convergence story.
  5. Cross-functional partner round. A designer or product partner. Tests collaboration shape and Method fluency.
  6. Founder / leadership conversation. Karri Saarinen, Tuomas Artman, or another senior leader. Strategic conversation about Linear's direction; the candidate's questions matter as much as their answers.

The Linear-shaped specifics: craft is the dominant signal. Linear does not have a Big-Tech-style algorithmic coding round. The take-home is the coding bar; what you do with it determines whether you advance. Engineers who write competent-but-unpolished take-homes typically fail; engineers who ship a take-home that feels like a Linear feature typically advance.

The CRDT sync engine and what iOS engineers actually work on

Linear's sync engine is the technical centerpiece of the product. From Tuomas Artman's public talks (Local-First Conf, RailsConf) and the 2020 blog post, the architecture is:

// Conceptual — Linear's actual sync code is TypeScript on the backend
// and Swift / TypeScript on the clients. This is the rough Swift
// equivalent of how operation-based CRDTs feel from the iOS side.

// 1. Each user action is an operation
struct Operation: Codable, Sendable {
    let id: UUID            // operation ID, used for dedup
    let entity: String      // "issue", "comment", "label"
    let entityId: UUID
    let field: String       // "title", "state", "assignee"
    let value: AnyCodable   // new value
    let timestamp: Date     // hybrid logical clock in production
    let userId: UUID
}

// 2. Operations apply to local state immediately (optimistic update)
actor LocalStore {
    private var entities: [UUID: Issue] = [:]
    private var pending: [Operation] = []

    func apply(_ op: Operation) {
        // optimistic — update local state
        if let issue = entities[op.entityId] {
            entities[op.entityId] = issue.applying(op)
        }
        pending.append(op)
    }

    func confirmed(_ ids: Set<UUID>) {
        pending.removeAll { ids.contains($0.id) }
    }
}

// 3. Operations sync to the server via WebSocket
//    Server merges, broadcasts to other clients
//    Conflict resolution is built into the operation semantics
//    (e.g., last-writer-wins for scalar fields, set-add for tags)

// 4. Other clients receive the operation and apply locally — convergence
//    is guaranteed by the CRDT properties of the operation set

Why this matters for the interview: the system-design round at Linear often surfaces 'design a sync engine' as the prompt. Strong candidates: name CRDTs, distinguish operation-based from state-based, articulate convergence guarantees, and discuss the trade-offs vs OT (Operational Transformation, the older Google-Docs approach). Tuomas Artman's talks are the canonical reference Linear engineers have themselves watched.

Compensation: published bands, the equity story

Linear has been more transparent about salary than most peer growth-stage companies. The Linear handbook and individual postings publish salary ranges. As of 2026, typical published ranges:

LevelTitleBase salary (US, 2026)Total comp incl. equity
MidSoftware Engineer$160k – $200k$180k – $260k
SeniorSenior Software Engineer$200k – $280k$240k – $400k+
StaffStaff Engineer$280k – $360k$340k – $550k+

Below FAANG-tier salary at the cash-comp level. The equity component is substantial given Linear's growth — 2024 valuation rounds priced the company in the $400M–$1B range per public press, and option-grant value at senior levels has tracked accordingly. Equity-vs-cash trade-off is the standard Linear-vs-FAANG decision.

Levels.fyi has limited Linear data given the small org size — the published ranges in Linear's own postings are the more authoritative source.

Frequently asked questions

How small is Linear's iOS team in 2026?
Very small. Linear's full engineering org is under 100 people; iOS-specific engineers are a handful (single-digit to low-teens). The implication: every iOS engineer at Linear owns broad scope. There is no 'iOS performance team' or 'iOS infrastructure team' as separate functions — engineers contribute to the iOS app, the macOS app, the design system, and the sync infrastructure. This is a defining feature of the role.
What's Linear's iOS stack?
Swift + SwiftUI for both iOS and macOS apps, sharing substantial code via cross-platform SwiftUI. Sync infrastructure is shared with web (TypeScript backend, WebSocket transport, CRDT-based merge). iOS engineers at Linear typically read and write some TypeScript when contributing to the sync layer. The iOS-side sync code uses Swift's modern concurrency (actor for the local store, async/await for network) and structured logging via os.signpost.
Should I read the Linear Method before interviewing?
Yes, top-priority. The Linear Method (linear.app/method) is the public document of how Linear builds product, structured as a series of opinionated principles. Engineers who interview at Linear without reading the Method give themselves away in the first conversation. Engineers who have internalised the Method — and can articulate where their own past work has aligned with or diverged from it — advance further.
Is Linear remote-friendly?
Selectively. Linear is hybrid-by-default with HQ in San Francisco; some engineering hires are fully remote (typically senior+) and some are required in-office. Each posting specifies remote eligibility — California pay-transparency law applies if the role can be performed from California. Time zones are a soft filter; Linear has historically biased toward Americas and EMEA time zones for engineering.
Why does Linear use CRDTs instead of REST APIs?
Two reasons, both articulated by Tuomas Artman in public talks: (1) Local-first / offline-first behavior — Linear users expect the app to work without a network and merge cleanly when reconnected; (2) Real-time multi-client sync without a central transactional bottleneck — operations apply optimistically on every client and converge via the CRDT properties. The Linear sync engine is one of the largest production CRDT deployments outside academic / research projects.
What's a Linear take-home like?
Open-ended, typically 8–12 hours of work. The spec describes a Linear-shaped feature — for example, build a small iOS view that displays a list of issues with filtering, sorting, and a detail screen. The bar isn't 'did you implement the spec' (most candidates do that); it's 'is this the kind of code Linear would ship.' Clean architecture, considered animations, accessibility from the start, and edge cases handled all count. Engineers who treat the take-home as a checkbox exercise typically fail; engineers who treat it as a portfolio piece typically advance.
How does Linear interview differ from FAANG?
Three differences: (1) No algorithmic coding round — Linear assesses coding through the take-home + code review pair instead; (2) The system-design round is conversational and sync-engine-flavored, not the FAANG distributed-systems shape; (3) Cultural fit (Method fluency) is a binary screen, not a soft factor. Engineers used to FAANG interviews sometimes underestimate the cultural-fit weight at Linear; engineers from Apple / design-engineering backgrounds tend to do well.

Sources

  1. Linear Careers — open iOS / engineering roles.
  2. The Linear Method — Linear's public engineering / product method.
  3. Linear blog — engineering posts including the sync-engine architecture.
  4. Linear blog — Scaling the Linear Sync Engine (CRDT architecture deep-dive).
  5. Local-First Conf — Tuomas Artman on Linear's Sync Engine.
  6. Linear Handbook — operating principles, including compensation philosophy.
  7. CRDT.tech — academic / industry reference on Conflict-free Replicated Data Types.

About the author. Blake Crosley founded ResumeGeni and writes about product design, hiring technology, and ATS optimization. More writing at blakecrosley.com.