Arctic

444 readers
1 users here now

Arctic is a Lemmy client for iOS built on pure Swift. It currently supports iOS 15+ and Lemmy v0.17+

Get the latest version on TestFlight, or check it out on the AppStore.

If you would like to support Arctic’s development, feel free to Buy Me A Coffee

founded 2 years ago
MODERATORS
1
29
Arctic v0.4.2.7 is now available (testflight.apple.com)
submitted 1 month ago by CreatureSurvive to c/arctic
 
 

This version addresses a bug introduced in a previous version. It prevented the preloading of content, causing images and links to appear after the content was already displayed. This resulted in poor performance while scrolling.

Action menus have been revamped with a grouped layout on compatible devices, and actions have been reorganized to ensure uniformity throughout the application.

In addition, the media viewer now enables users to select text in images, choose image subjects for stickers, and search for information on various topics such as animals, plants, and locations.

Full Changelog


  • Added support for selecting text and image subjects from the media viewer
  • Fixed an issue preventing prefetching optimizations from working. This resulted in a lot of media and link previews loading in after posts have already been displayed.
  • Updated action menus with support for inline actions (requires iOS 16+)
  • Updated action menu icons and order for consistency

Links

2
54
submitted 3 months ago* (last edited 2 months ago) by CreatureSurvive to c/arctic
 
 

Well, this is no small update like I had planned after the previous update. This is by far the largest update to Arctic so far. I've packed well over a hundred fixes, improvements, and new features into this release. I'm happy I finally had the time to work on some larger features and bug fixes that I have been putting off for a long time.

Arctic Theme Support (beta)

Arctic Theme Previews

I've talked about this for a long time and finally had the chance to implement support for themes in Arctic. This took a lot of work, but it has definitely paid off. I've included 12 default themes to choose from, as well as an editor to design your own custom themes. Rather than attempting to make every color themeable individually, I tried my best to minimize the colors used while still allowing for robust customization. With that said, I am looking for feedback on the theme editor. Themes can be configured for either light or dark mode, so you can mix and match them to your liking, e.g., Sepia during the day and Dracula during the night.

Themes can be imported and exported using a simple JSON file (ATDF “Arctic Theme Definition File"). You can duplicate any theme and edit to your liking, and switch between them with a single tap. I am planning a service for sharing and browsing community themes in the future, but first I would like to get some feedback on theming to finalize the format.

Markdown Improvements

Markdown Improvments

I came across this post about Markdown support in Lemmy apps recently. It highlights many issues with Markdown rendering in a lot of the Lemmy clients that are available. Arctic seems to have scored fairly well with a 9.3/10.

Some of the issues that were highlighted about Arctic were:

  • Images not properly rendering in-line.
  • Headers not working inside spoilers
  • Tables not aligning columns correctly

Well, this motivated me to work on improving markdown support in Arctic. I took some time and fleshed out support for embedded content in Markdown. Images, Videos, Tables, Spoilers are all embedded now which has allowed for many improvements to the rendering system, and more advanced control over the appearance. I've also fixed several issues where markdown rendering did not obey the Common Mark specification.

Media Uploads

Arctic no longer requires permission for selecting media from the photo library. I've also enabled support for uploading videos, and improved error handling to better convey issues with uploading media. Arctic also has support for uploading directly to Catbox.moe, this can be useful if you have a video that is too large for Lemmy or just prefer not to host media on Lemmy. Optionally, you can log in to Catbox so files are uploaded directly to your account and can be deleted later (anonymous uploads can only be deleted by Catbox.moe's admin). As a side note, I developed Catbox-Swift for easily managing Catbox.moe uploads. Please feel free to use this in your projects.

Media APIs

Arctic finally supports playing videos hosted by Lemmy (Picts). This has been a long-time frustration for me, as videos hosted on Lemmy servers seem to have issues playing on all Apple platforms. Well, I finally had the time to track down the issue preventing playback and attributed it to server configuration and Apple oddly not handling this issue well. In addition to Lemmy video, Arctic can now stream videos on PeerTube and Streamable. I've improved support for streaming YouTube videos, and fixed several issues with Reddit, and Imgur media.

