cross-posted from: https://lemmy.world/post/3634233

After a few delays, Arctic is has finally been submitted to TestFlight and got the green light. For those of you who don’t know what Arctic is, it’s a Lemmy client for iOS 15+ built in pure Swift.

Arctic began as just a little side project for me. As an avid Apollo user I was missing a feature rich and familiar client for IOS. So I started working on Arctic. My primary goal with the project has been creating a native UI appearance, and content presentation, focusing on putting the important content directly in the feed without feeling cluttered. I’m finally at a point where I feel Arctic is stable enough, and houses enough features to go forward with beta testing.

I’m currently testing out Reimplementing the UI in SwiftUI as it allows for quicker iteration, and less boilerplate code. Though I’m not sure about performance yet. SwiftUI seems to be lacking in certain areas such as prefetching APIs for heavy feeds etc. you can find an experimental post feed in settings that uses SwiftUI.

As of right now, I have not set up an issue tracker for Arctic. The reason for this is that I don’t know for sure if I will be Open Sourcing the project yet. I’d like to keep the issues/project in the same repository, and I’m unable to have a private repo with public issues. I’ll be deciding what route I would like to take over the next week or so.

While on the subject of open source, I’d like to mention that Arctic does not collect any information from users devices. The only user specific information that is stored is the Lemmy account JWT Auth token for communication with the Lemmy api. Absolutely no personal information is collected, or leaves your device. Currently I have no plans to implement any analytics in Arctic, and if I ever do, it will be on an opt-in basis, and be completely anonymous only tracking information relevant to Arctic support.


Development

I feel the need to point out that I work a full time job, and am often busy outside of working. With that said Arctic development may be a bit slow compared to some of the other projects out there. I do however plan to release at leas one update every week for now. I will try to push out more frequently as my time permits, even if that means smaller hot-fix type releases. I do plan to support Arctic long term, as I’m already quite invested in the project and have really enjoyed working on it.

Anyways, please don’t hesitate to reach out and ask questions, or offer feedback/suggestions . I’m quite busy most days, but I will do my best to respond as soon as possible.

Almost forgot the most important part, here is the link to Arctic TestFlight


Current Features

  • Submitting / Editing Posts
  • Submitting / Editing Comments
  • Voting on Posts / Comments
  • Blocking Communities / Users / Instances
  • Subscribing to Communities
  • Search (URLs, communities, comments, posts, users)
  • Rich link previews
  • Uploading images
  • Rich Markdown Editor
  • Community browser
  • Basic guest (anonymous) mode
  • Multiple accounts, and quick switcher
  • Integrated Media Viewer
  • Upload manager manage previous media uploads)
  • In-line YouTube videos (experimental, this seems to have broken with recent changes to the YouTube api)

Known Issues:

  • Some in-line links do not recognize taps, I’m looking into overhauling the Markdown rendering and may be switching to swift UI for this, as it is better suited for that task instead of UIKit
  • State Sync, The UI does not update in all cases to reflect changes such as voting on a post, and then viewing it in the post feed
  • Some media fails to load and is unhandled by the UI
  • Scrolling performance needs improvement
  • Long usernames/community names can overlap action buttons
  • Fast scrolling can result in user/community icons showing in the wrong cell
  • Videos do not display in image gallery previews
  • YouTube videos fail to load at times
  • No spoiler support at the moment
  • No in-line images Yet
  • Private Messages are not currently supported, they will be coming soon

Previews

Preview 1

Preview 2

Preview 3

  • edric@lemm.ee
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    1 year ago

    An inline/embedded media player for videos and gifs is still rare for lemmy apps so this is promising! So far only Avelon can do it from the ones I tested. I’ll try this out! Congrats on the app!

    Is there a compact view mode for the feed?

    • LazaroFilm@lemmy.world
      link
      fedilink
      English
      arrow-up
      0
      ·
      edit-2
      1 year ago

      Liftoff does it too. I read that some media hosting sites (one specialized in science and accounting) doesn’t allow api access to Lemmy and their apps. So it needs to be HTML parsing which is more tedious.

  • my_blackest_day@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    1 year ago

    Damn, i think this is the best stable client of Lemmy i ever tried. My advice as a fellow iOS Dev, don’t use SwiftUI just yet, performance and flexibility is not there yet for a complicated app like Lemmy.

    • CreatureSurvive@lemmy.worldOP
      link
      fedilink
      arrow-up
      0
      ·
      1 year ago

      Wow, thank you so much. I’m glad you’re enjoying it.

      I keep trying out SwiftUI every year or 2 since it came out, and I’m always disappointed by the limitations. It definitely has some good use cases, but it’s years behind UIKit and it would be too much of a trade-off to switch to SwiftUI fully.

      I am planning to use it in a few places in the Arctic such as a Markdown renderer in some areas like the full post view. I’ve put a lot of work into the markdown builder in Arctic and ultimately it’s still bound by the limitations of AttributedStrings. I think it would be a lot easier to split the elements into separate views using SwiftUI. For instance: block quotes, in-line images, in-line link previews, html blocks, animated images/videos

      However, I have a few things I want to try to improve my current renderer before switching to SwiftUI for this. It’s based on the same approach as the SwiftUI version, but I’ll be building the view hierarchy using UIKit.

      Anywho, thanks for the feedback. Rest assured Arctic will remain a UIKit based app, it just may have some SwiftUI sprinkled in where applicable.