Neechan is a fast, private, native iOS client for the imageboards 2ch and 4chan, built with SwiftUI and Liquid Glass for iPhone, iPad and Mac. Free on TestFlight, open source on GitHub.
SocialSwift · ShellGitHub @leros1337OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
2ch/4chan ios/ipados (26+) swift client
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
A native iOS client for the imageboards 2ch (2ch.org / 2ch.life) and
4chan, written in Swift 6 and SwiftUI for iOS 26, using Apple's Liquid Glass design
system for the navigation layer.
Unofficial and unaffiliated with either site.
At the moment Neechan is only available through TestFlight.
Download the .ipa from Releases.
The build is unsigned: there is no signing certificate in this repository and there
should not be one. It cannot be installed by tapping it — use
AltStore, Sideloadly, or your own Apple
developer account. iOS 26 or newer, iPhone or iPad.Read the full README ↗English · Русский
A native iOS client for the imageboards 2ch (2ch.org / 2ch.life) and
4chan, written in Swift 6 and SwiftUI for iOS 26, using Apple's Liquid Glass design
system for the navigation layer.
Unofficial and unaffiliated with either site.
At the moment Neechan is only available through TestFlight.
Download the .ipa from Releases.
The build is unsigned: there is no signing certificate in this repository and there should not be one. It cannot be installed by tapping it — use AltStore, Sideloadly, or your own Apple developer account. iOS 26 or newer, iPhone or iPad.
Requirements:
brew install xcodegen)make gen # regenerate Neechan.xcodeproj from project.yml
make test-packages # fast: pure Swift package suites, no simulator
make sim # build, install and launch on the iPhone simulator
make ipa # unsigned .ipa in .build/, the same build CI publishes
make test additionally runs the simulator test bundles. Those include XCUITests that
drive the app against the live sites, so they need a network and they will fail when
2ch or 4chan is having a bad day; make test-packages is the offline half.
FFmpeg comes from neechan-ffmpeg, a trimmed LGPL build of the
libraries this app actually uses. It is an ordinary binary package dependency: Swift
Package Manager fetches the xcframeworks from that repository's release, about twenty
megabytes zipped, against the gigabyte and a bit a general-purpose FFmpeg distribution
carries. Nothing has to be cloned or built by hand.
Neechan.xcodeproj is generated and not committed. Edit project.yml instead and
re-run make gen.
Pushing a version tag builds and publishes one:
git tag v2.1.0 && git push origin v2.1.0
.github/workflows/release.yml runs the package tests,
builds the unsigned .ipa with make ipa, and attaches it to a GitHub Release. The
same workflow can be run by hand from the Actions tab, which leaves the build as a
workflow artifact instead of publishing it.
| Path | What lives there |
|---|---|
Neechan/ | The app target: entry point, Info.plist, asset catalog |
Packages/NeechanAPI | HTTP client for both sites, per-site adapters, models, comment HTML parser, captcha, posting. Foundation only |
Packages/NeechanSettings | User preferences backed by UserDefaults |
Packages/NeechanCore | Domain engine (pure logic), SwiftData store, service actors |
Packages/NeechanMedia | Image and video playback, and the WebM converter. The only module allowed to import FFmpeg |
Packages/NeechanUI | SwiftUI screens, the Liquid Glass components, string catalog |
Packages/NeechanTestSupport | Recorded API fixtures and their loader |
Tests/NeechanUITests | XCUITests that drive the app against the live site |
Tools/record-fixtures.sh | Re-records the 2ch fixtures from the live site |
Tools/record-4chan-fixtures.sh | The same for 4chan |
Packages/NeechanCore/Sources/NeechanCore/Engine holds pure, synchronous value logic
with no SwiftData or networking imports. That is where most of the test suite lives.
Neechan is distributed under the MIT licence (see LICENSE).
It links FFmpeg, used under the LGPL-2.1-or-later. The build is this project's own:
trimmed to the containers and codecs an imageboard actually serves, and configured with
neither --enable-gpl nor --enable-version3, so it carries no GPL component. The
script that produces it lives in the neechan-ffmpeg repository alongside the exact
configure line.