Performance and Energy

I've rewritten large portions of Arctic's backend with performance, reliability, and consistency in mind. On average, Arctic now uses about 75% less memory, and significantly less CPU. In rewriting these systems, I was able to make a lot of improvements to caching behavior to reduce network usage, and increase consistency in rendering content. When Arctic is idle, or backgrounded, systems will shut down, and memory will be freed to prevent any energy consumption while the app is not in active use.

v0.4.2.3 Changelog


Arctic Theme Support (Beta)

Theme support is in beta. Please submit any feedback related to improvements or issues

  • Added support for custom themes
  • Separate themes for light and dark mode
  • Automatic theme switching
  • Full theme editor, with live previews
  • Instant switching of themes (some issues with this)
  • Import and export themes
  • Copy themes to customize to your liking
  • 12 default themes to choose from:
    • Arctic Light
    • Arctic Dark
    • Arctic Black
    • GitHub Light
    • GitHub Dark
    • Dracula
    • Alucard
    • Crème
    • Solarized
    • Nebula
    • Verdandi Light
    • Verdandi Dark
Markdown

  • Added support for embedded videos
  • Added support for embedded images in Markdown tables
  • Added support for markdown image links
  • Added rounded corners to embedded media
  • Added optimizations for caching embedded content layout
  • Added support for additional Lemmy link formats /c/<community>@<instance> and /u/<user>@<instance>
  • Added invisible break shortcut to the markdown toolbar for inserting invisible thematic breaks using HTML comment <!-- -->
  • Updated block quote appearance to render full length margin lines for nested quotes
  • Updated markdown parsing with improvements to parsing speed
  • Updated spoiler parsing to improve reliability
  • Updated link detection and handling
  • Updated defaults to enable embedded content by default
  • Fixed HTML rendering using incorrect font and text colors
  • Fixed an issue where spoilers would be parsed inside code blocks
  • Fixed an issue where a Markdown table occurring immediately after a spoiler could break rendering of the spoiler
  • Fixed an issue where inline code may be incorrectly parsed
  • Fixed soft breaks in code blocks having incorrect indentation
  • Fixed block quotes incorrectly allowing soft breaks
  • Fixed an issue where links were not tappable when contained in an embedded Markdown table
  • Fixed some issues with inline images being positioned incorrectly
Link Previews

  • Added support for audio in link previews: e.g. for playing audio previews on Spotify links
  • Added a new network manager for improved control over network requests
  • Added support for fetching the apple-touch-icon from links instead of relying on Google for favicons
  • Rewrote open graph parser to improve reliability and performance
  • Fixed an issue where direct download links could result in Arctic loading large files into memory while attempting to provide a link preview
  • Fixed an issue where link previews could be unnecessarily be reloaded when they are already cached
Media Uploads

  • Uploads no longer require permission for selecting media from the photo library
  • Added support for selecting and uploading videos
  • Added support for uploading media directly to Catbox.moe
  • Added option to select the default upload destination (Lemmy, Catbox, ask each time)
  • Added option to log into Catbox.moe, so uploads will be added to your account
  • Improved logging of errors when uploading media
Media APIs

  • Added support for playing videos hosted on Lemmy. (Videos hosted by Picts have issues playing on Apple platforms due to server configuration, arctic will now detect this and preload the video for playback)
  • Added support for PeerTube videos
  • Added support for Streamable videos
  • Improved support for YouTube videos
  • Improved caching behavior to reduce network usage
Improvements

  • Major overhaul to memory and energy management in Arctic. On average, Arctic now uses 75% less memory, and significantly less CPU and energy. There are some cases where memory and CPU usage may spike, such as views with a high number of animated images. However, Arctic will attempt to listen to system warnings and unload resource intensive tasks when requested.
