Linear - Kompletny Przewodnik po Nowoczesnym Project Management
Czym jest Linear?
Linear to narzΔdzie do zarzΔ dzania projektami stworzone przez i dla zespoΕΓ³w software. W przeciwieΕstwie do tradycyjnych narzΔdzi jak Jira czy Asana, Linear stawia na szybkoΕΔ, minimalizmem i keyboard-first experience - kaΕΌda akcja moΕΌe byΔ wykonana bez dotykania myszki, co sprawia, ΕΌe praca z narzΔdziem jest tak naturalna jak kodowanie.
Linear zostaΕ zaΕoΕΌony w 2019 roku przez byΕych pracownikΓ³w Uber (Karri Saarinen - ex-Head of Design Airbnb i Jori Lallo - ex-engineer Uber). Ich frustracjΔ byΕo to, ΕΌe narzΔdzia do zarzΔ dzania projektami sΔ wolniejsze i mniej intuicyjne niΕΌ same narzΔdzia developerskie - dlatego stworzyli Linear jako narzΔdzie, ktΓ³re jest rΓ³wnie szybkie i przyjemne w uΕΌyciu jak VS Code czy terminal.
Linear jest uΕΌywany przez tysiΔ ce firm technologicznych, w tym Vercel, Retool, Ramp, Loom, Cash App i wielu innych. StaΕ siΔ de facto standardem dla startupΓ³w i nowoczesnych zespoΕΓ³w software.
Dlaczego Linear?
Kluczowe zalety Linear
- SzybkoΕΔ - Instant load, zero lag, optimistic updates
- Keyboard-first - Wszystko przez skrΓ³ty klawiszowe
- Beautiful design - Minimalistyczny, estetyczny UI
- GitHub native - GΕΔboka integracja z kodem
- Cycles - Sprints bez zbΔdnego boilerplate
- Roadmaps - Wizualna timeline projektΓ³w
- No-configuration - DziaΕa out-of-the-box
- Real-time sync - Natychmiastowa synchronizacja
Linear vs Jira vs Asana vs Notion
| Cecha | Linear | Jira | Asana | Notion |
|---|---|---|---|---|
| SzybkoΕΔ UI | β‘ BΕyskawiczna | π Wolna | πΆ Εrednia | πΆ Εrednia |
| Keyboard shortcuts | β PeΕne | β Ograniczone | β Ograniczone | β Dobre |
| GitHub integration | β Native | β Plugin | β Webhook | β Embed |
| Setup time | β‘ Instant | π DΕugi | πΆ Εredni | πΆ Εredni |
| Learning curve | β Niska | β Wysoka | β Niska | πΆ Εrednia |
| Dla dev teams | β Perfect | β Tak | β OgΓ³lne | β OgΓ³lne |
| Free tier | 250 issues | β Do 10 | β Limited | β Limited |
| Cena | $10/user | $8.15/user | $11/user | $10/user |
Podstawy Linear
Interfejs uΕΌytkownika
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Linear π Cmd+K [?] [βοΈ] β
ββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β β
β π₯ Inbox β Issues β
β π― My Issuesβ ββββββββββββββββββββββββββββββββββββββββββββββ β
β π Backlog β β β LIN-123 Fix auth redirect bug β β
β βΆοΈ Active β β π΄ Urgent Β· @alice Β· Frontend β β
β π Triage β ββββββββββββββββββββββββββββββββββββββββββββββ€ β
β β β β LIN-124 Add dark mode toggle β β
β βββββββββββ β β π‘ Medium Β· @bob Β· Design β β
β β ββββββββββββββββββββββββββββββββββββββββββββββ€ β
β Teams: β β β LIN-125 Refactor API client β β
β π Product β β π’ Low Β· Unassigned Β· Backend β β
β βοΈ Enginee. β ββββββββββββββββββββββββββββββββββββββββββββββ β
β π¨ Design β β
β β [+ New Issue] β
β βββββββββββ β β
β β Filters: Status | Priority | Assignee | Label β
β πΊοΈ Roadmap β β
β π
Cycles β β
β β β
ββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββββββHierarchia w Linear
Workspace (Firma/Organizacja)
β
βββ Team: Engineering
β βββ Project: Mobile App v2.0
β β βββ Issue: LIN-101 Setup React Native
β β βββ Issue: LIN-102 Navigation system
β β βββ Issue: LIN-103 API integration
β β
β βββ Project: Backend Refactor
β βββ Issue: LIN-201 Migrate to NestJS
β βββ Issue: LIN-202 Add caching layer
β
βββ Team: Design
β βββ Project: Design System
β βββ Issue: DES-001 Color palette
β βββ Issue: DES-002 Component library
β
βββ Team: Product
βββ Project: User Research
βββ Issue: PRD-001 Conduct interviewsTworzenie issues
Szybkie tworzenie (C lub Cmd+I):
Title: Fix login redirect bug
βββββββββββββββββββββββββββββββββββββββββ
Description (Markdown):
## Problem
Users are redirected to wrong page after login.
## Steps to reproduce
1. Go to /login
2. Enter credentials
3. Click "Sign In"
4. Expected: Dashboard
5. Actual: Landing page
## Technical details
- [ ] Check auth middleware
- [ ] Review redirect logic in AuthContext
βββββββββββββββββββββββββββββββββββββββββ
Status: π Backlog
Priority: π΄ Urgent
Assignee: @alice
Labels: bug, frontend, auth
Project: Authentication Improvements
Cycle: Sprint 24
Estimate: 2 pointsKeyboard Shortcuts
Podstawowe skrΓ³ty
NAWIGACJA:
G I - Go to Inbox
G M - Go to My Issues
G B - Go to Backlog
G A - Go to Active
G P - Go to Projects
G C - Go to Cycles
G R - Go to Roadmap
G T - Go to Team
G S - Go to Settings
GLOBALNE:
Cmd/Ctrl + K - Command palette (najwaΕΌniejszy!)
/ - Quick search
? - Show all shortcuts
Escape - Close/Cancel
TWORZENIE:
C - Create issue
Shift + C - Create issue from anywhere
I - Create sub-issue
P - Create project
EDYCJA ISSUES:
Space - Select/Deselect
Enter - Open issue detail
S - Change status
A - Assign
L - Add label
E - Edit estimate
D - Set due date
M - Move to project
X - Archive
Delete - Delete (with confirmation)
NAWIGACJA W LIΕCIE:
J / β - Move down
K / β - Move up
[ / ] - Previous/Next issueZaawansowane skrΓ³ty
BULK ACTIONS:
Shift + click - Select range
Cmd + click - Multi-select
Cmd + A - Select all visible
Shift + S - Change status for selected
Shift + A - Assign selected
Shift + L - Label selected
WIDOKI:
1 - List view
2 - Board view
3 - Calendar view
Cmd + Shift + \ - Toggle sidebar
F - Full screen issue
Cmd + / - Toggle activity
MARKDOWN (w edytorze):
Cmd + B - Bold
Cmd + I - Italic
Cmd + K - Link
Cmd + E - Code
Cmd + Shift + M - Mention user
Cmd + Shift + E - Mention issueCommand Palette (Cmd+K)
Cmd+K otwiera command palette - najszybszy sposΓ³b na wszystko:
> create issue
> assign to alice
> set status in progress
> add label bug
> move to project Authentication
> set priority urgent
> go to settings
> switch team engineering
> open preferences
Pro tip: MoΕΌesz ΕΔ
czyΔ akcje:
> LIN-123 status done assign meStatus i Workflow
DomyΕlne statusy
Backlog (π) - Issues do rozwaΕΌenia
β
βββ Triage (π) - Nowe issues do przeglΔ
du
β
βΌ
Todo (β) - Gotowe do pracy
β
βΌ
In Progress (β) - W trakcie realizacji
β
βΌ
In Review (β) - Code review / QA
β
βΌ
Done (β) - ZakoΕczone
β
βββ Canceled (β) - AnulowaneCustomowe workflow
ZespΓ³Ε moΕΌe dostosowaΔ workflow:
Settings β Teams β [Team Name] β Workflow
PrzykΕad workflow dla Design team:
π Backlog
βββ π Triage
βββ π‘ Discovery
βββ βοΈ Designing
βββ π Design Review
βββ π Revisions
βββ β
Ready for Dev
βββ β DoneCycles (Sprints)
Konfiguracja cycles
Settings β Teams β [Team] β Cycles
Cycle length: 2 weeks
Start day: Monday
Auto-archive after: 1 week
Auto-move incomplete: β
(do nastΔpnego cycle)Planowanie cyklu
1. PrzejdΕΊ do Cycles (G C)
2. Wybierz nadchodzΔ
cy cycle
3. PrzeciΔ
gnij issues z Backlog
4. Lub uΕΌyj M (move) na issue β wybierz cycle
Cycle Planning View:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Cycle 24: Jan 20 - Feb 2 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Capacity: 32 points β
β Committed: 28 points β
β Progress: ββββββββββββββββββββ 35% β
β β
β Issues: β
β β LIN-101 Setup React Native @alice 3 pts β
β β LIN-102 Navigation system @bob 5 pts β
β β LIN-103 API integration @alice 8 pts β
β β LIN-104 Unit tests @charlie 5 pts β
β β LIN-105 Documentation Unas. 2 pts β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββVelocity i metryki
Cycle metrics automatycznie Εledzone:
- Velocity: Εrednia liczba punktΓ³w/cycle
- Completion rate: % ukoΕczonych issues
- Scope change: ile dodano/usuniΔto w trakcie
- Lead time: czas od created do done
- Cycle time: czas od started do done
Linear automatycznie pokazuje trendy i przewiduje
capacity dla przyszΕych cycles.GitHub Integration
Linkowanie issues
W commit messages lub PR:
βββββββββββββββββββββββββββββ
fix: resolve auth redirect bug
Fixes LIN-123
Closes LIN-124
Relates to LIN-125
βββββββββββββββββββββββββββββ
Lub w PR description:
Closes LIN-123
Linear automatycznie:
1. Linkuje PR do issue
2. Zmienia status issue na "In Review"
3. Po merge zmienia na "Done" (opcjonalne)Automatyzacja statusΓ³w
Settings β Integrations β GitHub β Automations
DostΔpne triggery:
β
βββ PR opened β Move issue to "In Review"
βββ PR merged β Move issue to "Done"
βββ PR closed β Move issue to "Backlog"
βββ Branch created β Move issue to "In Progress"
βββ Commit pushed β Show activity on issue
PrzykΕadowa konfiguracja:
[β] When PR is opened, move to "In Review"
[β] When PR is merged to main, move to "Done"
[β] Show commits and PRs on issue timeline
[β] Auto-link issues from branch names (feature/LIN-123)Branch naming
Linear moΕΌe automatycznie generowaΔ nazwy branchy:
Issue: LIN-123 "Fix login redirect bug"
Branch: feature/lin-123-fix-login-redirect-bug
Settings β Integrations β GitHub:
Branch format: {prefix}/{issueId}-{title}
Prefix: feature, fix, chore (based on label)GitHub Sync
Dwukierunkowa synchronizacja:
GitHub Issue β Linear Issue
- Import issues z GitHub
- Sync komentarzy
- Sync labels
Linear Issue β GitHub Issue
- Export issues do GitHub
- Mirror status changesProjects i Roadmaps
Tworzenie projektu
1. G P (go to projects)
2. P (create project)
3. WypeΕnij:
Project: Mobile App v2.0
βββββββββββββββββββββββββββββββββββββββββ
Icon: π±
Description: Complete rewrite of our mobile app
using React Native for both iOS and Android.
Status: π‘ In Progress
Lead: @alice
Target date: March 30, 2025
βββββββββββββββββββββββββββββββββββββββββ
Projects mogΔ
zawieraΔ:
- Multiple milestones
- Linked issues
- Documents
- Updates (progress posts)Milestones
Project: Mobile App v2.0
β
βββ Milestone 1: Foundation (Feb 15)
β βββ LIN-101 Setup project
β βββ LIN-102 Core navigation
β βββ LIN-103 Design system integration
β
βββ Milestone 2: Core Features (Mar 1)
β βββ LIN-201 User authentication
β βββ LIN-202 Profile management
β βββ LIN-203 Settings screen
β
βββ Milestone 3: Polish (Mar 20)
β βββ LIN-301 Performance optimization
β βββ LIN-302 Accessibility
β βββ LIN-303 Bug fixes
β
βββ Milestone 4: Launch (Mar 30)
βββ LIN-401 App Store submission
βββ LIN-402 Marketing assetsRoadmap view
Roadmap pokazuje projekty na timeline:
Jan Feb Mar Apr
ββββββββββββΌβββββββββββΌβββββββββββΌββ
β β β β
Mobile ββββββββββββββββββββββββββββββββββ β In Progress
App v2 β β β β Targetβ
β β β β
Backend β βββββββββββββββββ β β Completed
Refactor β β β β
β β β β
Design β βββββββββββββββββββ β Planned
System β β β β
β β β β
MoΕΌesz drag & drop aby zmieniΔ daty,
i kliknΔ
Δ projekt aby zobaczyΔ szczegΓ³Εy.Triage i Inbox
Triage workflow
Triage to miejsce gdzie trafiajΔ
nowe issues
przed przypisaniem do backlogu:
1. Issue created β Status: Triage
2. Team lead przeglΔ
da
3. Przypisuje:
- Priority
- Labels
- Project/Cycle
- Assignee
4. Przenosi do Backlog lub Todo
5. Lub zamyka jako duplicate/invalid
Triage View (G T):
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Triage Β· 12 issues need attention β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Today (5) β
β β LIN-200 Bug: Login fails on Safari @user reported β
β β LIN-201 Feature: Dark mode support @user requested β
β β LIN-202 Bug: Crash on large files @user reported β
β β
β Yesterday (4) β
β ... β
β β
β Older (3) β
β ... β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββInbox
Inbox (G I) pokazuje twoje notyfikacje:
- Issues assigned to you
- Issues where you're mentioned
- Comments on your issues
- Status changes on watched issues
MoΕΌesz:
- Mark as read (Enter)
- Snooze (z) - przypomni pΓ³ΕΊniej
- Archive (x) - usuΕ z inboxLabels i Filtering
System labels
Labels pomagajΔ
kategoryzowaΔ issues:
Type labels:
βββ π bug
βββ β¨ feature
βββ π documentation
βββ π§Ή chore
βββ π§ refactor
Area labels:
βββ frontend
βββ backend
βββ mobile
βββ infrastructure
βββ design
Priority labels (wbudowane):
βββ π΄ Urgent (P0)
βββ π High (P1)
βββ π‘ Medium (P2)
βββ π’ Low (P3)
βββ βͺ No priorityZaawansowane filtry
Filtrowanie w Linear jest potΔΕΌne:
status:inProgress - Issues in progress
assignee:me - My issues
priority:urgent,high - Urgent or high priority
label:bug,frontend - Bugs in frontend
created:>2024-01-01 - Created after date
updated:<7d - Updated in last 7 days
cycle:current - Current cycle
project:"Mobile App" - Specific project
has:attachment - Has attachments
estimate:>3 - Estimate > 3 points
Kombinacje:
assignee:me status:todo,inProgress label:bug
Zapisane filtry:
Views β Custom Views β Save current filterViews
Tworzenie custom view:
1. Ustaw filtry
2. Wybierz kolumny i sortowanie
3. Click "Save view"
4. Nazwij i wybierz widocznoΕΔ:
- Personal
- Team
- Workspace
PrzykΕadowe views:
- "My urgent bugs" - assignee:me label:bug priority:urgent
- "Ready for review" - status:inReview
- "Blocked issues" - has:blocker
- "Unestimated" - estimate:noneIntegracje
Slack
Linear β Slack Integration:
1. Notifications β Slack channel
- New issues created
- Status changes
- Mentions
2. Create issues from Slack:
/linear create "Bug: Login broken"
/linear LIN-123 - show issue details
3. Unfurl Linear links:
Paste Linear URL β rich preview
Settings β Integrations β SlackFigma
Figma Integration:
1. Paste Figma link in issue β rich preview
2. Attach Figma files to issues
3. Open Figma from Linear
Workflow:
Designer creates design in Figma
β Attaches to Linear issue
β Developer sees preview in Linear
β No context switching neededInne integracje
Oficjalne integracje:
βββ GitHub/GitLab/Bitbucket
βββ Slack
βββ Figma
βββ Sentry
βββ Zendesk
βββ Intercom
βββ Notion
βββ Discord
βββ Zapier (dla custom)
API i Webhooks:
βββ GraphQL API
βββ Webhooks
βββ OAuth appsLinear API
GraphQL API
// Linear SDK
import { LinearClient } from '@linear/sdk'
const linear = new LinearClient({
apiKey: process.env.LINEAR_API_KEY
})
// Pobierz issues
async function getMyIssues() {
const me = await linear.viewer
const issues = await me.assignedIssues()
return issues.nodes.map(issue => ({
id: issue.id,
identifier: issue.identifier, // LIN-123
title: issue.title,
state: issue.state?.name,
priority: issue.priority
}))
}
// UtwΓ³rz issue
async function createIssue(teamId: string, title: string, description: string) {
const issue = await linear.createIssue({
teamId,
title,
description,
priority: 2, // Medium
labelIds: ['bug-label-id']
})
return issue.issue
}
// Aktualizuj issue
async function updateIssueStatus(issueId: string, stateId: string) {
await linear.updateIssue(issueId, {
stateId
})
}
// Dodaj komentarz
async function addComment(issueId: string, body: string) {
await linear.createComment({
issueId,
body
})
}Webhooks
// Webhook handler (Next.js API route)
import { LinearWebhooks, LINEAR_WEBHOOK_SIGNATURE_HEADER } from '@linear/sdk'
const webhook = new LinearWebhooks(process.env.LINEAR_WEBHOOK_SECRET!)
export async function POST(request: Request) {
const body = await request.text()
const signature = request.headers.get(LINEAR_WEBHOOK_SIGNATURE_HEADER)
if (!webhook.verify(body, signature!)) {
return Response.json({ error: 'Invalid signature' }, { status: 401 })
}
const payload = JSON.parse(body)
switch (payload.type) {
case 'Issue':
if (payload.action === 'create') {
console.log('New issue:', payload.data.title)
// Send to Slack, update CRM, etc.
}
break
case 'Comment':
if (payload.action === 'create') {
console.log('New comment on:', payload.data.issue.identifier)
}
break
}
return Response.json({ success: true })
}Best Practices
Issue writing
Dobry issue zawiera:
Title: KrΓ³tki, opisowy (co, nie jak)
β "Fix: Users can't reset password"
β "Password bug"
β "Use bcrypt instead of md5"
Description:
1. Problem/Context - co i dlaczego
2. Acceptance criteria - kiedy done
3. Technical notes - dla developera
PrzykΕad:
βββββββββββββββββββββββββββββββββββββββββ
## Problem
Users are unable to reset their password.
The reset email is sent but the link returns 404.
## Root cause
Token expires before email is delivered (5 min TTL).
## Acceptance criteria
- [ ] Increase token TTL to 1 hour
- [ ] Add expiry message on 404
- [ ] Add "resend email" option
## Technical notes
- Token stored in Redis: `reset:{userId}`
- Email sent via ResendTeam workflow
Rekomendowany workflow:
Monday:
1. Cycle planning (30 min)
2. Review triage
3. Assign issues
Daily:
1. Check inbox (5 min)
2. Update issue statuses
3. Add blockers/comments
End of cycle:
1. Close completed issues
2. Review velocity
3. Incomplete β next cycle
4. Retrospective
Pro tips:
- Use keyboard shortcuts religiously
- Keep issues small (1-3 days max)
- Update status in real-time
- Link all PRs to issuesEstimation
Story points w Linear:
1 - Trivial (< 1 hour)
2 - Small (half day)
3 - Medium (1 day)
5 - Large (2-3 days)
8 - Very large (1 week) β consider splitting
Alternatywnie - T-shirt sizes:
XS, S, M, L, XL (mapujΔ
na 1, 2, 3, 5, 8)
Settings β Teams β Estimation:
- Points
- T-shirt
- Hours
- NoneCennik
Plany
Free:
βββ Do 250 issues
βββ Unlimited members
βββ Basic integrations
βββ Mobile apps
βββ Public API
Standard ($10/user/month):
βββ Unlimited issues
βββ Cycles
βββ Roadmaps
βββ All integrations
βββ Custom workflows
βββ Triage
βββ Priority support
Plus ($15/user/month):
βββ Everything in Standard
βββ Advanced insights
βββ SAML SSO
βββ SCIM provisioning
βββ Audit logs
βββ Custom roles
βββ 99.99% SLA
Enterprise (custom):
βββ Everything in Plus
βββ Dedicated support
βββ Custom contracts
βββ On-premise option
βββ Advanced securityPorΓ³wnanie z Jira
Linear vs Jira - Total Cost of Ownership:
Linear Standard: $10/user/month
Jira Standard: $8.15/user/month (seems cheaper but...)
Hidden Jira costs:
+ Admin time for configuration
+ Plugin costs ($5-20/user)
+ Training (steep learning curve)
+ Performance issues (developer frustration)
+ Context switching (slow UI)
Real-world comparison:
10-person team, 1 year:
Linear:
$10 Γ 10 Γ 12 = $1,200/year
+ 0 hours setup
+ 1 hour training
= $1,200 + minimal time
Jira:
$8.15 Γ 10 Γ 12 = $978/year
+ 20 hours setup Γ $50/hr = $1,000
+ 10 hours training Γ $50/hr = $500
+ Plugins ~$500/year
+ Lost productivity (slow UI) = ???
= $2,978+ annuallyFAQ - CzΔsto zadawane pytania
Czy Linear ma darmowy tier?
Tak, Linear oferuje darmowy plan do 250 issues z unlimited members. To wystarcza dla maΕych zespoΕΓ³w i side projects. Po przekroczeniu limitu musisz przejΕΔ na Standard ($10/user/month).
Jak zmigrowaΔ z Jira?
Linear oferuje oficjalny importer:
- Settings β Import β Jira
- PoΕΔ cz konto Jira
- Wybierz projekty do importu
- Mapuj statusy i labels
- Import (moΕΌe potrwaΔ zaleΕΌnie od iloΕci issues)
Linear migruje: issues, comments, attachments, labels, assignees.
Czy Linear dziaΕa offline?
Linear jest web-first i wymaga internetu. Jednak:
- PWA moΕΌna zainstalowaΔ
- Desktop app (Electron) cache'uje dane
- Optimistic updates - czujesz siΔ jak offline
Jak Linear wypada dla non-dev teams?
Linear jest zoptymalizowany dla software teams. Dla:
- Marketing/Sales β Notion, Asana
- All-purpose β Monday, ClickUp
- Design teams β Linear jest OK
Czy mogΔ uΕΌywaΔ Linear z GitLab/Bitbucket?
Tak, Linear ma oficjalne integracje z GitLab i Bitbucket. FunkcjonalnoΕΔ jest podobna do GitHub - linkowanie issues, auto-status changes.
Jak zarzΔ dzaΔ wieloma zespoΕami?
Linear obsΕuguje multiple teams w jednym workspace:
- KaΕΌdy team ma wΕasny backlog i workflow
- Issues mogΔ byΔ przenoszone miΔdzy teamami
- Roadmap pokazuje wszystkie projekty
- Cross-team dependencies
Podsumowanie
Linear to idealne narzΔdzie do zarzΔ dzania projektami dla zespoΕΓ³w software, oferujΔ ce:
- BΕyskawicznΔ szybkoΕΔ - Instant load, zero lag
- Keyboard-first UX - Wszystko przez skrΓ³ty
- Native GitHub - GΕΔboka integracja z kodem
- Cycles - Sprints bez boilerplate
- Roadmaps - Wizualne planowanie
- Beautiful design - Przyjemny w uΕΌyciu
JeΕli jesteΕ zmΔczony wolnΔ JirΔ lub ogΓ³lnymi narzΔdziami jak Asana - Linear to game-changer dla dev teams.
Linear - a complete guide to modern project management
What is Linear?
Linear is a project management tool built by and for software teams. Unlike traditional tools like Jira or Asana, Linear prioritizes speed, minimalism, and a keyboard-first experience - every action can be performed without touching the mouse, making working with the tool feel as natural as coding itself.
Linear was founded in 2019 by former Uber employees (Karri Saarinen - ex-Head of Design at Airbnb and Jori Lallo - ex-engineer at Uber). Their frustration was that project management tools were slower and less intuitive than the developer tools themselves - so they created Linear as a tool that is just as fast and pleasant to use as VS Code or the terminal.
Linear is used by thousands of technology companies, including Vercel, Retool, Ramp, Loom, Cash App, and many others. It has become the de facto standard for startups and modern software teams.
Why Linear?
Key advantages of Linear
- Speed - Instant load, zero lag, optimistic updates
- Keyboard-first - Everything via keyboard shortcuts
- Beautiful design - Minimalist, aesthetic UI
- GitHub native - Deep integration with code
- Cycles - Sprints without unnecessary boilerplate
- Roadmaps - Visual project timelines
- No-configuration - Works out-of-the-box
- Real-time sync - Instant synchronization
Linear vs Jira vs Asana vs Notion
| Feature | Linear | Jira | Asana | Notion |
|---|---|---|---|---|
| UI speed | β‘ Lightning fast | π Slow | πΆ Average | πΆ Average |
| Keyboard shortcuts | β Full | β Limited | β Limited | β Good |
| GitHub integration | β Native | β Plugin | β Webhook | β Embed |
| Setup time | β‘ Instant | π Long | πΆ Medium | πΆ Medium |
| Learning curve | β Low | β High | β Low | πΆ Medium |
| For dev teams | β Perfect | β Yes | β General | β General |
| Free tier | 250 issues | β Up to 10 | β Limited | β Limited |
| Price | $10/user | $8.15/user | $11/user | $10/user |
Linear basics
User interface
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Linear π Cmd+K [?] [βοΈ] β
ββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β β
β π₯ Inbox β Issues β
β π― My Issuesβ ββββββββββββββββββββββββββββββββββββββββββββββ β
β π Backlog β β β LIN-123 Fix auth redirect bug β β
β βΆοΈ Active β β π΄ Urgent Β· @alice Β· Frontend β β
β π Triage β ββββββββββββββββββββββββββββββββββββββββββββββ€ β
β β β β LIN-124 Add dark mode toggle β β
β βββββββββββ β β π‘ Medium Β· @bob Β· Design β β
β β ββββββββββββββββββββββββββββββββββββββββββββββ€ β
β Teams: β β β LIN-125 Refactor API client β β
β π Product β β π’ Low Β· Unassigned Β· Backend β β
β βοΈ Enginee. β ββββββββββββββββββββββββββββββββββββββββββββββ β
β π¨ Design β β
β β [+ New Issue] β
β βββββββββββ β β
β β Filters: Status | Priority | Assignee | Label β
β πΊοΈ Roadmap β β
β π
Cycles β β
β β β
ββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββββββHierarchy in Linear
Workspace (Company/Organization)
β
βββ Team: Engineering
β βββ Project: Mobile App v2.0
β β βββ Issue: LIN-101 Setup React Native
β β βββ Issue: LIN-102 Navigation system
β β βββ Issue: LIN-103 API integration
β β
β βββ Project: Backend Refactor
β βββ Issue: LIN-201 Migrate to NestJS
β βββ Issue: LIN-202 Add caching layer
β
βββ Team: Design
β βββ Project: Design System
β βββ Issue: DES-001 Color palette
β βββ Issue: DES-002 Component library
β
βββ Team: Product
βββ Project: User Research
βββ Issue: PRD-001 Conduct interviewsCreating issues
Quick creation (C or Cmd+I):
Title: Fix login redirect bug
βββββββββββββββββββββββββββββββββββββββββ
Description (Markdown):
## Problem
Users are redirected to wrong page after login.
## Steps to reproduce
1. Go to /login
2. Enter credentials
3. Click "Sign In"
4. Expected: Dashboard
5. Actual: Landing page
## Technical details
- [ ] Check auth middleware
- [ ] Review redirect logic in AuthContext
βββββββββββββββββββββββββββββββββββββββββ
Status: π Backlog
Priority: π΄ Urgent
Assignee: @alice
Labels: bug, frontend, auth
Project: Authentication Improvements
Cycle: Sprint 24
Estimate: 2 pointsKeyboard shortcuts
Basic shortcuts
NAVIGATION:
G I - Go to Inbox
G M - Go to My Issues
G B - Go to Backlog
G A - Go to Active
G P - Go to Projects
G C - Go to Cycles
G R - Go to Roadmap
G T - Go to Team
G S - Go to Settings
GLOBAL:
Cmd/Ctrl + K - Command palette (the most important one!)
/ - Quick search
? - Show all shortcuts
Escape - Close/Cancel
CREATING:
C - Create issue
Shift + C - Create issue from anywhere
I - Create sub-issue
P - Create project
EDITING ISSUES:
Space - Select/Deselect
Enter - Open issue detail
S - Change status
A - Assign
L - Add label
E - Edit estimate
D - Set due date
M - Move to project
X - Archive
Delete - Delete (with confirmation)
LIST NAVIGATION:
J / β - Move down
K / β - Move up
[ / ] - Previous/Next issueAdvanced shortcuts
BULK ACTIONS:
Shift + click - Select range
Cmd + click - Multi-select
Cmd + A - Select all visible
Shift + S - Change status for selected
Shift + A - Assign selected
Shift + L - Label selected
VIEWS:
1 - List view
2 - Board view
3 - Calendar view
Cmd + Shift + \ - Toggle sidebar
F - Full screen issue
Cmd + / - Toggle activity
MARKDOWN (in editor):
Cmd + B - Bold
Cmd + I - Italic
Cmd + K - Link
Cmd + E - Code
Cmd + Shift + M - Mention user
Cmd + Shift + E - Mention issueCommand Palette (Cmd+K)
Cmd+K opens the command palette - the fastest way to do anything:
> create issue
> assign to alice
> set status in progress
> add label bug
> move to project Authentication
> set priority urgent
> go to settings
> switch team engineering
> open preferences
Pro tip: You can chain actions:
> LIN-123 status done assign meStatus and workflow
Default statuses
Backlog (π) - Issues to consider
β
βββ Triage (π) - New issues to review
β
βΌ
Todo (β) - Ready to work on
β
βΌ
In Progress (β) - Currently being worked on
β
βΌ
In Review (β) - Code review / QA
β
βΌ
Done (β) - Completed
β
βββ Canceled (β) - CanceledCustom workflows
Teams can customize their workflow:
Settings β Teams β [Team Name] β Workflow
Example workflow for a Design team:
π Backlog
βββ π Triage
βββ π‘ Discovery
βββ βοΈ Designing
βββ π Design Review
βββ π Revisions
βββ β
Ready for Dev
βββ β DoneCycles (Sprints)
Configuring cycles
Settings β Teams β [Team] β Cycles
Cycle length: 2 weeks
Start day: Monday
Auto-archive after: 1 week
Auto-move incomplete: β
(to next cycle)Planning a cycle
1. Navigate to Cycles (G C)
2. Select the upcoming cycle
3. Drag issues from Backlog
4. Or use M (move) on an issue β select cycle
Cycle Planning View:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Cycle 24: Jan 20 - Feb 2 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Capacity: 32 points β
β Committed: 28 points β
β Progress: ββββββββββββββββββββ 35% β
β β
β Issues: β
β β LIN-101 Setup React Native @alice 3 pts β
β β LIN-102 Navigation system @bob 5 pts β
β β LIN-103 API integration @alice 8 pts β
β β LIN-104 Unit tests @charlie 5 pts β
β β LIN-105 Documentation Unas. 2 pts β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββVelocity and metrics
Cycle metrics are tracked automatically:
- Velocity: average number of points per cycle
- Completion rate: percentage of completed issues
- Scope change: how many issues were added/removed during the cycle
- Lead time: time from created to done
- Cycle time: time from started to done
Linear automatically shows trends and predicts
capacity for future cycles.GitHub integration
Linking issues
In commit messages or PRs:
βββββββββββββββββββββββββββββ
fix: resolve auth redirect bug
Fixes LIN-123
Closes LIN-124
Relates to LIN-125
βββββββββββββββββββββββββββββ
Or in the PR description:
Closes LIN-123
Linear automatically:
1. Links the PR to the issue
2. Changes the issue status to "In Review"
3. After merge, changes it to "Done" (optional)Status automation
Settings β Integrations β GitHub β Automations
Available triggers:
β
βββ PR opened β Move issue to "In Review"
βββ PR merged β Move issue to "Done"
βββ PR closed β Move issue to "Backlog"
βββ Branch created β Move issue to "In Progress"
βββ Commit pushed β Show activity on issue
Example configuration:
[β] When PR is opened, move to "In Review"
[β] When PR is merged to main, move to "Done"
[β] Show commits and PRs on issue timeline
[β] Auto-link issues from branch names (feature/LIN-123)Branch naming
Linear can automatically generate branch names:
Issue: LIN-123 "Fix login redirect bug"
Branch: feature/lin-123-fix-login-redirect-bug
Settings β Integrations β GitHub:
Branch format: {prefix}/{issueId}-{title}
Prefix: feature, fix, chore (based on label)GitHub Sync
Two-way synchronization:
GitHub Issue β Linear Issue
- Import issues from GitHub
- Sync comments
- Sync labels
Linear Issue β GitHub Issue
- Export issues to GitHub
- Mirror status changesProjects and roadmaps
Creating a project
1. G P (go to projects)
2. P (create project)
3. Fill in:
Project: Mobile App v2.0
βββββββββββββββββββββββββββββββββββββββββ
Icon: π±
Description: Complete rewrite of our mobile app
using React Native for both iOS and Android.
Status: π‘ In Progress
Lead: @alice
Target date: March 30, 2025
βββββββββββββββββββββββββββββββββββββββββ
Projects can contain:
- Multiple milestones
- Linked issues
- Documents
- Updates (progress posts)Milestones
Project: Mobile App v2.0
β
βββ Milestone 1: Foundation (Feb 15)
β βββ LIN-101 Setup project
β βββ LIN-102 Core navigation
β βββ LIN-103 Design system integration
β
βββ Milestone 2: Core Features (Mar 1)
β βββ LIN-201 User authentication
β βββ LIN-202 Profile management
β βββ LIN-203 Settings screen
β
βββ Milestone 3: Polish (Mar 20)
β βββ LIN-301 Performance optimization
β βββ LIN-302 Accessibility
β βββ LIN-303 Bug fixes
β
βββ Milestone 4: Launch (Mar 30)
βββ LIN-401 App Store submission
βββ LIN-402 Marketing assetsRoadmap view
The roadmap displays projects on a timeline:
Jan Feb Mar Apr
ββββββββββββΌβββββββββββΌβββββββββββΌββ
β β β β
Mobile ββββββββββββββββββββββββββββββββββ β In Progress
App v2 β β β β Targetβ
β β β β
Backend β βββββββββββββββββ β β Completed
Refactor β β β β
β β β β
Design β βββββββββββββββββββ β Planned
System β β β β
β β β β
You can drag & drop to change dates,
and click on a project to see its details.Triage and inbox
Triage workflow
Triage is where new issues land
before being assigned to the backlog:
1. Issue created β Status: Triage
2. Team lead reviews
3. Assigns:
- Priority
- Labels
- Project/Cycle
- Assignee
4. Moves to Backlog or Todo
5. Or closes as duplicate/invalid
Triage View (G T):
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Triage Β· 12 issues need attention β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Today (5) β
β β LIN-200 Bug: Login fails on Safari @user reported β
β β LIN-201 Feature: Dark mode support @user requested β
β β LIN-202 Bug: Crash on large files @user reported β
β β
β Yesterday (4) β
β ... β
β β
β Older (3) β
β ... β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββInbox
Inbox (G I) shows your notifications:
- Issues assigned to you
- Issues where you're mentioned
- Comments on your issues
- Status changes on watched issues
You can:
- Mark as read (Enter)
- Snooze (z) - will remind you later
- Archive (x) - remove from inboxLabels and filtering
System labels
Labels help categorize issues:
Type labels:
βββ π bug
βββ β¨ feature
βββ π documentation
βββ π§Ή chore
βββ π§ refactor
Area labels:
βββ frontend
βββ backend
βββ mobile
βββ infrastructure
βββ design
Priority labels (built-in):
βββ π΄ Urgent (P0)
βββ π High (P1)
βββ π‘ Medium (P2)
βββ π’ Low (P3)
βββ βͺ No priorityAdvanced filters
Filtering in Linear is powerful:
status:inProgress - Issues in progress
assignee:me - My issues
priority:urgent,high - Urgent or high priority
label:bug,frontend - Bugs in frontend
created:>2024-01-01 - Created after date
updated:<7d - Updated in last 7 days
cycle:current - Current cycle
project:"Mobile App" - Specific project
has:attachment - Has attachments
estimate:>3 - Estimate > 3 points
Combinations:
assignee:me status:todo,inProgress label:bug
Saved filters:
Views β Custom Views β Save current filterViews
Creating a custom view:
1. Set your filters
2. Choose columns and sorting
3. Click "Save view"
4. Name it and choose visibility:
- Personal
- Team
- Workspace
Example views:
- "My urgent bugs" - assignee:me label:bug priority:urgent
- "Ready for review" - status:inReview
- "Blocked issues" - has:blocker
- "Unestimated" - estimate:noneIntegrations
Slack
Linear β Slack Integration:
1. Notifications β Slack channel
- New issues created
- Status changes
- Mentions
2. Create issues from Slack:
/linear create "Bug: Login broken"
/linear LIN-123 - show issue details
3. Unfurl Linear links:
Paste Linear URL β rich preview
Settings β Integrations β SlackFigma
Figma Integration:
1. Paste Figma link in issue β rich preview
2. Attach Figma files to issues
3. Open Figma from Linear
Workflow:
Designer creates design in Figma
β Attaches to Linear issue
β Developer sees preview in Linear
β No context switching neededOther integrations
Official integrations:
βββ GitHub/GitLab/Bitbucket
βββ Slack
βββ Figma
βββ Sentry
βββ Zendesk
βββ Intercom
βββ Notion
βββ Discord
βββ Zapier (for custom workflows)
API and Webhooks:
βββ GraphQL API
βββ Webhooks
βββ OAuth appsLinear API
GraphQL API
import { LinearClient } from '@linear/sdk'
const linear = new LinearClient({
apiKey: process.env.LINEAR_API_KEY
})
async function getMyIssues() {
const me = await linear.viewer
const issues = await me.assignedIssues()
return issues.nodes.map(issue => ({
id: issue.id,
identifier: issue.identifier,
title: issue.title,
state: issue.state?.name,
priority: issue.priority
}))
}
async function createIssue(teamId: string, title: string, description: string) {
const issue = await linear.createIssue({
teamId,
title,
description,
priority: 2,
labelIds: ['bug-label-id']
})
return issue.issue
}
async function updateIssueStatus(issueId: string, stateId: string) {
await linear.updateIssue(issueId, {
stateId
})
}
async function addComment(issueId: string, body: string) {
await linear.createComment({
issueId,
body
})
}Webhooks
import { LinearWebhooks, LINEAR_WEBHOOK_SIGNATURE_HEADER } from '@linear/sdk'
const webhook = new LinearWebhooks(process.env.LINEAR_WEBHOOK_SECRET!)
export async function POST(request: Request) {
const body = await request.text()
const signature = request.headers.get(LINEAR_WEBHOOK_SIGNATURE_HEADER)
if (!webhook.verify(body, signature!)) {
return Response.json({ error: 'Invalid signature' }, { status: 401 })
}
const payload = JSON.parse(body)
switch (payload.type) {
case 'Issue':
if (payload.action === 'create') {
console.log('New issue:', payload.data.title)
}
break
case 'Comment':
if (payload.action === 'create') {
console.log('New comment on:', payload.data.issue.identifier)
}
break
}
return Response.json({ success: true })
}Best practices
Issue writing
A good issue contains:
Title: Short, descriptive (what, not how)
β "Fix: Users can't reset password"
β "Password bug"
β "Use bcrypt instead of md5"
Description:
1. Problem/Context - what and why
2. Acceptance criteria - when is it done
3. Technical notes - for the developer
Example:
βββββββββββββββββββββββββββββββββββββββββ
## Problem
Users are unable to reset their password.
The reset email is sent but the link returns 404.
## Root cause
Token expires before email is delivered (5 min TTL).
## Acceptance criteria
- [ ] Increase token TTL to 1 hour
- [ ] Add expiry message on 404
- [ ] Add "resend email" option
## Technical notes
- Token stored in Redis: `reset:{userId}`
- Email sent via ResendTeam workflow
Recommended workflow:
Monday:
1. Cycle planning (30 min)
2. Review triage
3. Assign issues
Daily:
1. Check inbox (5 min)
2. Update issue statuses
3. Add blockers/comments
End of cycle:
1. Close completed issues
2. Review velocity
3. Incomplete β next cycle
4. Retrospective
Pro tips:
- Use keyboard shortcuts religiously
- Keep issues small (1-3 days max)
- Update status in real-time
- Link all PRs to issuesEstimation
Story points in Linear:
1 - Trivial (< 1 hour)
2 - Small (half day)
3 - Medium (1 day)
5 - Large (2-3 days)
8 - Very large (1 week) β consider splitting
Alternatively - T-shirt sizes:
XS, S, M, L, XL (map to 1, 2, 3, 5, 8)
Settings β Teams β Estimation:
- Points
- T-shirt
- Hours
- NonePricing
Plans
Free:
βββ Up to 250 issues
βββ Unlimited members
βββ Basic integrations
βββ Mobile apps
βββ Public API
Standard ($10/user/month):
βββ Unlimited issues
βββ Cycles
βββ Roadmaps
βββ All integrations
βββ Custom workflows
βββ Triage
βββ Priority support
Plus ($15/user/month):
βββ Everything in Standard
βββ Advanced insights
βββ SAML SSO
βββ SCIM provisioning
βββ Audit logs
βββ Custom roles
βββ 99.99% SLA
Enterprise (custom):
βββ Everything in Plus
βββ Dedicated support
βββ Custom contracts
βββ On-premise option
βββ Advanced securityComparison with Jira
Linear vs Jira - Total Cost of Ownership:
Linear Standard: $10/user/month
Jira Standard: $8.15/user/month (seems cheaper but...)
Hidden Jira costs:
+ Admin time for configuration
+ Plugin costs ($5-20/user)
+ Training (steep learning curve)
+ Performance issues (developer frustration)
+ Context switching (slow UI)
Real-world comparison:
10-person team, 1 year:
Linear:
$10 Γ 10 Γ 12 = $1,200/year
+ 0 hours setup
+ 1 hour training
= $1,200 + minimal time
Jira:
$8.15 Γ 10 Γ 12 = $978/year
+ 20 hours setup Γ $50/hr = $1,000
+ 10 hours training Γ $50/hr = $500
+ Plugins ~$500/year
+ Lost productivity (slow UI) = ???
= $2,978+ annuallyFAQ - frequently asked questions
Does Linear have a free tier?
Yes, Linear offers a free plan for up to 250 issues with unlimited members. This is enough for small teams and side projects. Once you exceed the limit, you need to upgrade to Standard ($10/user/month).
How do I migrate from Jira?
Linear offers an official importer:
- Settings β Import β Jira
- Connect your Jira account
- Select projects to import
- Map statuses and labels
- Import (may take a while depending on the number of issues)
Linear migrates: issues, comments, attachments, labels, assignees.
Does Linear work offline?
Linear is web-first and requires an internet connection. However:
- The PWA can be installed
- The desktop app (Electron) caches data
- Optimistic updates make it feel like you're working offline
How does Linear work for non-dev teams?
Linear is optimized for software teams. For other use cases:
- Marketing/Sales β Notion, Asana
- All-purpose β Monday, ClickUp
- Design teams β Linear works well
Can I use Linear with GitLab/Bitbucket?
Yes, Linear has official integrations with GitLab and Bitbucket. The functionality is similar to GitHub - issue linking, auto-status changes.
How do I manage multiple teams?
Linear supports multiple teams within a single workspace:
- Each team has its own backlog and workflow
- Issues can be moved between teams
- The roadmap shows all projects
- Cross-team dependencies are supported
Summary
Linear is the ideal project management tool for software teams, offering:
- Lightning-fast speed - Instant load, zero lag
- Keyboard-first UX - Everything via shortcuts
- Native GitHub - Deep integration with code
- Cycles - Sprints without boilerplate
- Roadmaps - Visual planning
- Beautiful design - A pleasure to use
If you're tired of slow Jira or general-purpose tools like Asana - Linear is a game-changer for dev teams.