New Features

  • Added support for additional image formats such as AVIF, and SVG (shields.io)
  • Added an experimental feature to dim media when dark mode is enabled
  • Added support for fetching media from Reddit post and comment links
  • Added a new paging image gallery view, you can choose between paged, or grid appearance in settings
  • Added a new option related to the Post Image Size option to allow scaling images down to fit the full image in the view
  • Added a warning alert when attempting to submit a comment with no content
  • Added support for Haptic Touch on images and videos to allow saving/sharing media
  • Added an overlay for media that failed to load to allow attempting to reload the media
  • Added support for domain filters, You can now filter individual websites from post feeds
  • Added caching of media playback positions, media will now resume at its previous position
  • Added a close button to the changelog popup when launching Arctic
Changes

  • Updated font sizes throughout the app for better consistency.
  • Updated the new comments indicator to subtly add a green (+) icon in the center of the comments icon
  • Updated the indicator used for featured posts
  • Updated avatar image labels to improve performance
  • Updated rendering of inline code that wraps lines
  • Updated the Community Selector appearance
  • Updated link handling to attempt loading all links over HTTPS, Arctic does not allow unsecured network requests
  • Updated crosspost detection to be more lenient. Some clients have slightly different formatting for crossposts, and Arctic will now detect more of these formats
  • Updated open post views to more closely resemble post feed appearance
  • Updated image processing to improve performance and reliability in detecting image formats
  • Updated the video player with modern swift observers removing some legacy code
  • Updated the profile header appearance
  • Updated the progress bar on inline videos
  • Updated the playback controls in the media viewer with an iOS 18 esque appearance
  • Updated the preloading behavior in post feeds, this addresses several issues with inconsistent layout, content disappearing, content failing to load, high memory usage, etc. This has drastically improved performance and reliability within post feeds
  • Updated video thumbnail loading to improve reliability and performance
  • Updated image gallery layout and improved performance
  • Updated the project removing some unused legacy code
  • Updated changelog popup not to show on the first time launching Arctic
Fixes

  • Fixed issue where Arctic would request permission to send notifications on its first launch. Permissions will only be requested when enabling notifications in settings, or adding a Community Notification for the first time.
  • Fixed issue where widget insets would be too large on iOS 17+
  • Fixed issue where Reddit gallery links would not properly load content
  • Fixed issue where some links could incorrectly be treated as YouTube links
  • Fixed issue with some cells appearing clipped when using a notched device in landscape
  • Fixed an issue where changes to the unique notification token for devices would not be synchronized with the notification server
  • Fixed issue where media would not pause when dismissing an open post view
  • Fixed Bar Shadows setting not applying when blurred or default bar styles are enabled
  • Fixed several layout issues that could cause performance drops, and incorrect rendering in some cases
  • Fixed an issue where importing user settings would show a success alert even if the import was canceled
  • Fixed an issue where Arctic may crash when refreshing a profile view
  • Fixed an issue where media in comment cells could continue to play even when it is out of view
  • Fixed an issue where the mod reason composer would show full-screen rather than as a popover
  • Fixed an issue where image gallery's' could cause a crash due to invalid links
  • Fixed an issue where some pages would allow pull to refresh even though it was unused
  • Fixed an issue where widgets would display very low quality images
  • Fixed an issue in private messages where the bottom inset would be incorrect after sending a message
  • Fixed an issue where clearing the search query in the Community Selector could continue to show results for the first letter of the cleared query
  • Fixed an issue where the navigation bar might not reappear when swiping back from search results
  • Fixed an issue where the cancel button would appear on the right-hand side when inserting a link or image using the markdown toolbar
  • Fixed an issue where refreshing a profile, or scrolling would repeat some API requests when they already cached
  • Fixed an issue where multiple API requests to the same endpoint could occur at the same time, duplicate requests will now be batched into one to prevent unnecessary network traffic, and reduce server load
  • Fixed an issue where embedded crossposts could incorrectly show an empty image gallery view
  • Fixed an issue where avatar images would be fetched even if they are disabled in settings
  • Fixed an issue allowing images to be re-downloaded even if they were already cached
  • Fixed an issue where Imgur gifv links would not load, these links are now redirected to the direct media link
  • Fixed an issue where the random community button in the search tab could cause a crash, or load the home feed
  • Fixed an issue where opening a community you are not subscribed to while the listing type is set to Subscribed, would result in an empty feed
  • Fixed an issue where Arctic could crash when scrolling in post feeds, or after reopening Arctic from the background
  • Fixed an issue where video seeking could be inaccurate
  • Fixed a typo in appearance settings
  • Fixed an issue where saving HLS videos would silently fail. Saving HLS streams is unsupported, and an alert will be shown when attempting to save HLS content
iOS 18

  • Fixed a visual glitch when hiding the tab bar on iOS 18 due to an iOS bug
  • Restored tab bar appearance on iOS 18 to use the classic style
MacOS

  • Added support dismissing media previews using the trackpad
  • Added support for building as Optimized For Mac (So much left to fix with this)
  • Added better support for App Nap on Mac by pausing non-essential background activity
  • Added keyboard shortcut (Command + Return) for submitting comments, posts, messages, etc.
  • Fixed an issue where the login controller would be shown off screen when presented from the account quick switcher

Links


3
 
 

I really love the new share as image feature!

But I would suggest a small improvement, when toggling the configuration for show watermark, or username, make it remember my decision. I guess that would make using it even more enjoyable.

Same for the dark mode switch.

Keep the great work going.

4
 
 

Sometimes I post a comment that replies to a different post than I had intended—subsequently deleting it and pasting the message into a new comment—or start a thread in which I ask a question that I then answer myself, so then delete the thread.

In both cases, it'd be helpful to have a toggle the visibility of deleted posts and comments.

As viewing comments of other users that were deleted, but still have replies, is sometimes informative, my suggestion just refers to one's own deleted posts and comments on their profile page tab.

5
 
 

Can someone verify: The Post Feed widget stopped working some weeks ago. It won‘t show subscribed posts. „All“ works, but not „subscribed“.

iPhone 12 18.2 iPad Air2 15.8.3

6
 
 

When opening a post from the main feed and then using the Community menu, the Subscribe entry has the wrong icon, and also doesn’t ‘update’ until you close the post and reopen it (ie it doesn’t show as a toggle, even though it does appear to function as a toggle.

menu

7
 
 

This is a little concerning.

8
 
 

The latest update has been giving me a lot of instability. I mostly notice it with interacting in the comments. When I try to collapse by tapping or the new collapse all gesture the app crashes.

9
 
 

I’ve seen this only done successfully on Voyager and then like Apollo but would rock to be on main feed and swipe the bad suggested posts away via hide.

10
 
 

Is it possible to please add a swipe action to collapse a whole comments thread up to a top most parent? This would really improve the comment section experience. Thank you!

11
9
submitted 4 weeks ago* (last edited 5 days ago) by extratone to c/arctic
 
 

I've maintained a fairly prolific habit of "adapting" the color palettes of Cultured Code's Things 3 (light and dark) for the various software in which I spend most of my time.

I was excited to have another opportunity to do so, recently, for my favorite Lemmy client!

Edit: Light version finally added! Sorry for the delay.

Dark

Things Dark Arctic Theme Preview

(The theme files below should be openable directly in Arctic, cross-platform.)

Source

{
  "accent": {
    "errorColor": "#FF3370",
    "accentColor": "#67ACFF",
    "successColor": "#4CBF60",
    "warningColor": "#FFD400"
  },
  "id": "F374ECA7-27A8-43F3-AA9C-E2929E456E9C",
  "name": "Things Dark",
  "background": {
    "groupedBackgroundColor": "#1D2229",
    "foregroundColor": "#1D2229",
    "primaryContainerColor": "#252A31",
    "backgroundColor": "#171C22",
    "secondaryContainerColor": "#31596F4D",
    "groupedForegroundColor": "#2E333A"
  },
  "text": {
    "tertiaryLabel": "#87919F",
    "secondaryLabel": "#787F89",
    "linkLabel": "#67ACFF",
    "primaryLabel": "#FFFFFF",
    "placeholderLabel": "#828C9BE2"
  },
  "actions": {
    "favoriteColor": "#FFD400CA",
    "markReadColor": "#186289",
    "collapseColor": "#67ACFF96",
    "editColor": "#5CA5FF",
    "saveColor": "#4CBF60",
    "crosspostColor": "#4C4060",
    "downvoteColor": "#D1C58B",
    "shareColor": "#4DB1A7",
    "replyColor": "#5CA5FF",
    "blockColor": "#FC375E",
    "upvoteColor": "#1BADF8",
    "subscribeColor": "#4CBF69C9"
  }
}

Previews

Auto-generated description: Four smartphones display various social media and community app interfaces, showing text and image content on their screens.

Auto-generated description: A tablet screen displays a Reddit app interface with posts and navigation options visible, including feeds like Home, Local, All, and Comments.

Auto-generated description: A discussion board is visible, featuring a post about Steve Jobs and comments from users.

Light

Auto-generated description: A simplified illustration of a social media post with black and gray bars representing text and two colored squares below.

Source

{
  "name": "Things Light",
  "id": "AFA2343E-D9A2-4AE2-B439-BB18789761DF",
  "actions": {
    "favoriteColor": "#FFD600EC",
    "shareColor": "#FFD600EC",
    "upvoteColor": "#0665B5CA",
    "subscribeColor": "#3AA89BE4",
    "editColor": "#FB4475E2",
    "blockColor": "#FB444FE7",
    "downvoteColor": "#CCBF7DE5",
    "markReadColor": "#BDE2D3E7",
    "collapseColor": "#94979897",
    "saveColor": "#BF54B1DD",
    "replyColor": "#4CBF62E9",
    "crosspostColor": "#3FBFB6E0"
  },
  "accent": {
    "errorColor": "#FF3370",
    "warningColor": "#FFD400",
    "successColor": "#4CBF60",
    "accentColor": "#1BAFF6F5"
  },
  "text": {
    "primaryLabel": "#15181A",
    "secondaryLabel": "#9399A3FA",
    "placeholderLabel": "#979DA5D7",
    "linkLabel": "#0069CD",
    "tertiaryLabel": "#C1C4C7DC"
  },
  "background": {
    "groupedBackgroundColor": "#F3F6F7",
    "groupedForegroundColor": "#FFFFFF",
    "secondaryContainerColor": "#E1E4E9B1",
    "foregroundColor": "#FFFFFF",
    "backgroundColor": "#F3F6F7",
    "primaryContainerColor": "#EBEDF0CB"
  }
}

Previews

Things Light for Arctic for Lemmy Preview - iPad Pro

12
 
 

When I click on an image the app just crashes. 100% of the time I have just installed the app and didn’t tweak any settings.

I am on an iPhone 8+ if this can be of any help.

I can provide further information if needed ! :)

13
 
 

Hi there, just want to say that I really like Arctic, and thank you for all of your hard work!

I was wondering if would be possible to hide older posts of a community. Right now, I currently enable marking posts as read on scroll, and when I reach the oldest posts I know I’ve caught up with everything. It would be cool if I could hide these older posts under a “Load older posts” button or similar.

Thanks again for your continued development of this awesome client for Lemmy!

14
6
submitted 1 month ago* (last edited 1 month ago) by [email protected] to c/arctic
 
 

Loving the new link preview position option :)

Is there space for a couple of media tweaks?

  1. Images, once zoomed in, have this unfortunate feature where moving them by a few pixels brings up the controls layer, and then it’s hard to get rid of—single click zooms back to full image (which is great for quick dismiss). Maybe the controls could be completely disabled if the zoom is anything but ‘fit to screen’ or whatever that default state is known as?
  2. Videos when rotated often fail to scale properly to the new aspect, getting progressively more and more zoomed.
  3. Tapping a video in the feed to show it full screen leaves the playback controls visible, then another tap brings up the share / dismiss controls over the top, and then finally a third tap leaves just the video. This feels like it could be smoother—again maybe start with no controls visible?
  4. Dismissing a video should probably pause playback, as it can be hard to hit the tiny pause button back in the feed.
15
12
submitted 1 month ago by pixelmeow to c/arctic
 
 

That opens randomly and gets in the way of my usual swiping motions. When trying to upvote/downvote and that opens instead, it’s slow to go away and then keeps trying to open, not letting me swipe a quick vote. Then the comment snaps to the left such that part of it is offscreen to the left. Scrolling a little will make the comment realign correctly.

When trying to swipe to the previous screen it randomly opens and now I have to deal with it before I can swipe away, and its slowness gets in the way.

I will never use this, so I’d like to disable it. I haven’t seen a way to do this in options. Thanks!

16
 
 

When using Large post view, posts with a url show that url including thumbnail below the post content. But when opened, the link is above the content. I’d prefer it to be below, so that the 2 look similar—I find it a bit of a visual glitch that the order jumps. Is there a way to do that (couldn’t see one), or could it easily be added?

17
6
Localization (self.arctic)
submitted 1 month ago by ByteMe to c/arctic
 
 

Is there any way we could contribute with the app localization? It would be great if we could

18
20
When FOSS? (infosec.pub)
submitted 2 months ago* (last edited 2 months ago) by [email protected] to c/arctic
 
 

Is there any plan to open source the code in Arctic?

I was recommending this app the other day at a FOSS meetup and I felt like such an idiot when the group broke it to me that this app is closed source.

I have been using it for a long time (and even paid for it). For some reason, I remember hearing that it was FOSS.

If not, what would it take to get you to open source the non-pro features?

As it is, the ubiquitous app in this ecosystem is Voyager (and that’s a crummy PWA) which is fully open source. As a result of that decision, Voyager enjoys a LOT more popularity because it is open source.

You may even get free help as a dev if you open source it. Right now, I’m planning on making my own that is open source from day one … but it would be nice not to have to reinvent the wheel again on iOS.

19
7
Timeout Fetching New Posts (lemmy.dbzer0.com)
submitted 2 months ago* (last edited 2 months ago) by [email protected] to c/arctic
 
 

I’m having an issue when scrolling through any post feed while on my db0 account. Whether it’s Home, Local, or All, the first 50 or so posts load fine, but when I get to the end I just get a bunch of errors saying there was a timeout while fetching new posts.

I have switched to an alternate account on sh.itjust.works, and don’t seem to be noticing the issue.

I am on the latest test flight version of Arctic, and I know db0 is on Lemmy 0.19.6. Both the db0 update to this version and the latest test flight version occurred around the same time. I’m not sure what Lemmy version sh.itjust.works is on.

Does anyone know if this is an Arctic issue with 0.19.6 APIs, or if it’s an issue with my instance specifically?

Edit- sh.itjust.works is still on 0.19.5, so maybe that has something to do with it? Idk.

20
 
 

It would be really great if the NSFW tag were in the title at the top of the post and not below it. This way you see the tag while scrolling before the potentially graphic content appears. I don’t usually care so keep content un-blurred, but in some cases it’d be nice to know I need to scroll past the post quickly while browsing all for instance.

Otherwise great app, and the updates have been fantastic. It’s feeling really polished and is my main client for interacting with Lemmy at this point. Fills the Apollo hole in my heart pretty well.

21
 
 

Hello, on the latest beta version (0.4.2.4), I don’t see how I can access the community informations allowing me to subscribe or get out of it.

Am I the only one experiencing that?

22
 
 

It seems like with the most recent update we’ve lost the ability to see what instance a post was submitted in. I’d love to see it come back! Helps me track to known if I want to block an instance.

23
 
 

Seems like the default post sort is periodically switching back to Scaled. I’ve have Remember post sort set but after some time (maybe app restart?) and often when switching feeds from All to Loval, etc, it’s back to scaled. Is that a known problem?

24
 
 

Would it be possible / desirable to set the community automatically when viewing a specific community and then tapping Submit Post? Seems like that would be to most convenient and could still be changed if needed.

25
 
 

Maybe I’m misunderstanding what this is supposed to do, but I thought the ‘Sidebar’ menu item used to show information about the community you were viewing. But it seems to show instance info now. Is that right?

view more: next ›